Varios contactos N/A de uso general con Notificaciones a telegram

Responder
zilhos
Mensajes: 17
Registrado: Sab Ago 10, 2019 2:52 am

Buenas Tardes
Estuve pensando la idea de tener varios contactos integrados a supla
la idea por ejemplo es tener la posibilidad de dar aviso a telegram cuando en casa entre una ups de respaldo o saber cuando una alarma antigua sin conexión a Internet o gsm sea disparada.
Seria genial poder integrar a supla .....................!!
desde ya gracias
elmaya
Mensajes: 1482
Registrado: Mié Jun 27, 2018 5:48 pm
Ubicación: El Saucejo - Sevilla

Se compone de un Esp8266 con 3 entradas las cuales se activa/desactiva desde la App Supla,
Si las notificaciones están activadas en la App y la entrada correspondiente pasa a nivel bajo nos envía el mensaje que hayamos definido en WiFiconfig al servicio de mensajería instantánea Telegram.
En wificonfig podemos definir los 3 mensajes de notificación de modo independiente con un máximo de 40 caracteres cada uno de ellos.
Conexiones:
Gpio Sensor1_PIN 14 //D5 // triger Link 1
Gpio Sensor2_PIN 12 //D6 // triger Link 2
Gpio Sensor3_PIN 13 //D7 // triger Link 3
Gpio relay1_pin 16 //D0
Gpio relay2_pin 5 //D1
Gpio relay3_pin 4 //D2
Gpio wificonfig_pin 0 //D3
Gpio led_pin 2 //D4
3_x_Telegram_bb.png
3_x_Telegram_bb.png (66.37 KiB) Visto 3599 veces

Para esto tendremos que crear un TelegramBot desde la App de Telegram usando “Bot Father” y nos dará el BotToken, hay muchos tutoriales en la red.
Imagen
Una vez creado el Bot lo buscamos en la lista, abrimos el Chad y pulsamos “Start” para iniciar el Bot.

También necesitamos nuestro Chat_Id que podemos obtener con “@get_id_bot” desde la misma App de Telegram.
Imagen 
Para ingresar o cambiar la configuración:
Para acceder al modo de configuración WiFi, mantenga presionado el botón durante al menos 5 segundos.
Cuando está en modo de configuración WiFi, el dispositivo entra en modo Punto de acceso WiFi y el LED de estado se enciende.
- Inicie sesión en https://cloud.supla.org (el registro es gratuito) y Active el registro para nuevo dispositivo.
- Conéctese a la WiFi llamada " Supla_Telegram " desde cualquier dispositivo con red inalámbrica y un navegador de Internet.
- Abra la Página: http://192.168.4.1
- Pulse en configure WiFi.
- En la página de configuración
- Seleccione la red WiFi en la parte superior pulsando la que corresponda y después ingrese la contraseña.
- ingrese los datos para:
suplaServer (svrX.supla.org),
Email (Email de registro en supla) ,
Supla Device Name (nombre con el que se verá en la nube),
Bot Token (lo habremos obtenido de “Bot Father”)
Chad_ID (lo habremos obtenido de “@get_id_bot”)
Alarm Message 1 (escribimos el texto del mensaje 1)
Alarm Message 2 (escribimos el texto del mensaje 2)
Alarm Message 3 (escribimos el texto del mensaje 3)
- Para terminar pulse en Save para guardar los datos de configuración.
wificonfig.png
wificonfig.png (19.39 KiB) Visto 3599 veces

En la nube “Supla” tendremos 6 canales de los cuales configuramos los tres primeros como interruptor y nos permitirá activar/desactivar las notificaciones a Telegram en los correspondientes sensores que corresponden a los últimos tres en la nube y configuramos como por ejemplo sensor de ventana, los iconos los podemos cambiar por otros (ventana cerrada corresponde a sensor inactivo “nivel alto” y ventana abierta corresponde a sensor activo ”Gpio conectado a masa”)

Además en los Gpio 16 — 5 — 4 podemos conectar Leds “con resistencia en serie” que mostraran el estado de las notificaciones de los distintos canales “nivel alto = activo”.

La activación de las notificaciones es por flanco descendente ”al pasar de nivel alto a bajo”.

Actualización de Firmware a través del navegador web OTA -- http: // XX: 81 / update
xx = IP del dispositivo. Por ejemplo http://192.168.1.22:81/update
Usuario: admin
Contraseña: pass

Código: Seleccionar todo

/*
Copyright (C) AC SOFTWARE SP. Z O.O.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/
#include <FS.h>       // ---- esp board manager 2.5.2 --- iwip Variant V2 Lower Memory 
#include <SPI.h>
#include <SuplaDevice.h>  // SoftVer, "2.3.0"
#include <io.h>
#include <WiFiManager.h>
#include <ArduinoJson.h> //--------- https://github.com/bblanchon/ArduinoJson/tree/v5.13.2 ------
#include <EEPROM.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPUpdateServer.h>
#include <ESP8266TrueRandom.h>
#include <WiFiClientSecure.h>
#include <supla/network/esp_wifi.h>
Supla::ESPWifi wifi("", "");  //------ Do not change----wifimanager takes care------
extern "C"
{
#include "user_interface.h"
} 

//#define D0 16  //no internal pullup resistor
//#define D1  5
//#define D2  4
//#define D3  0  //must not be pulled low during power on/reset, toggles value during boot
//#define D4  2  //must not be pulled low during power on/reset, toggles value during boot
//#define D5 14
//#define D6 12
//#define D7 13
//#define D8 15  //must not be pulled high during power on/reset

#define Sensor1_PIN 14    //D5     // triger Link 1
#define Sensor2_PIN 12    //D6     // triger Link 2
#define Sensor3_PIN 13    //D7     // triger Link 3
#define relay1_pin 16     //D0
#define relay2_pin 5      //D1
#define relay3_pin 4      //D2
int wificonfig_pin = 0;   //D3
int led_pin = 2;          //D4
int C_W_state = HIGH; 
int last_C_W_state = HIGH;
unsigned long time_last_C_W_change = 0; 
long C_W_delay = 5000;               // ---------------------- config delay 5 seconds ---------------------------
char Supla_server[81]=("Set server address");
char Email[81]=("set email address");
char Supla_name[51];
char Supla_status[51];
char BotToken[60];                                                   
char Chat_Id[20];                   
char Alarm1[41];
char Alarm2[41];
char Alarm3[41];
const char* host = "api.telegram.org";
const int httpsPort = 443;    
bool shouldSaveConfig = false;
bool initialConfig = false;
bool starting = true;
bool send_teleg = false;
bool alarm1_on = false;
bool alarm2_on = false;
bool alarm3_on = false;
bool state10 = true;
String url = "/bot";
int s;
char GUID[SUPLA_GUID_SIZE];
char AUTHKEY[SUPLA_AUTHKEY_SIZE];
byte uuidNumber[16]; // UUIDs in binary form are 16 bytes long
static const char logo[] PROGMEM = "<style>html{ background-color: #01DF3A;}</style><div class='s'><svg version='1.1' id='l' x='0' y='0' viewBox='0 0 200 200' xml:space='preserve'><path d='M59.3,2.5c18.1,0.6,31.8,8,40.2,23.5c3.1,5.7,4.3,11.9,4.1,18.3c-0.1,3.6-0.7,7.1-1.9,10.6c-0.2,0.7-0.1,1.1,0.6,1.5c12.8,7.7,25.5,15.4,38.3,23c2.9,1.7,5.8,3.4,8.7,5.3c1,0.6,1.6,0.6,2.5-0.1c4.5-3.6,9.8-5.3,15.7-5.4c12.5-0.1,22.9,7.9,25.2,19c1.9,9.2-2.9,19.2-11.8,23.9c-8.4,4.5-16.9,4.5-25.5,0.2c-0.7-0.3-1-0.2-1.5,0.3c-4.8,4.9-9.7,9.8-14.5,14.6c-5.3,5.3-10.6,10.7-15.9,16c-1.8,1.8-3.6,3.7-5.4,5.4c-0.7,0.6-0.6,1,0,1.6c3.6,3.4,5.8,7.5,6.2,12.2c0.7,7.7-2.2,14-8.8,18.5c-12.3,8.6-30.3,3.5-35-10.4c-2.8-8.4,0.6-17.7,8.6-22.8c0.9-0.6,1.1-1,0.8-2c-2-6.2-4.4-12.4-6.6-18.6c-6.3-17.6-12.7-35.1-19-52.7c-0.2-0.7-0.5-1-1.4-0.9c-12.5,0.7-23.6-2.6-33-10.4c-8-6.6-12.9-15-14.2-25c-1.5-11.5,1.7-21.9,9.6-30.7C32.5,8.9,42.2,4.2,53.7,2.7c0.7-0.1,1.5-0.2,2.2-0.2C57,2.4,58.2,2.5,59.3,2.5z M76.5,81c0,0.1,0.1,0.3,0.1,0.6c1.6,6.3,3.2,12.6,4.7,18.9c4.5,17.7,8.9,35.5,13.3,53.2c0.2,0.9,0.6,1.1,1.6,0.9c5.4-1.2,10.7-0.8,15.7,1.6c0.8,0.4,1.2,0.3,1.7-0.4c11.2-12.9,22.5-25.7,33.4-38.7c0.5-0.6,0.4-1,0-1.6c-5.6-7.9-6.1-16.1-1.3-24.5c0.5-0.8,0.3-1.1-0.5-1.6c-9.1-4.7-18.1-9.3-27.2-14c-6.8-3.5-13.5-7-20.3-10.5c-0.7-0.4-1.1-0.3-1.6,0.4c-1.3,1.8-2.7,3.5-4.3,5.1c-4.2,4.2-9.1,7.4-14.7,9.7C76.9,80.3,76.4,80.3,76.5,81z M89,42.6c0.1-2.5-0.4-5.4-1.5-8.1C83,23.1,74.2,16.9,61.7,15.8c-10-0.9-18.6,2.4-25.3,9.7c-8.4,9-9.3,22.4-2.2,32.4c6.8,9.6,19.1,14.2,31.4,11.9C79.2,67.1,89,55.9,89,42.6z M102.1,188.6c0.6,0.1,1.5-0.1,2.4-0.2c9.5-1.4,15.3-10.9,11.6-19.2c-2.6-5.9-9.4-9.6-16.8-8.6c-8.3,1.2-14.1,8.9-12.4,16.6C88.2,183.9,94.4,188.6,102.1,188.6z M167.7,88.5c-1,0-2.1,0.1-3.1,0.3c-9,1.7-14.2,10.6-10.8,18.6c2.9,6.8,11.4,10.3,19,7.8c7.1-2.3,11.1-9.1,9.6-15.9C180.9,93,174.8,88.5,167.7,88.5z'/></svg>";

ESP8266WebServer httpServer(81);
ESP8266HTTPUpdateServer httpUpdater;
WiFiManager wifiManager;

class MyDigitalWrite : public Supla::Io {
  public:
    void customDigitalWrite(int channelNumber, uint8_t pin, uint8_t val) {
      if (channelNumber == 0) {   // ---------------------------- we select the channel we want ------------------
       if (state10 == false ){
        Serial.print("customWrite:  ");Serial.println(val); 
        alarm1_on = val; 
        EEPROM.write(295, val);
        EEPROM.commit();   
        return ::digitalWrite(pin,val);
       }
      }else if (channelNumber == 1) {   // ---------------------------- we select the channel we want ------------------
       if (state10 == false ){
        Serial.print("customWrite:  ");Serial.println(val); 
        alarm2_on = val; 
        EEPROM.write(296, val);
        EEPROM.commit();   
        return ::digitalWrite(pin,val);
       }
      }else if (channelNumber == 2) {   // ---------------------------- we select the channel we want ------------------
       if (state10 == false ){
        Serial.print("customWrite:  ");Serial.println(val); 
        alarm3_on = val; 
        EEPROM.write(297, val);
        EEPROM.commit();   
        return ::digitalWrite(pin,val);
       }
      }else {
        return ::digitalWrite(pin,val);   // ------------------------------ so that the other channels work normally
      }
   }
}MyDigitalWrite;
void saveConfigCallback () {          
  Serial.println("Should save config");
  shouldSaveConfig = true;
}
void ondemandwifiCallback () {
   digitalWrite(led_pin, LOW);
   WiFiManagerParameter custom_Supla_server("server", "supla server", Supla_server, 81,"required");
   WiFiManagerParameter custom_Email("email", "Email", Email, 81,"required");
   WiFiManagerParameter custom_Supla_name("name", "Supla Device Name", Supla_name, 51,"required");
   WiFiManagerParameter custom_Supla_status("status", "Supla Last State", Supla_status, 51,"readonly");
   WiFiManagerParameter custom_BotToken("BotToken", "Bot Token", BotToken, 60);
   WiFiManagerParameter custom_Chat_Id("Chat_Id", "Chat Id", Chat_Id, 20);
   WiFiManagerParameter custom_Alarm1("Alarm_a", "Alarm Message 1", Alarm1, 41);
   WiFiManagerParameter custom_Alarm2("Alarm_b", "Alarm Message 2", Alarm2, 41);
   WiFiManagerParameter custom_Alarm3("Alarm_c", "Alarm Message 3", Alarm3, 41);
   
   wifiManager.setBreakAfterConfig(true);
   wifiManager.setSaveConfigCallback(saveConfigCallback);
  
   wifiManager.addParameter(&custom_Supla_server);
   wifiManager.addParameter(&custom_Email);
   wifiManager.addParameter(&custom_Supla_name);
   wifiManager.addParameter(&custom_Supla_status);
   wifiManager.addParameter(&custom_BotToken);
   wifiManager.addParameter(&custom_Chat_Id);
   wifiManager.addParameter(&custom_Alarm1);
   wifiManager.addParameter(&custom_Alarm2);
   wifiManager.addParameter(&custom_Alarm3);

   wifiManager.setCustomHeadElement(logo);
   wifiManager.setMinimumSignalQuality(8);
   //wifiManager.setShowStaticFields(true); // force show static ip fields
   //wifiManager.setShowDnsFields(true);    // force show dns field always
   wifiManager.setConfigPortalTimeout(300);

   if (!wifiManager.startConfigPortal("Supla_Telegram")) { Serial.println("Not connected to WiFi but continuing anyway.");} else { Serial.println("connected...yeey :)");}                
    strcpy(Supla_server, custom_Supla_server.getValue());
    strcpy(Email, custom_Email.getValue());
    strcpy(Supla_name, custom_Supla_name.getValue());
    strcpy(BotToken, custom_BotToken.getValue());
    strcpy(Chat_Id, custom_Chat_Id.getValue());
    strcpy(Alarm1, custom_Alarm1.getValue());
    strcpy(Alarm2, custom_Alarm2.getValue());
    strcpy(Alarm3, custom_Alarm3.getValue());
    if(strcmp(Supla_server, "get_new_guid_and_authkey") == 0){
      Serial.println("new guid & authkey.");
      EEPROM.write(300, 0);
      EEPROM.commit();
      delay(100);
      ESP.reset(); 
    }  
    WiFi.softAPdisconnect(true);   //  close AP
}
void status_func(int status, const char *msg) {    //    ------------------------ Status --------------------------
  if (s != status){
    s = status; 
      if (s != 10){
        strcpy(Supla_status, msg); 
  }  }            
}
void guid_authkey(void) {
  if (EEPROM.read(300) != 60){
    int eep_gui = 301;
    ESP8266TrueRandom.uuid(uuidNumber);
    String uuidString = "";
    for (int i = 0; i < 16; i++) {
      int topDigit = uuidNumber[i] >> 4;
      int bottomDigit = uuidNumber[i] & 0x0f;
      uuidString += "0123456789abcdef"[topDigit];
      uuidString += "0123456789abcdef"[bottomDigit];
    }
    int length_uuid = uuidString.length();
    for (int i = 0; i < length_uuid; ++i) {
      EEPROM.put(eep_gui + i, uuidString[i]);
    }
    int eep_aut = 321;
    ESP8266TrueRandom.uuid(uuidNumber);
    String uuidString2 = "";
    for (int i = 0; i < 16; i++) {
      int topDigit = uuidNumber[i] >> 4;
      int bottomDigit = uuidNumber[i] & 0x0f;
      uuidString2 += "0123456789abcdef"[topDigit];
      uuidString2 += "0123456789abcdef"[bottomDigit];
    }
    int length_uuid2 = uuidString2.length();
    for (int i = 0; i < length_uuid2; ++i) {
      EEPROM.put(eep_aut + i, uuidString2[i]);
    }
    EEPROM.write(300, 60);
    EEPROM.commit();
    delay(0);
  }
  read_guid();
  read_authkey();
  Serial.print("GUID : ");Serial.println(read_guid()); 
  Serial.print("AUTHKEY : ");Serial.println(read_authkey()); 
}
String read_guid(void) {
  String read_eeprom = "";
  int i, ii = 0;
  int eep_star = 301;
  int end_guid = eep_star + SUPLA_GUID_SIZE;
  String temp_read = "0x";
  for (i = eep_star; i < end_guid + 16;  i = i + 1) {
    temp_read += char(EEPROM.read(i));
    read_eeprom += char(EEPROM.read(i));
    if ( (i % 2) == 0) {
      char *_guid = strcpy((char*)malloc(temp_read.length() + 1), temp_read.c_str());
      GUID[ii] = strtoul( _guid, NULL, 16);
      temp_read = "0x";
      ii++;
    }
  }
  return read_eeprom;
}
String read_authkey(void) {
  String read_eeprom = "";
  int i, ii = 0;
  int eep_star = 321;
  int end_authkey = eep_star + SUPLA_AUTHKEY_SIZE;
  String temp_read = "0x";
  for (i = eep_star; i < end_authkey + 16;  i = i + 1) {
    temp_read += char(EEPROM.read(i));
    read_eeprom += char(EEPROM.read(i));
    if ( (i % 2) == 0) {
      char *_authkey = strcpy((char*)malloc(temp_read.length() + 1), temp_read.c_str());
      AUTHKEY[ii] = strtoul( _authkey, NULL, 16);
      temp_read = "0x";
      ii++;
    }
  }
  return read_eeprom;
}
ICACHE_RAM_ATTR void sense_1(){
  detachInterrupt(Sensor1_PIN);
  detachInterrupt(Sensor2_PIN);
  detachInterrupt(Sensor3_PIN);
  send_teleg = true ;
}
void setup() {
  wifi_set_sleep_type(NONE_SLEEP_T);
  Serial.begin(115200);
  delay(10);
  Serial.println(" ");
  Serial.println(" ");
  pinMode(wificonfig_pin, INPUT_PULLUP);
  pinMode(led_pin,OUTPUT);   
  digitalWrite(led_pin, HIGH);

  EEPROM.begin(1024);
  if (EEPROM.read(300) != 60){initialConfig = true;} 
  guid_authkey();
  
  if (WiFi.SSID()==""){ initialConfig = true;} 

  if (SPIFFS.begin()) {  // ------------------------- wificonfig read -----------------
    Serial.println("mounted file system");
    if (SPIFFS.exists("/config.json")) {
      Serial.println("reading config file");
      File configFile = SPIFFS.open("/config.json", "r");
      if (configFile) {
        Serial.println("opened config file");
        size_t size = configFile.size();
        std::unique_ptr<char[]> buf(new char[size]);
        configFile.readBytes(buf.get(), size);
        DynamicJsonBuffer jsonBuffer;         
        JsonObject& json = jsonBuffer.parseObject(buf.get());
        json.printTo(Serial);   //print config data to serial on startup
        if (json.success()) {Serial.println("\nparsed json");         
          strcpy(Supla_server, json["Supla_server"]);
          strcpy(Email, json["Email"]);
          strcpy(Supla_name, json["Supla_name"]);
          strcpy(BotToken, json["BotToken"]);         
          strcpy(Chat_Id, json["Chat_Id"]);
          strcpy(Alarm1, json["Alarm1"]);
          strcpy(Alarm2, json["Alarm2"]);
          strcpy(Alarm3, json["Alarm3"]);         
        } else {
          Serial.println("failed to load json config");
          initialConfig = true;
        }
      }
    }
   } else {
    Serial.println("failed to mount FS");
  }
  
   wifi_station_set_hostname(Supla_name);   
   WiFi.mode(WIFI_STA); // Force to station mode because if device was switched off while in access point mode it will start up next time in access point mode.

    SuplaDevice.addRelay(relay1_pin, false);
    SuplaDevice.addRelay(relay2_pin, false);
    SuplaDevice.addRelay(relay3_pin, false);
    
    SuplaDevice.addSensorNO(Sensor1_PIN, true);
    SuplaDevice.addSensorNO(Sensor2_PIN, true); 
    SuplaDevice.addSensorNO(Sensor3_PIN, true);
     
    SuplaDevice.setName(Supla_name);
    SuplaDevice.setStatusFuncImpl(&status_func);
  
   SuplaDevice.begin(GUID,Supla_server,Email,AUTHKEY);
   
   attachInterrupt(Sensor1_PIN, sense_1, FALLING);
   attachInterrupt(Sensor2_PIN, sense_1, FALLING);
   attachInterrupt(Sensor3_PIN, sense_1, FALLING); 
                      
}
void loop() {
  if (initialConfig == true){ondemandwifiCallback();}

  int C_W_read = digitalRead(wificonfig_pin);{  // ---------------------let's read the status of the Gpio to start wificonfig ---------------------
   if (C_W_read != last_C_W_state) {  time_last_C_W_change = millis();}      
    if ((millis() - time_last_C_W_change) > C_W_delay) {     
     if (C_W_read != C_W_state) {     
       C_W_state = C_W_read;       
       if (C_W_state == LOW) {
        ondemandwifiCallback () ;} } }         
     last_C_W_state = C_W_read;            
   }
      
  if (shouldSaveConfig == true) { // ------------------------ wificonfig save --------------
    Serial.println("saving config");
    DynamicJsonBuffer jsonBuffer;
    JsonObject& json = jsonBuffer.createObject();
    json["Supla_server"] = Supla_server;
    json["Email"] = Email;
    json["Supla_name"] = Supla_name;
    json["BotToken"] = BotToken;
    json["Chat_Id"] = Chat_Id;
    json["Alarm1"] = Alarm1;
    json["Alarm2"] = Alarm2;
    json["Alarm3"] = Alarm3;
    File configFile = SPIFFS.open("/config.json", "w");
    if (!configFile) {Serial.println("failed to open config file for writing"); }   
    json.prettyPrintTo(Serial);
    json.printTo(configFile);
    configFile.close();
    Serial.println("config saved");    
    shouldSaveConfig = false;
    initialConfig = false; 
    WiFi.mode(WIFI_STA);   
    delay(5000);
    ESP.restart(); 
  }
  
 SuplaDevice.iterate();
   delay(75);

   if (WiFi.status() == WL_CONNECTED){
    if (starting){
      httpUpdater.setup(&httpServer, "/update", "admin", "pass");
      httpServer.begin(); 
      starting = false;         
     }
      if  (send_teleg)  {
        if ((alarm1_on) && (digitalRead(Sensor1_PIN) == 0)){
        Serial.println("send telegram");       
         url = "/bot";url += BotToken;url += "/sendMessage?chat_id=";url += Chat_Id;url += "&text=";url += Alarm1;                                                               
        Telegram_send();  
       }else if ((send_teleg)&&(!alarm1_on)){
        Serial.println("send 1 is off"); 
       }
       if ((alarm2_on) && (digitalRead(Sensor2_PIN) == 0)){
        Serial.println("send telegram");       
         url = "/bot";url += BotToken;url += "/sendMessage?chat_id=";url += Chat_Id;url += "&text=";url += Alarm2;                                                               
        Telegram_send();
       }else if ((send_teleg)&&(!alarm2_on)){
        Serial.println("send 2 is off");
       }
       if ((alarm3_on) && (digitalRead(Sensor3_PIN) == 0)){
        Serial.println("send telegram");       
         url = "/bot";url += BotToken;url += "/sendMessage?chat_id=";url += Chat_Id;url += "&text=";url += Alarm3;                                                               
        Telegram_send();
       }else if ((send_teleg)&&(!alarm3_on)){
        Serial.println("send 3 is off");     
       }
       send_teleg = false; 
       attachInterrupt(Sensor1_PIN, sense_1, FALLING);attachInterrupt(Sensor2_PIN, sense_1, FALLING);attachInterrupt(Sensor3_PIN, sense_1, FALLING);
      }
     httpServer.handleClient();
   }
   
 switch (s) {    //    ------------------------------------------------ Status ------------------------------------
  case 17:      // -----     STATUS_REGISTERED_AND_READY
     if (state10 == true){ 
          if (EEPROM.read(295)> 0){ 
              Serial.print("mem switsh 1:");Serial.println(EEPROM.read(295));              
              alarm1_on = true;
              SuplaDevice.channelValueChanged(0,1);}
          if (EEPROM.read(296)> 0){ 
              Serial.print("mem switsh 2:");Serial.println(EEPROM.read(296));              
              alarm2_on = true;
              SuplaDevice.channelValueChanged(1,1);}
          if (EEPROM.read(297)> 0){ 
              Serial.print("mem switsh 3:");Serial.println(EEPROM.read(297));              
              alarm3_on = true;
              SuplaDevice.channelValueChanged(2,1);}
            
          state10 = false;   
       }  
    break;     
   case 10:      // --------------------- REGISTER_IN_PROGRESS  ----------------------
     state10 = true;
    break;  
  }
}
void Telegram_send() {
  
  WiFiClientSecure BotClient; 
  BotClient.setInsecure();
  Serial.print("connecting to ");
  Serial.println(host);
  if (!BotClient.connect(host, httpsPort)) {Serial.println("connection failed"); return;}  
  Serial.print("requesting URL: "); Serial.println(url); 
  BotClient.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "User-Agent: ESP8266\r\n" +
               "Connection: close\r\n\r\n");
  Serial.println("request sent");
   while (BotClient.connected()) {
    String line = BotClient.readStringUntil('\n');
    if (line == "\r") {Serial.println("headers received"); break;}               
   }
  String line = BotClient.readStringUntil('}');
  line = line + "}";
  if (line.indexOf("true") >0) { Serial.println("successfull!");} else {Serial.println("failed");} 
  Serial.println("reply was:");Serial.println("==========");  
  Serial.println(line);
  Serial.println("==========");Serial.println("closing connection");  
}
Supla_telegram_X3_DOUT_16Mbit.rar
(644.27 KiB) Descargado 151 veces
zilhos
Mensajes: 17
Registrado: Sab Ago 10, 2019 2:52 am

Buen dia !!
En hora buena @ermaya !!
Es justo lo que estaba buscando, el poder de SUPLA mezclado con lo simple (no por eso menospreciable...) de una notificación en Telegram.
Telegram es Gratuito en argentina , no es el caso de aplicaciones Push como por ejemplo Pushover que es una app de pago en mi pais
Tal vez la idea de conectar cosas en casa que por antiguas no tengan la posibilidad de conectarse a internet.
Muchas Gracias !!
Saludos desde Argentina
zilhos
Mensajes: 17
Registrado: Sab Ago 10, 2019 2:52 am

La posibilidad de integrar todo en SUPLA es inquietante........
pero eso se hace difícil cuando de programación estas en nivel aprendiz :roll:
Gracias @elmaya por tu trabajo y dedicación
elmaya
Mensajes: 1482
Registrado: Mié Jun 27, 2018 5:48 pm
Ubicación: El Saucejo - Sevilla

a mandar :lol:
zilhos
Mensajes: 17
Registrado: Sab Ago 10, 2019 2:52 am

Buenas tardes @elmaya
De dónde podría descargar todas las librerías que usted utiliza en este proyecto
Para así poder practicar con el ide de Arduino
Desde ya muchas gracias!
Responder

Volver a “Ideas y conceptos”