Tasmota własne skrypty

Witam, mam pytanie do bardziej zaawansowanych użytkowników tasmoty. Piszę własny skrypt do obsługi protokołu modbus i przesyłania danych w formacie JSON. W strukturze JSON musze umieścić znacznik czasu timestamp w formacie Epoch Unix Timestamp czyli np. 1684158613. W jaki sposób mogę uzyskać dostęp do aktualnej wartości z poziomu skryptu?

Udało mi się ustalić że taki znacznik istnieje w strukturze tasmoty, można go uzyskać na przykład po przez wpisanie w cmd polecenia “Time 3”, a następnie odpowiedzią na polecenie “Time” jest właśnie potrzebna mi wartość {Time:1684158613}. Jak dostać się do tej wartości z poziomu skryptu aby móc wykorzystać ją w poleceniu WebQuery?

Na pewno można odczytać to tak http://192.168.1.74/cm?cmnd=time

w ten sposób odczytamy tą wartość z zewnątrz a mi chodzi o odczytanie z poziomu wewnętrznego skryptu Tasmoty (dostępnego po kompilacji z parametrem #define USE_SCRIPT).

W końcu udało mi się odczytać tą wartość z poziomu skryptu choć jest to rozwiązanie dość akrobatyczne. Należy skompilować tasmotę z parametrem #define USE_SCRIPT_STATUS który uaktywnia sekcję >U gdzie przekazywana jest odpowiedź na komendę StatusX. Sekcja >U zostaje wykonana w momencie gdy w konsoli ukaże się wpis STATUSx. Z poziomu skryptu wydajemy komendę +>status 8 a odpowiedź dla tej komendy wróci w formacie JSON do sekcji >U gdzie możemy ją przechwycić za pomocą tsp=StatusSNS#Time.

Jeśli ktoś zna lepszy i łatwiejszy sposób na przechwycenie tej wartości w skrypcie to chętnie się dowiem jak to zrobić.

Można by zadać pytanie po co to wszystko? Otóż dodając jeszcze klika dodatkowych komend do skryptu możemy uzyskać bezpośrednie połączenie Tesamota->Grafana Cloud co daje możliwość logowania i zdalnego odczytu live parametrów bez żadnego dodatkowego sprzętu, serwerów czy dodatkowych skryptów do przesyłania danych, wystarczy moduł z tasmotą podłączony do wifi.

Może prościej uzyskasz podobne rezultaty przez reguły?

Problem w tym że moduł Rules wyklucza się z modułem USE_SCRIPT, nie można ich używać równocześnie.

Tego to nie wiedziałem. Reguły trochę poćwiczyłem, nie wiem co dokładnie robi Twój skrypt, więc ciężko o konkretne podpowiedzi.

Tak dokładnie to skrypt komunikuje się z regulatorem ogrzewania CWU z paneli PV za pomocą modułu SMI odczytując jego rejestry protokołem modbus, następnie pakuje to wszystko do JSON’a i wysyła to poleceniem WebQuery do Grafana Cloud. Kwestia jest taka że Grafana Cloud oczekuje w strukturze JSON pozycji {timestamp:1684416082}. Chodzi o to w jaki sposób uzyskać aktualną wartość timestamp na poziomie skryptu aby potem skrypt umieścił ją w odpowiednim miejscu w strukturze JSON.