CHANNELSTATE w bibliotece Arduino

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

Post

bigthomas wrote: Sun Oct 25, 2020 6:25 pm Co może być przyczyną że w channel info widzę tylko:
- Czas pracy
- Czas połączenia
- Powód restartu połączenia

Czy dodatkowe informacje inaczej się uruchamia?
Biblioteki mam najnowsze, ściągnięte z https://github.com/klew/arduino .

Wersja płytki : ESP32
Brakuje implementacji tego fragmentu dla ESP 32. Dorobię to razem z tym licznikiem impulsów
Kiedy będzie Supla Offline Party / SOP#2025 ?
bigthomas
Posts: 235
Joined: Mon Aug 12, 2019 3:35 pm

Post

klew wrote: Sun Oct 25, 2020 6:53 pm Brakuje implementacji tego fragmentu dla ESP 32. Dorobię to razem z tym licznikiem impulsów
Dzięki że pamiętasz ...
Mam dodatkowe pytanie, dla tej samej płytki co robię nie tak żeby wyłączyć w kanale czujnika temperatury channelstate?

Code: Select all

...
Supla::Sensor::DS18B20 *Temp1_ch0 = {nullptr};
....
void setup() {
DeviceAddress ds0addr = { 0x28, 0xFF, 0x8C, 0x5C, 0x6C, 0x18, 0x01, 0xB2 };
Temp1_ch0 = new Supla::Sensor::DS18B20(pin_temp, ds0addr);
Temp1_ch0->disableChannelState();
...
Udało mi się wyłączyć na przekaźnikach, a na temperaturze już nie.
User avatar
klew
Posts: 9670
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

bigthomas wrote: Sun Oct 25, 2020 8:32 pm Udało mi się wyłączyć na przekaźnikach, a na temperaturze już nie.
Jeśli kanał był wcześniej zarejestrowany na serwerze, to trzeba usunąć urządzenie i dodać jeszcze raz. Flaga powinna działać.
Kiedy będzie Supla Offline Party / SOP#2025 ?
andrew01
Posts: 162
Joined: Fri May 24, 2019 6:49 am

Post

@klew - czy mógłbyś podpowiedzieć w jaki sposób do channel_state dodać własne informacje? Chciałbym dodać informacje o poziomie baterii, napięciu i rssi z czujników temperatury Xiaomi. Mam te dane wyciągnięte, w sensie przechowuję je w zmiennych, tylko nie wiem jak je wrzucić do channel_state.

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

Post

andrew01 wrote: Thu Oct 29, 2020 7:02 pm @klew - czy mógłbyś podpowiedzieć w jaki sposób do channel_state dodać własne informacje? Chciałbym dodać informacje o poziomie baterii, napięciu i rssi z czujników temperatury Xiaomi. Mam te dane wyciągnięte, w sensie przechowuję je w zmiennych, tylko nie wiem jak je wrzucić do channel_state.

Pozdrawiam
Andrzej
Musisz w obiekcie czujnika zaimplementować metodę:

Code: Select all

 virtual void handleGetChannelState(TDSC_ChannelState &channelState);
Przykład jest np w LightRelay: https://github.com/klew/arduino/blob/1d ... ay.cpp#L38

Tutaj jest definicja struktury, którą możesz wypełnić danymi:
https://github.com/klew/arduino/blob/1d ... to.h#L1486
Dodając jakiś parametr (np. battery level) musisz też dodać flagę dotyczącą baterii (flagi są zdefiniowane nad definicją struktury w proto.h).

W metodzie handleGetChannelState otrzymasz referencje na parametr channelState. On będzie wstępnie wypełniony danymi (uptime z SuplaDevice, dane o sieci z interfejsu sieciowego). Oczywiście RSSI i inne możesz sobie nadpisać.
Tutaj możesz zobaczyć, jak przeliczamy RSSI do % zasięgu: https://github.com/klew/arduino/blob/1d ... ifi.h#L194
Kiedy będzie Supla Offline Party / SOP#2025 ?
andrew01
Posts: 162
Joined: Fri May 24, 2019 6:49 am

Post

klew wrote: Fri Oct 30, 2020 7:22 am
Musisz w obiekcie czujnika zaimplementować metodę:

Code: Select all

 virtual void handleGetChannelState(TDSC_ChannelState &channelState);
Dzięki bardzo, poniżej rezultat, wszystkie dane dotyczą czujnika, łącznie z jego adresem :)
You do not have the required permissions to view the files attached to this post.
User avatar
Xoggo
Posts: 182
Joined: Sun Mar 29, 2020 10:03 pm
Location: Zbąszynek

Post

klew wrote: Sun Oct 25, 2020 8:34 pm Jeśli kanał był wcześniej zarejestrowany na serwerze, to trzeba usunąć urządzenie i dodać jeszcze raz. Flaga powinna działać.
A jak pozbyć się informacji Channelstate z czujnika ciśnienia w BME280 :?:
Z czujnika temperatury się udało.

Code: Select all

   Supla::Sensor::BME280 *bme = new Supla::Sensor::BME280(0x76, 77);     
                          bme->disableChannelState();
User avatar
klew
Posts: 9670
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Xoggo wrote: Sun Nov 08, 2020 3:48 pm
klew wrote: Sun Oct 25, 2020 8:34 pm Jeśli kanał był wcześniej zarejestrowany na serwerze, to trzeba usunąć urządzenie i dodać jeszcze raz. Flaga powinna działać.
A jak pozbyć się informacji Channelstate z czujnika ciśnienia w BME280 :?:
Z czujnika temperatury się udało.

Code: Select all

   Supla::Sensor::BME280 *bme = new Supla::Sensor::BME280(0x76, 77);     
                          bme->disableChannelState();
Poprawię to wieczorem
Kiedy będzie Supla Offline Party / SOP#2025 ?
User avatar
Xoggo
Posts: 182
Joined: Sun Mar 29, 2020 10:03 pm
Location: Zbąszynek

Post

Pójdzie z automatu czy też trzeba będzie dla tego jednego kanału usuwać z cloud?
User avatar
klew
Posts: 9670
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Xoggo wrote: Sun Nov 08, 2020 4:10 pm Pójdzie z automatu czy też trzeba będzie dla tego jednego kanału usuwać z cloud?
To jest ograniczenie po stronie serwera, także można ręcznie w bazie danych edytować flagę, albo usunąć urządzenie
Kiedy będzie Supla Offline Party / SOP#2025 ?

Return to “Arduino IDE”