varbinary(8)

Juperr
Posts: 16
Joined: Thu Apr 24, 2025 5:16 pm

Post

Witam
Wartości urządzeń są zapisywanie do tabeli supla_dev_channel_value/values
typ varbinary(8)
Chce to odczytywać w php, ale nie wiem jak to rozszyfrować.
Ma ktoś jakiś pomysł?
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Ogólnie urządzenia przesyłają stan jako tablica 8 bajtów.
Różne typy kanałów/funkcje mają tam różny format danych
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

https://github.com/SUPLA/supla-core/tre ... vice/value tu możesz sprawdzić na jakie struktury ta binarka jest rzutowana.
SUPLA.... Nareszcie w domu.
Juperr
Posts: 16
Joined: Thu Apr 24, 2025 5:16 pm

Post

NIe bardo moge to rozszyfrować :(

Może jakiś przykład np. temperatury :)
User avatar
pzygmunt
Posts: 20302
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Been thanked: 59 times

Post

Jeśli to kanał temperatury to rzutujesz 8 bajtów na double.
Jeśli temperatura i wilgotność to pierwsze 4 bajty rzutujesz na int-a i dzielisz przez 1000. Na kolejnych 4 masz wilgotność w int co też musisz podzielić przez 1000.
W PHP możesz użyć funkcji unpack.
SUPLA.... Nareszcie w domu.
Juperr
Posts: 16
Joined: Thu Apr 24, 2025 5:16 pm

Post

Code: Select all

$src = '0000000000a03c40';
$arr = array_map('hexdec', str_split($src, 2));
$double = unpack('d', pack("C*", ...$arr));

var_dump($double);

$temp =$double[1];
echo "$temp&degC<br />";
i teraz sie zgadza, ja próbowałem na float :lol:

Podziękować :)
Juperr
Posts: 16
Joined: Thu Apr 24, 2025 5:16 pm

Post

Witam
w supla_dev_channel_value są aktualne parametry do odczytu.

do jakiej tabeli z poziomu php zapisać parametr żeby został wysłany do urządzenia?
i w jakim formacie?

Chodzi mi o to jak wysłać do ESP np. zmiane stanu przekaźnika.

Return to “Pomoc”