Aktualizacja SuplaDevice

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

pt lut 14, 2020 11:11 pm

Goral64 pisze:
wt lut 11, 2020 7:09 pm
StatusSensor ?
andrew01 pisze:
wt lut 11, 2020 7:55 pm
Supla::Sensor::Logical ?
Dzięki za sugestie. Na razie zostawiamy sensor o nazwie "Supla::Sensor::Binary". Do tego dodana została klasa "Supla::Sensor::NormallyOpen" aby bardziej korelowała z tym co jest dotychczas w Supli (kanał nazwya się SENSOR_NO i sformułowania "normalnie otwarty" pojawiają się w cloud). Oba sensory są w zasadzie identycznie i można używać tego co komu bardziej do gustu pasuje.
alankedzior
Posty: 101
Rejestracja: pn cze 18, 2018 5:38 pm

ndz lut 16, 2020 9:16 pm

klew pisze:
wt lut 11, 2020 9:27 am
Na moim branchu pojawiły się pierwsze przekaźniki "po nowemu".

Jak na razie jest element Relay i VirtualRelay.
Relay pozwala na sterowanie dowolnym przekaźnikiem (włączanym stanem wysokim lub niskim).
VirtualRelay to wirtualny przekaźnik, który nie operauje na fizycznych GPIO, tylko pamięta swój stan w zmiennej.

Aby używać, trzeba dodać include:

Kod: Zaznacz cały

#include <supla/control/virtual_relay.h>
#include <supla/control/relay.h>
i w setup dodać:

Kod: Zaznacz cały

new Supla::Control::Relay(PIN1); // przekaźnik załączany stanem wysokim
new Supla::Control::Relay(PIN2, false); // przekaźnik załączany stanem niskim
new Supla::Control::VirtualRelay(); // wirtualny przekaźnik niepowiązany ze sprzętem
Jeśli ktoś chce sterować przekaźnikiem także z programu, to trzeba sobie zapisać wskaźnik do niego do jakiejś zmiennej, np.:

Kod: Zaznacz cały

// zmienna globalna
Supla::Control:Relay *mojPrzekaźnik = nullptr;
...
// w setup:
mojPrzekaznik = new Supla::Control::Relay(PIN1);
Metody do sterowania przekaźnikiem to turnOn, turnOff, toggle. Odczyt stanu przez metodę "isOn()" (https://github.com/klew/arduino/blob/21 ... .h#L72-L99)

W następnej kolejności dodam jeszcze przekaźnik bistabilny (taki, do którego podajemy impuls, aby go załączyć i impuls, aby go wyłączyć, a stan czytamy z innego GPIO). Po przekaźnikach kolej na długo wyczekiwany button ;)
Możecie podać jakies życiowe przykłady zastosowania relay, virtualrelay, binary sensor ?
Awatar użytkownika
klew
Posty: 567
Rejestracja: czw cze 27, 2019 12:16 pm

ndz lut 16, 2020 10:15 pm

alankedzior pisze:
ndz lut 16, 2020 9:16 pm
Możecie podać jakies życiowe przykłady zastosowania relay, virtualrelay, binary sensor ?
Relay to przekaźnik. Możesz go używać do włączania/wyłączania światła, prądu w gniazdku, możesz otworzyć bramę, furtkę, etc.

Czujnik Binary to odpowiednik "Sensor NO" z wcześniejszej wersji. Jest to po porstu kanał, który czyta stan logiczny z określonego GPIO i status przekazuje do serwera Supli. Możesz go używać do informowania o tym, czy drzwi są otwarte, czy jest poczta w skrzynce na listy itd.

VirtualRelay - to kanał, który dla Supli (cloud, aplikacja na telefonie) zachowuje się jak zwykły przekaźnik, który można włączyć i wyłączyć. Natomiast fizycznie na urządzeniu ,nie jest powiązany z GPIO, tylko zmienną w pamięci. Jest to często obejście ograniczeń Supli - np. tego typu rozwiązanie jest używane w Primary GUI thermostat - w którym kanał tego typu jest używany do modyfikacji nastaw termostatu.
alankedzior
Posty: 101
Rejestracja: pn cze 18, 2018 5:38 pm

pn lut 17, 2020 6:32 am

klew pisze:
ndz lut 16, 2020 10:15 pm
alankedzior pisze:
ndz lut 16, 2020 9:16 pm
Możecie podać jakies życiowe przykłady zastosowania relay, virtualrelay, binary sensor ?
Relay to przekaźnik. Możesz go używać do włączania/wyłączania światła, prądu w gniazdku, możesz otworzyć bramę, furtkę, etc.

Czujnik Binary to odpowiednik "Sensor NO" z wcześniejszej wersji. Jest to po porstu kanał, który czyta stan logiczny z określonego GPIO i status przekazuje do serwera Supli. Możesz go używać do informowania o tym, czy drzwi są otwarte, czy jest poczta w skrzynce na listy itd.

VirtualRelay - to kanał, który dla Supli (cloud, aplikacja na telefonie) zachowuje się jak zwykły przekaźnik, który można włączyć i wyłączyć. Natomiast fizycznie na urządzeniu ,nie jest powiązany z GPIO, tylko zmienną w pamięci. Jest to często obejście ograniczeń Supli - np. tego typu rozwiązanie jest używane w Primary GUI thermostat - w którym kanał tego typu jest używany do modyfikacji nastaw termostatu.
Czyli dodawanie dotychczasowe przekaźników

SuplaDevice.addRelay(3); // kanal 1 lampa taras k11
SuplaDevice.addRelay(4); // kanal 2 lampa kotłownia k14
SuplaDevice.addRelay(5); // kanal 3 kinkiety salon k15
SuplaDevice.addRelay(6); // kanal 4 lampa piwnica k16
SuplaDevice.addRelay(7,true);

Trzeba teraz zastąpić nowym poleceniem tak ?
Awatar użytkownika
klew
Posty: 567
Rejestracja: czw cze 27, 2019 12:16 pm

pn lut 17, 2020 7:55 am

alankedzior pisze:
pn lut 17, 2020 6:32 am
Czyli dodawanie dotychczasowe przekaźników

SuplaDevice.addRelay(3); // kanal 1 lampa taras k11
SuplaDevice.addRelay(4); // kanal 2 lampa kotłownia k14
SuplaDevice.addRelay(5); // kanal 3 kinkiety salon k15
SuplaDevice.addRelay(6); // kanal 4 lampa piwnica k16
SuplaDevice.addRelay(7,true);

Trzeba teraz zastąpić nowym poleceniem tak ?
Tak, trzeba to będzi zastąpić.
Aktualna biblioteka u mnie na githubie i w branchu develop na SUPLOwym githubie są wersją rozwojową, więc tam ciągle dużo się zmienia.
Na chwilę obecną addRelay jeszcze działa i będzie działać dopóki nie przepiszę obsługi rolet "po nowemu".
W międzyczasie przerzucam jeszcze kanały dimmer, rgb led na nową wersję oraz licznik impulsów. Jak to wszystko zrobię, to praktycznie obsługa wszystkiego co było do tej pory będzie "po nowemu" i wtedy intefejs nie będzie się już bardzo zmieniał.
Na koniec muszę dopisać jeszcze testy na nową bibliotekę i wtedy będziemy już blisko oficjalnego wydania nowej wersji biblioteki SuplaDevice.

Nowy Relay ma tą zaletę, że można do niego skonfigurować przyciski (klasa Button).
andrew01
Posty: 72
Rejestracja: pt maja 24, 2019 6:49 am

pn lut 17, 2020 8:02 am

A jak kwestia przekaźników bistabilnych? Będą jako oddzielna klasa czy klasa Relay z parametrem jak obecnie?
Awatar użytkownika
klew
Posty: 567
Rejestracja: czw cze 27, 2019 12:16 pm

pn lut 17, 2020 8:05 am

andrew01 pisze:
pn lut 17, 2020 8:02 am
A jak kwestia przekaźników bistabilnych? Będą jako oddzielna klasa czy klasa Relay z parametrem jak obecnie?
Hm, chyba zapomniałem to dorzucić do gita ;)
Wieczorem wrzucę - będzie klasa BistableRelay - do sterowania za pomocą zwykłego przekaźnika, przekaźnikiem bistabilnym. Ocyzwiście z obsługą przycisków :)
lukfud
Posty: 152
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

wt lut 18, 2020 2:42 pm

klew pisze:
wt lut 11, 2020 9:27 am
Jeśli ktoś chce sterować przekaźnikiem także z programu, to trzeba sobie zapisać wskaźnik do niego do jakiejś zmiennej, np.:

Kod: Zaznacz cały

// zmienna globalna
Supla::Control:Relay *mojPrzekaźnik = nullptr;
...
// w setup:
mojPrzekaznik = new Supla::Control::Relay(PIN1);
Po wklejeniu zmiennej dostaje:

Kod: Zaznacz cały

exit status 1
'Control' in namespace 'Supla' does not name a type
.newbie
Awatar użytkownika
klew
Posty: 567
Rejestracja: czw cze 27, 2019 12:16 pm

wt lut 18, 2020 2:46 pm

lukfud pisze:
wt lut 18, 2020 2:42 pm
klew pisze:
wt lut 11, 2020 9:27 am
Jeśli ktoś chce sterować przekaźnikiem także z programu, to trzeba sobie zapisać wskaźnik do niego do jakiejś zmiennej, np.:

Kod: Zaznacz cały

// zmienna globalna
Supla::Control:Relay *mojPrzekaźnik = nullptr;
...
// w setup:
mojPrzekaznik = new Supla::Control::Relay(PIN1);
Po wklejeniu zmiennej dostaje:

Kod: Zaznacz cały

exit status 1
'Control' in namespace 'Supla' does not name a type
Jednego : brakuje między Control a Relay
lukfud
Posty: 152
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

wt lut 18, 2020 2:58 pm

klew pisze:
wt lut 18, 2020 2:46 pm
lukfud pisze:
wt lut 18, 2020 2:42 pm
klew pisze:
wt lut 11, 2020 9:27 am
Jeśli ktoś chce sterować przekaźnikiem także z programu, to trzeba sobie zapisać wskaźnik do niego do jakiejś zmiennej, np.:

Kod: Zaznacz cały

// zmienna globalna
Supla::Control:Relay *mojPrzekaźnik = nullptr;
...
// w setup:
mojPrzekaznik = new Supla::Control::Relay(PIN1);
Po wklejeniu zmiennej dostaje:

Kod: Zaznacz cały

exit status 1
'Control' in namespace 'Supla' does not name a type
Jednego : brakuje między Control a Relay
I wszystko jasne :)
.newbie
ODPOWIEDZ