Koledzy. Jest taki temat. W noderedzie potrafię już sobie odczytać godzinę i wysłać ją do HA na daschobard do tekstu, ale pytanie jest jak to zrobić żeby poszła wiadomość, że ma być coś zrobione za 3 godziny z podaną właśnie tą godziną? Inaczej. Jest godzina 13:00, dodajemy do niej 3h, i chcę żeby mi się wyświetliła automatycznie wiadomość że o 16:00 trzeba coś tam… Jakieś pomysły?
Na marginesie, lekcja 5 Artura to kopalnia wiedzy dla nowych…
musisz wynik tego sumowania czyli wartość zmiennej dt podstawić pod jakąś właściwość aby ją odczytać. Czyli przed return msg; daj np msg.czas_suma = dt
W nodzie debug zmień że chcesz oglądać pełny obiekt msg a nie tylko payload.
Wtedy w wyniku debug w obiekcie msg znajdziesz właściwość czas_suma, która powinna mieć wartość aktualny czas+3h
Nie wiem czy wyjaśniłem zrozumiale
Hejka, kombinuje na wszystkie sposoby i nie jest jak bym chciał. Proces daje mi przesuniętą godzinę ale wraz z pełną datą, czyli pełno zbędnych informacji kalendarzowych, a jak chce wybrać jakieś znaki, to wywala NaN…natomiast czas_suma, robi przesunięcie tylko o godzinę… Trochę mało mam wiedzy żeby to ugryźć
Ok. Otóż chodzi o moją automatyzacje dietki dla syna. Na ekranie HA chcę mieć informacje:
encja text 1
Ostatni posiłek był o (tutaj 16:00) - to już mam, czas sobie sam ładnie odlicza i wyświetla się
encja text 2
Kolejny posiłek będzie o (19:00) - informacja obliczona na podstawie poprzedniej - czas + 3h, chociaż nie musi być obliczona, jeżeli się wyświetli z przesunięciem o 3h, efekt ten sam.
Podstawę mam jako flow z początku posta, nowego nic nie wymyśliłem
Super, dziękuję
Mam pytanie, skąd brać wiedzę jak pisać takie funkcje, jaki to jest język programowania? Jest to dość ciekawe ale nie wiem czego szukać…
@luki25
Załadowałem Twój proces i mam kilka pytań:
Kiedy on ma być uruchamiany?
W nodzie czas? sprawdzasz aktualną godzinę i do niej chcesz dodać 3h. to tak ma być? Bo co jak proces uruchomi się pomiędzy dwoma posiłkami?
Gdzie jest czas ostatniego posiłku?
Jak dla mnie proces powinien wyglądać następująco
Określony jest czas pierwszego posiłku
Weryfikujesz czy syn faktycznie zjadł posiłek o danej godzinie - albo ręcznie albo automatycznie. Nie wiem jakie masz możliwości kontroli.
Po potwierdzeniu że posiłek o godzinie X został zjedzony NR dolicza 3h do czasu kiedy posiłek został zjedzony. Dzięki temu będzie uwzględniony czas przez jaki posiłek był jedzony. Bo rozumiem że to chodzi o 3 godziny przerwy pomiędzy jedzeniem, a nie że trzeba zawsze zaczynać o stałej godzinie. Więc jeśli syn zaczął jeść o 11.00 i jadł przez 20 minut to kolejny posiłek powinien być 11.20+3h, a nie 11.00+3h?
Wynik tego sumowania wyświetlany jest w HA jako np Godzina następnego posiłku: XX:XX
I później ponownie system leci od punktu 2 przez ilość posiłków na dobę (5?)
Cały proces startuje z przycisku binarnego - czyli ręcznie, po czym następuje informacja i dalej opóźnienie stoptimer 3h i td.
Tak ma to wyglądać, proces nie powinien się odpalić pomiędzy posiłkami
Czas ostatniego posiłku, jest przed 22:00 . Mam już cały flow, który uwzględnia kilka zmiennych czasowych - 5 dietka.json (78,7 KB)
odpalany jest z przycisku i następuje odliczanie 30min=> 1 posiłek, a później co 3h
zrobiłem przyciski input w konfiguracji=> pomocnicy, które służą jako inject, po to że jak zje o innej to mogę ręcznie odpalić kolejny proces, nie umie zrobić noda, który zresetuje już działający proces
Nie potwierdzam kiedy zje, ma to być wyznacznik czasu kiedy ma iść zjeść - jest to wystarczające, nie ma stałych godzin jedzenie, tylko wg odliczania
Może tak być
5, Zgadza się
Nowy dzień, to kiedy syn wstaje to naciska sobie przycisk na ścianie i znów lecimy od początku
Może nie rób specjalnie całego procesu, bo to dużo czasu, tylko uzględnij jak to ma wyglądać i zrób ten wycinek do przeliczania i wyświetlania, a ja już sobie zaimplementuje tam gdzie potrzebuje
Zobacz to dieta.json (1,6 KB)
Generalnie ten proces pobiera aktualny czas z sensora HA (sensor.time) następnie w funkcji dodaje do niego 3 godziny i wynik wyświetla w input_text w HA.
Ten Twój proces jest mocno skomplikowany. Da się go uprościć. Pewnie gdzieś po drodze dodajesz już 1 godzinę. Jak będę miał chwilę to mogę sprawdzić gdzie.