CHANNELSTATE w bibliotece Arduino

User avatar
klew
Posts: 11325
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

W bibliotece SuplaDevice na Arduino IDE pojawiła się pierwsza wersja wsparacia dla CHANNELSTATE (więcej info tutaj: viewtopic.php?f=18&t=6878 )

Na chwilę obecną jeśli ktoś chce potestować, to kod jest wrzucony do mojego githuba https://github.com/klew/arduino
Aktualna implementacja jest dla ESP8266. Dla pozostałych płytek (Arduino Mega, ESP32) będzie się pokazywał jedynie uptime. Pełne wsparcie pojawi się wkrótce.
EDIT: Arduino Mega z Ethernet Shiled już też jest zaimplementowane

Biblioteka włącza CHANNELSTATE na wszystkich kanałach na urządzeniu. Zastanawiam się czy nie warto tego jakoś ograniczyć, albo dać opcję wyboru, żeby to było tylko na niektórych. Dajcie znać, czy ikonka "i" przy każdym kanale Wam przeszkadza, czy nie ;)

Jeśli już używasz nowej wersji SuplaDevice, to wystarczy zaktualizować bibliotekę, wgrać nową binarkę na urządzenie, usunąć urządzenie z chmury i zarejestrować je na nowo (na chwilę obecną serwer czyta tą flagę tylko przy rejestracji urządzenia w chmurze, więc usuwanie jest konieczne). Jeśli nie chcesz usuwać urządzenia z chmury - daj znać @pzygmunt - on chętnie pomoże ;)

Wszelkie sugestie są mile widziane.
Screenshot_20200717-094921.jpg
You do not have the required permissions to view the files attached to this post.
Supla: bo GPIO to dopiero początek.
krycha88
Posts: 5465
Joined: Fri Nov 16, 2018 7:25 am

Post

Ekstra! kolejna dobra robota :)

Ja jestem za tym aby samemu zadecydować czy włączyć/wyłączyć ten kanał komunikacji.
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 11325
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

krycha88 wrote: Fri Jul 17, 2020 8:14 am Ekstra! kolejna dobra robota :)

Ja jestem za tym aby samemu zadecydować czy włączyć/wyłączyć ten kanał komunikacji.
Masz na myśli wybór:
1. Wszystkie kanały albo żaden, czy
2. Domyślnie wszędzie włączone, z możliwością wyłączenia na poszczególnych kanałach, czy
3. Domyślnie wyłączone, z możliowścią włączenia na poszczególnych kanałach
?
Supla: bo GPIO to dopiero początek.
krycha88
Posts: 5465
Joined: Fri Nov 16, 2018 7:25 am

Post

klew wrote: Fri Jul 17, 2020 9:07 am
krycha88 wrote: Fri Jul 17, 2020 8:14 am Ekstra! kolejna dobra robota :)

Ja jestem za tym aby samemu zadecydować czy włączyć/wyłączyć ten kanał komunikacji.
Masz na myśli wybór:
1. Wszystkie kanały albo żaden, czy
2. Domyślnie wszędzie włączone, z możliwością wyłączenia na poszczególnych kanałach, czy
3. Domyślnie wyłączone, z możliowścią włączenia na poszczególnych kanałach
?
Nie wiem na ile to jest wykolanelne ale bym to podzielił na grupy:
[podstawowe]
Adres IP
MAC
Wifi RSSI
Siła sygnału WiFi
Uptime
Czas od nawiązania połączenia z serwerem
Ostatnia przyczyna zresetowania połączenia z serwerem

[zasilanie bateryjne]
Poziom baterii
Zasilanie bateryjne tak/nie
Żywotność baterii

[oświetlenie]
Żywotność źródła światła
Żywotność źródła światła - ile pozostało

[inne]
Węzeł mostu online/offline (póki co nieużywane z uwagi na to, że wprowadzono możliwość określania statusu online/offline dla poszczególnych kanałów, a nie koniecznie dla całego urządzenia)
Siła sygnału radia mostu

Jeżeli wybiorę grupe [podstawowe] to fajnie byłoby przypiąć ją do kanału 0 aby nie wyświetlać tej samej informacji dla pozostałych kanałów. Można to również rozwiązać po stronie samej aplikacji przypinając taką grupę w miejsce np. lokalizacji?

dla mnie minimum to:
1. Wszystkie kanały albo żaden
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 11325
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Ogólnie zrobiłem to tak, że po otrzymaniu zapytania o "channel state", aplikacja wypełnia dane o sieci, potem dane związane z uptime.
Następnie przekazuje taką wstępnie wypełnioną strukturę do "elementu" z SuplaDevice, odpowiedzialnego za kanał, którego dotyczy pytanie:

Code: Select all

  virtual void handleGetChannelState(TDSC_ChannelState &channelState);
Konkretny "element" może z otrzymanym channelState zrobić co mu się podoba. Może skasować uzupełnione informacje, może je nadpisać, może dodać swoje. Obuduję jeszcze tą strukturę TDSC_ChannelState w jakąś klasę, aby nie trzeba było się bawić operacjami OR na bitach. Aktualnie metoda handleGetChannelState nie robi nic z tymi danymi. Planuję dodać tam obsługę żywotności światła dla przekaźników (bo w ogólności funkcja "światło" jest konfigurowana w cloud i urządzenie może nie wiedzieć do czego służy przekaźnik).
Można by też to pole użyć do liczenia jak długo urządzenie było włączone.

Co do wyboru kanału "0", to ja osobiście mam wątpliwości. Wszystko jest fajnie, jeśli Twoje urządzenie obsługuje jedną funkcję (albo kilka mocno powiązanych ze sobą kanałów - np. stacja pogodowa). Ale jeśli stacja pogodowa jest postawiona przy bramie przesuwnej i przy okazji ten sam układ obsługuje przekaźnik od bramy, to chyba chciałbym mieć przynajmniej dwa przyciski "i" - jeden w lokalizacji stacji pogodowej, a drugi w lokalizacji bramy - tak abym nie musiał pamiętać, że przekaźnik od bramy jest na tym samym urządzeniu, co stacja pogodowa i tam gdzieś szukać "i".

Myślę, że prawdopodobnie zrobię to domyślnie włączone, z opcją wyłączenia per kanał. Czyli coś w stylu:

Code: Select all

auto relay = new Supla::Control::Relay(14, true, true);
relay->disableChannelState();  // to tylko przykład. Takiej metody jeszcze nie ma w biblitece


Zasilanie bateryjne - chętnie to dopiszę dla urządzenia wykonawczego - tylko potrzebowałbym kogoś, kto z tego korzysta. Trzeba by ustalić skąd brać informację o stanie naładowania i o żywotności baterii.

Zasilanie bateryjne może też dotyczyć samego kanału (np. termometr na oddalonym urządzeniu z RF) - wtedy taką implementację trzeba zrobić dla tego konkretnego kanału. Tylko to już bardziej dotyczy urządzeń typu "bramka" - w tym przypadku np. bramka RF.

Także wydaje mi się, że sytuacji jest sporo. Kokretne rozwiązania będzie łatwiej opracować na konkretnych przykładach.
Supla: bo GPIO to dopiero początek.
krycha88
Posts: 5465
Joined: Fri Nov 16, 2018 7:25 am

Post

klew wrote: Fri Jul 17, 2020 11:13 am Co do wyboru kanału "0", to ja osobiście mam wątpliwości. Wszystko jest fajnie, jeśli Twoje urządzenie obsługuje jedną funkcję (albo kilka mocno powiązanych ze sobą kanałów - np. stacja pogodowa). Ale jeśli stacja pogodowa jest postawiona przy bramie przesuwnej i przy okazji ten sam układ obsługuje przekaźnik od bramy, to chyba chciałbym mieć przynajmniej dwa przyciski "i" - jeden w lokalizacji stacji pogodowej, a drugi w lokalizacji bramy - tak abym nie musiał pamiętać, że przekaźnik od bramy jest na tym samym urządzeniu, co stacja pogodowa i tam gdzieś szukać "i".
O tym przypadku nie pomyślałem, który to zburzył moją koncepcję :)
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 11325
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Wspracie dla Arduino Mega z Ethernet Shield już też jest w biblitece.
Supla: bo GPIO to dopiero początek.
User avatar
lukfud
Posts: 2328
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

Zaktualizowałem bibliotekę, wrzuciłem kompilację na wemosa, widzę dodatkową ikonę "i" ale przy tapnięciu w nią nic się nie dzieje. Nie pokazuje się dodatkowe okno.
Wersja app 2.3.44 (mate 20 lite) na svr30.
https://www.facebook.com/groups/supladiy/
Patryk
Posts: 2907
Joined: Mon Jan 07, 2019 7:51 pm
Location: Rybnik

Post

lukfud wrote: Fri Jul 24, 2020 9:40 am Zaktualizowałem bibliotekę, wrzuciłem kompilację na wemosa, widzę dodatkową ikonę "i" ale przy tapnięciu w nią nic się nie dzieje. Nie pokazuje się dodatkowe okno.
Wersja app 2.3.44 (mate 20 lite) na svr30.
viewtopic.php?p=73217#p73217
User avatar
pzygmunt
Posts: 19631
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków

Post

lukfud wrote: Fri Jul 24, 2020 9:40 am Zaktualizowałem bibliotekę, wrzuciłem kompilację na wemosa, widzę dodatkową ikonę "i" ale przy tapnięciu w nią nic się nie dzieje. Nie pokazuje się dodatkowe okno.
Wersja app 2.3.44 (mate 20 lite) na svr30.
To oznacza, że Twoje urządzenie nie odpowiada poprawnie na żądanie aplikacji klienckiej.

Return to “Arduino IDE”