Procesy z życia wzięte - Status poranny

@Robert_Król odpowiedź masz w zadanym przez Ciebie pytaniu:


Przekroczyłeś maksymalną długość komunikatu.
Nie mam głośnika by sprawdzić i Ci powiedzieć jak to rozwiązał @artur. Może on się wypowie.

@Robert_Król prawdę mówiąc nie wiem czy mam dłuższe komunikat niż 200 znaków. Nigdy nie zwracałem na to uwagi. Mogę sprawdzić w poniedziałek.

Panowie, wiem że przekroczyłem, ale na 99,9999 komunikaty w Twoim statusie są dłuższe, masz tam i sprawdzenie zadań i drogę do pracy, ja mam tylko godzinę, datę i pogodę i często mi tych 200 znaków brakuje
chyba ten nod ma taki limit, niestety nie mam szans na publiczne ip u swojego operatora, i kicha…

@Robert_Król sprawdzę w poniedziałek i zobaczę co da się zrobić

Cześć , chciałem trochę zmodyfikować noda z aktualną datą - dodałem informacje o godzinie, oraz podmieniam dzień miesiąca, tak aby również był brany z macierzy (dziewiąty dzień października zamiast dziewięć dzień października)
W nodzie funkcji mam takie zapisy

const teraz = new Date();
const dni_tygodnia = [“niedziela”, “poniedziałek”, “wtorek”, “środa”, “czwartek”, “piątek”, “sobota”];
const miesiace = [“stycznia”,“lutego”,“marca”,“kwietnia”,“maja”,“czerwca”,“lipca”,
“sierpnia”,“września”,“października”,“listopada”,“grudnia”];
const godziny = [“pólnoc”, “pierwsza”, “druga”,“trzecia”, “czwarta”,“piąta”, “szósta”, “siódma”, “ósma”, “dziewiąta”, “dziesiąta”, “jedynasta”, “dwunasta”, “trzybasta”, “czternasta”,“piętnasta”, “szesnasta”, “siedemnasta”, “osiemstansta”, “dziewiętnasta”, “dwudziesta”, “dwudziestapierwsza”, “dwudziestadruga”, “dwudziestatrzecia”];
const dzien_slow = [“pierwszy”, “drugi”,“trzeci”, “czwarty”, “piąty”, “szósty”, “siódmy”, “ósmy”, “dziewiąty”, “dziesiąty”, “jedynasty”, “dwunasty”, “trzynasty”, “czternasty”, “piętnasty”, “szesnasty”, “siedemnasty”, “osiemnasty”, “dziewiętnasty”, “dwudziesty”, “dwudziestypierwszy”, “dwudziestydrugi”, “dwudziestytrzeci”, “dwudziestyczwarty”, “dwudzistypiąty”, “dwudziestyszósty”, “dwudziestysiódmy”, “dwudziestyósmy”, “dwudziestydziewiąty”, “trzydziesty”, “trzydziestypierwszy”];

msg.akt_godzina = ${ godziny[teraz.getHours()] };
msg.minuty = teraz.getMinutes()

msg.dzien_tygodnia = ${ dni_tygodnia[teraz.getDay()] } ;
msg.dzien_miesiaca = teraz.getDate();
msg.miesiac = ${ miesiace[teraz.getMonth()] };

msg.wiadomosc = "Dzisiaj jest “+msg.dzien_tygodnia+” “+msg.dzien_miesiaca+
" dzień “+msg.miesiac+”. Godzina “+msg.akt_godzina+” “+msg.minuty+””;
return msg;

Niestety w linijce msg.dzien_tygodnia pokazuje mi błąd składni - nie jestem programistą, czy ktoś mądrzejszy mógłby na to rzucić okiem i mnie poprawić?

i jeszcze drugie pytanie - czy można coś dopisać do tego kodu żeby pomiędzy datą a godziną wstawić powiedzmy 2 sekundową pauze podczas odtwarzania na głośniku?

@Krzysztof_Lusiak Powinno być lepiej. Poprawiłem tylko błędy składni nie analizowałem logiki.

const teraz = new Date();
const dni_tygodnia = ["niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota"];

const miesiace = ["stycznia","lutego","marca","kwietnia","maja","czerwca","lipca",
                  "sierpnia","września","października","listopada","grudnia"];
                  
const godziny = ["północ", "pierwsza","druga","trzecia", "czwarta","piąta", 
                 "szósta", "sidma", "ósma", "dziewiąta", "dziesiąta", "jedenasta", 
                 "dwunasta", "trzynasta", "czternasta","piętnasta", "szesnasta", 
                 "siedemnasta", "osiemstansta", "dziewiętnasta", "dwudziesta", 
                 "dwudziestapierwsza", "dwudziestadruga", "dwudziestatrzecia"];
                 
const dzien_slow = ["pierwszy", "drugi","trzeci", "czwarty", "piąty", "szósty", 
                    "siódmy", "ósmy", "dziewiąty", "dziesiąty", "jedynasty", 
                    "dwunasty", "trzynasty", "czternasty", "piętnasty", "szesnasty", 
                    "siedemnasty", "osiemnasty", "dziewiętnasty", "dwudziesty", 
                    "dwudziestypierwszy", "dwudziestydrugi", "dwudziestytrzeci", 
                    "dwudziestyczwarty", "dwudzistypiąty", "dwudziestyszósty", 
                    "dwudziestysiódmy", "dwudziestyósmy", "dwudziestydziewiąty", 
                    "trzydziesty", "trzydziestypierwszy"];

msg.akt_godzina = `${ godziny[teraz.getHours()] }`;
msg.minuty = teraz.getMinutes();

msg.dzien_tygodnia = `${ dni_tygodnia[teraz.getDay()] }`;
msg.dzien_miesiaca = teraz.getDate()
msg.miesiac = `${ miesiace[teraz.getMonth()] }`

msg.wiadomosc = "Dzisiaj jest "+msg.dzien_tygodnia+" "+msg.dzien_miesiaca+" dzień "+msg.miesiac+". Godzina "+msg.akt_godzina+" "+msg.minuty;

return msg;

Super dzięki, już wiem czego w składni mi brakowało :slight_smile: zostawiam poprawiony - może ktoś jeszcze skorzysta :slight_smile:

const teraz = new Date();
const dni_tygodnia = [“niedziela”, “poniedziałek”, “wtorek”, “środa”, “czwartek”, “piątek”, “sobota”];

const miesiace = [“stycznia”,“lutego”,“marca”,“kwietnia”,“maja”,“czerwca”,“lipca”,
“sierpnia”,“września”,“października”,“listopada”,“grudnia”];

const godziny = [“północ”, “pierwsza”,“druga”,“trzecia”, “czwarta”,“piąta”,
“szósta”, “sidma”, “ósma”, “dziewiąta”, “dziesiąta”, “jedenasta”,
“dwunasta”, “trzynasta”, “czternasta”,“piętnasta”, “szesnasta”,
“siedemnasta”, “osiemstansta”, “dziewiętnasta”, “dwudziesta”,
“dwudziestapierwsza”, “dwudziestadruga”, “dwudziestatrzecia”];

const dzien_slow = [“zerowy”,“pierwszy”, “drugi”,“trzeci”, “czwarty”, “piąty”, “szósty”,
“siódmy”, “ósmy”, “dziewiąty”, “dziesiąty”, “jedynasty”,
“dwunasty”, “trzynasty”, “czternasty”, “piętnasty”, “szesnasty”,
“siedemnasty”, “osiemnasty”, “dziewiętnasty”, “dwudziesty”,
“dwudziestypierwszy”, “dwudziestydrugi”, “dwudziestytrzeci”,
“dwudziestyczwarty”, “dwudzistypiąty”, “dwudziestyszósty”,
“dwudziestysiódmy”, “dwudziestyósmy”, “dwudziestydziewiąty”,
“trzydziesty”, “trzydziestypierwszy”];

msg.akt_godzina = ${ godziny[teraz.getHours()] };
msg.minuty = teraz.getMinutes();

msg.dzien_tygodnia = ${ dni_tygodnia[teraz.getDay()] };
msg.dzien_miesiaca = ${ dzien_slow[teraz.getDate()] };
msg.miesiac = ${ miesiace[teraz.getMonth()] }

msg.wiadomosc = "Dzisiaj jest “+msg.dzien_tygodnia+” “+msg.dzien_miesiaca+” dzień “+msg.miesiac+”. Godzina “+msg.akt_godzina+” "+msg.minuty;

return msg;

1 polubienie

Hej,
mam pytanie - pozwoliłem sobie zapożyczyć proces zapoczątkowany przez Artura i rozwinięty przez Krzysztofa.
W ostatnim poście, z poprawionym skryptem brakuje znaczników: ` przed znakiem dolarka.
Mi bez tego nie działa.

msg.akt_godzina = ${ godziny[teraz.getHours()] };
msg.minuty = teraz.getMinutes();

msg.dzien_tygodnia = ${ dni_tygodnia[teraz.getDay()] };
msg.dzien_miesiaca = ${ dzien_slow[teraz.getDate()]};
msg.miesiac = ${ miesiace[teraz.getMonth()] };

Mam do Was pytanie.
Chcialbym by proces nie był wyzwalany przez godzinę 8:00 rano, a obecność lokatora w danym pomieczeniu i aktywację czujnika ruchu.
O ile aktywacje czujnikiem ruchu wiem jak zrobić, to problem mam z nauczeniem NodeRed by taka aktywacja czujnika wyzwoliła komunikat wyłącznie jednokrotnie.

Konkretnie - chciałbym by osoba zbierająca się do pracy, po pierwszym wejściu do kuchni usłyszała status poranny. (Chciałbym również zawęzić godzine 05:00 - 10:00 by nocny marsz do toalety nie wyzwolił uruchomienia komunikatu).
Problem w tym, ze nie potrafię tego ograniczyć do jedynie jednokrotnego wyzwolenia statusu, by kolejne kręcenie się w kuchni i wykrycie ruchu nie puszczały tego w kółko.

Dopiero zaczynam zabawę, a jak to u początkujących bywa, wszystko wydaje się być skomplikowane :wink:

Użyj delay node ogranicz ilość wiadomości 1 wiadomość / na 2 godziny czy ile tam potrzebujesz.
delay nodet - 29_10 002

1 polubienie

@Krzysztof_Lusiak, wrzóć proszę tego noda z poprawioną funkcją, bo po w wklejeniu to mi same błedy pokazuje, a utknąłem na dolarkach i nie wiem o co mu chodzi…

a i jeszcze jedno, macie w końcu język polski w openweather? czy może ktoś zrobił nody z tłumaczeniem

1 polubienie

@Matis1993rm odnośnie twojego tematu, to ja wrzuciłem noda evan state i uzależniłem go od ładowania bateri w telefonie, inaczej mówiąc wyzwalaczem jest “_battery_state” jako “charging” . Jak wstaje to biorę telefon i nod wtedy startuje z pozycji false, dochodzi do wait until (30min) i czeka na ruch aż ta osoba zejdzie po schodach

Proszę

const teraz = new Date();
const dni_tygodnia = [“niedziela”, “poniedziałek”, “wtorek”, “środa”, “czwartek”, “piątek”, “sobota”];

const miesiace = [“stycznia”,“lutego”,“marca”,“kwietnia”,“maja”,“czerwca”,“lipca”,
“sierpnia”,“września”,“października”,“listopada”,“grudnia”];

const godziny = [“północ”, “pierwsza”,“druga”,“trzecia”, “czwarta”,“piąta”,
“szósta”, “sidma”, “ósma”, “dziewiąta”, “dziesiąta”, “jedenasta”,
“dwunasta”, “trzynasta”, “czternasta”,“piętnasta”, “szesnasta”,
“siedemnasta”, “osiemstansta”, “dziewiętnasta”, “dwudziesta”,
“dwudziestapierwsza”, “dwudziestadruga”, “dwudziestatrzecia”];

const dzien_slow = [“zerowy”,“pierwszy”, “drugi”,“trzeci”, “czwarty”, “piąty”, “szósty”,
“siódmy”, “ósmy”, “dziewiąty”, “dziesiąty”, “jedynasty”,
“dwunasty”, “trzynasty”, “czternasty”, “piętnasty”, “szesnasty”,
“siedemnasty”, “osiemnasty”, “dziewiętnasty”, “dwudziesty”,
“dwudziestypierwszy”, “dwudziestydrugi”, “dwudziestytrzeci”,
“dwudziestyczwarty”, “dwudzistypiąty”, “dwudziestyszósty”,
“dwudziestysiódmy”, “dwudziestyósmy”, “dwudziestydziewiąty”,
“trzydziesty”, “trzydziestypierwszy”];

msg.akt_godzina = ${ godziny[teraz.getHours()] };
msg.minuty = teraz.getMinutes();

msg.dzien_tygodnia = ${ dni_tygodnia[teraz.getDay()] };
msg.dzien_miesiaca = ${ dzien_slow[teraz.getDate()] };
msg.miesiac = ${ miesiace[teraz.getMonth()] }

msg.wiadomosc = msg.wiadomosc+ "Dzisiaj jest “+msg.dzien_tygodnia+” “+msg.dzien_miesiaca+” dzień “+msg.miesiac+”. Godzina “+msg.akt_godzina+” "+msg.minuty;
return msg;

Albo jeśli wygodniej jako export noda

flows (2).json (2,3 KB)

1 polubienie

https://forum.arturhome.pl/t/openweather-problem-z-api/754/11

Hejka, taka informacja jest na stronie integracji Open Weather Map, oznacza to, że raczej nie doczekamy się na poprawę dodatku, i pozostaje tylko tłumaczenie

@luki25 dzięki za info, też widziałem właśnie szykuje film z serii co nowego i wspominam w nim o tym :grinning:

Wpadłem na jeszcze jeden pomysł ale nie do końca wiem jak go zrealizować. Może będziecie w stanie mi podpowiedzieć. Chciałbym aby status poranny uruchamiał się 5 minut po budziku. informacje o godzinie budzenia HA może wyciągnąć apką HA z telefonu next_alarm w takiej formie 2021-01-01T19:56:00.000Z. Jak to porównać z aktualną godziną ? że jak się zgadza+5 minut to uruchom status poranny ?

A nie prościej uruchomić proces w tym samym czasie ale dać delay na 5 minut :grinning:? może to nie jest super eleganckie ale czasem nie ma co sobie życia utrudniać.

to już szczegół. najtrudniejsza kwestia to jak wykorzystać encje next alarm z ustawioną godziną by status poranny działał jak wstaję.

Hejka,
Takie pytanko może ktoś to już przećwiczył… mam zainstalowany dodatek informujący mnie na panelu o wywozie śmieci. Czy macie w miarę prosty sposób, aby do statusu porannego dodawać informację, że jutro / dzisiaj odbędzie się wywóz określonych śmieci.
Ja mam w sumie 4 typy wywozu śmieci (komunalne odpady zmieszane, bioodpady ulegające degradacji, szkło i papier oraz metale i tworzywa sztuczne) każdy z tych wywozów jest osobną encją (sensorem) w HA - jeżeli wywóz jest jutro to dana encja ma wartość 1, jeżeli wywóz jest dzisiaj to encja ma wartość 0.
Pytanie jak zrobić, aby status poranny sprawdzał czy któraś z 4 encji ma staus 1 lub 0 i dodał do komunikatu - Pamiętaj, że dzisiaj / jutro wywóz [nazwa sensora / encji].