Procesy z życia wzięte - Ogrzewanie

Skąd wiesz, że to nastąpiło? … na początek

nie dodałem → kontaktron

Sprawdzaj stan kontaktrona i jego zmiana niech ustawi zmienną np “blokada”, uruchomi delay na 25min.
Po odmierzeniu czasu zresetuj tą zmienną.

Stan tej zmiennej sprawdzaj w procesie odczytu temperatury. Jak używać zmiennych kontekstowych znajdziesz na forum.

lepiej nie grzać garażu w zimie - ruda szybciej wcina auto :slight_smile:

Mam ustawione 17 stopni, myślę, że to nie powinno wplynąc

Witam, zrobiłem sterowanie ogrzewaniem po swojemu ale dużo ucząc się od Artura. Kartę do sterowania zaczytałem w całości udostępnioną przez Artura, po dopasowaniu encji działa ale “nie wygląda” i pomimo instalacji card-mod style nie działają. Walczę z tym już kilka dni i nic. Albo coś nie tak zainstalowałem. Albo coś pomieszali w kolejnej wersji i to co działało rok, dwa temu, teraz już nie działa. Może ktoś podpowie…

Cześć
Dzięki wideo Artura, przezimowałem całą zimę ogrzewając mój dom i sterując w HA. Zimą na 1 piętrze dogrzewam pokoje klimatyzacją kanałową . Ta sama klimatyzacja ma mi posłużyć do chłodzenia i tu pojawia się problem.
O ile przy grzaniu wszystko działa cacy, tj. ustawiona histereza (U Artura to tolerancja) reaguje na progi temperatury, to w przypadku chłodzenia histereza (tolerancja) nie działa. Wydawało mi się, że jak zmienię znak mniejszości (ogrzewanie) na znak większości (chłodzenie) w state node to już będę w domu. Tj. po dodaniu tolerancji klimatyzacja w trybie chłodzenia nie włącza/wyłącza się po przekroczeniu progów. Po zdjęciu tolerancji, tj. nie dodając lub odejmując wartości od zadanej temperatury, klima włącza się i wyłącza po przekroczeniu w punkt temperatury. Innymi słowy włącza się i wyłącza co chwilę utrzymując tę samą temperaturę.

Tu jest flow poprawnie działająca tolerancja na grzaniu klimy:


ogrzewanie_klima.json (6,2 KB)

a tu jest flow z niedziałającą tolerancją przy chłodzeniu:


chłodzenie_klima.json (6,2 KB)

Nie mam już pomysłu jak to ugryźć, napewno, nie może być tak, że klima się co chwilę włącza i wyłącza, stąd też prośba o jakieś wskazówki co tu jest do poprawy.
Niestety nie znam się na funkcjach i nie wiem co może być pod górkę…
Dzięki!
—edit----
Znalazłem błąd, tj. raczej brak wiedzy u mnie.
przy podawaniu minusowej tolerancji wszystko jest ok.
“var akceptowalna_temperatura = msg.ustawiona_temperatura
msg.akceptowalna_temp = akceptowalna_temperatura-0.2
return msg;”
dostaję poprawną wartość temperatury
image

ale przy podawaniu dodatniej temperatury takie głupoty wychodzą… pewnie jakoś inaczej to trzeba dodać?
var akceptowalna_temperatura = msg.ustawiona_temperatura

msg.akceptowalna_temp = akceptowalna_temperatura+0.2

return msg;
image

Ja histereze załatwiłem przez nod switch. Wyższa temperatura u mnie odpowiada za włączenie klimatzacji, a niższa za wyłączenie. To z fragmentu bardziej złożonego procesu :slight_smile:

Przy okazji ktoś może podpowie, jak w NR zmieniać tryb z grzania na chłodzenie? Bo to poniżej u mnie nie działa. Obecnie na lato ręcznie w HA zmieniam, a na zime pewnie też zmienię. A chciałbym, by to jednak działało samo.

{“hvac_mode” : “cool”}

Też kombinowałem. I dostaje:
image
A w HA mam tak:

{"temperature": "{{payload}}", "hvac_mode": "heat"}

or

U mnie działa, wygląda że jest jakiś problem z formatem json.
W edytorze tak u ciebie wygląda?
clima
… czyli tak samo jak pokazał @artpc

Tak samo

{
    "hvac_mode": "heat"
}

Spróbuj nie JSON a expression

Tu mnie masz. Ładowało wszystko do jednej linii. Nawet nie wiem czemu. Wklejałem na nowo, po zapisie znowu jedna linia. Dodałem przez edytor wizualny i przeszło. Dziwne. Jakby coś tam wpadało, co nie powinno, ale nie wiem co.

Ustawiając tak temperaturę, możesz też od razu zmienić tryb? Hmmm.

https://github.com/giuseppeg88/node-red-contrib-thermostat-scheduler

Ktoś z was wie dlaczego nie działa zwykłe dodawanie wartości do tej funkcji i warunków od Artura? odejmowanie działa bez problemu, a dodawanie powoduje, ze zamiast 24.4 to mam w debugu 24.20.2, jakby dokleja zamiast dodawać.

Poprawnie dodane wartości:
var akceptowalna_temperatura = msg.ustawiona_temperatura
msg.akceptowalna_temp = akceptowalna_temperatura-0.2
return msg;

Niepoprawnie dodane wartości
var akceptowalna_temperatura = msg.ustawiona_temperatura
msg.akceptowalna_temp = akceptowalna_temperatura+0.2
return msg;

w sumie zwykła zamiana minusa na plusa…

Bo znak plusa dla stringów oznacza łączenie “napisów”.
Łańcuchy będące graficznym zapisem liczby przed operacjami arytmetycznymi należ jawnie zamienić na liczby. Dla niektórych operatorów gdy jest to jednoznaczne taka konwersja jest automatyczna.

1 polubienie

no i git:)
teraz działa ok
var akceptowalna_temperatura = parseFloat(msg.ustawiona_temperatura)
msg.akceptowalna_temp = akceptowalna_temperatura + 0.5;
return msg;

Panowie, podłacze sie pod temat ogrzewania. Dokładnie chodzi mi o to zeby z przycisku można było ustawić wartość temperatury CWU jeśli uznam, że jest za niska.
Przykład włączam przycisk na pulpicie, temperatura CWU na komfort i eco powinna zwiększyć się o 5 stopni. Prośba o podpowiedź jak zaprogramować wartość +5