@engine1992 … wpisz dla próby w Twoim debug2 coś takiego: msg.sensorUpdates.poziom - zobaczymy czy debug potrafi to odczytać.
U mnie ogólnie NR robi wszystko, jest bardzo dużo automatyzacji w NR (nie korzystam z automatyzacji bezpośrednio w HA) i nie miałem jak dotąd problemów po aktualizacjach, a serwer działa od 3 lat non stop, także chyba to nie wina aktualizacji (tak mi się wydaje)
Node-RED w wersji 17.0.13
Node-RED Comanion w wersji 4.0.0
Wszystko aktualne
Dane pobierane z bazy Firestore.
Musiałbym przygotować jakąś przykładową bazę pod “upublicznienie” Ale jak nie dojdziemy bez tego co jest nie tak, to zrobi się
Niestety:
Nie wiem który nod masz?
node-red-contrib-firestore
ostatnia aktualizacja 5,5 lat temu, nie da się zainstalować same błędy podczas instalacji.
node-red-contrib-cloud-firestore
działa, niestety nie mam bazy więc nie przetestuje.
Debug ustaw na complete msg object
i zobacz co jest na wyjściu.
tego instalowałem.
W moim flow, który wysłałem jest zapisana konfiguracja do połączenia z bazą (pobieranie danych z bazy powinno działać).
Po ustawieniu na “complete msg object” wypluło to:
Zadziałało!
Przez noda change, taka ścieżka:
Zostaje ostatnia rzecz, jak przerobić sekundy na datę, w Firestone wyświetla jest data, po pobraniu do NodeRed mam sekundy i nanosekundy
To tak nie działa, wszystkie klucze hasła, tokeny itd. Nie są kopiowane przy eksporcie.
Moment jest chyba wbudowany teraz w NR
$moment($$.payload).tz("Europe/London").format("hh:mm:ss A")
To były strzał… jeśli zobaczysz na pierwszy wpis kolegi to debug sugerował, że jest to kompletna wiadomość - brakuje prefiksu payload.
Wiadomość nie musi zawierać właściwości payload, to mnie skołowało.
Wszystko wyglądało Ok ale cały czas mi czegoś brakowało
Pierwsza jest msg.payload, druga complete i widać co jest co.
Nie musisz tego w ogóle robić, wystarczy że w całym procesie będziesz się posługiwał pełną scieżką msg.payload.sensorUpdates.xxxxxx (nawet w debug)
Te odczytane z wiadomości rozumiem?
… inny sposób to przez funkcję
let time = msg.payload.sensorUpdates.czas._seconds * 1000;
const date = new Date(time)
msg.date = date;
msg.hour = date.getHours();
msg.min = date.getMinutes();
msg.sec = date.getSeconds();
return msg;
Korzystając z tabeli
… możesz odczytać interesujące składniki - w wyniku czego msg będzie rozszerzony o wybrane właściwości