Panowie mam prośbę o pomoc, mam wentyator który ma trzy tryby: Low, medium, high, chciałbym klikając w ikonę w lovelace, żeby się zmieniały tryby. Chciałbym to przenieść do NodeRed - próbowałem kilka wersji procesu, ale niestety nie działa wyskakuje błąd.
Mam utworzonego pomocnika input_boolean, zmiana jest wywoływana przez usługę fan.set_speed, a encja fan.wentylator
Pomocnik input_boolean przyjmuje tylko dwie wartości: on/off, true/false a Ty masz 3 stany wentylatora czyli powinieneś skorzystać z pomocnika “pole wyboru” albo “liczba”.
Właśnie o to mi chodziło, bo chcę żeby przyjął stan on, zmienił mi tryb działania (na kolejny) i przyjął stan na off.
Podobne działanie do tego jak robił @artur w filmiku czyszczenia alarmów.
@artur czy jesteś w stanie pomóc w tej kwestii, bo siedzę nad tym i nie mogę ruszyć dalej.
Wyłączasz przycisk (tylko dlatego, że jest włączony?)
Pomocnika używasz tylko do startu procesu? Może lepiej zrobić pusty skrypt i “events/call_service” czekać na jego wywołanie? + pomocnik pole wyboru np.
To może po kolei.
Wciskam ikonę -> uruchamia się proces w NR który zmienia się na jeden z wybranych trybów (Silent, medium, fast) -> i wyłącza się proces. Jak kliknę po raz kolejny to zmienia mi się na kolejny tryb.
Za pomocnika użyłem input-bolean.
@pawelwaz jutro mogę popatrzeć na proces ale generalnie schemat jest taki, że ustawiasz trigger reagujący na on później odczytujesz aktualny stan wiatraka następnie w switchu masz zdefiniowane te trzy tryby i teraz dla każdego z nich masz nod call service który zmienia tryb na inny a później ustawia włącznik na off
W switchu weryfikujesz msg.payload i przyrównujesz ją do danego trybu np silent, ale w msg.payload nigdzie wcześniej nie masz zasilenia nazwą trybu. Masz funkcję która robi to:
msg.payload = Math.round(Math.random()*1)
Czyli zwraca Tobie liczbę losową z przedziału od 0-1 ponieważ masz zaokrąglenie to albo masz 0 albo 1 w payload. Więc porównujesz msg.payload (0/1) do trybu np silent. Co oczywiście nigdy nie będzie prawdą więc ten proces nie zadziała.
2. Ja rozumiałem, że ten proces ma zmieniać tryb pracy na włączonym odkurzaczu. Jeżeli dobrze to rozumiem to powinieneś te dwa nody
zamienić na nod który odczyta aktualny tryb. Wtedy miałbyś w msg.payload aktualny tryb i wtedy switch miałby sens. Bo byś przyrównał np Silent == Silent
3. Jeżeli punkt 2 dobrze rozumiem i byś wykonał go tak jak napisałem to wtedy powinieneś zmienić to:
Zmiana powinna być następująca:
Dla trybu Silent nie powinieneś ustawiać silent tylko np standard. Dla trybu standard np silent.
Wtedy osiągnąłbyś następujący efekt:
Odkurzacz chodzi w trybie silent
włączasz przycisk w HA
proces odczytuje aktualny tryb
w switch wychodzi silent==silent więc wybiera ścieżkę dla silent
tam jest ustawiony standard więc następuje zmiana trybu
wyłączany przełącznik
Możesz proces uruchomić od nowa tylko teraz w punkcie 4 będzie przyrównanie standard==standard a tam będzie np uruchomienie trybu turbo i tak bez końca
To wszystko co napisałem oczywiście ma sens o ile zrozumiałem co chcesz osiągnąć
W sumie trochę okrężną drogą to zrobiłem, ale naprowadziliście mnie. Stworzyłem dodatkowo sensor.tryb oraz stworzyłem dodatkowo script do zmiany trybów i się udało. Efekt jest taki, że klikając na karcie odkurzacza (jak pracuje albo jest wyłączony) ikonę vacuum - zmienia mi się tryb
To samo będę robił dla wiatraka i pewnie dla oczyszczacza i nawilżacza (natomiast do tych wykorzystam pomocnika pole wyboru).
Dziękuję
Panowie chcę pójść za ciosem i dokończyć te wszystkie karty.
Pierwsza prawie skończona Roborocka S5:
Chcę zrobić jeszcze w NR automatyzację związaną z pomocnikiem (pole wyboru) czyli wybór pomieszczenia, po wybraniu np. Kuchni robot jedzie do kuchni, po wybraniu pole powraca do napisu “wybierz pomieszczenie”
Druga to podobnie jak powyższa le przy polu wyboru zostaje w wybranym miejscu, no i jeszcze drugi pomocnik number.
Naprowadzicie mnie, przy polu wyboru wyzwalaczem jest input_select muszę przechodzić przez jakiś nod który odczyta stan czy odrazu do nodu switch (w którym są wszystkie pomieszczenia) i do call serwice?