Node Red Stopwatch

Cześć
Męczę się z tym cały dzień ale jednak jestem za cienki w NR. Pomysł jest “prosty” i był już poruszany na forum ale z racji luźnej niedzieli chciałem się nieco podszkolić w NR bo mam tu ewidentne braki. Do sedna:
Chcę sobie zrobić licznik czasu którego wartość będzie występowała tylko w powiadomieniu na telefonie. Wykorzystuję funkcję node-red-contrib-stop-watch (node) - Node-RED i zamysł był taki że payload z niej wrzucam do zmiennych globalnych albo flow i z tamtąd odczytuje je w treści powiadomienia. W treści będzie stała formułka typu: “Wydrukowano w:” i ona też ma się znajdować w powiadomieniu. Do wyzwolenia notify muszę użyć innego przepływu bo w obecnym wysyła mi powiadomienia co sekundę. Ogólnie największy problem mam z napisaniem powiadomienia zawierającego 2 zmienne flow.


nr2

Nawet jeśli jest do przekombinowane to chciałbym dowiedzieć się jak coś takiego zrobić, nie lubię korzystać z gotowych rzeczy których nie rozumiem :wink:

P.S Zdublowane wejścia są tylko roboczą wersją

chodzi Tobie o konfigurację w nodzie funkcji, łączącą w jednym payload
dwie zmienne pobrane z kontekst flow ?

konfiguracja w nodzie funkcyjnym

flow.set("tekst", "Przykładowa wiadomość");
flow.set("czas", "12:34");
var tekst = flow.get("tekst") || "Brak wiadomości";
var czas = flow.get("czas") || "00:00"; 
msg.payload = `Powiadomienie: ${tekst}, wysłane o ${czas}.`;
return msg;

Stopwatch ma taką urodę, że gdy go uruchomisz to “puka” co sek do zatrzymania.
Powiadomienie wysyłaj tylko od zdarzenia “stop”, wcześniej pobierając czas ze zmiennej flow.czas. Po prostu inaczej to narysuj.

… uwielbiam zagadki rysunkowe :rofl:

Jestem wzrokowcem i lepiej mi się tak czyta przepływy :rofl:

Czyli widzisz to tak żeby od noda stopujacego wypuścić funkcję która będzie zaciągała zmienne flow i dopiero powiadomienie? Tylko jak do tej funkcji napisać odczytywanie zmiennych flow?

Tak samo jak zrobiłeś w funkcji czas - tylko odwrotnie flow.get

Widzę to całkiem inaczej - po co do tak prostego zadania instalować jakieś dziwne nody.
Parę razy już tu pisałem o znaczniku czasu (timestamp)…

Tak jak mówiłem: do tego mógłbym nawet obejść NR i ogarnąć to w HA ale chciałem się trochę doedukować i dowiedzieć czegoś nowego :wink:

Dzięki @MariuszAK @RobinI30 udało się osiągnąć cel. Teraz to wygląda tak:
“pobranie flow”

var tekst = flow.get("tekst") || "Brak wiadomości";
var czas = flow.get("czas") || "00:00"; 
msg.payload = ` ${tekst} ${czas}.`;
return msg;

Resetowanie stopwatcha po otrzymaniu powiadomienia