First let's wire it correctly. I've seen complain on github it does not work with some pins. Here is my wiring which works for me:
- OpenTherm jumper set to 3.3V
- OpenTherm D3 - WeMos D1 (via header) : #define BOILER_IN 5
- OpenTherm D5 - WeMos D5 (via header) : #define BOILER_OUT 14
- OpenTherm 3.3V - WeMos 3.3V
- OpenTherm GND - WeMos GND
Picture which shows both leds blinking (ON and RxB leds) - proof it works:
If you, for example, connect 5V from WeMos to 5V on OpenTherm shield, it will not work (it took me almost an hour to figure it out).
My code is based on examples how to connect to wifi, use https client and send a POST request (you can easily open them from Arduino IDE via menu File - Examples - ESP8266HTTPClient).
Data for every message type is sent to a webhook in Home Assistant (message id is suffix in webhook name). Sensor configurations are straightforward except conversion of bit mask to binary sensor:
template:
- trigger:
- platform: webhook
webhook_id: boiler0
sensor:
- name: Boiler - updated at
unique_id: boilerupdate
state: "{{ as_timestamp(now())|timestamp_custom('%d. %m. %Y %H:%M:%S') }}"
icon: mdi:clock-time-four-outline
binary_sensor:
- name: Boiler - error
unique_id: boiler0fault
state: "{{ trigger.json.data|int|bitwise_and(1) > 0 }}"
device_class: problem
- name: Boiler - central heating
unique_id: boiler0ch
state: "{{ trigger.json.data|int|bitwise_and(2) > 0 }}"
device_class: running
- name: Boiler - warm water
unique_id: boiler0dhw
state: "{{ trigger.json.data|int|bitwise_and(4) > 0 }}"
device_class: running
- name: Boiler - heating
unique_id: boiler0flame
state: "{{ trigger.json.data|int|bitwise_and(8) > 0 }}"
device_class: running
- trigger:
- platform: webhook
webhook_id: boiler18
sensor:
- name: Boiler - pressure
unique_id: boiler18
state: "{{ trigger.json.data }}"
state_class: measurement
device_class: pressure
unit_of_measurement: bar
icon: mdi:speedometer
...
Using all sensors, I've created a dashboard in Home Assistant to have a full picture how the boiler works :
But my joy did not last long - within 1-2 hours, the data stopped flowing :-( Next post will be about figuring why?
PS: The above image is from future when the issue is fixed.
No comments:
Post a Comment