Node red vragen

Plaats reactie
Gebruikersavatar
Goztow
userbase crew
userbase crew
Berichten: 13588
Lid geworden op: 14 nov 2006, 16:21
Locatie: Brussel
Uitgedeelde bedankjes: 1422 keer
Bedankt: 878 keer

Graag een beetje hulp bij deze node red flow die ik in hassio wil maken.

Context: ik heb een evohome connect systeem met kranen op elke radiator.
Doelstelling: in de badkamer zou ik graag hebben dat de kraan altijd automatisch na een half uur uitgaat, ideaal vanaf een bepaalde temperatuur is bereikt. Dit om te vermijden dat we vergeten deze af te zetten na een douche of bad.

Entity_id is climate.salle_de_bain . Als ik deze in een events:state zet en er een debug aan hang, dan merk ik dat deze als msg.payload enkel "heat" krijgt. Als ik echter complete msg object aanzet dan merk ik dat er heel wat meer informatie bijkomt. Nu zie ik in de attributes dat het volgende allemaal staat:
hvac_modes: off,heat
min_temp: 5
max_temp: 35
preset_modes: none,temporary,permanent
current_temperature: 20.6
temperature: 16
hvac_action: idle
preset_mode: none
status: {
"setpoints": {
"this_sp_from": "2020-02-15T07:30:00+01:00",
"this_sp_temp": 16,
"next_sp_from": "2020-02-15T22:10:00+01:00",
"next_sp_temp": 16
},
"zone_id": "1574629",
"active_faults": [],
"setpoint_status": {
"target_heat_temperature": 16,
"setpoint_mode": "FollowSchedule"
},
"temperature_status": {
"temperature": 20.5,
"is_available": true
}
}
friendly_name: Salle de bain
icon: mdi:radiator
supported_features: 17
Hoe ga ik verder met de flow vanaf de events:state om op basis van de current_temperature te bepalen dat ik na 30m de target_heat_temperature terug draai?

Dank bij voorbaat.
Bedank andere users voor nuttige posts, door op Afbeelding te klikken
devastator
Elite Poster
Elite Poster
Berichten: 1218
Lid geworden op: 01 nov 2005, 10:53
Locatie: Pelt
Uitgedeelde bedankjes: 27 keer
Bedankt: 56 keer

ik zie geen payload ?
Dit is bovendien ook geen geldige JSON

Dit is een mogelijke oplossing. De juiste waardes zal je zelf nog moeten invullen. Alsook het script, want de data die je postte is niet geldig.
userbase.png

Code: Selecteer alles

[{"id":"55149c14.4890f4","type":"inject","z":"6a49721.dbb470c","name":"","topic":"","payload":"","payloadType":"date","repeat":"60","crontab":"","once":false,"onceDelay":0.1,"x":120,"y":150,"wires":[["4a2b13ed.3e211c"]]},{"id":"4a2b13ed.3e211c","type":"api-current-state","z":"6a49721.dbb470c","name":"","server":"98e45af.82949a8","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"climate.salle_de_bain","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":370,"y":150,"wires":[["6f13ed4a.bc364c"]]},{"id":"6f13ed4a.bc364c","type":"function","z":"6a49721.dbb470c","name":"Temperatuur ok ?","func":"if (msg.payload.current_temperature > msg.payload.target_heat_temperature)\n    return [msg, null];\nelse\n    return [msg, null];","outputs":2,"noerr":0,"x":640,"y":150,"wires":[["12cda7a2.14559"],[]],"outputLabels":["Ja","Nee"]},{"id":"a9ebab2a.64b3f","type":"state-machine","z":"6a49721.dbb470c","name":"","triggerProperty":"topic","triggerPropertyType":"msg","stateProperty":"topic","statePropertyType":"msg","outputStateChangeOnly":true,"throwException":false,"states":["wait","timer"],"transitions":[{"name":"setpoint_reached","from":"wait","to":"timer"},{"name":"finished","from":"timer","to":"wait"}],"x":1005,"y":150,"wires":[["e43e6994.e53738"]]},{"id":"12cda7a2.14559","type":"change","z":"6a49721.dbb470c","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"setpoint_reached","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":150,"wires":[["a9ebab2a.64b3f"]]},{"id":"e43e6994.e53738","type":"switch","z":"6a49721.dbb470c","name":"Start timer ?","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"timer","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":1195,"y":150,"wires":[["fdee2c3b.156da8"]]},{"id":"fdee2c3b.156da8","type":"delay","z":"6a49721.dbb470c","name":"","pauseType":"delay","timeout":"30","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1370,"y":150,"wires":[["c09744ad.8400e"]]},{"id":"c09744ad.8400e","type":"api-call-service","z":"6a49721.dbb470c","name":"Uit","server":"98e45af.82949a8","version":1,"debugenabled":false,"service_domain":"","service":"","entityId":"","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1525,"y":150,"wires":[[]]},{"id":"98e45af.82949a8","type":"server","z":"","name":"Home Assistant","legacy":false,"hassio":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":false}]
Gebruikersavatar
Goztow
userbase crew
userbase crew
Berichten: 13588
Lid geworden op: 14 nov 2006, 16:21
Locatie: Brussel
Uitgedeelde bedankjes: 1422 keer
Bedankt: 878 keer

De copy paste komt uit de toestanden in Developer tools.
Bedank andere users voor nuttige posts, door op Afbeelding te klikken
devastator
Elite Poster
Elite Poster
Berichten: 1218
Lid geworden op: 01 nov 2005, 10:53
Locatie: Pelt
Uitgedeelde bedankjes: 27 keer
Bedankt: 56 keer

Je zou de output van de complete message in node red eens moeten posten
Gebruikersavatar
Goztow
userbase crew
userbase crew
Berichten: 13588
Lid geworden op: 14 nov 2006, 16:21
Locatie: Brussel
Uitgedeelde bedankjes: 1422 keer
Bedankt: 878 keer

Code: Selecteer alles

{"_msgid":"e290bd94.a254c","topic":"","payload":"heat",
  "data":{"entity_id":"climate.salle_de_bain","state":"heat",
    "attributes":{"hvac_modes":["off","heat"],"min_temp":5,"max_temp":35,"preset_modes":["none","temporary","permanent"],"current_temperature":20.5,"temperature":16,"hvac_action":"idle","preset_mode":"none","status":{"setpoints":{"this_sp_from":"2020-02-15T07:30:00+01:00","this_sp_temp":16,"next_sp_from":"2020-02-15T22:10:00+01:00","next_sp_temp":16},"zone_id":"1574629","active_faults":[],"setpoint_status":{"target_heat_temperature":16,"setpoint_mode":"FollowSchedule"},"temperature_status":{"temperature":20,"is_available":true}},"friendly_name":"Salle de bain","icon":"mdi:radiator","supported_features":17},"last_changed":"2020-02-03T21:15:48.891355+00:00","last_updated":"2020-02-15T11:02:04.066219+00:00","context":{"id":"c25f1997509a40aba01ac080d0db6be5","parent_id":null,"user_id":null},"timeSinceChangedMs":1004863009}}
Ik heb er uiteindelijk een iets eenvoudigere versie van gemaakt dan die van jou:
Capture.PNG

Code: Selecteer alles

[{"id":"f2996ac5.24e418","type":"api-current-state","z":"efb75dfb.36879","name":"Temp in salle de bains","server":"25de906c.af2","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"climate.salle_de_bain","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":390,"y":1300,"wires":[["af2a516.f9fc93"]]},{"id":"6db7b6fa.441068","type":"inject","z":"efb75dfb.36879","name":"check every 5 mins","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":1300,"wires":[["f2996ac5.24e418"]]},{"id":"af2a516.f9fc93","type":"function","z":"efb75dfb.36879","name":"Current temp > target heat temp > 17","func":"if (msg.data.attributes.current_temperature > msg.data.attributes.status.setpoint_status.target_heat_temperature && msg.data.attributes.status.setpoint_status.target_heat_temperature > '17'){\n    return [msg, null];\n}","outputs":1,"noerr":0,"x":710,"y":1300,"wires":[["bac9d5d8.eecb1"]],"outputLabels":["Ja"]},{"id":"bac9d5d8.eecb1","type":"delay","z":"efb75dfb.36879","name":"","pauseType":"delay","timeout":"30","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":990,"y":1260,"wires":[["45b9a59d.df3864"]]},{"id":"45b9a59d.df3864","type":"api-call-service","z":"efb75dfb.36879","name":"Salle de bains heating to 16 degrees","server":"25de906c.af2","version":1,"debugenabled":false,"service_domain":"climate","service":"set_temperature","entityId":"climate.salle_de_bain","data":"{\"temperature\":15}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1270,"y":1260,"wires":[[]]},{"id":"25de906c.af2","type":"server","z":"","name":"Home Assistant"}]
Bedank andere users voor nuttige posts, door op Afbeelding te klikken
devastator
Elite Poster
Elite Poster
Berichten: 1218
Lid geworden op: 01 nov 2005, 10:53
Locatie: Pelt
Uitgedeelde bedankjes: 27 keer
Bedankt: 56 keer

Dat werkt ook, maar let wel op dat ie nu dus continue berichten gaat sturen naar je unit.

Iedere 5 min wordt de temperatuur gecheckt. Is die OK, dan na een half uur bericht.
5min later > tempertuur ok? -> half uur later bericht
5min later > tempertuur ok? -> half uur later bericht
...

Met de statemachine had je dit niet.
Gebruikersavatar
Goztow
userbase crew
userbase crew
Berichten: 13588
Lid geworden op: 14 nov 2006, 16:21
Locatie: Brussel
Uitgedeelde bedankjes: 1422 keer
Bedankt: 878 keer

Ik snap wat je bedoelt. Ik heb de indruk dat de statemachine nog niet helemaal goed geconfigureerd is? Aangezien de msg.topic "finished" nooit er naartoe wordt gestuurd? Of is onderstaande OK?

Code: Selecteer alles

[{"id":"b77f5abd.3b15c8","type":"tab","label":"test 4","disabled":false,"info":""},{"id":"f54915aa.8798","type":"api-current-state","z":"b77f5abd.3b15c8","name":"Temp in salle de bains","server":"25de906c.af2","version":1,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"climate.salle_de_bain","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":460,"y":180,"wires":[["b2ed7865.4314f"]]},{"id":"d378a280.e4681","type":"inject","z":"b77f5abd.3b15c8","name":"check every 5 mins","topic":"","payload":"","payloadType":"date","repeat":"300","crontab":"","once":false,"onceDelay":0.1,"x":190,"y":180,"wires":[["f54915aa.8798"]]},{"id":"b2ed7865.4314f","type":"function","z":"b77f5abd.3b15c8","name":"Current temp > target heat temp > 17","func":"if (msg.data.attributes.current_temperature > msg.data.attributes.status.setpoint_status.target_heat_temperature && msg.data.attributes.status.setpoint_status.target_heat_temperature > '17'){\n    return [msg, null];\n}","outputs":2,"noerr":0,"x":770,"y":180,"wires":[["9a160cde.105e2"],[]],"outputLabels":["Ja",""]},{"id":"20035a7e.3c2f0e","type":"delay","z":"b77f5abd.3b15c8","name":"","pauseType":"delay","timeout":"30","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1050,"y":180,"wires":[["b67aa963.ee05b"]]},{"id":"b67aa963.ee05b","type":"api-call-service","z":"b77f5abd.3b15c8","name":"Salle de bains heating to 16 degrees","server":"25de906c.af2","version":1,"debugenabled":false,"service_domain":"climate","service":"set_temperature","entityId":"climate.salle_de_bain","data":"{\"temperature\":16}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1330,"y":180,"wires":[[]]},{"id":"d58571e7.7417c8","type":"comment","z":"b77f5abd.3b15c8","name":"Badkamer nooit langer dan een half uur laten aanstaan","info":"","x":700,"y":120,"wires":[]},{"id":"9a160cde.105e2","type":"change","z":"b77f5abd.3b15c8","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"setpoint_reached","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":280,"wires":[["f89155be.bea41"]]},{"id":"f89155be.bea41","type":"state-machine","z":"b77f5abd.3b15c8","name":"","triggerProperty":"topic","triggerPropertyType":"msg","stateProperty":"topic","statePropertyType":"msg","outputStateChangeOnly":true,"throwException":false,"states":["wait","timer"],"transitions":[{"name":"setpoint_reached","from":"wait","to":"timer"},{"name":"finished","from":"timer","to":"wait"}],"x":1005,"y":280,"wires":[["5248838c.38200c"]]},{"id":"5248838c.38200c","type":"switch","z":"b77f5abd.3b15c8","name":"Start timer ?","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"timer","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":1195,"y":280,"wires":[["20035a7e.3c2f0e"]]},{"id":"25de906c.af2","type":"server","z":"","name":"Home Assistant"}]
Bedank andere users voor nuttige posts, door op Afbeelding te klikken
devastator
Elite Poster
Elite Poster
Berichten: 1218
Lid geworden op: 01 nov 2005, 10:53
Locatie: Pelt
Uitgedeelde bedankjes: 27 keer
Bedankt: 56 keer

Die was ik inderdaad vergeten. Na die delay node zou je een change node moeten zetten, en die output terug naar je statemachine. Ben nu even niet op de PC.
Gebruikersavatar
NuKeM
Content Editor
Content Editor
Berichten: 5132
Lid geworden op: 10 nov 2002, 00:55
Uitgedeelde bedankjes: 67 keer
Bedankt: 156 keer
Contacteer:

Beetje in lijn met wat jij wil, maar uitzetten van mijn evohome zone doe ik via de climate.turn_off service waarbij je dan de entity_id van je zone moet meegeven. Mijn automation ziet er hiervoor zo uit (bv. als er een raam open gaat in de zone):

Code: Selecteer alles

 - alias: Raamsensor Slaapkamer Open
  description: ''
  trigger:
  - entity_id: binary_sensor.slaapkamerraam_sensor
    for: 00:00:05
    from: 'off'
    platform: state
    to: 'on'
  condition: []
  action:
  - data: {}
    entity_id: climate.slaapkamer
    service: climate.turn_off
Terug opzetten volgens schedule was lastiger om te vinden, maar dat doe ik zo via een automation:

Code: Selecteer alles

 - alias: Raamsensor Slaapkamer Toe
  description: ''
  trigger:
  - entity_id: binary_sensor.slaapkamerraam_sensor
    for: 00:00:05
    from: 'on'
    platform: state
    to: 'off'
  condition: []
  action:
  - data_template:
      temperature: '{{ state_attr(''climate.slaapkamer'', ''status'').setpoints.this_sp_temp
        | float }}'
    entity_id: climate.slaapkamer
    service: climate.set_temperature
  - delay: 00:00:05
  - data:
      preset_mode: none
    entity_id: climate.slaapkamer
    service: climate.set_preset_mode
Die laatste set_preset_mode met delay(!) is nodig omdat hij anders permanent of niet juist op zijn current setpoint wordt gezet. Met bovenstaande volgt hij weer netjes de schedule.

Bovenstaande is natuurlijk niet node red, maar valt wel eenvoudig te vertalen lijkt me.
Plaats reactie

Terug naar “Home automation en domotica”