5x virtual_binary - jak przypisać stan 0 lub 1

User avatar
Duch__
Posts: 2199
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole
Been thanked: 6 times

Post

Witam.

Chcę utworzyć pięc kanałów virtual_binary (stan otwarcia drzwi). Jak przypisać do nich wartości bezpośrednio 0 lub 1 w Arduino IDE bez udziału żadnego inputa? Stany będę wyciągał po sieci z innych urządzeń nie suplowych. Kwestia dotyczy samego przesłania wartości 0 lub 1 gdzie 0 = zamknięte, 1 = otwarte.
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 136 times
Been thanked: 137 times

Post

Stan normalnie jest ustawiany poprzez powiązanie sensora VirtualBinary z dowolną klasą, która potrafi wykonywać akcje (taka jak Button, Relay, Thermometer).
Jeśli chcesz to robić poza tym mechanizmem, to możesz bezpośrednio wywoływać na instancji VirtualBinary metodę handleAction, np coś w tym stylu:

Code: Select all

#include <supla/sensor/virtual_binary.h>
...

auto czujnik = new Supla::Sensor::VirtualBinary;
czujnik->handleAction(0, Supla::SET); // Supla::CLEAR, Supla::TOGGLE
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

Przeceniasz moje zdolności intelektualne na urlopie :lol: A może tak bardziej łopatologicznie? Chcę to wykonać w sekcji void loop

Code: Select all


bool zmienna1;
bool zmienna2;




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};

  /*
   * Having your device already registered at cloud.supla.org,
   * you want to change CHANNEL sequence or remove any of them,
   * then you must also remove the device itself from cloud.supla.org.
   * Otherwise you will get "Channel conflict!" error.
   */


auto czujnik1 = new Supla::Sensor::VirtualBinary;
auto czujnik2 = new Supla::Sensor::VirtualBinary;
}


void loop() {
  SuplaDevice.iterate();

 if(zmienna1 == 1){
  //Co tutaj żeby wysłać że drzwi1 są zamknięte 
 }
 if(zmienna1 == 0){
  //Co tutaj żeby wysłać że drzwi1 są otwarte
 }
 
 
 if(zmienna2 == 1){
  //Co tutaj żeby wysłać że drzwi2 są zamknięte 
 }
 if(zmienna2 == 0){
  //Co tutaj żeby wysłać że drzwi2 są otwarte
 }

//Dalsza część kodu
 
 
}


User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 136 times
Been thanked: 137 times

Post

Duch__ wrote: Tue Aug 24, 2021 8:04 am
Mniej więcej tak, tylko nie kompilowałem, więc jakieś błędy mogą się wkraść:

Code: Select all

bool zmienna1;
bool zmienna2;

Supla::Sensor::VirtualBinary *czujnik1;
Supla::Sensor::VirtualBinary *czujnik2;

void setup() {
  Serial.begin(115200);
  char GUID[SUPLA_GUID_SIZE] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
  char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

  czujnik1 = new Supla::Sensor::VirtualBinary;
  czujnik2 = new Supla::Sensor::VirtualBinary;
}

void loop() {
  SuplaDevice.iterate();

 if(zmienna1 == 1){
  //Co tutaj żeby wysłać że drzwi1 są zamknięte 
  czujnik1->handleAction(0, Supla::SET);
 }
 if(zmienna1 == 0){
  //Co tutaj żeby wysłać że drzwi1 są otwarte
  czujnik1->handleAction(0, Supla::CLEAR);
 }
 
 if(zmienna2 == 1){
  //Co tutaj żeby wysłać że drzwi2 są zamknięte 
  czujnik2->handleAction(0, Supla::SET);
 }
 if(zmienna2 == 0){
  //Co tutaj żeby wysłać że drzwi2 są otwarte
  czujnik2->handleAction(0, Supla::CLEAR);
 }
}
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

klew wrote: Tue Aug 24, 2021 10:54 am
Co oznacza "0" jako event w handleAction?
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 136 times
Been thanked: 137 times

Post

lukfud wrote: Tue Aug 24, 2021 12:10 pm
klew wrote: Tue Aug 24, 2021 10:54 am
Co oznacza "0" jako event w handleAction?
Nic. Założenie było takie, że ktoś może chcieć inaczej wykonywać akcję w zależności od typu eventu, ale aktualnie jest to nieużywany parametr i jego wartość nie ma znaczenia
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

klew wrote: Tue Aug 24, 2021 12:20 pm
lukfud wrote: Tue Aug 24, 2021 12:10 pm
klew wrote: Tue Aug 24, 2021 10:54 am
Co oznacza "0" jako event w handleAction?
Nic. Założenie było takie, że ktoś może chcieć inaczej wykonywać akcję w zależności od typu eventu, ale aktualnie jest to nieużywany parametr i jego wartość nie ma znaczenia
Ok, dzięki.
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
User avatar
Duch__
Posts: 2199
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole
Been thanked: 6 times

Post

A ja byłem przekonany że to numer kanału.

Return to “Ogólna dyskusja”