Supla Pushover x4 cd

Masz pomysł na funkcjonalność lub koncepcję na rozwój projektu. Opisz wszystko tutaj.
Awatar użytkownika
klew
Posty: 1133
Rejestracja: czw cze 27, 2019 12:16 pm

czw kwie 30, 2020 9:40 pm

Xoggo pisze:
czw kwie 30, 2020 9:12 pm
klew pisze:
czw kwie 30, 2020 8:47 pm
wifi.enableSSL(false);
Nie pomaga, ta sama sytuacja, powiadomienia działają ale nie widać urządzenia.
To może wysyłanie PO w każdej iteracji zagładza Suplowe "iterate"? Aktualnie, gdy te GPIO są na "LOW" to w każdej iteracji tam wejdzie i wyśle powiadomienie.

Dorzuć sobie takie coś przed setup():

Kod: Zaznacz cały

enum MyAction { SEND_PO_1, SEND_PO_2 };

class MyNotif : public Supla::Triggerable {
  MyNotif(){};

  void trigger(int event, int action) {
    if (action == SEND_PO_1) {
        Serial.println("SEND_PO_1");
      
    }
    if (action == SEND_PO_2) {
      Serial.println("SEND_PO_2");
    }
    
  }
};
W miejsca tych "Serial.println" wstaw kod z "ifów" wysyłających powiadomienia.

Potem dodaj w setupie:

Kod: Zaznacz cały

new MyNotif *notif = new MyNotif;
buttonSet->willTrigger(*notif,  Supla::Control::Button::ON_PRESS, SEND_PO_1);
buttonClear->willTrigger(*notif,  Supla::Control::Button::ON_PRESS, SEND_PO_2);
Następnie wywal z "iterate" wszystko poza Supla iterate ;)
Awatar użytkownika
Xoggo
Posty: 141
Rejestracja: ndz mar 29, 2020 10:03 pm
Lokalizacja: Zbąszynek

czw kwie 30, 2020 9:54 pm

klew pisze:
czw kwie 30, 2020 9:40 pm
Następnie wywal z "iterate" wszystko poza Supla iterate ;)

Kod: Zaznacz cały

D:\Pushover\test\test.ino: In function 'void setup()':
test:61:14: error: expected ';' before 'notif'
 new MyNotif *notif = new MyNotif;
              ^
test:62:25: error: 'notif' was not declared in this scope
 buttonSet->willTrigger(*notif, Supla::Control::Button::ON_PRESS, SEND_PO_1);
Na tym etapie doszedłem do wniosku, że trzeba odwiedzić GitHuba ;)

A dalej wypluło to:

Kod: Zaznacz cały

D:\Pushover\test\test.ino: In function 'void setup()':
test:51:41: error: 'ON_PRESS' is not a member of 'Supla::Control::Button'
         buttonSet->willTrigger(*sensor, Supla::Control::Button::ON_PRESS, Supla::Sensor::VirtualBinary::SET);       // Aktywowanie sensora poczty
                                         ^
test:51:75: error: 'SET' is not a member of 'Supla::Sensor::VirtualBinary'
         buttonSet->willTrigger(*sensor, Supla::Control::Button::ON_PRESS, Supla::Sensor::VirtualBinary::SET);       // Aktywowanie sensora poczty

                                                                           ^
test:53:43: error: 'ON_PRESS' is not a member of 'Supla::Control::Button'
         buttonClear->willTrigger(*sensor, Supla::Control::Button::ON_PRESS, Supla::Sensor::VirtualBinary::CLEAR);   // Dezaktywowanie sensora poczty
                                           ^
test:53:77: error: 'CLEAR' is not a member of 'Supla::Sensor::VirtualBinary'
         buttonClear->willTrigger(*sensor, Supla::Control::Button::ON_PRESS, Supla::Sensor::VirtualBinary::CLEAR);   // Dezaktywowanie sensora poczty
                                                                             ^
test:60:14: error: expected ';' before 'notif'
 new MyNotif *notif = new MyNotif;
              ^
test:61:25: error: 'notif' was not declared in this scope
 buttonSet->willTrigger(*notif, Supla::Control::Button::ON_PRESS, SEND_PO_1);
                         ^
test:61:32: error: 'ON_PRESS' is not a member of 'Supla::Control::Button'
 buttonSet->willTrigger(*notif, Supla::Control::Button::ON_PRESS, SEND_PO_1);
                                ^
test:62:34: error: 'ON_PRESS' is not a member of 'Supla::Control::Button'
 buttonClear->willTrigger(*notif, Supla::Control::Button::ON_PRESS, SEND_PO_2);
                                  ^
Idąc dalej, w Twojej nowej bibliotece (w button.h) dodałem:

Kod: Zaznacz cały

 enum Event {
    ON_PRESS,    // Triggered on transition to valueOnPress()
    ON_RELEASE,  // Triggered on transition from valueOnPress()
    ON_CHANGE    // Triggered on all transitions
  };
Ostatnio zmieniony czw kwie 30, 2020 10:20 pm przez Xoggo, łącznie zmieniany 1 raz.
Awatar użytkownika
klew
Posty: 1133
Rejestracja: czw cze 27, 2019 12:16 pm

czw kwie 30, 2020 10:19 pm

Xoggo pisze:
czw kwie 30, 2020 9:54 pm
Te "nowe" błędy wynikają z tego, że skróciłem te nazwy do zdarzeń, zostaw tylko "Supla::ZDARZENIE", np "Supla::ON_PRESS".
A ten pierwszy błąd popraw tak:

Kod: Zaznacz cały

MyNotif *notif = new MyNotif;
Awatar użytkownika
Xoggo
Posty: 141
Rejestracja: ndz mar 29, 2020 10:03 pm
Lokalizacja: Zbąszynek

czw kwie 30, 2020 10:25 pm

Kod: Zaznacz cały

D:\Pushover\test\test.ino: In function 'void setup()':
test:48:58: error: 'SET' is not a member of 'Supla::Sensor::VirtualBinary'
         buttonSet->willTrigger(*sensor, Supla::ON_PRESS, Supla::Sensor::VirtualBinary::SET);       // Aktywowanie sensora poczty
                                                          ^
test:50:60: error: 'CLEAR' is not a member of 'Supla::Sensor::VirtualBinary'
         buttonClear->willTrigger(*sensor, Supla::ON_PRESS, Supla::Sensor::VirtualBinary::CLEAR);   // Dezaktywowanie sensora poczty
                                                            ^
test:16:3: error: 'MyNotif::MyNotif()' is private
   MyNotif(){};
   ^
test:51:26: error: within this context
     MyNotif *notif = new MyNotif;
                          ^
Jeszcze pluje. Zaraz pododaje również do biblioteki SET i CLEAR. Przynajmniej tego błędu się pozbędę.
Masz jakiś pomysł na MyNotif()' is private?
Awatar użytkownika
Xoggo
Posty: 141
Rejestracja: ndz mar 29, 2020 10:03 pm
Lokalizacja: Zbąszynek

czw kwie 30, 2020 10:29 pm

Ok, drobne uaktualnienie virtual_binary.h pomogło. Zostało tylko to:

Kod: Zaznacz cały

test:16:3: error: 'MyNotif::MyNotif()' is private
   MyNotif(){};
   ^
test:51:26: error: within this context
     MyNotif *notif = new MyNotif;
                          ^
Awatar użytkownika
klew
Posty: 1133
Rejestracja: czw cze 27, 2019 12:16 pm

czw kwie 30, 2020 10:30 pm

Xoggo pisze:
czw kwie 30, 2020 10:25 pm
Jeszcze pluje. Zaraz pododaje również do biblioteki SET i CLEAR. Przynajmniej tego błędu się pozbędę.
Masz jakiś pomysł na MyNotif()' is private?
Chyba muszę zacząć kompilować kod, zanim go wrzucę na forum ;).

Dodaj "public:" przed konstruktorem MyNotif w definicji klasy.

To SET i CLEAR potraktuj podobnie jak ON_PRESS, czyli "Supla::SET" itd
Awatar użytkownika
Xoggo
Posty: 141
Rejestracja: ndz mar 29, 2020 10:03 pm
Lokalizacja: Zbąszynek

czw kwie 30, 2020 10:36 pm

klew pisze:
czw kwie 30, 2020 10:30 pm
Chyba muszę zacząć kompilować kod, zanim go wrzucę na forum ;).
Nie no, to i tak ci idzie dobrze podpowiadając "na czuja" ;)
Ok kompilacja poszła bez błędu. :o
Zobaczymy jak fizycznie Wemos zareaguje.
Awatar użytkownika
Xoggo
Posty: 141
Rejestracja: ndz mar 29, 2020 10:03 pm
Lokalizacja: Zbąszynek

czw kwie 30, 2020 10:41 pm

@klew,
a więc jest już sukces, wprawdzie połowiczny ale zawsze.
Powiadomienia działają, urządzenie jest w końcu widoczne, ale stan sensora się nie zmienia. :(
Awatar użytkownika
klew
Posty: 1133
Rejestracja: czw cze 27, 2019 12:16 pm

czw kwie 30, 2020 11:36 pm

Xoggo pisze:
czw kwie 30, 2020 10:41 pm
@klew,
a więc jest już sukces, wprawdzie połowiczny ale zawsze.
Powiadomienia działają, urządzenie jest w końcu widoczne, ale stan sensora się nie zmienia. :(
Wyślij mi na priv albo tutaj cały kod
Awatar użytkownika
Xoggo
Posty: 141
Rejestracja: ndz mar 29, 2020 10:03 pm
Lokalizacja: Zbąszynek

pt maja 01, 2020 7:48 am

klew pisze:
czw kwie 30, 2020 11:36 pm
Wyślij mi na priv albo tutaj cały kod

Kod: Zaznacz cały

#include <SuplaDevice.h>
#include <supla/network/esp_wifi.h>
          Supla::ESPWifi wifi("SSID", "xxxx");     
#include "EspPush.h"
          byte a1=0;       
#include <supla/sensor/virtual_binary.h>
#include <supla/control/button.h>

//  PUSHOVER
enum MyAction { SEND_PO_1, SEND_PO_2 };
class MyNotif : public Supla::Triggerable {
  public: MyNotif(){};
  void trigger(int event, int action) {
    if (action == SEND_PO_1) {
      if (digitalRead(5)==LOW) {    
  a1=0;  
  EspPush po = EspPush("xxxx","yyyy");    
  po.setMessage("Powiadomienie poczta 1");
  po.setSound("bike");
  po.send();
  a1=1;}
    }
    if (action == SEND_PO_2) {
       if (digitalRead(4)==LOW) {    
  a1=0;
  EspPush po = EspPush("xxxx","yyyy");
  po.setMessage("Powiadomienie poczta 2");
  po.setSound("bike");
  po.send(); 
  a1=1;}
    }
  }
};

void setup() {
  wifi.enableSSL(false);
  Serial.begin(115200);
    char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {1111}; 
    char GUID[SUPLA_GUID_SIZE] = {2222};    
    
// SKRZYNKA NA LISTY  
   Supla::Sensor::VirtualBinary *sensor = new Supla::Sensor::VirtualBinary;        
   Supla::Control::Button *buttonSet = new Supla::Control::Button(5, true, true);   
        buttonSet->willTrigger(*sensor, Supla::ON_PRESS, Supla::SET);               	// Aktywowanie sensora poczty
   Supla::Control::Button *buttonClear = new Supla::Control::Button(4, true, true); /
        buttonClear->willTrigger(*sensor, Supla::ON_PRESS, Supla::CLEAR);           // Dezaktywowanie sensora poczty
   MyNotif *notif = new MyNotif;
        buttonSet->willTrigger(*notif, Supla::ON_PRESS, SEND_PO_1);
        buttonClear->willTrigger(*notif, Supla::ON_PRESS, SEND_PO_2);

   SuplaDevice.setName("PUSHOVER poczta");                           
   WiFi.softAPdisconnect(true);                                        
   SuplaDevice.begin(GUID, "svr..", "....gmail.com", AUTHKEY);  
   
// USTAWIENIA PUSHOVER  
   while (WiFi.status() != WL_CONNECTED) delay(50);{
   EspPush po = EspPush("xxxx","yyyy");   
   po.setDevice("iphone7");
   po.setMessage("Urządzenie podłącznone do WiFi ");
   po.setSound("bike");
   po.send();}  
}

void loop() { 
  SuplaDevice.iterate();
}
Wyłączenie SSL pomogło. Stan sensora się zmienia i wysyłane są powiadomienia. 8-)
Ostatnio zmieniony pt maja 01, 2020 5:29 pm przez Xoggo, łącznie zmieniany 1 raz.
ODPOWIEDZ

Wróć do „Pomysły i koncepcje”