This project runs on ESP8266 (and untested ESP32) and connects to WiFi and Viessmann Heaters using Optolink (https://github.com/openv/openv/wiki/Die-Optolink-Schnittstelle) with a self-made adapter (https://github.com/openv/openv/wiki/Bauanleitung) If you have a 3D printer check out OptolinkConnector.blend and OptolinkConnector.stl located in the hardware folder.
-
Check out this repository
-
Download and install PlatformIO https://docs.platformio.org/en/latest/core/installation/index.html
-
Go to the software folder of this repository
$ cd software
-
Compile and Upload
$ pio run -t upload
-
(optional) Check log output
$ pio device monitor
-
Configure the device (if not done with configuration.h) The device, if unconfigured, will open a Hotspot (Portal-XXXXXXXXXX) Connect to the hotspot and navigate to http://192.168.4.1/wifiMgr/configure Enter SSID, Password, Hostname, MQTT Host Username and Password (optional) Click submit
-
Open an issue with the error and hope for help, because things never work out the way you expect it
OptopLink communicates via addresses. To read or write information you need to know two things:
- Which address the information is stored in
- In which format the data is stored in (see Data types)
Refer to openv Wiki for more information: https://github.com/openv/openv/wiki/Adressen
There are several data for converting the datapoint into useable format:
- raw
- temp
- temps
- stat
- count
- counts
- mode
- hours
- cop
Example URL for reading Address 0x2000 (Room Temperature Setpoint)
http://<IP_OF_ESP8266>/read?addr=0x2000&conv=temp
Example URL for writing Address 0x2000 (Room Temperature Setpoint)
http://<IP_OF_ESP8266>/write?addr=0x2000&conv=temp&val=21
on the ESP8266 the default Serial (RX/TX) will be for logging and a SoftwareSerial is used for heater communication The Adapter will be connected to GROUND / 3.3V / D4 (RX) / D5 (TX)
on the ESP32 the default Serial (RX/TX) will be for logging and Serial1 is used for heater communication. The Adapter will be connected to GROUND / 3.3V / RX / TX of Serial1
/ will show you a status page with a lot of technical details /getCurrentRoomTemperature returns the current room temperature set /getDesiredRoomTemperature returns the desired room temperature set