CHANNELSTATE w bibliotece Arduino

Awatar użytkownika
klew
Posty: 1529
Rejestracja: czw cze 27, 2019 12:16 pm

ndz paź 25, 2020 6:53 pm

bigthomas pisze:
ndz paź 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
bigthomas
Posty: 112
Rejestracja: pn sie 12, 2019 3:35 pm

ndz paź 25, 2020 8:32 pm

klew pisze:
ndz paź 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?

Kod: Zaznacz cały

...
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.
Awatar użytkownika
klew
Posty: 1529
Rejestracja: czw cze 27, 2019 12:16 pm

ndz paź 25, 2020 8:34 pm

bigthomas pisze:
ndz paź 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ć.
andrew01
Posty: 119
Rejestracja: pt maja 24, 2019 6:49 am

czw paź 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
Awatar użytkownika
klew
Posty: 1529
Rejestracja: czw cze 27, 2019 12:16 pm

pt paź 30, 2020 7:22 am

andrew01 pisze:
czw paź 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ę:

Kod: Zaznacz cały

 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
andrew01
Posty: 119
Rejestracja: pt maja 24, 2019 6:49 am

pt paź 30, 2020 5:52 pm

klew pisze:
pt paź 30, 2020 7:22 am

Musisz w obiekcie czujnika zaimplementować metodę:

Kod: Zaznacz cały

 virtual void handleGetChannelState(TDSC_ChannelState &channelState);
Dzięki bardzo, poniżej rezultat, wszystkie dane dotyczą czujnika, łącznie z jego adresem :)
Załączniki
Screenshot_20201030-184722_SUPLA.jpg
Screenshot_20201030-184722_SUPLA.jpg (89.19 KiB) Przejrzano 256 razy
Awatar użytkownika
Xoggo
Posty: 177
Rejestracja: ndz mar 29, 2020 10:03 pm
Lokalizacja: Zbąszynek

ndz lis 08, 2020 3:48 pm

klew pisze:
ndz paź 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.

Kod: Zaznacz cały

   Supla::Sensor::BME280 *bme = new Supla::Sensor::BME280(0x76, 77);     
                          bme->disableChannelState();
Awatar użytkownika
klew
Posty: 1529
Rejestracja: czw cze 27, 2019 12:16 pm

ndz lis 08, 2020 3:56 pm

Xoggo pisze:
ndz lis 08, 2020 3:48 pm
klew pisze:
ndz paź 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.

Kod: Zaznacz cały

   Supla::Sensor::BME280 *bme = new Supla::Sensor::BME280(0x76, 77);     
                          bme->disableChannelState();
Poprawię to wieczorem
Awatar użytkownika
Xoggo
Posty: 177
Rejestracja: ndz mar 29, 2020 10:03 pm
Lokalizacja: Zbąszynek

ndz lis 08, 2020 4:10 pm

Pójdzie z automatu czy też trzeba będzie dla tego jednego kanału usuwać z cloud?
Awatar użytkownika
klew
Posty: 1529
Rejestracja: czw cze 27, 2019 12:16 pm

ndz lis 08, 2020 4:11 pm

Xoggo pisze:
ndz lis 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
ODPOWIEDZ

Wróć do „Arduino IDE”