Pytania techniczne dotyczące kodu [bramka ZigBee]

Moderator: vajera

User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

klew wrote: Tue Mar 04, 2025 7:16 pm
vajera wrote: Tue Mar 04, 2025 5:27 pm @klew Takie pytanie techniczne dotyczące SecondaryChannel - z punktu widzenia obsługi kanałów Supla to jest normalny kanał, prawda?
Też ma swój numer, który można mu zmienić i też wlicza się do tej puli 128 kanałów?
To jest martwa gałąź ewolucji.
Proszę tego nie używać :)
W takim razie co z objektem typu Therm_hygro_press_meter - też trup?
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

To było dodane do obsługi bme280, czy czegoś w tym stylu.
Działać, działa, ale nie zadziałają na tym wszystkie funkcje biblioteki.
Lepiej osobno stworzyć temp+humi I osobno ciśnienie.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

klew wrote: Tue Mar 04, 2025 9:29 pm To było dodane do obsługi bme280, czy czegoś w tym stylu.
Działać, działa, ale nie zadziałają na tym wszystkie funkcje biblioteki.
Lepiej osobno stworzyć temp+humi I osobno ciśnienie.
Szkoda, że zapytałem na samym końcu... :lol:
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

@klew - ja znowu z pytaniem 😉

Wciąż jeszcze próbuję wykorzystać ten komponent DIMMERANDRGBW bo on bardzo fajnie w aplikacji wygląda, ale mam z nim następujący problem:
  1. utworzyłem klasę na wzór RGBWBase - mam w niej tylko metody handleNewValueFromServer i iterateAlways,
  2. przy pomocy tej klasy testuję jak operowanie widgetami w apce przekłada się na wartości wysyłane do urządzenia,
  3. kiedy wydawało mi się, że mam już temat ogarnięty wyskoczyło coś takiego:
    • jestem w podglądzie RGB, klikam np. na czerwony,
    • następuje wywołanie funkcji handleNewValue - red 255, colorBrightness 50,
    • ponieważ chcę w takiej sytuacji wyłączyć dimmer to ustawiam Brightness na 0 i włączam flagę dla iterateAlways żeby przy najbliższej okazji wysłała wartości na serwer,
    • problem w tym, że to kliknięcie na czerwony powoduje wywołanie metody handleNewValue...2x...praktycznie w tym samym czasie...bo pomimo tego, że jestem w widoku RGB dostaję też wiadomość z komponentu dimmera, która w tym momencie psuje mi logikę 😞
  4. innymi słowy nie mogę znaleźć prostego sposobu żeby ustalić z poziomu funkcji handleNewValue czy użytkownik jest aktualnie w widoku dimmera czy RGB i co tak naprawdę nacisnął - tzn. wyjściowo mogę bo porównam colorBrightness i Brightness z poprzednimi wartościami i wiem gdzie kliknął, ale jak jednocześnie wyzeruję w tej metodzie brightness żeby wyłączyć dimmer a ułamek sekundy później przychodzi stan dimmera jeszcze z niezerową wartością Brightness to wszystko się sypie...
Podsumowując - czy to jest by design, że ten widget wysyła 2x handleNewValue po kliknięciu w koło kolorów? Tak jakby 1x dla RGB i 1x dla DIMMER?
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

vajera wrote: Thu Mar 27, 2025 10:03 am @klew - ja znowu z pytaniem 😉

Wciąż jeszcze próbuję wykorzystać ten komponent DIMMERANDRGBW bo on bardzo fajnie w aplikacji wygląda, ale mam z nim następujący problem:
  1. utworzyłem klasę na wzór RGBWBase - mam w niej tylko metody handleNewValueFromServer i iterateAlways,
  2. przy pomocy tej klasy testuję jak operowanie widgetami w apce przekłada się na wartości wysyłane do urządzenia,
  3. kiedy wydawało mi się, że mam już temat ogarnięty wyskoczyło coś takiego:
    • jestem w podglądzie RGB, klikam np. na czerwony,
    • następuje wywołanie funkcji handleNewValue - red 255, colorBrightness 50,
    • ponieważ chcę w takiej sytuacji wyłączyć dimmer to ustawiam Brightness na 0 i włączam flagę dla iterateAlways żeby przy najbliższej okazji wysłała wartości na serwer,
    • problem w tym, że to kliknięcie na czerwony powoduje wywołanie metody handleNewValue...2x...praktycznie w tym samym czasie...bo pomimo tego, że jestem w widoku RGB dostaję też wiadomość z komponentu dimmera, która w tym momencie psuje mi logikę 😞
  4. innymi słowy nie mogę znaleźć prostego sposobu żeby ustalić z poziomu funkcji handleNewValue czy użytkownik jest aktualnie w widoku dimmera czy RGB i co tak naprawdę nacisnął - tzn. wyjściowo mogę bo porównam colorBrightness i Brightness z poprzednimi wartościami i wiem gdzie kliknął, ale jak jednocześnie wyzeruję w tej metodzie brightness żeby wyłączyć dimmer a ułamek sekundy później przychodzi stan dimmera jeszcze z niezerową wartością Brightness to wszystko się sypie...
Podsumowując - czy to jest by design, że ten widget wysyła 2x handleNewValue po kliknięciu w koło kolorów? Tak jakby 1x dla RGB i 1x dla DIMMER?
Z logami byłoby prościej ;)

"Widget" - chodzi o widget na pulpicie w androidzie,?

Ogólnie RGBW pracuje zawsze na całym RGBW. Aktualnie apki i cloud nie wysyłają niczego osobno i nie da się sterować osobno, bez podawania wszystkich parametrów.
Te wiadomości sterujace zostały rozbudowane o taką obsługę, aby dało się sterować niezależnie, ale to nie jest nigdzie poza supla-device zaimplementowane.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

klew wrote: Thu Mar 27, 2025 10:17 am
Z logami byłoby prościej ;)
Wrzucę logi tylko aktualnie nie mam warunków technicznych.
"Widget" - chodzi o widget na pulpicie w androidzie,?
Pisząc widget mam na myśli to koło kolorów i koło/pasek dimmera w aplikacji Supla.
Ogólnie RGBW pracuje zawsze na całym RGBW. Aktualnie apki i cloud nie wysyłają niczego osobno i nie da się sterować osobno, bez podawania wszystkich parametrów.
Te wiadomości sterujace zostały rozbudowane o taką obsługę, aby dało się sterować niezależnie, ale to nie jest nigdzie poza supla-device zaimplementowane.
To rozumiem, ale jak przychodzi wiadomość handleNewValue to i tak zawiera wszystkie parametry R G B CB i B, więc dlaczego przychodzi 2x?
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

vajera wrote: Thu Mar 27, 2025 10:27 am
To rozumiem, ale jak przychodzi wiadomość handleNewValue to i tak zawiera wszystkie parametry R G B CB i B, więc dlaczego przychodzi 2x?
Chyba powinna raz przychodzić. Jaki telefon Android, czy iOS?
Próbowałeś z Clouda jakieś ustaiwenie rgbw przesłać?
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

klew wrote: Thu Mar 27, 2025 10:28 am
vajera wrote: Thu Mar 27, 2025 10:27 am
To rozumiem, ale jak przychodzi wiadomość handleNewValue to i tak zawiera wszystkie parametry R G B CB i B, więc dlaczego przychodzi 2x?
Chyba powinna raz przychodzić. Jaki telefon Android, czy iOS?
Próbowałeś z Clouda jakieś ustaiwenie rgbw przesłać?
Android. Niestety to się dzieje raz na jakiś czas :-(

Code: Select all

17:53:54.643 -> Recv: [53 55 50 4C 41 17 24 00 00 00 6E 00 00 00 11 00 00 00 68 1E 00 00 00 00 00 00 00 53 3E 07 FF 00 00 00 00 53 55 50 4C 41 ]
17:53:54.643 -> Z2S_RGBWBase[0]: red=0, green=255, blue=7, colorBrightness=62, brightness=83, command=0, toggleOnOff=0
17:53:54.643 -> [291683][I][rgbw_interface.cpp:83] handleNewValueFromServer(): RGB operations - TURN COLOR MODE + SEND COLOR
17:53:55.011 -> Channel(0) value changed to RGB(0, 255, 7), colBr(62), bright(83)
17:53:55.011 -> Send: [53 55 50 4C 41 17 1F 00 00 00 67 00 00 00 0E 00 00 00 00 00 00 00 00 00 53 3E 07 FF 00 00 00 00 ]
17:53:55.052 -> Send: [53 55 50 4C 41 ]
17:53:55.052 -> Recv: [53 55 50 4C 41 17 25 00 00 00 6E 00 00 00 11 00 00 00 68 1E 00 00 00 00 00 00 00 53 3E 07 FF 00 00 00 00 53 55 50 4C 41 ]
17:53:55.052 -> Z2S_RGBWBase[0]: red=0, green=255, blue=7, colorBrightness=62, brightness=83, command=0, toggleOnOff=0
17:54:06.279 -> Send: [53 55 50 4C 41 17 20 00 00 00 E0 01 00 00 00 00 00 00 ]
17:54:06.279 -> Send: [53 55 50 4C 41 ]
17:54:06.626 -> Recv: [53 55 50 4C 41 17 26 00 00 00 EA 01 00 00 1A 00 00 00 E9 07 03 1C 06 11 36 02 0E 00 00 00 45 75 72 6F 70 65 2F 57 61 72 73 61 77 00 53 55 50 4C 41 ]
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

vajera wrote: Fri Mar 28, 2025 4:57 pm
Tu są dwa takie same komunikaty w odstępie 400 ms. Nie robisz czegoś na telefonie wtedy? Bo ogólnie ruszając palcem na kole/suwaku, telefon stale wysyła nowe nastawy.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

klew wrote: Fri Mar 28, 2025 5:15 pm
vajera wrote: Fri Mar 28, 2025 4:57 pm
Tu są dwa takie same komunikaty w odstępie 400 ms. Nie robisz czegoś na telefonie wtedy? Bo ogólnie ruszając palcem na kole/suwaku, telefon stale wysyła nowe nastawy.
Palce mam grube to fakt 😉 Z drugiej strony wszystkie wartości są identyczne, więc pytanie czy mógłbym tak trafić idealnie? OK, najlepszym rozwiązaniem będzie chyba jakiś debouncing.

Zastanawia mnie jedna rzecz - tam w logu channel set new value pojawia się tylko raz - czy to dlatego, że wartości się nie zmieniły?

EDIT - Wygląda na to, że ten podwójny komunikat wpada zanim wartości trafią do setNewValue. Tutaj jest źródło mojego problemu - bo jak przychodzi wiadomość z koła kolorów to zeruję brightness żeby wyłączyć dimmer, ale zanim to 0 wyśle się na serwer to przychodzi druga wiadomość i tam brightness jest > 0 i mój kod wykrywa to jako operację na dimmerze...
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277

Return to “Bramka ZigBee”