Witajcie
Mój problem polega na tym że nie potrafię skonfigurować noda tak by wprowadzić warunek porównawczy. Użyłem events state by odczytać temperaturę bufora - to działa. Kolejną rzeczą jaką chciałem wprowadzić to warunek z pomocnika. Pomocnik ustawia temperaturę zadaną na powiedzmy 50. Jeśli temperatura odczytana przez events state jest wyższa od tej ustawionej na pomocniku przekaźnik powinien zostać włączony. Jeśli jest równa lub niższa powinien zostać wyłączony. Jak to skonfigurować?
Jednego noda nie da się tak skonfigurować 🙂 Trzeba zbudować przepływ, który w jakimś interwale będzie sprawdzał temperaturę bufora, ustawienie pomocnika zadana i dopiero można porównać dwie wartości, najlepiej w nodzie funkcji.
Tak to powinno wygladać
W obu nodach "Zadana" i "temp bufor" zapisujesz wartości do zmiennych flow , w nodzie funkcji odczytujesz wartości tych zmiennych i porównujesz w prostej matematyce
let vt1 = flow.get('zadana'); let vt2 = flow.get('bufor'); if (vt1 > vt2 ){ msg.payload = "1"; return [msg,null]; } if (vt1 <= vt2) { msg.payload = "1"; return [null, msg]; }
Jednego noda nie da się tak skonfigurować 🙂 Trzeba zbudować przepływ, który w jakimś interwale będzie sprawdzał temperaturę bufora, ustawienie pomocnika zadana i dopiero można porównać dwie wartości, najlepiej w nodzie funkcji.
Tak to powinno wygladać
Jak taka funkcja miałaby wyglądać? Jak w C++?
Jak taka funkcja miałaby wyglądać? Jak w C++?
Masz wyżej całą funkcję
Tylko zmienne trzeba sobie dostosować , albo nazwać identycznie w ndach current state
Masz tu gotowy przepływ, tylko powstawiaj swoje encje i powinno działać, jak to Twoje początki to pobrany kod musisz zaimportować w swoim środowisku. Import znajdziesz w zakładkach w prawym górnym narożniku
Tu kod
[{"id":"07180c12979ada1c","type":"tab","label":"Termostat","disabled":false,"info":"","env":[]},{"id":"07a4b808cb469938","type":"inject","z":"07180c12979ada1c","name":"co 1 min","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":100,"y":240,"wires":[["4bd96d87a74480d9"]]},{"id":"c913da8ad803df2b","type":"function","z":"07180c12979ada1c","name":"Funkcja","func":"let vt1 = flow.get('zadana');\nlet vt2 = flow.get('bufor');\n\nif (vt1 > vt2 ){\n msg.payload = \"1\";\n return [msg,null];\n}\n\nif (vt1 <= vt2) {\n msg.payload = \"1\";\n return [null, msg];\n}","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":620,"y":240,"wires":[["81b81ffd985218b7"],["6fd823cdc03273dc"]]},{"id":"81b81ffd985218b7","type":"api-call-service","z":"07180c12979ada1c","name":"Włącz","server":"1a9033b6.071e8c","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.w_gore"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":830,"y":180,"wires":[[]]},{"id":"6fd823cdc03273dc","type":"api-call-service","z":"07180c12979ada1c","name":"Wyłącz","server":"1a9033b6.071e8c","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.w_dol"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":840,"y":280,"wires":[[]]},{"id":"4bd96d87a74480d9","type":"api-current-state","z":"07180c12979ada1c","name":"Zadana","server":"1a9033b6.071e8c","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"input_number.zadana_zawor","state_type":"num","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"zadana","propertyType":"flow","value":"","valueType":"entityState"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":280,"y":240,"wires":[["a6ed6f2b9e9681b9"]]},{"id":"a6ed6f2b9e9681b9","type":"api-current-state","z":"07180c12979ada1c","name":"Temp Bufor","server":"1a9033b6.071e8c","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.woda_zasobnik","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"bufor","propertyType":"flow","value":"","valueType":"entityState"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":450,"y":240,"wires":[["c913da8ad803df2b"]]},{"id":"1a9033b6.071e8c","type":"server","name":"Home Assistant","addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"","connectionDelay":false,"cacheJson":false,"heartbeat":false,"heartbeatInterval":"","statusSeparator":"","enableGlobalContextStore":false}]
Może na początek coś takiego ( choć zadana będzie w state nodach):
[{"id":"81b81ffd985218b7","type":"api-call-service","z":"07180c12979ada1c","name":"Włącz","server":"1a9033b6.071e8c","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.w_gore"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":830,"y":60,"wires":[[]]},{"id":"6fd823cdc03273dc","type":"api-call-service","z":"07180c12979ada1c","name":"Wyłącz","server":"1a9033b6.071e8c","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.w_dol"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":820,"y":120,"wires":[[]]},{"id":"90d83943a1c6ef07","type":"server-state-changed","z":"07180c12979ada1c","name":"Temp Bufor","server":"eff120ce.6359d","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.z141_temperature","entityidfiltertype":"exact","outputinitially":true,"state_type":"habool","haltifstate":"50","halt_if_type":"num","halt_if_compare":"lt","outputs":2,"output_only_on_state_change":false,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"true","valueType":"bool"}],"x":590,"y":60,"wires":[["81b81ffd985218b7"],[]]},{"id":"5a4443573869df54","type":"server-state-changed","z":"07180c12979ada1c","name":"Temp Bufor","server":"eff120ce.6359d","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.z141_temperature","entityidfiltertype":"exact","outputinitially":true,"state_type":"habool","haltifstate":"50","halt_if_type":"num","halt_if_compare":"gte","outputs":2,"output_only_on_state_change":false,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"true","valueType":"bool"}],"x":590,"y":120,"wires":[["6fd823cdc03273dc"],[]]},{"id":"1a9033b6.071e8c","type":"server","name":"Home Assistant","addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"","connectionDelay":false,"cacheJson":false,"heartbeat":false,"heartbeatInterval":"","statusSeparator":"","enableGlobalContextStore":false},{"id":"eff120ce.6359d","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]
W obu nodach "Zadana" i "temp bufor" zapisujesz wartości do zmiennych flow , w nodzie funkcji odczytujesz wartości tych zmiennych i porównujesz w prostej matematyce
Gdybyś mógł mi podpowiedzieć co znaczy że mam ustawić wartość na flow. Po prostu zmienić opcję na flow i zostawić puste pole czy coś tam wpisać?
Druga sprawa te podmieniane nazwy to mają być nazwy noda czy np to?
mam ustawić wartość na flow. Po prostu zmienić opcję na flow i zostawić puste pole czy coś tam wpisać?
Druga sprawa te podmieniane nazwy to mają być nazwy noda czy np to?
sensor.czujniki_temperatury_bufor_2_4 i sensor.czujniki_temperatury_bufor_2_4
Ustawienia masz już w kodzie, który wstawiłem, jak chcesz sam próbować to masz tu przykład dla zadanej
Nazwa encji u mnie to input_number.zadana , Ty muisz wstawić encję swojego pomocnika i to samo dla temp bufora
Nazwa encji u mnie to input_number.zadana , Ty muisz wstawić encję swojego pomocnika i to samo dla temp
Teoretycznie powinno działać a jednak nie przełącza przekaźników. Gdzieś napewno mam błąd tylko gdzie?
A co się stanie jak manualnie naciśniesz przycisk na nodzie timestamp ?
Bo w nim nie masz ustawionego "wstrzykiwania: automatycznego co jakiś czas ( tam ptaszek na samym dole powinien być zaznaczony , i czas interwału - 30s chyba jest ok)
A co się stanie jak manualnie naciśniesz przycisk na nodzie timestamp ?
Bo w nim nie masz ustawionego "wstrzykiwania: automatycznego co jakiś czas ( tam ptaszek na samym dole powinien być zaznaczony , i czas interwału - 30s chyba jest ok)
Nadal brak reakcji
Wstaw node debug przed funkcją i pokaż co wyświetli.
Nadal brak reakcji
Brak bo źle są skonfigirowane zmienne, coś tam wklepał za nazwy? Tam mają być nzawy takie same jak użyte w nodzie funkcji, czyli nie encja sensor...... tylko u ciebie zadana i Bufor.
Napisałem wcześniej, pobierz kod który wkleiłem podmień encje na swoje i będzie działać
Ewentualnie wklej tu swój kod całego przepływu, to go dostosuję do Twoich potrzeb
Nadal brak reakcji
Brak bo źle są skonfigirowane zmienne, coś tam wklepał za nazwy? Tam mają być nzawy takie same jak użyte w nodzie funkcji, czyli nie encja sensor...... tylko u ciebie zadana i Bufor.
Napisałem wcześniej, pobierz kod który wkleiłem podmień encje na swoje i będzie działać
Ewentualnie wklej tu swój kod całego przepływu, to go dostosuję do Twoich potrzeb
Jak wydobyć taki kod?
Te nody debug nic nie wnoszą, wszystko widać bez nich , zmienne są do bani i widać to w zakładce context , której kolega nie poakzał ale wynika to z fotek
Jak @isom pisał , ustaw odpowiednio dla noda flow.zadana i flow.Bufor .... ( a nie flow.sensor...)