I have to heat independently 3 different zones , so i install 3 DS sensors connected to pimatic, each zone have an electrovalve. I have only one gas boiler, so the logic and rules to start and stop the valves and the boiler via chronotherm plugin is quite complicated to me.
Here is my config sections:
devices:
{
"id": "s_heat",
"class": "ChronoThermDevice",
"name": "Alagsor termosztát",
"cas1Ref": "$sh1",
"cas2Ref": "$sh2",
"cas3Ref": "$sh3",
"cas4Ref": "$sh3",
"cas5Ref": "$sh3",
"cas6Ref": "$sh3",
"cas7Ref": "$sh3",
"sum1Ref": "$sh3",
"sum2Ref": "$sh3",
"sum3Ref": "$sh3",
"sum4Ref": "$sh3",
"sum5Ref": "$sh3",
"sum6Ref": "$sh3",
"sum7Ref": "$sh3",
"realtemperature": "$thermo_s.temperature",
"interval": 120,
"offtemperature": 4,
"ontemperature": 15,
"boost": true
},
{
"id": "p_heat",
"class": "ChronoThermDevice",
"name": "Földszint termosztát",
"cas1Ref": "$ph1",
"cas2Ref": "$ph2",
"cas3Ref": "$ph3",
"cas4Ref": "$ph3",
"cas5Ref": "$ph3",
"cas6Ref": "$ph3",
"cas7Ref": "$ph3",
"sum1Ref": "$ph3",
"sum2Ref": "$ph3",
"sum3Ref": "$ph3",
"sum4Ref": "$ph3",
"sum5Ref": "$ph3",
"sum6Ref": "$ph3",
"sum7Ref": "$ph3",
"realtemperature": "$thermo_p.temperature",
"interval": 120,
"offtemperature": 4,
"ontemperature": 15,
"boost": true
},
{
"id": "e_heat",
"class": "ChronoThermDevice",
"name": "Emelet termosztát",
"cas1Ref": "$eh1",
"cas2Ref": "$eh2",
"cas3Ref": "$eh3",
"cas4Ref": "$eh3",
"cas5Ref": "$eh3",
"cas6Ref": "$eh3",
"cas7Ref": "$eh3",
"sum1Ref": "$eh3",
"sum2Ref": "$eh3",
"sum3Ref": "$eh3",
"sum4Ref": "$eh3",
"sum5Ref": "$eh3",
"sum6Ref": "$eh3",
"sum7Ref": "$eh3",
"realtemperature": "$thermo_e.temperature",
"interval": 120,
"offtemperature": 4,
"ontemperature": 15,
"boost": true
},
{
"id": "thermo_s",
"name": "Iroda hőfok",
"class": "DS18B20Sensor",
"hardwareId": "28-031700fd41ff",
"interval": 60000
},
{
"id": "thermo_p",
"name": "Földszint hőfok",
"class": "DS18B20Sensor",
"hardwareId": "28-051700b850ff",
"interval": 60000
},
{
"id": "thermo_e",
"name": "Emelet hőfok",
"class": "DS18B20Sensor",
"hardwareId": "28-031700d1a5ff",
"interval": 60000
},
{
"id": "button_heat_floor",
"class": "HomeduinoSwitch",
"name": "Konyha padló",
"pin": 32,
"inverted": true
},
{
"id": "button_heat_s",
"class": "HomeduinoSwitch",
"name": "Alagsor fűtés",
"pin": 30,
"inverted": true
},
{
"id": "button_heat_p",
"class": "HomeduinoSwitch",
"name": "Földszint fűtés",
"pin": 29,
"inverted": true
},
{
"id": "button_heat_e",
"class": "HomeduinoSwitch",
"name": "Emelet fűtés",
"pin": 31,
"inverted": true
},
{
"id": "ct",
"class": "HomeduinoSwitch",
"name": "Kazán",
"pin": 63,
"inverted": true
},
{
"class": "DummyPresenceSensor",
"id": "valve_s",
"name": "Alagsor szervo",
"autoReset": false
},
{
"class": "DummyPresenceSensor",
"id": "valve_p",
"name": "Földszint szervo",
"autoReset": false
},
{
"class": "DummyPresenceSensor",
"id": "valve_e",
"name": "Emelet szervo",
"autoReset": false
},
{
"class": "DummyPresenceSensor",
"id": "ct_state",
"name": "Kazán",
"autoReset": false
},
rules:
{
"id": "ct_on_s",
"name": "ct_on_s",
"rule": "when button_heat_s is on then after 1 minute switch ct on and set presence of ct_state to present",
"active": true,
"logging": true
},
{
"id": "ct_on_p",
"name": "ct_on_p",
"rule": "when button_heat_s is on then after 1 minute switch ct on and set presence of ct_state to present",
"active": true,
"logging": true
},
{
"id": "ct_on_e",
"name": "ct_on_e",
"rule": "when button_heat_s is on then after 1 minute switch ct on and set presence of ct_state to present",
"active": true,
"logging": true
},
{
"id": "ct_off",
"name": "ct_off",
"rule": "when button_heat_s is off and button_heat_p is off and button_heat_e is off then switch ct off and set presence of ct_state to absent",
"active": true,
"logging": true
},
{
"id": "s-heating-on",
"name": "s-heating-o",
"rule": "when \"$thermo_s.temperature\" < \"$s_heat.result\" then switch button_heat_s on and set presence of valve_s to present",
"active": true,
"logging": true
},
{
"id": "s-heating-off",
"name": "s-heating-off",
"rule": "when \"$thermo_s.temperature\" > \"$s_heat.result\" then switch button_heat_s off and set presence of valve_s to absent",
"active": true,
"logging": true
},
{
"id": "p-heating-on",
"name": "p-heating-o",
"rule": "when \"$thermo_p.temperature\" < \"$p_heat.result\" then switch button_heat_p on and set presence of valve_p to present",
"active": true,
"logging": true
},
{
"id": "p-heating-off",
"name": "p-heating-off",
"rule": "when \"$thermo_p.temperature\" > \"$p_heat.result\" then switch button_heat_p off and set presence of valve_p to absent",
"active": true,
"logging": true
},
{
"id": "e-heating-on",
"name": "e-heating-o",
"rule": "when \"$thermo_e.temperature\" < \"$e_heat.result\" then switch button_heat_e on and set presence of valve_e to present",
"active": true,
"logging": true
},
{
"id": "e-heating-off",
"name": "e-heating-off",
"rule": "when \"$thermo_e.temperature\" > \"$e_heat.result\" then switch button_heat_e off and set presence of valve_e to absent",
"active": true,
"logging": true
},
the system almost worked fine, but:
- I have the error message for the dummy sensors:
{
error [pimatic]: Could not parse rule "when "$thermo_e.temperature" > "$e_heat.result" then switch button_heat_e off and set presence of valve_e to absent": Could not find an provider that provides the next action of "set presence of valve_e to absent".
19:04:56error [pimatic]: Could not parse rule "when "$thermo_e.temperature" < "$e_heat.result" then switch button_heat_e on and set presence of valve_e to present": Could not find an provider that provides the next action of "set presence of valve_e to present".
19:04:56error [pimatic]: Could not parse rule "when "$thermo_p.temperature" > "$p_heat.result" then switch button_heat_p off and set presence of valve_p to absent": Could not find an provider that provides the next action of "set presence of valve_p to absent".
19:04:56error [pimatic]: Could not parse rule "when "$thermo_p.temperature" < "$p_heat.result" then switch button_heat_p on and set presence of valve_p to present": Could not find an provider that provides the next action of "set presence of valve_p to present".
19:04:56error [pimatic]: Could not parse rule "when "$thermo_s.temperature" > "$s_heat.result" then switch button_heat_s off and set presence of valve_s to absent": Could not find an provider that provides the next action of "set presence of valve_s to absent".
19:04:56error [pimatic]: Could not parse rule "when "$thermo_s.temperature" < "$s_heat.result" then switch button_heat_s on and set presence of valve_s to present": Could not find an provider that provides the next action of "set presence of valve_s to present".
19:04:56error [pimatic]: Could not parse rule "when button_heat_s is off and button_heat_p is off and button_heat_e is off then switch ct off and set presence of ct_state to absent": Could not find an provider that provides the next action of "set presence of ct_state to absent".
19:04:56error [pimatic]: Could not parse rule "when button_heat_s is on then after 1 minute switch ct on and set presence of ct_state to present": Could not find an provider that provides the next action of "set presence of ct_state to present".
19:04:56error [pimatic]: Could not parse rule "when button_heat_s is on then after 1 minute switch ct on and set presence of ct_state to present": Could not find an provider that provides the next action of "set presence of ct_state to present".
19:04:56error [pimatic]: Could not parse rule "when button_heat_s is on then after 1 minute switch ct on and set presence of ct_state to present": Could not find an provider that provides the next action of "set presence of ct_state to present".
},
- I don’t no how implement correct the rule for the central boiler, to start if one instance of chronotherm call it, (start with 1 minute delay, because the valve open 100% after 1 minute), but only stop if all 3 chronotherm instance is off.
In my setting is a confusion: if a stop occured before the 1 minute passed, the valve stop correctly, but the boiler remain on.
My question is, how to implement the dummy devices to show the 3 valve and the boiler state in gui as a dot, and how to create a correct logic rule for this.
Thank you