Witam,
Chciałbym przed zmianą temperatury na głowicy za pomocą NR zapamiętać poprzednią temperaturę tak abym mógł do niej wrócić.
Macie jakieś sprawdzone metody?
Witam,
Chciałbym przed zmianą temperatury na głowicy za pomocą NR zapamiętać poprzednią temperaturę tak abym mógł do niej wrócić.
Macie jakieś sprawdzone metody?
W obiekcie msg. masz old_state więc możesz to wykorzystać. Zawsze też możesz zapisać to w zmiennej kontekstowej o ile chcesz wykorzystać ją dosyć szybko bo zmienne kontekstowe giną po restarcie NR. No i 3 sposób to utworzyć pomocnika w HA i w nim przechowywać.
Trzeci sposób o którym pisze @artur to też stworzenie rejestratora dla zmiennej w HA. Zmiany stanu będą zapisywane w bazie danych i dostępne w historii. Przez to może mocno spuchnąć baza danych HA. Rejestracja zmiany stanu wartości numerycznej zmiennoprzecinkowej co 15s. u mnie zaważyło około 50mb miesięcznie.
A jak pobrać old_state?
Z pomocą kolegów z pracy udało mi się zapisać stan
const payloads = ;
const payload = {};
payload.domain = ‘climate’;
payload.service =set_temperature
;
myRoom = msg.payload.home.rooms.find(x => x.id === ‘xxcczz’);
payload.data = {
entity_id: myRoom.id,
temperature: myRoom.therm_setpoint_temperature,};
flow.set(‘savedStates’, payload.data);
// create a blank message object with out new payload
msg.payload.saveStatus = { payload: payload };
return msg;
Tylko jak to dalej wykorzystać w procesie?
Dobra, poprowadzę Cię “za rączkę”, ale powiedz, czy potrzebujesz jeden ostatni stan, czy więcej.
Dane: dana która przychodzi w wiadomości znajduje się jest zapisana znajduje się w zmiennej msg.payload.mojaDana
KOD dla funkcji:
var HistMojaDana=flow.get(“HistMojaDana”) || 21.5;
msg.payload.mojaDanaHistoryczna=HistMojaDana;
flow.set(“HistMojaDana”, msg.payload.mojaDana);
return msg
przy starcie Node-Red’a jako pierwszą zmienną historyczną ustawi 21.5 (możesz wpisać inną)
druga linia dodaje do msg zmienną “mojaDanaHistoryczna”, która została pobrana z zmiennej zapisanej jako historyczna na karcie procesu (flow) .
trzecia linia zapisuje w procesie (karcie Flow) wartość dla zmiennej historycznej - którą aktualnie odczytał z wartości msg (z czujnika).
Czwarta wysyła msg z dodaną zmienną historyczną.
Dokładnie masz to omówione w filmie @artur : https://www.youtube.com/watch?v=7FcB4ETeAiE
Tyle, że aby zaczytać daną musze dograć dodatek do netatmo bo w standardzie nie czyta mi tej informacji
Nie wiem w jaki sposób pobierasz dane. Pytałeś jak zapisać dane historyczne (z ostatniego odczytu) do pobierania stanu z encji w HA służy nod “events: state” który bardzo ładnie opisał @artur w swoim ostatnim poradniku na YT: Nauka Node-RED - Lekcja 12 - Poznajemy nod: Events state
Ja opisałem mój pomysł na odczytywanie danych pobieranych poprzez http z Lan Kontrolera tutaj