Sterowanie ogrzewan...
 
Powiadomienia
Wyczyść wszystko

Pomoc Sterowanie ogrzewaniem domu - tutorial od zielonego do działającego

63 Wpisów
4 Użytkownicy
4 Likes
2,346 Wyświetleń
(@marekmazurek)
Wpisów: 47
Kontrybutor Donator 2K23
Autor tematu
 

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ć?

Zrzut ekranu (15)
 
Dodane : 18/04/2023 5:44 pm
Mariusz
(@mariusz-2)
Wpisów: 228
Weteran Donator 2K23
 

Dodane przez: @marekmazurek

Jak to skonfigurować?

A co ten nod debag ci przekazuje ?

 
Dodane : 18/04/2023 5:57 pm
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

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.

1

 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];
}
 
Dodane : 18/04/2023 6:17 pm
wojtek_gtx reacted
(@marekmazurek)
Wpisów: 47
Kontrybutor Donator 2K23
Autor tematu
 

Dodane przez: @mariusz-2

A co ten nod debag ci przekazuje ?

Temperaturę bufora

 
Dodane : 18/04/2023 6:20 pm
(@marekmazurek)
Wpisów: 47
Kontrybutor Donator 2K23
Autor tematu
 

Dodane przez: @isom

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.

-- załącznik nie jest dostępny --

 Tak to powinno wygladać 

Jak taka funkcja miałaby wyglądać? Jak w C++?

 

 
Dodane : 18/04/2023 6:21 pm
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dodane przez: @marekmazurek

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

 
Dodane : 18/04/2023 6:31 pm
(@marekmazurek)
Wpisów: 47
Kontrybutor Donator 2K23
Autor tematu
 

Dodane przez: @isom

Dodane przez: @marekmazurek

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

Dzięki będę walczył to dla mnie początki z node red

 

 

 
Dodane : 18/04/2023 6:36 pm
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

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

3

 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}]
 
Dodane : 18/04/2023 6:47 pm
wojtek_gtx reacted
(@mig41)
Wpisów: 615
Ekspert
 

Może na początek coś takiego ( choć zadana będzie w state nodach):

image
[{"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}]
 
Dodane : 18/04/2023 6:57 pm
wojtek_gtx reacted
(@marekmazurek)
Wpisów: 47
Kontrybutor Donator 2K23
Autor tematu
 

Dodane przez: @isom

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?

sensor.czujniki_temperatury_bufor_2_4 i sensor.czujniki_temperatury_bufor_2_4
 
 
Dodane : 18/04/2023 7:39 pm
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dodane przez: @marekmazurek

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

2

 Nazwa encji u mnie to input_number.zadana , Ty muisz wstawić encję swojego pomocnika i to samo dla temp bufora

 
Dodane : 18/04/2023 7:55 pm
(@marekmazurek)
Wpisów: 47
Kontrybutor Donator 2K23
Autor tematu
 

Dodane przez: @isom

 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?

czas
zadana
bufor
Zrzut ekranu 2023 04 19 100218
 
Dodane : 19/04/2023 10:40 am
(@mig41)
Wpisów: 615
Ekspert
 

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)

 
Dodane : 19/04/2023 10:49 am
(@marekmazurek)
Wpisów: 47
Kontrybutor Donator 2K23
Autor tematu
 

Dodane przez: @mig41

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

czas

 

 
Dodane : 19/04/2023 10:57 am
(@mig41)
Wpisów: 615
Ekspert
 

Wstaw node debug przed funkcją i pokaż co wyświetli.

 
Dodane : 19/04/2023 11:23 am
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

Dodane przez: @marekmazurek

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 

 
Dodane : 19/04/2023 11:28 am
(@marekmazurek)
Wpisów: 47
Kontrybutor Donator 2K23
Autor tematu
 

Dodane przez: @mig41

Wstaw node debug przed funkcją i pokaż co wyświetli.

Zrzut ekranu 2023 04 19 100218

 

 

 
Dodane : 19/04/2023 11:29 am
(@marekmazurek)
Wpisów: 47
Kontrybutor Donator 2K23
Autor tematu
 

Dodane przez: @isom

Dodane przez: @marekmazurek

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?

 

 
Dodane : 19/04/2023 11:33 am
isom
 isom
(@isom)
Wpisów: 5085
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

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

 
Dodane : 19/04/2023 11:34 am
(@mig41)
Wpisów: 615
Ekspert
 

Jak @isom pisał , ustaw odpowiednio dla noda flow.zadana i flow.Bufor .... ( a nie flow.sensor...)

 
Dodane : 19/04/2023 11:34 am
Strona 1 / 4
Udostępnij: