Allora ragazzi io ce l’ho messa tutta:
Lo sktech che Vi riporto sotto:
// Configure the framework
#include "SoulissFramework.h"
// Indirizzo MAC per Scheda Ethernet Nodo0
// "0xBF" identifica la mia rete BF
#define MAC_INSKETCH
uint8_t MAC_ADDRESS[] = {0x1A, 0xA6, 0x49, 0x6B, 0xBF, 0x01}; // L'ultimo indirizzo "0x01" identifica il Nodo0
#define AUTO_MAC 0
#define MAC_DEBUG 0
#include "bconf/StandardArduino.h" // Uso un Arduino standard
#include "conf/ethW5100.h" // Uso connessione Ethernet Wiznet W5100
#include "conf/Gateway.h" // Uso il nodo come Gateway Souliss
#include <SPI.h>
#include "conf/Webhook.h"
#include "Souliss.h"
// -----------------------INIZIO definizione della configurazione di Rete-------------------------------
#define ip_Router 1 // Indirizzo IP Ethernet Router (ex 250)
#define ip_Gateway 20 // Indirizzo IP Ethernet Gateway Nodo00 Salone
#define ip_Eth_N1 21 // Indirizzo IP Ethernet Nodo01 Camera Letto
#define ip_Eth_N2 22 // Indirizzo IP Ethernet Nodo02 Bagno Camera Letto
#define ip_Eth_N3 23 // Indirizzo IP Ethernet Nodo03 Camera Chiara
#define ip_Eth_N4 24 // Indirizzo IP Ethernet Nodo04 Camera Lavoro
#define ip_Eth_N5 25 // Indirizzo IP Ethernet Nodo05 Bagno Servizio
#define ip_Eth_N6 26 // Indirizzo IP Ethernet Nodo06 Cucina
#define ip_Eth_N7 27 // Indirizzo IP Ethernet Nodo07 Ingresso
#define ip_Eth_N8 28 // Indirizzo IP Ethernet Nodo08 Esterno
uint8_t ip_gateway_Router[4] = {192, 168, 1, ip_Router}; // Indirizzo Gateway Router
uint8_t ip_address_Gw[4] = {192, 168, 1, ip_Gateway}; // Indirizzo Gateway Souliss su Ethernet Arduino Mega 2560
uint8_t ip_address_E1[4] = {192, 168, 1, ip_Eth_N1}; // Indirizzo su Ethernet Nodo01
uint8_t ip_address_E2[4] = {192, 168, 1, ip_Eth_N2}; // Indirizzo su Ethernet Nodo02
uint8_t ip_address_E3[4] = {192, 168, 1, ip_Eth_N3}; // Indirizzo su Ethernet Nodo03
uint8_t ip_address_E4[4] = {192, 168, 1, ip_Eth_N4}; // Indirizzo su Ethernet Nodo04
uint8_t ip_address_E5[4] = {192, 168, 1, ip_Eth_N5}; // Indirizzo su Ethernet Nodo05
uint8_t ip_address_E6[4] = {192, 168, 1, ip_Eth_N6}; // Indirizzo su Ethernet Nodo06
uint8_t ip_address_E7[4] = {192, 168, 1, ip_Eth_N7}; // Indirizzo su Ethernet Nodo07
uint8_t ip_address_E8[4] = {192, 168, 1, ip_Eth_N8}; // Indirizzo su Ethernet Nodo08
uint8_t subnet_mask[4] = {255, 255, 255, 0};
#define myvNet_address ip_address_Gw[3] // Ultimo Byte dell' IP address (11) è anche l'indirizzo vNet
#define myvNet_subnet 0xFF00
#define myvNet_supern 0x0000
#define myvNet_supern_E1 Nodo01
#define myvNet_supern_E2 Nodo02
#define myvNet_supern_E3 Nodo03
#define myvNet_supern_E4 Nodo04
#define myvNet_supern_E5 Nodo05
#define myvNet_supern_E6 Nodo06
#define myvNet_supern_E7 Nodo07
#define myvNet_supern_E8 Nodo08
//NODO x: SENSORE GAS E FUMI//
// Definisco la logica T1N Cucina
#define GASDETECTOR 0 // T13 ID Logico dell'ingresso Rilevatore del Gas (Valore di ingresso digitale)
#define LEDRED 1 // T11 ON / OFF Uscita digitale con opzione Timer - Allarme SI GAS
#define LEDGREEN 2 // T11 ON / OFF Uscita digitale con opzione Timer - Allarme NO GAS
//#define FAN 3 // T11 ID Logico della Linea che alimenta l'aspiratore
#define BUZZER 4 // T11 Uscita digitale a impulsi
// Definisco PIN Arduino
//#define PIN_FANBUTT 38 // Pulsante accensione manuale verso Ventola
//#define PIN_FAN 39 // Uscita verso Ventola
#define PIN_BUZZER 40 // Uscita verso Buzzer
#define PIN_GASDETEC 41 // Ingresso verso Gasdetector
#define PIN_LEDRED 42 // Uscita verso Led Rosso Stato Allarme Gas
#define PIN_LEDGREEN 43 // Uscita verso Led Verde Stato No Allarme Gas
//Variabile per memorizzare il valore dell'ingresso Allarme fughe GAS
//E la persistenza della lettura
byte gasno = 0;
byte gassi = 0;
// Be sure this address is unique in your network
// byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x19 };
char APIKEY[] = "7019aa8f4ee702712a3941cfb46d8ec533a6447f"; // Put here your API key
char CHANNEL[] = "Fuga Gas"; // and here your channel name
char serverName[] = "api.pushetta.com";
boolean lastConnected = false;
EthernetClient client;
void setup() {
Initialize();
Ethernet.begin();
Souliss_SetIPAddress(ip_address_Gw, subnet_mask, ip_gateway_Router);
SetAsGateway(myvNet_address);
Serial.begin(9600);
//Ethernet.begin(mac);
/*if (Ethernet.begin(mac) == 0) {
while(true); // no point in carrying on, so do nothing forever
}*/
Set_T11(LEDRED); // T11 ON / OFF Uscita digitale con opzione Timer
Set_T11(LEDGREEN); // T11 ON / OFF Uscita digitale con opzione Timer
Set_T13(GASDETECTOR); // T13 ID Logico dell'ingresso Rilevatore del Gas
Set_T11(BUZZER); // T11 ON / OFF Uscita digitale a impulsi
pinMode(41, INPUT); // Ingresso verso Gasdetector
pinMode(42, OUTPUT); // Uscita verso Led Rosso Stato Allarme Gas
pinMode(43, OUTPUT); // Uscita verso Led Verde Stato No Allarme Gas
pinMode(40, OUTPUT); // Uscita verso Buzzer
delay(1000); // give the Ethernet shield a second to initialize
}
void loop()
{
EXECUTEFAST() {
UPDATEFAST();
FAST_50ms() {
Logic_T11(LEDRED);
Logic_T11(LEDGREEN);
Logic_T13(GASDETECTOR);
Logic_T11(BUZZER);
//Logic_T13 (LED);
DigOut(42, Souliss_T1n_Coil, LEDRED); // Output Feedback ON
DigOut(43, Souliss_T1n_Coil, LEDGREEN); // Output Feedback ON
DigOut(40, Souliss_T1n_Coil, BUZZER); // Output Feedback ON
}
//SHIFT_90ms(1) {
//Logica Ingresso Allarme GAS
Logic_T13(GASDETECTOR);
// Esegui Logic per i LED, FAN e BUZZER
Logic_T11(LEDRED);
Logic_T11(LEDGREEN);
Logic_T11(BUZZER);
//T13 Lettura Stato Allarme GAS
LowDigIn2State(41,Souliss_T1n_OnCmd,Souliss_T1n_OffCmd,GASDETECTOR);
//Codice per gestire l'allarme GAS sul Cambio di Stato
gassi = mOutput(GASDETECTOR);
mInput(LEDGREEN) = Souliss_T1n_OnCmd; // Stato all'accensione Allarme NO Gas
gassi=memory_map[MaCaco_OUT_s + GASDETECTOR];
if (gassi != gasno) { //L'ingresso è cambiato e gestisco
{if (gassi == 1)
sendToPushetta(CHANNEL, "Fuga Gas"); // send to Pushetta
mInput(LEDRED) = Souliss_T1n_OnCmd; // Allarme SI GAS LED Rosso Acceso
mInput(BUZZER) = Souliss_T1n_OnCmd; // Allarme SI GAS Suona il Buzzer
mInput(LEDGREEN) = Souliss_T1n_OffCmd; // Allarme SI GAS LED Verde Spento
}
}
else if (gassi == gasno)
{
mInput(LEDGREEN) = Souliss_T1n_OnCmd; // Allarme NO GAS LED Verde Acceso
mInput(LEDRED) = Souliss_T1n_OffCmd; // Allarme NO GAS LED Rosso Spento
mInput(BUZZER) = Souliss_T1n_OffCmd; // Allarme NO GAS non Suona il Buzzer
}
gassi = gasno;
// Here we handle here the communication with Android
FAST_GatewayComms();
}
}
//Function for sending the request to Pushetta
void sendToPushetta(char channel[], String text){
client.stop();
Serial.println ("Invio a Pushetta...");
if (client.connect(serverName, 80))
{
Serial.println ("Client Connesso...");
client.print("POST /api/pushes/");
client.print(channel);
client.println("/ HTTP/1.1");
client.print("Host: ");
client.println(serverName);
client.print("Authorization: Token ");
client.println(APIKEY);
client.println("Content-Type: application/json");
client.print("Content-Length: ");
client.println(text.length()+46);
client.println();
client.print("{ \"body\" : \"");
client.print(text);
client.println("\", \"message_type\" : \"text/plain\" }");
client.println();
Serial.println ("Messaggio Inviato!");
}
}
funziona!!!! In caso di allarme "Fuga Gas", il Led Verde si spegne, il Led Rosso si accende, il Buzzer suona, ma purtroppo ricevo continue notifiche da "Pushetta" fintantochè simulo l'allarme Gas. Fermando la simulazione, la situazione ritorna allo stato descritto nello sketch ossia, il Led Verde è acceso, il Led rosso è spento, il Buzzer non suona e "Pushetta" non manda più notifiche.
Se avessi raggiunto l’obiettivo, ossia ricevere una sola notifica di allarme avrei continuato nel cercare di aggiungere allo sketch anche una notifica di “cessato” allarme, ma purtroppo non sono riuscito in questo, ecco il perché chiedo a questo punto aiuto (magari qualcuno si è già trovato nella stessa situazione in passato).
Aggiungo che prima di arrivare a questo risultato ho passato in rassegna le diverse discussioni che avevate intrapreso in passato e in alcuni casi ho provato ad utilizzare alcuni sketch trovati, ma senza fortuna, non fosse altro perché magari faceva quanto volevo suono del Buzzer, accensione Led rosso o Verde secondo le situazioni, ma non mandava le notifiche richieste nel codice a seconda degli stati.
Tornando alla parte che attualemente funziona anche se spara notifiche durante la fase di attivazione dell'allarme, mi sono venuti fuori dei dubbi che spero qui possano trovare una risposta:
Fine Fuga Gas
per i quali ho creato due channel diversi (vedi esempio sotto).
Nel codice le segnalazioni vanno così riportate o c'è un altro modo?
// Be sure this address is unique in your network
// byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x19
};
char APIKEY[] = "7019aa8f4ee702712a3941cfb46d8ec533a6447f"; // Put
here your API key
char CHANNEL[] = "Fuga Gas", "Fine Fuga
Gas"; // and here your channel
name
Ho provato a mettere anche i CHANNEL nello stesso codice, ma ho ricevuto errore, c'è forse un altro modo (vedi il modo sotto) ?
char CHANNEL[] = "Fuga Gas";
char CHANNEL[] = "Fine Fuga Gas";
Grazie per l'attenzione........attendo un eventuale riscontro
Cmq Ti do risposta senz'altro ...
Grazie ancora
...
Perché non usate Telegram?
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a souliss-it+unsubscribe@googlegroups.com.
Per postare in questo gruppo, invia un'email a souli...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/souliss-it/CAPXhohtJj4tFsbyxWvYdmLpA2XpK371w8MTN45i_joOMbum_QA%40mail.gmail.com.
Buongiorno Giuseppe ho messo in pratica il Tuo sketch , ma non compilava correttamente perché c’era un piccolo refuso sfuggito alle Tue correzioni (“gassi” parametro che era rimasto e che ho sostituito con “StatoGas”) così seguendo le Tue correzioni ,anche per capire ho apportato la modifica e il tutto ha funzionato.
Per quanto riguarda l’ utilizzo del T11, mi sono rifatto ad alcuni sketch che ho trovato sul forum e come fan tutti ho cercato di riadattarli alle mie esigenze. Per me era necessario avere una segnalazione visiva (LED Verde stato Riposo e LED Rosso stato di allarme) e/o sonora (BUZZER stato di allarme, magari temporizzandolo, ma questo poi lo vedrò se realizzarlo o no) e lo start di una ventola che consente la pulizia dell’aria inquinata dal GAS. Ora l’unico “Typical” che ho trovato è in effetti il “T11” ( “ON/OFF Digital Output” ) che può segnalarmi su SoulissApp l’evento Fuga di Gas cambiando lo stato dei T associati . Poi analizzando bene il tipo di servizio ho scoperto che quello che realmente volevo e che ha più senso era quello di ricevere anche notifiche di avvenuta “Fuga GAS” e di “Cessazione Fuga GAS” . Ora Il tutto funziona grazie a Te !!! Giuro che comunque mi sono applicato perché ho modificato la parte messaggistica (Pushetta) (e funziona) nel modo sotto riportato (vedi messaggi in rosso), andando a leggermi quelle poche info che sono presenti sul sito di PUSHETTA.
// Be sure this address is unique in your network
// byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x19 };
char APIKEY[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // Put here your API key
char CHANNEL[] = "GAS METANO"; // and here your channel name
FAST_90ms() { //INSERITA DA Giuseppe
Logic_T13(GASDETECTOR);
LowDigIn2State(41,Souliss_T1n_OnCmd,Souliss_T1n_OffCmd,GASDETECTOR);
//INSERITO DA Giuseppe CONTROLLO NOTIFICHE E LED DI STATO
if ( memory_map[MaCaco_OUT_s + GASDETECTOR] == StatoGAS) {
} else {
if ( memory_map[MaCaco_OUT_s + GASDETECTOR] == StatoGAS) {
mInput(LEDGREEN) = Souliss_T1n_OnCmd; // Stato all'accensione Allarme NO Gas
StatoGAS=memory_map[MaCaco_OUT_s + GASDETECTOR];
}
if ( memory_map[MaCaco_OUT_s + GASDETECTOR] == 1) {
sendToPushetta(CHANNEL, "Fuga Gas"); // send to Pushetta
sendToPushetta(CHANNEL, "Accensione Ventola"); // send to Pushetta
mInput(LEDRED) = Souliss_T1n_OnCmd; // Allarme SI GAS LED Rosso Acceso
mInput(BUZZER) = Souliss_T1n_OnCmd; // Allarme SI GAS Suona il Buzzer
mInput(LEDGREEN) = Souliss_T1n_OffCmd; // Allarme SI GAS LED Verde Spento
}
StatoGAS = memory_map[MaCaco_OUT_s + GASDETECTOR];
if ( memory_map[MaCaco_OUT_s + GASDETECTOR] == 0) {
sendToPushetta(CHANNEL, "Spegnimento Ventola"); // send to Pushetta
sendToPushetta(CHANNEL, "Fine Fuga Gas"); // send to Pushetta
mInput(LEDRED) = Souliss_T1n_OffCmd; // Allarme NO GAS LED Rosso Acceso
mInput(BUZZER) = Souliss_T1n_OffCmd; // Allarme NO GAS Suona il Buzzer
mInput(LEDGREEN) = Souliss_T1n_OnCmd; // Allarme NO GAS LED Verde Spento
}
StatoGAS = memory_map[MaCaco_OUT_s + GASDETECTOR];
}
}
Grazie
Claudio
Perché non usate Telegram?
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a souliss-it+...@googlegroups.com.
Per postare in questo gruppo, invia un'email a souli...@googlegroups.com.
Su questa ML o su quella inglese c'é un mio post con allegato un esempio funzionante. C'é una procedura da cercare in rete per creare un bot da cui ottenere l'apikey da sostiuire nello sketch.
Dario.
...
Per annullare l'iscrizione a questo gruppo e a tutti i suoi argomenti, invia un'email a souliss-it+unsubscribe@googlegroups.com.
Per postare in questo gruppo, invia un'email a souli...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/souliss-it/CAKGhMPLganqNf7fHRkoKDjSP%2BanBHDmjTyJgaA8vn9YOmAwd3Q%40mail.gmail.com.
Per altre opzioni visita https://groups.google.com/d/optout.
--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "souliss-it" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a souliss-it+unsubscribe@googlegroups.com.
Per postare in questo gruppo, invia un'email a souli...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/souliss-it/59f0ee86.69a8df0a.181db.baa4%40mx.google.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/souliss-it/CAKGhMPLganqNf7fHRkoKDjSP%2BanBHDmjTyJgaA8vn9YOmAwd3Q%40mail.gmail.com.
Per altre opzioni visita https://groups.google.com/d/optout.
--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "souliss-it" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a souliss-it+...@googlegroups.com.
Per postare in questo gruppo, invia un'email a souli...@googlegroups.com.
Ciao Giuseppe, non mi sono dimenticato di rispondere alla domanda che mi avevi fatto sull’utilizzo dello sketch da Te proposto Pushetta come Ti avevo richiesto.
Lo sketch che gentilmente mi avevi postato non funziona, ma in effetti penso non abbia senso usarlo come avevo proposto, ma bensì è meglio creare un canale per ogni singolo Vano (es. cucina o bagno etc) e farci ricadere all’interno i vari allarmi.
Facendo le dovute prove mi sino reso conto che la cosa ha più senso.
Ora però sto passando alla gestione degli allarmi inteso come antifurto e mi sono posto alcune domande leggendo qualche post.
Mi piacerebbe capire l’uso dei nodi come è meglio gestirlo se in antitheft solo o metterci anche il watch dog.
Comunque grazie come sempre per le info che mi dai.
Per annullare l'iscrizione a questo gruppo e a tutti i suoi argomenti, invia un'email a souliss-it+unsubscribe@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/souliss-it/CAKGhMPLganqNf7fHRkoKDjSP%2BanBHDmjTyJgaA8vn9YOmAwd3Q%40mail.gmail.com.
Per altre opzioni visita https://groups.google.com/d/optout.
--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "souliss-it" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a souliss-it+...@googlegroups.com.
Per postare in questo gruppo, invia un'email a souli...@googlegroups.com.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a souliss-it+unsubscribe@googlegroups.com.
Per postare in questo gruppo, invia un'email a souli...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/souliss-it/86dfc12f-20c4-49f4-a778-44e08f336c13%40googlegroups.com.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a souliss-it+...@googlegroups.com.
Per postare in questo gruppo, invia un'email a souli...@googlegroups.com.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a souliss-it+...@googlegroups.com.
Per postare in questo gruppo, invia un'email a souli...@googlegroups.com.