W związku z powyższym narodził się pomysł rozszerzenia interaktywnej komunikacji z bramką - najpierw chciałem to uzyskać rozbudowując opcje WebInterface, gdzie zdążyłem już dodać kilka przydatnych funkcji, jak np. NWK-SCAN czy TIMEOUT dla sleeping devices. Porzuciłem jednak ten pomysł z uwagi na ograniczenia WebInterface i doszedłem do wniosku, że połączę to z pomysłem narzędzia do testowania głowic - poniżej szczegóły nowej funkcji:
- po połączeniu z serwerem Supla i uruchomieniu stosu Zigbee bramka aktywuje serwer Telnetu IP:23, do którego można się zalogować, np. przy pomocy bardzo popularnego PuTTY,
- to jest naprawdę bardzo prosty serwer, więc nie oczekujcie wodotrysków w stylu przewijanie listy poprzednich rozkazów itp.,
- składnia poleceń jest prosta: rozkaz param_1 param_2....
- parametry to po prostu wartości - więc serwer oczekuje konkretnej liczby i kolejności parametrów,
- przykładowe polecenie open-network 120 - nastąpi otwarcie sieci bramki na 120 sekund,
- lista poleceń z objaśnieniami - poniżej - wielkość liter nie ma znaczenia:
- open-network time(seconds), w przypadku braku parametru time przyjęte zostaje 180 sekund,
- list-devices - wyświetla wszystkie rekordy z tabeli Z2SDevices, przydatne m.in. do ustalenia numeru kanału danego urządzenia,
- remove-channel channel_id - usuwa kanał Supla o podanym numerze (analogicznie jak funkcja w WebInterface),
- update-timeout channel_id timeout(h) - ustawia timeout dla SED w h (analogicznie jak funkcja w WebInterface),
- reset-zigbee-stack,
- nwk-scan - wyświetla wszystkie dane skanowania + uaktualnia RSSI urządzeń,
- read-attribute channel_id cluster_id attribute_id - odczytuje wartość atrybutu na podanym klastrze - więcej poniżej,
- configure-reporting channel_id cluster_id attribute_id attribute_type min_interval max_interval delta - konfiguruje cykliczne raportowanie atrybutu - więcej poniżej,
- device-discovery channel_id - działa podobnie do skanera, ale niestety z ograniczoną funkcjonalnością,
- write-attribute channel_id cluster_id attribute_id attribute_type attribute_size value - zapisuje wartość atrybutu w urządzeniu Zigbee - wiecej poniżej,
- custom-cmd channel_id cluster_id command_id data_type data_size value - wysyła rozkaz do urządzenia Zigbee - więcej poniżej.
read-attribute channel_id cluster_id attribute_id :przykład:
- channel_id - wartość odczytujemy z Supla Cloud lub z polecenia list-devices,
- cluster_id - wpisujemy wartość liczbową (w systemie dziesiętnym lub poprzedzoną "0x" w heksadecymalnym), można też skorzystać z predefiniowanych skrótów:
- ONOFF, EM, SM, POWER, COLOR, TEMP, HUMI, PRESSURE, IAS, LEVEL, POLL
- attribute_id - wpisujemy numer atrybutu do odczytania - odsyłam do dokumentacji Zigbee lub proszę pytać
- odczyta nam stan gniazdka ON/OFF urządzenia przypisanego do kanału 0.read-attribute 0 ONOFF 0
configure-reporting channel_id cluster_id attribute_id attribute_type min_interval max_interval delta:
- channel_id - wartość odczytujemy z Supla Cloud lub z polecenia list-devices,
- cluster_id - wpisujemy wartość liczbową (w systemie dziesiętnym lub poprzedzoną "0x" w heksadecymalnym), można też skorzystać z predefiniowanych skrótów - j.w.,
- attribute_id - numer atrybutu - j.w.,
- attribute_type - typ atrybutu -wpisujemy wartość liczbową (w systemie dziesiętnym lub poprzedzoną "0x" w heksadecymalnym) lub można skorzystać z predefiniowanych skrótów:
- BOOL, U8, U16, S8, S16, ENUM8, ENUM16, 8BITMAP, 16BITMAP, ARRAY, SET
- min_interval - ta nazwa jest nieco myląca - to jest najkrótszy czas, po którym urządzenie ma zaraportować informację, czyli jeżeli wpiszemy tam, np. 0x0E10 to urządzenie nie wyśle raportu częściej niż co 1 godzinę,
- max_interval - a to jest najdłuższy czas do raportu (również w sekundach) - tutaj powinniśmy podawać wartość odstępu czasowego, po którym urządzenie obowiązkowo wysyła raport, nawet jeżeli nic się nie zmieniło,
- delta - wielkość zmiany atrybutu, która wywoła raport,
Zachęcam do testowania swoich czujników otwarcia:
configure-reporting my_channel IAS 0x2 16BITMAP 0 my_time_to_report_in_seconds 1
write-attribute channel_id cluster_id attribute_id attribute_type attribute_size value:
- channel_id - wartość odczytujemy z Supla Cloud lub z polecenia list-devices,
- cluster_id - wpisujemy wartość liczbową (w systemie dziesiętnym lub poprzedzoną "0x" w heksadecymalnym) lub można skorzystać z predefiniowanych skrótów - j.w.,
- attribute_id - numer atrybutu - j.w.,
- attribute_type - typ atrybutu -wpisujemy wartość liczbową (w systemie dziesiętnym lub poprzedzoną "0x" w heksadecymalnym), można też skorzystać z predefiniowanych skrótów - j.w.,
- attribute_size - najczęściej 1,2 lub 4 bajty,
- wartość do zapisania - podajemy ją w systemie dziesiętnym lub poprzedzoną "0x" w heksadecymalnym
Taka propozycja testu dla ciekawych:
gniazdko Tuya write-attribute my_channel onoff 0x8002 enum8 1 my_value, gdzie
my_value = 0 = POWER_OFF_ON_STARTUP,
1 = POWER_ON_ON_STARTUP,
2 = POWER_RESTORE_ON_STARTUP
albo
włącznik Tuya: write-attribute my_channel onoff 0x5000 enum8 1 my_value, gdzie
my_value = 0 = BACKLIGHT_OFF,
1 = BACKLIGHT_ON

