An all in one system to control the Quatt
- It is a thermostat, measures in two rooms and runs the logic
- It is connected with OpenTherm to CiC and Boiler
- It reads the On-Off boiler control from the CiC to drive the Boiler
- It integrates with HomeKit as two thermostat and outside temperature
- Through HomeKit it enables/disables the pump of the floor-heating
- With MQTT is reports to Domoticz and to HomeAssistant
- it takes 50s before heater function is first run
- apply a small hysteresis to heater2 early heating activation point
- this means upstairs can tune down the demand if it warms up in this situation
- change hysteresis of heater1 from 0.2 to 0.1 degrees C
- it even managed to become -1 sending wrong value to opentherm CiC
- hypothesis is that CiC will reduce compressor level according to need
- so when there is overshoot, but outside is cold, choose the level for maintain
- this is an experiment, so success not guaranteed...
- changed heater factor reset value to 105 = no restriction
- changed CSP base default value to 30
- Homekit chsetpoint used as base, default 35
- if heater==1, CSP=base-S3/2
- if heater==2, CSP=base-S3*2
- might prevent missing a switch-off detection of CiC
- else the boiler will overshoot and CiC will shut it down
- for experimental reasons, manual control
- was static 35 degrees Celcius, but boiler would stay off...
- hysteresis for heater1 to 0.2 degrees
- range from -1.00 to 1.00
- 1.05 means factor does not limit
- original was not well aligned in time
- grouped temperature activities together in code
- initialization values must be multiple of 8/256
- better S3 initialization
- prevents rounding in values sent to opentherm
- factor = zero now means no restriction
- default factor now 0.3
- max factor 1 degree
- repurpose factor to define tracking delta
- update OT room_temp only once per minute instead of every 10s
- OT CH setpoint now zero when off and 35 deg when on
- todo: reset all relevant ports
- change UDPLGP to UDPLUS
- makes it easier to select a temperature
- range now 10 - 25 degrees celcius
- changed factor to become the setpoint temperature of the heatpump
- will reset if no ping for 5 minutes
- added hysteresis values to heater outcome logic
- 2 seconds is not enough, make it 7s
- needs different approach to collect temperatures
- storage_add_pairing was overwriting new data with stored data
- since pairing_t has a string, we need to add closing zero
- when remove_pairing, scan all slots for multiple copies due to issues above
- use better logging of pairing records
- when unpair, reset homekit storage and reset device
- suppress MQTT publish reports
- report line cleanup
- delta is negative when heating is required
- clean up reporting line
- algorithm uses setpoint based on up and down roomtemp
- changed default temp to 20 degrees
- when trigger missed, retrigger part needed update also
- normalised some OpenTherm commands
- also activated when heater=off and PumpOffTimer confirmed
- POT when heat_result==off or upstairs
- so pump only works when heat_result==downstairs
- error rate for CH1_NO_RSP was not improved @0.7%
- crashes went from zero in 200000 to 8 in 80000 seconds
- still CH1_NO_RSP to be fixed
- average temperature initialization
- there is like 1% CH1_NO_RSP to be fixed
- allow less time for boiler and more for Quatt
- report 4 items for heatpump
- in a macro, ALWAYS put the input between brackets!
- conversion of float to OT f8.8 format fixed
- made that a macro
- tgt_heat2 start value should be HEAT
- based on interaction between tado and Quatt
- assigned boiler to other hardware channel to test stability
- initialize temperature reading buffers more consistently
- ported this from ESP8266 code to my ESP32 code
- ready for new adventures
- pending: RTC memory, current code seems rock solid as it is
- pending: pinger, add later, if at all
- parse ota_string for MQTT config
- ota-api functions now ESP ported
- MQTT return value now works
- names of accessories updated
- included remaining timer call items
- lcm-api is a component (fork)
- added TEMP2HK macro
- and fixed unterminated string in esp32-homekit upstream
- while time reference not solved
- seems to deliver working code
- a lot of fine-tuning pending
- TODO time, RTC, ota_config, ota_api
- just telling the 1-wire-pin to ground does not actually work
- using a second pin as open-drain to become ground terminal for 1-wire
- when CRC error found, make this float for two seconds and sensor unstuck
- start reporting to domoticz for real
- skeleton MQTT code, needs refinement
- SINKBUS puts one-wire bus down for 9 seconds
- to battle the stuck ds18b20 issue
- revert previous attempts as unneeded
- This is bad programming as admitted by espressif
- "Many ESP-IDF examples use ESP_ERROR_CHECK to handle errors from various APIs. This is not the best practice for applications, and is done to make example code more concise"
- reset bus on bad readings
- remove console colors
- pin temperature task to core 1 instead of 0
- v0.0.5 was pinning to available core
- pin temperature task to core 0 instead of 1
- version 0.0.4 crashes usually within 1000s
- version 0.0.3 was rock solid
- fixed the sensor_count not reset at retry
- run it every second but cycle through one sensor at a time
- driver does not support ds18b20_any broadcast conversion trigger
- fixed OT receiver being unreliable
- essential to have GPIO interrupt pinned to core 1
- skeleton timer loop
- works for two channels
- changed pin numbers
- takes one uint32_t as payload
- works for two TX channels
- blocks for 50ms