Sterowanie klimatyzacją

Proszę o pomoc, utworzyłem automatyzację do uruchomienia ogrzewania klimatyzatorem domku na działce w node-red. Mam jednak problem ponieważ moje wypociny ponawiają komendy. Ja chciałbym aby wysłany rozkaz załączył klimatyzację i po osiągnięciu się wyłączył, sprawdza temperaturę co 5 minut, i niestety wysyła daną rozkaz również co 5 minut co powoduje że klimatyzator wydaje dźwięki, ponadto przy zmianie temperatury z sensora również jest dźwięk.
Proszę o pomoc jak pominąć wysyłanie call-service podczas zmiany temperatury aż do uzyskania maksymalnej lub minimalnej. Inne automatyzacje mi nie przeszkadzają ponieważ przełączniki sonof nie wydają żadnych dźwięków.
Niestety w rotenso można wyłączyć dźwięk ale działa to tylko na pilota.
Wysyłanie poprzez lan niestety sygnalizuje

flow w załączniku

[{"id":"4abe6e16f771fdcb","type":"comment","z":"59341062864472e0","name":"Automatyzacja klimatyzacji w sypialni","info":"","x":230,"y":440,"wires":[]},{"id":"39269c6f222a708e","type":"function","z":"59341062864472e0","name":"Warunki temperaturowe","func":"var pom = parseFloat(msg.payload);\nvar zad = parseFloat(msg.oczekiwana);\nvar hist = parseFloat(msg.histereza) || parseFloat(2);\nvar min = zad - hist; // || parseFloat(2);\n//var wind = msg.windows || false;\nmsg.histereza = hist;\n////if (wind){\nif ((pom < zad) && (pom >= min)) {\n\n    node.status({ fill: \"blue\", shape: \"dot\", text: \"W zakresie temperatury\" });\n    return [null, msg, null];\n\n}\nelse {\n    if (pom >= zad) {\n\n        node.status({ fill: \"green\", shape: \"dot\", text: \"Temperatura osiągnięta\" });\n        return [null, null, msg];\n\n    }\n    if (pom < min) {\n        node.status({ fill: \"red\", shape: \"dot\", text: \"Trwa ogrzewanie sypialni\" });\n        return [msg, null, null];\n\n    }\n}\n\nreturn [null, null, null];","outputs":3,"noerr":0,"initialize":"","finalize":"","libs":[],"x":890,"y":80,"wires":[["0490b4d830c4ed56"],["89fcba1a7b982118"],["740238d913bb07c9"]]},{"id":"e4cdbd25da6975d6","type":"change","z":"59341062864472e0","name":"Histereza w 2°C","rules":[{"t":"set","p":"histereza","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":640,"y":80,"wires":[["39269c6f222a708e"]]},{"id":"b8bc26d8429448a5","type":"comment","z":"59341062864472e0","name":"Klimatyzacja włączy ogrzewanie  przy temperaturze niższej o 2 stopnie od ustawionej po soiągnięciu temperatury zostanie wyłączona","info":"","x":520,"y":380,"wires":[]},{"id":"0490b4d830c4ed56","type":"api-call-service","z":"59341062864472e0","name":"Włącz ogrzewanie","server":"55bcb0b1.5b942","version":5,"debugenabled":true,"domain":"climate","service":"set_hvac_mode","areaId":["sypialnia"],"deviceId":["000bcb9d7a4fa163dc39aa2d8f34c591"],"entityId":["climate.35184372096891_climate"],"data":"{ \"hvac_mode\": \"heat\"}","dataType":"json","mergeContext":"","mustacheAltTags":true,"outputProperties":[],"queue":"all","output_location":"","output_location_type":"none","x":1110,"y":20,"wires":[[]]},{"id":"740238d913bb07c9","type":"api-call-service","z":"59341062864472e0","name":"Wyłącz ogrzewanie","server":"55bcb0b1.5b942","version":5,"debugenabled":true,"domain":"climate","service":"set_hvac_mode","areaId":["sypialnia"],"deviceId":["000bcb9d7a4fa163dc39aa2d8f34c591"],"entityId":["climate.35184372096891_climate"],"data":"{ \"hvac_mode\": \"off\"}","dataType":"json","mergeContext":"","mustacheAltTags":true,"outputProperties":[],"queue":"all","output_location":"","output_location_type":"none","x":1090,"y":160,"wires":[[]]},{"id":"89fcba1a7b982118","type":"debug","z":"59341062864472e0","name":"debug 8","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":1400,"y":80,"wires":[]},{"id":"0d8d7bf32347a5a2","type":"server-state-changed","z":"59341062864472e0","name":"Aktualna w sypialni","server":"55bcb0b1.5b942","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.temp_w_sypialni_zigbee_temperature","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":210,"y":60,"wires":[["bd980fabd75122d0"]]},{"id":"bd980fabd75122d0","type":"api-current-state","z":"59341062864472e0","name":"Zadana","server":"55bcb0b1.5b942","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"input_number.temperatura_zadana_sypialnia","state_type":"num","blockInputOverrides":false,"outputProperties":[{"property":"oczekiwana","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":440,"y":80,"wires":[["e4cdbd25da6975d6"]]},{"id":"e79fb2b19618accc","type":"inject","z":"59341062864472e0","name":"Odświeżanie","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"7200","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":220,"y":180,"wires":[["bd980fabd75122d0"]]},{"id":"55bcb0b1.5b942","type":"server","name":"HA OS","version":4,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":false,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"numeric","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m"}]

Nie oglądałem przepływu ale w takie sytuacji najpiew sprawdza się czy dana encja w stanie przeciwnym. Wtedy wysyła tak dlugo aż osiągnie oczekiwany skutek

A jak to osiągnąć ? :slight_smile:
Już zakleiłem ten brzęczyk :slight_smile: ale to chyba nie o to chodziło :slight_smile:

Normalnie - przed operacją sprawdź current state encji klimy :slight_smile:
flows (21).json (6,1 KB)

Dziękuję działa choć w momencie sprawdzenia temperatury zadanej niestety wyłącza klimatyzator.
Ale jak na ten moment to już trochę rozwiązuje mój problem

Wyłącz nod oświeżania, przy takiej kostrukcji nie znasz stanu temp aktualnej, ponieważ to ona powinna inicjować proces… a tak w ogóle nie znasz aktualnej temperatury i wynik porównania jest niewiadomy.

I tak zrobię :slight_smile: jak zwykle wykorzystałem Twoją wiedzę, PIWO w Łodzi :slight_smile:
Lub wyślę DHL-em :))