Zmienna w powiadomieniu email

W przypadku powiadomienia na telefon zmienna {{now().strftime(’%H:%M’)}} w funkcji jest prawidłowo interpretowana, natomiast w przypadku powiadomienia email nie działa to prawidłowo. Podpowiedzcie jak to ogarnąć…

Nikt, nic nie szepnie? :slight_smile:

Jak dla mnie to przekazałeś za mało informacji technicznych żeby podjąć próbę analizy problemu a w “100 pytań do” już się nie bawię :smile:.

Jak wrzucam poniższą funkcję do nodu, który wysyła powiadomienie na telefon (notify, mobile_app_telefon_marcin), to telefon prezentuję dane zamiast zmiennej.

Natomiast kiedy kieruję funkcję:
msg = {
payload : “Nie ma nikogo w domu. Home Assistant wykrył ruch w wiatrołapie o godz. {{now().strftime(’%H:%M’)}}”,
topic : “Nie ma nikogo w domu! Ruch w wiatrołapie!”
};
return msg;

do nodu, który powinien wysłać mail, to ta zmienna nie jest zamieniana na godzinę (w treści maila). Nie wiem czy dość jasno to opisałem :slight_smile:

Teraz bardzo dobrze i jasno opisałeś problem :slight_smile:.

To jest z Pythona i nie będzie działać bezpośrednio w Node-RED, w którym korzysta się z JavaScript. Nie jestem programistą, nie znam Node-REDa ale na początek spróbuj tak:

msg = {
  payload : “Nie ma nikogo w domu. Home Assistant wykrył ruch w wiatrołapie o godz. " + Date().toString(),
  topic : “Nie ma nikogo w domu! Ruch w wiatrołapie!”
};
return msg;

Dostosuj oczywiście wcięcia aby składnia była poprawna.

Hmm, ale zapis {{now().strftime(’%H:%M’)}} działa w Node-RED w funkcji “Wiadomość”, jednak tylko w przypadku jak powiadomienie idzie na telefon - tu jest ok:

Jak zdefiniuję funkcję w nodzie “Wiadomość @”:

msg = {
payload : “Nie ma nikogo w domu. Home Assistant wykrył ruch w wiatrołapie o godz. {{now().strftime(’%H:%M’)}}”,
topic : “Nie ma nikogo w domu! Ruch w wiatrołapie!”
};
return msg;

Piszę na szybko, jeszcze nie testowałem Twojej sugestii.

Wszystko się zgadza:

  • idzie na telefon, to idzie przez HA, HA interpretuje tekst w klarmach jako funkcję Pythona,
  • idzie emailem, to idzie przez Node-REDa (przez jakiś dodatek do NR), dla NR to po prostu tekst, żeby wstawić godzinę należy skorzystać z języka programowania z jakiego korzysta NR.

Popatrz na kolory nodów, z których korzystasz, są inne, też się różnią, to nie przypadek :grin:.

Helloł, mam prawko, znam kolory i czuje się wyśmienicie :wink:

I jaki jest efekt mojej sugestii?

Działa :slight_smile: Dzięki :slight_smile:
Nie ma nikogo w domu. Home Assistant wyłączył światło.Wed Apr 14 2021 10:11:53 GMT+0200 (Central European Summer Time)

@mstefanowicz na przyszłość prośba o dzielenie się z innymi forumowiczami rozwiązaniami problemu.

1 Like

Przecież odpowiedziałem, że działa. Poza tym oznaczyłem rozwiązanie, więc nie wiem skąd taki zarzut?

To, że działa to wszyscy wiedzą, ale jeśli ktoś będzie miał taki problem to chciałby wiedzieć jak to rozwiązałeś (zrobiłeś), nie będzie musiał dopytywać jak to zrobić jak czegoś nie zrozumieją.

Rozwiązanie podał kolega @macek kilka postów wyżej.

Panowie, gotowy kod jaki należy użyć podał @macek. Nie wiem, jak można to jaśniej zakończyć, wskazując rozwiązanie. Ja jestem świerzak i zdaję sobie sprawę, że informowanie o rozwiązaniu może pomóc takim jak ja.

Zainteresowanych proszę o przesunięcie fragmentu z kodem i będzie wiadomo:

Date().toString() odpowiada za wstawienie aktualnej daty i godziny (Wed Apr 14 2021 10:11:53 GMT+0200 (Central European Summer Time) w node odpowiedzialnym za wysyłanie wiadomości w emailu, oczywiście można odpowiednio zmodyfikować te funkcję aby dostać dane w bardziej przyjazny sposób.

1 Like

Tak pisałem :slight_smile: Możemy już więcej nie bić piany? :slight_smile:

Jak masz chwilkę, to rzuć okiem:

Jeżeli wynik Cię zadowala to temat do zamknięcia. Ale można go podciągnąć tak by podawał tylko HH:MM tak jak pewnie chciałeś.

Dlaczego składnia nie działa z Python’a?
Bo nod funkcji to czysty JavaScript i operuje tylko na zmiennych w nim zdeklarowanych (nie licząc globalnych funkcji JavaScripu)

Są funkcje JS które zmienią datę na lokalną i podadzą w wybranym przez Ciebie formacie.