Projekt planuje zrealizować w Node-Red, na bazie odczytu historii czujnika temperatury z poprzedniej doby, a temperaturę “zważyć” czasem w jakim obowiązywała z dokładnością do sekundy. Myślę że to jedyny właściwy sposób na określenie faktycznej średniej temperatury dobowej
Ja przyjąłem następującą metodykę:
- Uruchomienie skryptu raz na dobę.
- Określenie dat ograniczających zakres obliczeń średniej temperatury (w moim przypadku od poprzedni dzień godzina 00:00 do dzisiejszy dzień 00:00 z uwzględnieniem strefy czasowej)
- Pobranie historii z czujnika temperatury w zdefiniowanym przedziale czasowym.
- Wygenerowanie tablicy z danymi niezbędnymi do przeprowadzenia obliczeń (wartość temperatury, data z godziną zmiany stanu czujnika)
- Obliczenia średniej ważonej temperatury dobowej z dokładnością pomiarową do jednej sekundy
- Zapisanie danych do dalszej analizy. (w moim przypadku w arkuszach google).
Aktualnie jestem na etapie 5 - zwrot Średniej Temperatury Ważonej z czujnika odbywa się poprzez msg.payload.
Gdyby ktoś chciał wykorzystać w swoim projekcie w załączeniu plik JSON
swtd.json (4,4 KB)
EDIT: 2023-06-04
Projekt przeszedł ewolucje i obecnie spełnia wszystkie założenia.
całość upubliczniam (oprócz linku do stworzonej ankiety w Formularze Google z wiadomych przyczyn.
w function są zmienione dwa wiersze:
var formularz ="https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/formResponse?";
var dane = "entry.XXXXXXXXXX=" + d1 + "&entry.XXXXXXXXXX=" + d2 + "&entry.XXXXXXXXXX=" + d3 + "&entry.XXXXXXXXXX=" + d4 + "&entry.XXXXXXXXXX=" + d5 + "&entry.XXXXXXXXXX=" + d6 + "&entry.XXXXXXXXXX=" + d7 + "&submit=Submit"
gdzie zaiksowane są właściwe dane.
swtd v2 forum.json (11,1 KB)
– zawiera bugi – czytaj dalej
UPDATE - 01-07-2023
Okazało się że w funkcji obsługi daty były błędne algorytmu obliczające zakres pobrania historii - dotyczyło to dat z przełomu miesiąca.
-błąd naprawiony
Drugi błąd w algorytmie to brak weryfikacji wartości zwracanej przez czujnik temperatury. W przypadku pojawienia się w historii wartości “unavitable” lub “unknown” (co często ma miejsce po aktualizacji Z2M) - to widać na powyższej grafice - wartości NaN
-błąd naprawiony
poprawiony algorytm:
swtd v3 forum.json (11,8 KB)