Przekaźniki/Relay w SuplaDevice Arduino IDE

jaku2k
Posts: 861
Joined: Sun May 24, 2020 8:40 pm

Post

klew wrote: Tue Jul 13, 2021 11:40 am
jaku2k wrote: Tue Jul 13, 2021 11:39 am Dziękuję za odpowiedź.
A czy mogę przypisać kilka przycisków do jednego przekaźnika? Pytam, bo jeszcze nie mam Arduino.
Możesz robić dowolne kombinacje. Ogranicza Cię logika oraz niewielka pamięć RAM Arduino ;)

Napisz co dokładnie chciałbyś zrobić.
Dziękuję za odpowiedź. Chcę osuplować oświetlenie w domu. Leciwa już instalacja jest oparta o przekaźniki hotelowe bis-412. Na szczęście poprowadzona jest wystarczająca ilość kabli, aby wyizolować je od N (obecnie przełącznik zwiera dany kabel sygnałowy do N).

W domu jest wiele sytuacji, w których do jednego punktu oświetlenia jest poprowadzonych kilka przełączników (monostabilnych). Jęsli dobrze kombinuję, to można ogarnąć sprawę na dwa sposoby:
1. Połączyć kable sygnałowe przełączników przypisanych do wspólnego punktu oświetlenia w jeden i tak wpiąć go do Arduino - wtedy w IDE definiuje się jeden przełącznik.
2. Poprowadzić przewody dla każdego przełącznika z osobna i w programie sparować odpowiednie przełączniki z odpowiednimi punktami oświetlenia.

O niewielkiej pamięci RAM Arduino (MEGA) słyszałem wiele razy (m.in. z Twoich wypowiedzi). Czy warto patrzeć na modele takie jak ten Arduino Due ARM Cortex ? Ze specyfikacji wynika, że ma więcej i RAM-u i FLASH-a.
Tylko czy będzie działał z nakładką LAN W5100 i Suplą...
Pozdrawiam
Jakub
User avatar
klew
Posts: 8763
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Układy inne niż Arduino Mega nie były testowane, więc mogą nie działać.

Ogólnie da się odpalić kilkanaście przycisków i przekaźników. Ktoś takie coś męczył na roletach.
Tylko używając przycisków zrób "SimpleButton" zamiast "Button" - one używają mniej pamięci, ale nie mają bajerów w stylu multiklik, przytrzyumanie itp.
Ewentualnie możesz sobie "Button' z bajerami zrobić na kilku wybranych przyciskach.
Widzimy się na Supla Offline Party vol. 2 :!:
jaku2k
Posts: 861
Joined: Sun May 24, 2020 8:40 pm

Post

klew wrote: Tue Jul 13, 2021 12:31 pm Układy inne niż Arduino Mega nie były testowane, więc mogą nie działać.

Ogólnie da się odpalić kilkanaście przycisków i przekaźników. Ktoś takie coś męczył na roletach.
Tylko używając przycisków zrób "SimpleButton" zamiast "Button" - one używają mniej pamięci, ale nie mają bajerów w stylu multiklik, przytrzyumanie itp.
Ewentualnie możesz sobie "Button' z bajerami zrobić na kilku wybranych przyciskach.
Dziękuję za (p)odpowiedź. Ups, to mam problem...
mam 48 przycisków i 29 przekaźników :lol:
Rozumiem że będzie trzeba zrobić to na kilku Arduino?
Pozdrawiam
Jakub
User avatar
klew
Posts: 8763
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Tak, nawet dla własnego spokoju to zrób na osobnych układach. Jak jedno padnie, to zawsze ciemności w całym domu nie będzie :)
Widzimy się na Supla Offline Party vol. 2 :!:
jaku2k
Posts: 861
Joined: Sun May 24, 2020 8:40 pm

Post

Mam pytanie do tego zastosowania. Mam zamiar dodać przyciski sterujące partiami oświetlenia, np. "wyłącz wszystkie na dole", "wyłącz wszystkie w całym domu". Czy będzie się dało coś takiego zrobić przy wykorzystaniu kilku urządzeń (tzn. kilku Arduino)?
Pozdrawiam
Jakub
User avatar
klew
Posts: 8763
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

jaku2k wrote: Tue Jul 13, 2021 12:47 pm Mam pytanie do tego zastosowania. Mam zamiar dodać przyciski sterujące partiami oświetlenia, np. "wyłącz wszystkie na dole", "wyłącz wszystkie w całym domu". Czy będzie się dało coś takiego zrobić przy wykorzystaniu kilku urządzeń (tzn. kilku Arduino)?
W Supla 2.4 ma być wprowadzony tzw. "action trigger" - można wtedy do niego przypisać dowolną akcję i serwer będzie sterował czym będziesz chciał.
Natomiast aktualnie możesz sterować tylko lokalnie w ramach jednego arduino.
Widzimy się na Supla Offline Party vol. 2 :!:
jaku2k
Posts: 861
Joined: Sun May 24, 2020 8:40 pm

Post

Dziękuję za odpowiedź. Trochę szkoda, bo chciałem zaimplementować to lokalnie, w Arduino (wolę unikać urządzeń dzielących Arduino z serwerem, jakim jest router).
Pozdrawiam
Jakub
jaku2k
Posts: 861
Joined: Sun May 24, 2020 8:40 pm

Post

Witam, przyszło Arduino MEGA (na razie jedno - testowo). Próbuję coś posklejać ze znanych mi, gotowych rozwiązań, ale na razie nie chce działać. Poniżej przesyłam kod:

Code: Select all

#include <SPI.h>
#include <SuplaDevice.h>
  // Arduino Mega with EthernetShield W5100:
  #include <supla/network/ethernet_shield.h>
  // Ethernet MAC address
  uint8_t mac[6] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};
  Supla::EthernetShield ethernet(mac);
#include <supla/control/light_relay.h>
#include <supla/control/simple_button.h>
#include <supla/io.h>

void setup() {
   Serial.begin(115200);

  // Replace the falowing GUID with value that you can retrieve from https://www.supla.org/arduino/get-guid
  char GUID[SUPLA_GUID_SIZE] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

  // Replace the following AUTHKEY with value that you can retrieve from: https://www.supla.org/arduino/get-authkey
  char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
  
  pinMode(22, OUTPUT);    // ustawia pin jako wyjście
  pinMode(23, OUTPUT);    // ustawia pin jako wyjście
  pinMode(24, OUTPUT);    // ustawia pin jako wyjście
  pinMode(25, OUTPUT);    // ustawia pin jako wyjście
  pinMode(26, OUTPUT);    // ustawia pin jako wyjście
  pinMode(47, INPUT_PULLUP); // ustawia pin jako wejście z podciągnięciem do zasilania 5V
  pinMode(48, INPUT_PULLUP); // ustawia pin jako wejście z podciągnięciem do zasilania 5V
  pinMode(49, INPUT_PULLUP); // ustawia pin jako wejście z podciągnięciem do zasilania 5V
  pinMode(50, INPUT_PULLUP); // ustawia pin jako wejście z podciągnięciem do zasilania 5V
  pinMode(51, INPUT_PULLUP); // ustawia pin jako wejście z podciągnięciem do zasilania 5V
  pinMode(52, INPUT_PULLUP); // ustawia pin jako wejście z podciągnięciem do zasilania 5V

//ustawienia
auto r1 = new Supla::Control::LightRelay(22, true);      
auto r2 = new Supla::Control::LightRelay(23, true);       
auto r3 = new Supla::Control::LightRelay(24, true);       
auto r4 = new Supla::Control::LightRelay(25, true);      
auto r5 = new Supla::Control::LightRelay(26, true);    

auto b0 = new Supla::Control::SimpleButton(47, true, true); // ustawia przycisk z input pullup i odwróconą logiką (zwieranie do gnd)
b0->addAction(Supla::TURN_OFF, r1, r2, r3, r4, r5, Supla::ON_PRESS); 
auto b1 = new Supla::Control::SimpleButton(48, true, true); // ustawia przycisk z input pullup i odwróconą logiką (zwieranie do gnd)
b1->addAction(Supla::TOGGLE, r1, Supla::ON_PRESS);
auto b2 = new Supla::Control::SimpleButton(49, true, true); // ustawia przycisk z input pullup i odwróconą logiką (zwieranie do gnd)
b2->addAction(Supla::TOGGLE, r2, Supla::ON_PRESS);
auto b3 = new Supla::Control::SimpleButton(50, true, true); // ustawia przycisk z input pullup i odwróconą logiką (zwieranie do gnd)
b3->addAction(Supla::TOGGLE, r3, Supla::ON_PRESS);
auto b4 = new Supla::Control::SimpleButton(51, true, true); // ustawia przycisk z input pullup i odwróconą logiką (zwieranie do gnd)
b4->addAction(Supla::TOGGLE, r4, Supla::ON_PRESS);
auto b5 = new Supla::Control::SimpleButton(52, true, true); // ustawia przycisk z input pullup i odwróconą logiką (zwieranie do gnd)
b5->addAction(Supla::TOGGLE, r5, Supla::ON_PRESS);


SuplaDevice.begin(GUID,              // Global Unique Identifier 
                    "svr1.supla.org",  // SUPLA server address
                    "email@address",   // Email address used to login to Supla Cloud
                    AUTHKEY);          // Authorization key
    
}
void loop() {
  SuplaDevice.iterate();
}
Gdy próbuję zweryfikować kod za pomocą narzędzia Weryfikuj/Kompiluj, to otrzymuję taką informację:

Code: Select all

Arduino:1.8.13 (Windows 10), Płytka:"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Users\jakub\Desktop\supla_projekt_dom\supla_projekt_dom.ino: In function 'void setup()':

supla_projekt_dom:41:67: error: no matching function for call to 'Supla::Control::SimpleButton::addAction(Supla::Action, Supla::Control::LightRelay*&, Supla::Control::LightRelay*&, Supla::Control::LightRelay*&, Supla::Control::LightRelay*&, Supla::Control::LightRelay*&, Supla::Event)'

 b0->addAction(Supla::TURN_OFF, r1, r2, r3, r4, r5, Supla::ON_PRESS);

                                                                   ^

In file included from C:\Users\jakub\Documents\Arduino\libraries\SuplaDevice\src/supla/channel.h:23:0,

                 from C:\Users\jakub\Documents\Arduino\libraries\SuplaDevice\src/supla/element.h:23,

                 from C:\Users\jakub\Documents\Arduino\libraries\SuplaDevice\src/supla/clock/clock.h:22,

                 from C:\Users\jakub\Documents\Arduino\libraries\SuplaDevice\src/SuplaDevice.h:23,

                 from C:\Users\jakub\Desktop\supla_projekt_dom\supla_projekt_dom.ino:2:

C:\Users\jakub\Documents\Arduino\libraries\SuplaDevice\src/supla/local_action.h:30:16: note: candidate: virtual void Supla::LocalAction::addAction(int, Supla::ActionHandler&, int)

   virtual void addAction(int action, ActionHandler &client, int event);

                ^~~~~~~~~

C:\Users\jakub\Documents\Arduino\libraries\SuplaDevice\src/supla/local_action.h:30:16: note:   candidate expects 3 arguments, 7 provided

C:\Users\jakub\Documents\Arduino\libraries\SuplaDevice\src/supla/local_action.h:31:16: note: candidate: virtual void Supla::LocalAction::addAction(int, Supla::ActionHandler*, int)

   virtual void addAction(int action, ActionHandler *client, int event);

                ^~~~~~~~~

C:\Users\jakub\Documents\Arduino\libraries\SuplaDevice\src/supla/local_action.h:31:16: note:   candidate expects 3 arguments, 7 provided

exit status 1

no matching function for call to 'Supla::Control::SimpleButton::addAction(Supla::Action, Supla::Control::LightRelay*&, Supla::Control::LightRelay*&, Supla::Control::LightRelay*&, Supla::Control::LightRelay*&, Supla::Control::LightRelay*&, Supla::Event)'
Bibliotekę SuplaDevice mam zainstalowaną z poziomu Arduino IDE. Proszę o pomoc.
Pozdrawiam
Jakub
User avatar
klew
Posts: 8763
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

addAction w parametrach może mieć tylko jeden obiekt na który działa.
Możesz natomiast wywołać addAction wielokrotnie, aby działało na kilka obiektów
Widzimy się na Supla Offline Party vol. 2 :!:
jaku2k
Posts: 861
Joined: Sun May 24, 2020 8:40 pm

Post

Dziękuję za odpowiedź. Już zmieniam.
Mam jeszcze jeden problem.
gdzie mogę znaleźć Authorization key do tej sekcji?

Code: Select all

SuplaDevice.begin(GUID,              // Global Unique Identifier 
                    "svr1.supla.org",  // SUPLA server address
                    "email@address",   // Email address used to login to Supla Cloud
                    AUTHKEY);          // Authorization key
Po wpisaniu Authkey z tej strony: https://www.supla.org/pl/arduino/get-authkey Arduino IDE wyrzuca mi błąd przy próbie weryfikacji poprawności kodu.
Pozdrawiam
Jakub

Return to “Arduino IDE”