Przekaźniki/Relay w SuplaDevice Arduino IDE

petione
Posts: 121
Joined: Sat Jul 21, 2018 4:26 pm

Post

miost wrote: Fri Jan 06, 2023 8:43 am W jaki sposób można wyzwolić krótkie zwarcie przekaźnika po naciśnięciu przycisku w aplikacji. Chcę użyć tego jako zdalny reset do zwarcia pinów RST-GND w płytce NODEMCU

Dużo przeglądałem ale nie znalazłem oczywistego i prostego rozwiązania. A na pewno takie istnieje. Byłoby to bardziej eleganckie niż ręczne przełączanie przekaźnika w aplikacji w pozycjach ON/OFF.
A gdybys w cludzie ustawil relaya jako przekaźnik bramowy? Tam mozesz ustawic wlasnie takie krotkie czasy zalaczenia przekaźnika.
User avatar
klew
Posts: 13905
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Użyj klasy BistableRelay zamiast Relay.
Ona generuje krótki impuls.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
Duch__
Posts: 2199
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole
Been thanked: 6 times

Post

Koledzy, mam problem.

Mam zmienną wyjście_X która może przyjmować stany 0 i 1 i odpowiada fizycznemu stanowi wyjścia przekaźnikowego urządzenia niesuplowego ale też sieciowego. Urządzenie to odpytuje przez komendę "odpytaj od stan wyjścia" gdzie przypisuje właśnie wartość zmiennej wyjście_X.

Komendami włącz_wyjście_X lub wyłącz_wyjście_X mogę sterować tym przekaźnikiem na zasadzie włącz/wyłącz.

I teraz jest główny problem.

Jak pogodzić sterowanie tym przekaźnikiem, z poziomu aplikacji dedykowanej, oraz z poziomu Supli? Chcę dojść do sytuacji że gdy przekaźnik jest włączony przez aplikację dedykowaną, to stan w aplikacji zmienia mi się na ON, jeśli jest wyłączony to na OFF, ale też żebym mógł zmienić stan tego przekaźnika z poziomu aplikacji SUPLA. Ma ktoś jakiś pomysł?
User avatar
klew
Posts: 13905
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Duch__ wrote: Mon Oct 09, 2023 3:04 am Koledzy, mam problem.

Mam zmienną wyjście_X która może przyjmować stany 0 i 1 i odpowiada fizycznemu stanowi wyjścia przekaźnikowego urządzenia niesuplowego ale też sieciowego. Urządzenie to odpytuje przez komendę "odpytaj od stan wyjścia" gdzie przypisuje właśnie wartość zmiennej wyjście_X.

Komendami włącz_wyjście_X lub wyłącz_wyjście_X mogę sterować tym przekaźnikiem na zasadzie włącz/wyłącz.

I teraz jest główny problem.

Jak pogodzić sterowanie tym przekaźnikiem, z poziomu aplikacji dedykowanej, oraz z poziomu Supli? Chcę dojść do sytuacji że gdy przekaźnik jest włączony przez aplikację dedykowaną, to stan w aplikacji zmienia mi się na ON, jeśli jest wyłączony to na OFF, ale też żebym mógł zmienić stan tego przekaźnika z poziomu aplikacji SUPLA. Ma ktoś jakiś pomysł?
Tam masz jedno urządzenie wykonawcze z softem Supli oraz tym drugim? Czy mówimy o dwóch osobnych urządzeniach?
Jeśli to jest jedno urządzenie, to przykładowo można to zrobić tak:
1. Dodajesz przekaźnik jako VirtualRelay
2. W miejscy gdzie wydajesz komendę "odpytaj stan wejścia", dodatkowo dodajesz sprawdzanie stanu VirtualRelay.

VirtualRelay ma takie metody:

Code: Select all

  void turnOn(_supla_int_t duration = 0) override;
  void turnOff(_supla_int_t duration = 0) override;
  bool isOn() override;
Więc możesz sprawdzić stan "isOn", oraz włączyć/wyłączyć.

Ogólnie powinieneś:
1. Zmienić stan VirtualRelay, gdy zmienia się stan z tej drugiej integracji
2. Zmienić stan przekaźnika/zmiennej, gdy VR zmienia swój stan na inny.
Najlepsze suple dla Twojego domu :mrgreen:
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

Czy VirtualRelay posiada działającą metodę setDefaulStateRestore() ?
Zapis do storage jest a z powyższym nie mogę sobie poradzić?
setDefaultStateOn i Off działa. Ale one nie potrzebują Storage.
User avatar
vajera
Posts: 7285
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 288 times
Been thanked: 161 times

Post

zzrr wrote: Sun Apr 27, 2025 2:39 pm Czy VirtualRelay posiada działającą metodę setDefaulStateRestore() ?
Zapis do storage jest a z powyższym nie mogę sobie poradzić?
setDefaultStateOn i Off działa. Ale one nie potrzebują Storage.
Nie ma, dorabiałem to u siebie na potrzebę bramki Zigbee.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

vajera wrote: Sun Apr 27, 2025 3:33 pm Nie ma, dorabiałem to u siebie na potrzebę bramki Zigbee.
Hmm... A jak to zrobiłeś?
Ja w międzyczasie zrobiłem sobie w kodzie zapisy do EEPROM i przy starcie w Setup sprawdzam zapis i włączam lub wyłączam w zależności od zapisanej wartości.
Masz na to lepszy pomysł może?
User avatar
vajera
Posts: 7285
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 288 times
Been thanked: 161 times

Post

zzrr wrote: Sun Apr 27, 2025 3:37 pm
vajera wrote: Sun Apr 27, 2025 3:33 pm Nie ma, dorabiałem to u siebie na potrzebę bramki Zigbee.
Hmm... A jak to zrobiłeś?
Ja w międzyczasie zrobiłem sobie w kodzie zapisy do EEPROM i przy starcie w Setup sprawdzam zapis i włączam lub wyłączam w zależności od zapisanej wartości.
Masz na to lepszy pomysł może?
https://github.com/lsroka76/Z2S_Library ... switch.cpp
metody onInit, onSaveState, onLoadState.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

vajera wrote: Sun Apr 27, 2025 3:44 pm Masz na to lepszy pomysł może?
https://github.com/lsroka76/Z2S_Library ... switch.cpp
metody onInit, onSaveState, onLoadState.
[/quote]

Dzięki. To materiał na coś poważniejszego. W moim przypadku jedno zdarzenie w całym działaniu to zostanę przy EEPROM. :)
Dziedziczenie po klasie to sobie zostawię na coś innego. Nie mniej materiał wartościowy. Dzięki wielkie 👍
No chyba że mnie coś podkusi ;)
User avatar
vajera
Posts: 7285
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 288 times
Been thanked: 161 times

Post

zzrr wrote: Sun Apr 27, 2025 3:52 pm
vajera wrote: Sun Apr 27, 2025 3:44 pm Masz na to lepszy pomysł może?
https://github.com/lsroka76/Z2S_Library ... switch.cpp
metody onInit, onSaveState, onLoadState.
Dzięki. To materiał na coś poważniejszego. W moim przypadku jedno zdarzenie w całym działaniu to zostanę przy EEPROM. :)
Dziedziczenie po klasie to sobie zostawię na coś innego. Nie mniej materiał wartościowy. Dzięki wielkie 👍
No chyba że mnie coś podkusi ;)
[/quote]

To wygląda poważnie tylko na pierwszy rzut oka 😉
Rozwiązania, które zastosował @klew w SuplaDevice to przykład bardzo dobrze zaprojektowanego systemu, który łatwo rozbudowywać o nowe funkcje.
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 “Arduino IDE”