Sensori pir allarme

673 views
Skip to first unread message

Giuseppe P.

unread,
May 26, 2016, 2:10:46 PM5/26/16
to souliss-it
È consigliabile creare nodi peer esp01 così da creare dei sensori pir allarme wifi con watchdog?
Ho creato tutto a banco ma il timore che una qualche esp 01 si dovesse scollegare dato che ho notato poca stabilità in wifi e far scattare l'allarme e quindi la sirena non mi da molta fiducia.
Cosa ne pensate?

Dario Cdj

unread,
May 26, 2016, 3:15:34 PM5/26/16
to souli...@googlegroups.com

Intanto usa esp-12 ...

--
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 messaggi 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/ccfdc230-d5a8-464a-bdd2-f4a4813cbdb8%40googlegroups.com.
Per ulteriori opzioni, visita https://groups.google.com/d/optout.

tony pedi

unread,
May 26, 2016, 3:52:51 PM5/26/16
to souliss-it
cosa ti vieta di non collegare i pir DIRETTAMENTE alla sirena ( all'ANTITHEFT di souliss)  ?!?!
e di far , INVECE, mandare delle notifiche pushetta quando i pir si attivano

avrai di certo ( ;-) ) delle ipcam

all'arrivo della notifica ti metti a controllare con la ipcam cosa stia succedendo

e solo dopo programmerai questi pir in versione 'definitiva' collegati direttamente alla sirena, quando sarai ragionevolmente sicuro di non rompere le scatole ai vicini e a te stesso con falsi allarmi ;-) ... 

Giuseppe P.

unread,
Jun 5, 2016, 8:33:23 AM6/5/16
to souliss-it
Dopo aver testato a banco i peer esp01 con il solo pir per la rete allarme, mi sto autocostruendo i sensori, sono ancora all'inizio. Volevo chiedrvi quale involucro utilizzate per inserire un nodo come questo?
IMG-20160605-WA0006.jpeg

Giuseppe P.

unread,
Jun 5, 2016, 5:31:17 PM6/5/16
to souliss-it
C'è qualcuno che può darmi qualche dritta?

tony pedi

unread,
Jun 6, 2016, 10:02:42 AM6/6/16
to souliss-it

Giuseppe P.

unread,
Jun 6, 2016, 5:38:41 PM6/6/16
to souliss-it
Ho creato questo sensore peer con ESP01, è perfetto non sbaglia un colpo ed il sistema va in allarme
Tony grazie per i link
20160606_225442.jpg

Giuseppe P.

unread,
Jun 8, 2016, 5:59:43 AM6/8/16
to souliss-it
Gente mi spiegate perchè il T41 ha l'ingresso settato in LowDigIn per il sensore PIR, dato che testando con il tester l'uscita in riposo e LOW e quando rileva un movimento passa ad HIGH.

Mi sembra di aver capito che l'ingresso del sensore è settato Low perchè presumo che il sensore PIR in riposo dovrebbe mandare sempre una uscita HIGH e di conseguenza se viene staccato il sensore PIR dato che lo si setta in LowDigIn dovrebbe scattare l'allarme....Quindi la funzione è quando AVR e/o ESP che sia rileva uno stato LOW dovrebbe andare in allarme.

Io sto eseguendo questo codice ma nonostante il sensore mandi il livello HIGH solo quando rileva, in stato di riposo la scheda quando la armo da app resta armata e scatta solo quando rileva la presenza. Quindi se stacco il sensore non accade nulla.


        FAST_510ms() {
            

            // Input from anti-theft sensor
            LowDigIn(2, Souliss_T4n_Alarm, ANTITHEFT);
        
            // Execute the anti-theft logic
            Logic_T41(ANTITHEFT);
        
            // Set the Pin7 if the anti-theft is activated
            nDigOut(7, Souliss_T4n_Antitheft, ANTITHEFT);           
        
            // Set the Pin8 if the alarm is raised
            LowDigOut(8, Souliss_T4n_InAlarm, ANTITHEFT);
        }

Giuseppe P.

unread,
Jun 9, 2016, 10:02:07 AM6/9/16
to souliss-it
Attendo una risposta se qualcuno può rispondermi.

Colgo l'occasione per porre un'altra domanda....Ho provato ad inserire un T42 insieme al T41 nello stesso nodo per avere lo slot dedicato al sensore ma non mi compila. Ma è possibile farlo oppure il T42 e solo per i peer?

Giuseppe P.

unread,
Jun 9, 2016, 2:19:52 PM6/9/16
to souliss-it
Il T42 e solo per i peer oppure posso implementarlo nel nodo principale dove c'è il T41? Vorrei avere se gestito su unico nodo la lista dei sensori collegati ma non sono riuscito a compilarlo. Altrimenti dovrei utilizzare un T13?

Giuseppe P.

unread,
Jun 10, 2016, 2:48:01 PM6/10/16
to souliss-it
Ma nessuno sa rispondermi?

Saverio Sbrana

unread,
Jun 11, 2016, 5:26:21 AM6/11/16
to souliss-it
rispondo un po' per volta:
>Gente mi spiegate perchè il T41 ha l'ingresso settato in LowDigIn per il sensore PIR, dato che testando con il tester l'uscita in riposo e LOW e quando rileva un movimento passa ad HIGH.
chi ha settato cosa? il t41 è il tipico per nodo master dell'allarme poi i vari sensori che ci possono anche non essere li puoi attaccare come e dove ti pare
LowDigIn(2, Souliss_T4n_Alarm, ANTITHEFT);
puo' diventare
DigIn(2, Souliss_T4n_Alarm, ANTITHEFT);

sei te che sai come funziona il tuo pir e la logica che c'è dietro
io infatti in un mio t41 ho: Souliss_DigIn(pirSensorPin, Souliss_T4n_Alarm, memory_map, ANTITHEFT); // si lo so' dovrei usare lo speakeasy

>Ho provato ad inserire un T42 insieme al T41
perchè? non ti serve, il t42 serve per i peer esterni al nodo allarme master, cioè il t41 gestisce la logica di allarme il t42 l'evento scatenante
ma nulla vieta che nel nodo master con il t41 tu posso lanciare un'evento di allarme

sto rifacendo i vari nodi per l'allarme quindi anch'io ci sto lavorando ed ho intenzione di cambiare qualcosina nella gestione, ora creo un nuovo thread nel forum e chiedo

Giuseppe P.

unread,
Jun 11, 2016, 8:02:20 AM6/11/16
to souliss-it
Saverio grazie per la tua risposta. Ma forse mi sono spiegato male io. In sostanza oltre ad avere nel nodo master il T41 dove so già che posso collegare tutti i sensori che voglio, vorrei che in quel nodo si vedano tutti i sensori collegati, per questo chiedevo se ogni sensore potevo gestirlo si collegato al nodo master ma con un tipico dedicato per vederli appunto su souliss app nel solo nodo allarme.. Ci ho provato ad inserire il tipico insieme al T41 ma non mi ha funzionato.

Cmq io ho creato dei sensori con nodi esterni con nodi peer che hanno la doppia funzione e cioè se armato l'allarme funzionano da allarme se non attivato ho inserito in quel nodo anche il tipico 12 che settato in auto mi si accende un led che ho messo nella scatoletta creata appunto per alloggiare il peer e la sua componentistica che si accende al passaggio ma ad una condizione, solo se è buoio quest'ultima funzione gestita da una fotoresistenza ma non comandata da sketch ma dal circuito a se.

Giuseppe P.

unread,
Jun 11, 2016, 8:04:11 AM6/11/16
to souliss-it
....solo se c'è buio nella stanza. Questa condizione gestita da una fotoresistenza.

Saverio Sbrana

unread,
Jun 12, 2016, 6:31:10 AM6/12/16
to souliss-it
Saverio grazie per la tua risposta. Ma forse mi sono spiegato male io. In sostanza oltre ad avere nel nodo master il T41 dove so già che posso collegare tutti i sensori che voglio, vorrei che in quel nodo si vedano tutti i sensori collegati, per questo chiedevo se ogni sensore potevo gestirlo si collegato al nodo master ma con un tipico dedicato per vederli appunto su souliss app nel solo nodo allarme.. Ci ho provato ad inserire il tipico insieme al T41 ma non mi ha funzionato. 

questo è proprio quello che volevo scrivere in un thread separato o esattamente la tua stessa esigenza cioè quella di vedere all'interno del t41 quale sensore abbia dato l'allarme, 
attualmente non è previsto e lo sto risolvendo con dei semplici t11 (finti) azionati dall'esterno

quindi nel peer sarà così
Souliss_DigIn(pirSensorPin, Souliss_T4n_Alarm, memory_map, ANTITHEFT);
if(mInput(ANTITHEFT) == Souliss_T4n_Alarm)
RemoteInput(rs485Antifurto,PIRCUCINA,Souliss_T1n_OnCmd)

prima riga lancio l'allarme se il pir sente qualcosa
seconda controllo se in memoria ho un'allarme
se si lancio il remoteinput del t11 finto dentro il nodo master,
così nell'elenco dei tipici del nodo master ho sia l'allarme sia il sensore lanciato

pero' si potrebbe fare una gestione più integrata

Di Maio, Dario

unread,
Jun 12, 2016, 6:38:47 AM6/12/16
to souliss-it

Ciao Saverio,

puoi usare if(DigIn...) per settare il T11, puoi poi usare il reset del T41 per resettare i T11 o creare un pulsante dedicato di reset.

Introdurre gestioni piú integrate diventa complesso perché le esigenze sono varie.

Io ad esempio localizzerei il T11 sullo stesso nodo dove hai il T42 per esser sicuri di catturare lo scatto del sensore. Però al contrario farei un broadcast dello stato dell'antifurto (armato/non armato) per fare registrare nel T11 solo lo scatto con antifurto inserito.

Alternativa per chi ha tutti nodi Ethernet o WiFi é quella di inviare una notifica smnp verso il server di openhab e non usare il T11.

Dario.

From Mobile.

Giuseppe P.

unread,
Jun 12, 2016, 8:41:12 AM6/12/16
to souliss-it
Ottimo Saverio, grazie per la dritta, buona l'idea del T11 perché io avevo pensato ad un T13 ma non sapevo come gestirlo dato che lo stato da OFF ad ON passa solo quando c'è l'input del sensore, e di conseguenza non avrei avuto l'ultimo stato memorizzato e cioè quale sensore abbia rilevato la presenza

Giuseppe P.

unread,
Jun 12, 2016, 8:46:32 AM6/12/16
to souliss-it
Dario io per ovviare al problema, di quale sensore ha rilevato la presenza, sto inserendo le notifiche pushetta inviate da un nodo GatewayLastin non visibile su soulissapp che recupera i dati di ogni singolo sensore ed invia la notifica anche quando non armato l'allarme così da porer monitorare il tutto anche in caso ci si dimentica di azionare il sistema.

Di Maio, Dario

unread,
Jun 12, 2016, 12:18:17 PM6/12/16
to souliss-it

Il T13 va bene, basta passargli in ingresso gli stati OnOff e si sposterà di conseguenza al pari di un T11, ma senza i comandi utente per ON e OFF.

Dario.

From Mobile.

On 12 Jun 2016 14:41, "Giuseppe P." <giusepp...@gmail.com> wrote:
Ottimo Saverio,  grazie per la dritta, buona l'idea del T11 perché io avevo pensato ad un T13 ma non sapevo come gestirlo dato che lo stato da OFF ad ON passa solo quando c'è l'input del sensore, e di conseguenza non avrei avuto l'ultimo stato memorizzato e cioè quale sensore abbia rilevato la presenza

--
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 messaggi in questo gruppo, invia un'email a souli...@googlegroups.com.

Giuseppe P.

unread,
Jun 12, 2016, 12:38:23 PM6/12/16
to souliss-it
Per comandi utente cosa intendi?

Poi il T13 va bene si, ma per mantenere in memoria lo stato ON quando il pir rileva la presenza come dovrei fare? Potrei utilizzare una condizione if?

Giuseppe P.

unread,
Jun 12, 2016, 1:01:49 PM6/12/16
to souliss-it
Saverio quindi nella tua configurazione correggimi se sbaglio il T11 viene passato su ON nel momento in cui vi è una condizione di allarme. Quindi se il PIR sente una seconda presenza cosa accade passa su OFF oppure resta su ON? Perché se passrrebbe su OFF non abbiamo risolto nulla perché a noi interessa sapere quale sensore ha dato l'allarme.

Saverio Sbrana

unread,
Jun 12, 2016, 2:25:33 PM6/12/16
to souliss-it
ti manca un passaggio credo, piccola spiegazione che forse può servire a molti
ogni tipico ha due istruzioni + una terza eventuale
la prima è nella fase di setup e serve per "istruire" il framework dentro lo spazio in memoria dedicato a questo tipico
tipo: Souliss_SetT41()

poi dopo nei cicli FAST l'istruzione logica serve a controllare se dentro la memoria del tipico nella sezione INPUT c'è dentro qualche istruzione e agire di conseguenza
tipo: Logic_SimpleLight(RELAYSALOTTOPRESA1);
quindi se io dentro la parte INPUT scrivo ON (nel caso t11 Souliss_T1n_OnCmd che equivale al valore 0x02) dopo quando passa dentro la funzione LOGIC_SIMPLELIGHT o Souliss_Logic_T11
eseguirà lo spostamento nella PARTE OUTPUT dell'istruzione ON e quindi dopo con una funzione semplice tipo:
Souliss_DigOut gli dici di controllare quel PIN e switchare ON o OFF in base al valore scritto nella variabile OUTPUT di quel tipico


quindi nel mio caso uso il t11 perchè voglio poter switchare ad OFF un possibile errore di un sensore a mano, ma potrei usare tranquillamente il t13 non cambierebbe nulla nella logica, perchè se te non inserisci una funzione tipo Souliss_DigOut non succederà mai niente nel mondo fisico
per rispondere alla domanda
Quindi se il PIR sente una seconda presenza cosa accade passa su OFF oppure resta su ON
no perchè io scrivo soltanto l'ON da un'altro peer con questa funzione: RemoteInput(rs485Antifurto,PIRCUCINA,Souliss_T1n_OnCmd) e cioè scrivo dentro il nodo MASTER indirzzo rs485Antifurto, il numero della posizione del tipico PIRCUCINA e il valore ON

Per comandi utente cosa intendi?
i comandi dati dall'itnerfaccia android souliss oppure da openhab

Giuseppe P.

unread,
Jun 12, 2016, 2:30:59 PM6/12/16
to souliss-it
Grazie saverio sei stato molto chiaro. Perché hai parlato di errori dei PIR? Hai riacontrato false letture nei tuoi test? Perché a me sino ad ora non ha dato problemi di false letture.

Giuseppe P.

unread,
Jun 13, 2016, 8:00:27 AM6/13/16
to souliss-it
Dario nella risposta che hai dato a Saverio hai indicato di utilizzare DigIn al posto del mOutput se non vado errato. Ma che differenza c'è. Puoi postare in esempio?
Message has been deleted

Giuseppe P.

unread,
Jun 14, 2016, 8:50:25 AM6/14/16
to souliss-it
Saverio nel peer ho messo questo 


        // Process every 510ms the logic that control the curtain
        FAST_510ms() {
            
            // Input from anti-theft sensor
            LowDigIn(2, Souliss_T4n_Alarm, ANTITHEFT);
            // Execute the anti-theft logic and report to the main node
            Logic_T42(ANTITHEFT, Gateway_address);
            
         if(mInput(ANTITHEFT) == Souliss_T4n_Alarm){
            RemoteInput(Gateway_address,PIR1,Souliss_T1n_OnCmd);
     
            
        }

non va...il gateway non riceve il comando per azionare il T11

Saverio Sbrana

unread,
Jun 14, 2016, 1:19:12 PM6/14/16
to souliss-it
scusami ma nella settimana leggo ma posso lavorarci poco, troppo poco.
soltanto nel fine settimana posso lavorare a souliss e dedicarci del tempo, testo il mio e ti faccio sapere

Giuseppe P.

unread,
Jun 14, 2016, 2:43:25 PM6/14/16
to souliss-it
OK Grazie Saverio.

Mi rivolgo agli altri utenti....... avete utilizzato il RemoteInput ?
A me sembra non funzionare.-

tony pedi

unread,
Jun 14, 2016, 4:55:00 PM6/14/16
to souliss-it
Il giorno martedì 14 giugno 2016 20:43:25 UTC+2, Giuseppe P. ha scritto:
OK Grazie Saverio.

Mi rivolgo agli altri utenti....... avete utilizzato il RemoteInput ?
A me sembra non funzionare.-


a me hanno funzionato

posta LO SKETCH COMPLETO ( dopo aver tolto eventuali 'dati sensibili'  )

Giuseppe P.

unread,
Jun 15, 2016, 3:13:12 AM6/15/16
to souliss-it
Tony devo postare i due sketch, giusto?
Gw e pir, dato che il T11 del sensore remoto è sul GW.
Non so se ce la faccio per stasera vediamo

Giuseppe P.

unread,
Jun 16, 2016, 8:14:42 AM6/16/16
to souliss-it
Ciao Tony e Saverio ho allegato i due sketch, nel GW c'è il tipico 41 per l'allarme, il T12 gestito da una fotoresistenza al raggiungimento di una soglia, ed il T11 che dovrebbe essere attivato da sensore pir posto sul nodo esterno dove ho inserito tale funzione RemoteInput che a me non funzione.

Attendo una vostra risposta. Grazie.
GW_ESP_PIRLUCEFOTORESISTENZA.ino
PEER_ESP01_PIRALLARMELUCEremote.ino

tony pedi

unread,
Jun 16, 2016, 10:05:51 AM6/16/16
to souliss-it
l'altro giorno ti chiesi di postare gli sketch per intero pechè già immaginavo ... visto come avevi scritto la ultima parentesi graffa che avevi postato

c'è appunto, un problema di parentesi grafef che non si aprono/chiudono correttamente, nei posti giusti ;-)

un altra volta già lo scrissi qui sul ng

per identificare QUALE parentesi graffa è la corrispondente bisogna posizionarsi col cursore lampeggiante immediatamente dopo la parentesi di cui si vuol conoscere la 'corrispondente

il programma evidenzierà con un colore blu ( appena percettibile) la relativa parentesti che apre/chiude quella dove ci si è posizioanti col cursore

la fast 90ms non veniva chiusa prima della fast 510 , ma diventava tutto un unico blocco "agli occhi" del compilatore
PEER_ESP01_PIRALLARMELUCEremote.ino

tony pedi

unread,
Jun 16, 2016, 10:10:59 AM6/16/16
to souliss-it
inoltre la  FAST_PeerComms(); , ora sta 'dentro' la fast510ms

la parentesi graffa APPENA DOPO la  FAST_PeerComms(); la devi spostare a PRIMA di  FAST_PeerComms();
questo per far eseguire la fastpeercomms OGNI VOLTA che la esp esegue il codice, e non solo ogni 510 ms

Giuseppe P.

unread,
Jun 16, 2016, 12:15:59 PM6/16/16
to souliss-it
Ho provato il tuo sketch ma non funziona ancora..

tony pedi

unread,
Jun 16, 2016, 12:22:10 PM6/16/16
to souliss-it
la seconda modifica suggerita

>> inoltre la  FAST_PeerComms(); , ora sta 'dentro' la fast510ms
>>
>> la parentesi graffa APPENA DOPO la  FAST_PeerComms(); la devi spostare a PRIMA di  FAST_PeerComms();
>> questo per far eseguire la fastpeercomms OGNI VOLTA che la esp esegue il codice, e non solo ogni 510 ms


NON l'ho inserita nello sketch che avevo già inviato nel precedente post

Giuseppe P.

unread,
Jun 16, 2016, 12:24:45 PM6/16/16
to souliss-it
Ho fatto anche quella, ma nulla da fare


void loop()
    // Here we start to play
    EXECUTEFAST() {                     
        UPDATEFAST();
        
        // Execute the code every 3 time_base_fast      
        FAST_90ms() {
              
        if((memory_map[MaCaco_OUT_s + ANTITHEFT] == 
            Souliss_T4n_NoAntitheft) )   {
                       
            // Use Pin0 as ON/OFF command
            DigIn(0, LIGHT_ON_CYCLE, LIGHT1_NODE1);
            
            // Execute the logic
            Logic_AutoLight(LIGHT1_NODE1);

            // Use Pin0 as output on the electrical load
            nDigOut(0, Souliss_T1n_Coil, LIGHT1_NODE1);
            
        } 
   
        } //questa AGGIUNTA DA ME CHIUDE LA FAST 90MS
        
        // Process every 510ms the logic that control the curtain
        FAST_510ms() {
            
            // Input from anti-theft sensor
            LowDigIn(2, Souliss_T4n_Alarm, ANTITHEFT);
            // Execute the anti-theft logic and report to the main node
            Logic_T42(ANTITHEFT, Gateway_address);

            
         if(mInput(ANTITHEFT) == Souliss_T4n_Alarm){
            RemoteInput(Gateway_address,PIR1,Souliss_T1n_OnCmd);
     
            
        }
        }

        // Process the communication
        FAST_PeerComms();

        }
        }
      //  }  //  
// } // QUESTA QUINDI DIVENTA "DI PIù" E LA 'ELIMINO' METTENDO I DUE SLASH COME COMMENTO 

Giuseppe P.

unread,
Jun 16, 2016, 2:00:54 PM6/16/16
to souliss-it
Tony posta il tuo sketch funzionante

tony pedi

unread,
Jun 16, 2016, 4:02:25 PM6/16/16
to souliss-it
PRIMA NON avevo controlalto lo sketch del gateway ... anche lì c'erano praticamente gli stessi errori delle stesse graffe


 ti allego il corretto
GW_ESP_PIRLUCEFOTORESISTENZA.ino

Giuseppe P.

unread,
Jun 17, 2016, 10:11:35 AM6/17/16
to souliss-it
Tony ho provato anche quello ma non va.....

Possibile che nessun'altro sa rispondere?

tony pedi

unread,
Jun 17, 2016, 11:06:54 AM6/17/16
to souliss-it
premetto che gli ESP non li ho ancora MAI usati!

ieri ho controllato solo la sintassi

leggendo meglio vedo che c'è qualcosa che non mi quadra nelle definizioni degli IP
sul GW leggo:
uint8_t ip_address[4]  = {192, 168, 10, 77};
uint8_t subnet_mask
[4] = {255, 255, 255, 0};
uint8_t ip_gateway
[4]  = {192, 168, 10, 1};
#define myvNet_address  ip_address[3]  

nel peer leggo:
uint8_t ip_address[4]  = {192, 168, 10, 78}; //indirizzo peer corrente
uint8_t subnet_mask
[4] = {255, 255, 255, 0}; //subnet
uint8_t ip_gateway
[4]  = {192, 168, 10, 1}; // indirizzo gateway internet
uint8_t gatewaysouliss
[4]  = {192, 168, 0, 77}; // indirizzo gateway Souliss
#define myvNet_gateway  gatewaysouliss[3]

primaditutto non capisco la definizione del gatewaysouliss[4]  = {192, 168, 0, 77}; // indirizzo gateway Souliss
 all'interno del peer , forse ha senso nello sketch del GW, ma visto che con gli esp wifi non c'ho mai messo mano potrei pure sbagliarmi

e cmq non vedo come possano comnicare un nodo su 192.168.0.77 con un 192.168.10.1 ... con quella netmask

prova a trasformare su entrambi ( sia sul gateway che sul peer )
la riga

uint8_t subnet_mask[4] = {255, 255, 255, 0};


la fai diventare


uint8_t subnet_mask[4] = {255, 255, 0 , 0};

Giuseppe P.

unread,
Jun 17, 2016, 11:30:33 AM6/17/16
to souliss-it
Tony hai perfettamente ragione sai perché è capitato questo perché sono fuori in ferie ed ho portato con me un po di materiale per lavorarci un po sopra, e dato che sto utilizzando un router portatile per controllare souliss nel cambiare gli indirizzi ho dimenticato ha cambiare anche quello. Ti aggiorno. Grazie per la tua disponibilità.

Giuseppe P.

unread,
Jun 17, 2016, 11:50:08 AM6/17/16
to souliss-it
Cmq penso che il problema non sia quello dato che il peer deve trasmettere il dato all'indirizzo gateway definito 0xAB01

Giuseppe P.

unread,
Jun 17, 2016, 11:50:49 AM6/17/16
to souliss-it

Giuseppe P.

unread,
Jun 18, 2016, 3:21:34 AM6/18/16
to souliss-it
if(mOutput(ANTITHEFT) == Souliss_T4n_Alarm){
RemoteInput(Gateway_address,PIR1,Souliss_T1n_OnCmd);


Tony con mOutput ira funziona.....

Giuseppe P.

unread,
Jun 19, 2016, 12:07:12 PM6/19/16
to souliss-it
Tony allora ho sostituito i T11 con i T13, per quanto riguarda l' invio remoto leggendo l'area di memoria e quindi invio del feedback al nodo master, per conoscere quale sensore ha inviato l'allarme, tutto funziona. Però non so come intervenire in tal senso sui sensori posti sul nodo master dato che la funzione per IO locale permette solo di inserire una DigIn specificando un pin per l'input cosa che invece per l'invio del dato ON OFF da remoto richiede di inserire l'indirizzo del nodo il valore ed il comando. Chiedo questo dato che iT13 devono essere attivati via sketch in funzione di una condizione e di conseguenza non ho bisogno di occupare un pin.........Spero di ricevere risposta.....Allego il loop del nodo master e del sensore peer funzionante che invia lo stato on/off quando il sensore peer remoto si trova in uno stato di allarme.


GATEWAY NODO MASTER

void loop()
{   
      
    // Here we start to play
    EXECUTEFAST() {                     
        UPDATEFAST();   
        
        int val = analogRead(fotoresistenza);
        
        // Execute the code every 3 time_base_fast      
        FAST_90ms() {
          
        if((memory_map[MaCaco_OUT_s + ANTITHEFT] == 
            Souliss_T4n_NoAntitheft) && val<150)   {
            
            // Use Pin2 and Pin 3 as ON/OFF command
            // Use Pin2 and Pin 3 as ON/OFF command
            DigIn(14, LIGHT_ON_CYCLE, LIGHT1_NODE1);
            
           
            // Execute the logic
            Logic_AutoLight(LIGHT1_NODE1);

            
           
            nDigOut(12, Souliss_T1n_Coil, LIGHT1_NODE1);
            
           
        } 
        } // QUESTA aggiunta da me  chiude la fast 90ms
        
        // Process every 510ms the logic that control the curtain
        FAST_510ms() {

            // Input from anti-theft sensor
           DigIn(14, Souliss_T4n_Alarm, ANTITHEFT);
        
            // Execute the anti-theft logic
            Logic_T41(ANTITHEFT);
        
            // Set the Pin7 if the anti-theft is activated
            nDigOut(4, Souliss_T4n_Antitheft, ANTITHEFT);

            // Set the Pin8 if the alarm is raised
            DigOut(5, Souliss_T4n_InAlarm, ANTITHEFT);
        
        }
         FAST_50ms() {   // We process the logic and relevant input and output every 50 milliseconds
                        // Use the pin2 as ON/OFF toggle command

            Logic_T13(PIR1locale);
            Logic_T13(PIR2remoto); 
     
           
         
       } 
              
        
        // Process data communication
        FAST_GatewayComms();

         
    }
    
    EXECUTESLOW()   {   
        UPDATESLOW();

        SLOW_10s()  {          
        
            // The timer handle timed-on states
            Timer_AutoLight(LIGHT1_NODE1);                     
     }     
    } 
   }



NODO PEER SENSORE2 REMOTO



void loop()
    // Here we start to play
    EXECUTEFAST() {                     
        UPDATEFAST();
        
        // Execute the code every 3 time_base_fast      
        FAST_90ms() {
              
        if((memory_map[MaCaco_OUT_s + ANTITHEFT] == 
            Souliss_T4n_NoAntitheft) )   {
                       
            // Use Pin0 as ON/OFF command
            DigIn(0, LIGHT_ON_CYCLE, LIGHT1_NODE1);
            
            // Execute the logic
            Logic_AutoLight(LIGHT1_NODE1);

            // Use Pin0 as output on the electrical load
            nDigOut(0, Souliss_T1n_Coil, LIGHT1_NODE1);
            
        } 
   
        } //questa AGGIUNTA DA ME CHIUDE LA FAST 90MS
        
        // Process every 510ms the logic that control the curtain
        FAST_510ms() {
            
            // Input from anti-theft sensor
            LowDigIn(2, Souliss_T4n_Alarm, ANTITHEFT);
            // Execute the anti-theft logic and report to the main node
            Logic_T42(ANTITHEFT, Gateway_address);

            
         if(mOutput(ANTITHEFT) == Souliss_T4n_Alarm){
            RemoteInput(Gateway_address,PIR2remoto,Souliss_T1n_OnCmd);
            }else{
              RemoteInput(Gateway_address,PIR2remoto,Souliss_T1n_OffCmd);
            }
           }
          

Giuseppe P.

unread,
Jun 20, 2016, 6:56:19 AM6/20/16
to souliss-it
Tony mi hai abbandonato. Ahahah.. Dario 1 hai risposte in merito?

tony pedi

unread,
Jun 20, 2016, 1:02:55 PM6/20/16
to souliss-it
0 premessa ) sono stato piuttosto incasinato :-(

1) fin quando si tratta di vedere la sintassi e/o la logica del flusso del programma , ci sto , ma qui non è il mio 'settore' , quando il gioco si fa duro, i duri cominciano a gioacre ... i 'dario' ti "devono" aiutare con "souliss in senso stretto"... :D

2) non c'ho capito un cavolo: fai frasi brevi, usa righi vuoti per dividere meglio i periodi; i testi "discorsivi" non aiutano a comprendere ( un rigo : UNA domanda, poi un rigo vuoto )

tony pedi

unread,
Jun 20, 2016, 1:06:25 PM6/20/16
to souliss-it
 Però non so come intervenire in tal senso sui sensori posti sul nodo master dato che la funzione per IO locale permette solo di inserire una DigIn specificando un pin per l'input

devi usare " mInput " per inserire in uno slot un  comando a tua scelta
Message has been deleted

Giuseppe P.

unread,
Jun 22, 2016, 3:52:20 PM6/22/16
to souliss-it
io
Ma come è possibile che questo codiceappena inserisco nel loop la condizione if per inviare la notifica pushetta mi si blocca lo sketch?

Nel senso armo l'allarme ed appena rileva il movimento scatta il relè ma l app va in sync senza più ritornare online. Il bello che lo avevo fatto poi ho perso lo scheck ed ora riprovandoci non va più. Lo stesso codice quasi simile si trova sul nodo peer con il T42 e da li la notifica esce....

// Let the IDE point to the Souliss framework
#include "bconf/MCU_ESP8266.h" // Load the code directly on the ESP8266
#include "conf/Gateway.h" // The main node is the Gateway, we have just one node
#include "conf/IPBroadcast.h"

// **** Define the WiFi name and password ****
#define WIFICONF_INSKETCH
//#define WiFi_SSID "AndroidAP"
//#define WiFi_Password "ouzl1079"
#define WiFi_SSID "WebPocket-AF97"
#define WiFi_Password "6EMMGLB3"
//#define WiFi_SSID "WIFI-90BC"
//#define WiFi_Password "12345678"

// Include framework code and libraries
#include <ESP8266WiFi.h>
#include <EEPROM.h>

/*** All configuration includes should be above this line ***/
#include "Souliss.h"

// Define the network configuration according to your router settings
uint8_t ip_address[4] = {192, 168, 1, 77};
uint8_t subnet_mask[4] = {255, 255, 255, 0};
uint8_t ip_gateway[4] = {192, 168, 1, 1};
#define myvNet_address ip_address[3] // The last byte of the IP address (77) is also the vNet address
#define myvNet_subnet 0xFF00
#define myvNet_supern 0x0000

#define Gateway_address 0xAB01 // The Gateway node has two address, one on the Ethernet side
#define Peer_address_n1 0xAB02


#define ANTITHEFT 0
#define LIGHT1_NODE1 1
#define LIGHT_ON_CYCLE 10 // Light ON for 10 cycles if triggered by a PIR sensor
#define PIR_locale 2
#define PIR1_remoto 3

// This is the memory slot used for the execution of the anti-theft

#define fotoresistenza A0

int vecchio_stato = 0;

extern "C" {
#include "user_interface.h"
}
// --------- Pushetta - Registrazione su www.pushetta.com
char APIKEY[] = "41b2a4e394aebbebad35273e074d8af5a9af09ce"; // Put here your API key
char CHANNEL[] = "DOMOARDUINO"; // and here your channel name
WiFiClient client;
char serverName[] = "api.pushetta.com";
// --------- Pushetta fine

//Function for sending the request to Pushetta
void sendToPushetta(char channel[], String text) {
client.stop();
if (client.connect(serverName, 80))
{
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();
}
}
void setup()
{
Initialize();

// Set network parameters
Souliss_SetIPAddress(ip_address, subnet_mask, ip_gateway);
SetAsGateway(myvNet_address);
Souliss_SetAddress(Gateway_address, myvNet_subnet, myvNet_supern); // Address on the wireless interface

// This node as gateway will get data from the Peer
SetAddress(0xAB01, 0xFF00, 0x0000);
SetAsPeerNode(Peer_address_n1, 1);

// Set the typical logic to handle the lights
Set_AutoLight(LIGHT1_NODE1);

Set_T13(PIR_locale);
Set_T13(PIR1_remoto);
// Setup the anti-theft
Set_T41(ANTITHEFT);

pinMode(14, INPUT); // Hardware pulldown required
digitalWrite(4,HIGH);
pinMode(4, OUTPUT);
digitalWrite(5,HIGH);
pinMode(5, OUTPUT);
pinMode(12, INPUT);
digitalWrite(12, HIGH);
pinMode(12, OUTPUT);

pinMode(A0,INPUT);

Serial.begin(9600);

}

void loop()
{

// Here we start to play
EXECUTEFAST() {
UPDATEFAST();

int val = analogRead(fotoresistenza);

// Execute the code every 3 time_base_fast
FAST_50ms() {

if((memory_map[MaCaco_OUT_s + ANTITHEFT] ==
Souliss_T4n_NoAntitheft)&& val<250) {


DigIn(14, LIGHT_ON_CYCLE, LIGHT1_NODE1);


// Execute the logic
Logic_AutoLight(LIGHT1_NODE1);

nDigOut(12, Souliss_T1n_Coil, LIGHT1_NODE1);


}
}

// Process every 510ms the logic that control the curtain
FAST_510ms() {

// Input from anti-theft sensor
DigIn(14, Souliss_T4n_Alarm, ANTITHEFT);

// Execute the anti-theft logic
Logic_T41(ANTITHEFT);

// Set the Pin7 if the anti-theft is activated
nDigOut(4, Souliss_T4n_Antitheft, ANTITHEFT);

// Set the Pin8 if the alarm is raised
DigOut(5, Souliss_T4n_InAlarm, ANTITHEFT);


if(mOutput(ANTITHEFT) == Souliss_T4n_InAlarm){
mInput(PIR_locale) = Souliss_T1n_OnCmd;
}
else{
mInput(PIR_locale) = Souliss_T1n_OffCmd;

}

if(memory_map[MaCaco_OUT_s + ANTITHEFT] == vecchio_stato){
}else{
if(memory_map[MaCaco_OUT_s + ANTITHEFT] == Souliss_T4n_InAlarm){
sendToPushetta(CHANNEL, "ALLARME"); // send to Pushetta
}
vecchio_stato = memory_map[MaCaco_OUT_s + ANTITHEFT];
}

}


FAST_90ms() {

Logic_T13(PIR_locale);
Logic_T13(PIR1_remoto);


Serial.print ("PIR1_remoto = ");
Serial.println(memory_map[MaCaco_OUT_s + PIR1_remoto]);

tony pedi

unread,
Jun 22, 2016, 5:13:48 PM6/22/16
to souliss-it
io farei così

le due logicT13 le metterei appena dopo il blocco IF dove ci sono i due mInput


 
        if(mOutput(ANTITHEFT) == Souliss_T4n_InAlarm){
        mInput(PIR_locale) = Souliss_T1n_OnCmd;
        }
        else{
        mInput(PIR_locale) = Souliss_T1n_OffCmd;
        }  
 
        Logic_T13(PIR_locale);        
        Logic_T13(PIR1_remoto);

Giuseppe P.

unread,
Jun 22, 2016, 5:29:33 PM6/22/16
to souliss-it
Tony quindi dici all'interno della FAST allarme?
E quindi far eseguire il codice tutto insieme?

Però è molto strano che la notifica non esce.

Proverò la tua soluzione

Giuseppe P.

unread,
Jun 22, 2016, 7:27:37 PM6/22/16
to souliss-it
Tony nulla da fare. Non va.

Livio Merola

unread,
Jun 25, 2016, 1:37:38 PM6/25/16
to souliss-it
ciao Ragazzi

mi spiegate la logica per l'antitheft e  i sensori pir?

mi spiego

ho caricato su un ESP01 il seguente codice, quello che mi compare in souliss app è un riquadro con scritto

ANTIFURTO
TYPICAL: 41 - STATO: ALARM (in verde)
tre bottoni, ON, OFF, RST

entrando nel dettaglio vedo l'immagine della sirena con uno switchbutton

abilita notifiche allarme

il bottone ripristina

qui sorgono le domande

1) come faccio ad abilitare/disabilitare l'allarme? con i bottoni on e off non succede nulla visivamente, lo stato rimane ALARM, entrando nel dettaglio, dove c'è l'immagine della sirena, abilitando lo switchbutton sembra che si attivi, ma uscendo e rientrando lo switchbutton ritorna sulla posizione di off, va fatto qualche collegamento hardware sul gateway?




/**************************************************************************
    Souliss - Hello World for Expressif ESP8266
   
    This is the basic example, create a software push-button on Android
    using SoulissApp (get it from Play Store). 
   
    Load this code on ESP8266 board using the porting of the Arduino core
    for this platform.
       
***************************************************************************/

// Configure the framework

#include "bconf/MCU_ESP8266.h"              // Load the code directly on the ESP8266
#include "conf/Gateway.h"                   // The main node is the Gateway, we have just one node
#include "conf/IPBroadcast.h"
#include "DHT.h"


// **** Define the WiFi name and password ****
#define WIFICONF_INSKETCH
#define WiFi_SSID               "myWIFI"
#define WiFi_Password           "myPWD"   

// Include framework code and libraries
#include <ESP8266WiFi.h>
#include <EEPROM.h>

/*** All configuration includes should be above this line ***/
#include "Souliss.h"

// This identify the number of the LED logic
//#define MYLEDLOGIC          0      


// **** Define here the right pin for your ESP module ****
//#define OUTPUTPIN   5



#define DHTPIN 0     // what digital pin we're connected to
// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors.  This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
//DHT dht(DHTPIN, DHTTYPE);

#define TEMPERATURE           0 
#define HUMIDITY              1

DHT dht(DHTPIN, DHTTYPE);

#define ANTITHEFT               2           // This is the memory slot used for the execution of the anti-theft
#define WATCHDOG                3           // This is the memory slot used for the execution of the watchdog



void setup()
{  
    Initialize();

  //Serial.begin(9600);
  //Serial.println("DHTxx test!");

  dht.begin();

    // Connect to the WiFi network and get an address from DHCP
    GetIPAddress();                          
    SetAsGateway(myvNet_dhcp);       // Set this node as gateway for SoulissApp 

    // This is the vNet address for this node, used to communicate with other
 // nodes in your Souliss network
    SetAddress(0xAB01, 0xFF00, 0x0000);
    SetAsPeerNode(0xAB02, 1);
    SetAsPeerNode(0xAB03, 2);
    SetAsPeerNode(0xAB04, 3);
    SetAsPeerNode(0xAB05, 4);
    SetAsPeerNode(0xAB06, 5);
    SetAsPeerNode(0xAB07, 6);
    SetAsPeerNode(0xAB08, 7);
    SetAsPeerNode(0xAB09, 8); //PIR
   
    Souliss_SetT52(memory_map, TEMPERATURE);
    Souliss_SetT53(memory_map, HUMIDITY);


    // Setup the anti-theft
    Set_T41(ANTITHEFT);
   
    // Define inputs, outputs pins and pullup
   // pinMode(2, INPUT);  // Hardware pullup required
 
   // Set_SimpleLight(MYLEDLOGIC);        // Define a simple LED light logic
 
   // pinMode(OUTPUTPIN, OUTPUT);         // Use pin as output

   pinMode(DHTPIN, INPUT);
}

void loop()
{
    // Here we start to play
    EXECUTEFAST() {                    
        UPDATEFAST();  
       
        FAST_110ms() {   // We process the logic and relevant input and output every 50 milliseconds
     //       Logic_SimpleLight(MYLEDLOGIC);
      //      DigOut(OUTPUTPIN, Souliss_T1n_Coil,MYLEDLOGIC);








  // Wait a few seconds between measurements.
  //delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
  //  Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  //  Serial.print("Humidity: ");
  //  Serial.print(h);
  //  Serial.print(" %\t");
  //  Serial.print("Temperature: ");
  //  Serial.print(t);
  //  Serial.print(" *C ");
  //  Serial.print(f);
  //  Serial.print(" *F\t");
  //  Serial.print("Heat index: ");
  //  Serial.print(hic);
  //  Serial.print(" *C ");
  //  Serial.print(hif);
  //  Serial.println(" *F");   
        }
       
  FAST_2110ms()
        {
            Logic_Temperature(TEMPERATURE);
            Logic_Humidity(HUMIDITY);
         //   mInput(ANTITHEFT) = Watchdog(0xAB09, WATCHDOG, Souliss_T4n_Alarm);
        }


         // // Process every 510ms the logic that control the curtain
       // FAST_510ms() {
           
         //   // Input from anti-theft sensor
           // LowDigIn(2, Souliss_T4n_Alarm, ANTITHEFT);
       
            //// Execute the anti-theft logic and report to the main node
            //Logic_T42(ANTITHEFT, 0xAB01);
       // }
             
        // Here we handle here the communication with Android
        FAST_GatewayComms();                                       
    }



   
    EXECUTESLOW() {
      UPDATESLOW();
   

   
      SLOW_10s() {
        // Read temperature and humidity from DHT every 10 seconds
        float h = dht.readHumidity();
        // Read temperature as Celsius
        float t = dht.readTemperature();
        // Check if any reads failed and exit early (to try again).
       
        Souliss_ImportAnalog(memory_map, TEMPERATURE, &t);
        Souliss_ImportAnalog(memory_map, HUMIDITY, &h);
        }
  }
   
}



Il giorno giovedì 23 giugno 2016 01:27:37 UTC+2, Giuseppe P. ha scritto:
Message has been deleted

Livio Merola

unread,
Jun 25, 2016, 3:16:29 PM6/25/16
to souliss-it
questo è il nodo esp01 con collegato il pir

il nodo 8 è lento nel verificare lo stato del pir e ad aggiornarsi,

da cosa può dipendere? forse dal FAST_510 troppo elevato?

ho notato che il calcolo approssimativo dei secondi fatto per arduino, con ESP non corrisponde, per settare più o meno 35 secondi con ESP, che falore bisogna dargli?

qual è il tempo più veloce che posso settare su esp01 per il controllo del pir senza causare rallentamenti?

grazie a tutti per le risposte


/**************************************************************************
    Souliss - Hello World for Expressif ESP8266
   
    This is the basic example, create a software push-button on Android
    using SoulissApp (get it from Play Store). 
   
    Load this code on ESP8266 board using the porting of the Arduino core
    for this platform.
       
***************************************************************************/

// Configure the framework
#include "bconf/MCU_ESP8266.h"              // Load the code directly on the ESP8266
#include "conf/IPBroadcast.h"

// **** Define the WiFi name and password ****
#define WIFICONF_INSKETCH
#define WiFi_SSID               "MyWifi"
#define WiFi_Password           "MyPWD"   

// Include framework code and libraries
#include <ESP8266WiFi.h>
#include <EEPROM.h>

/*** All configuration includes should be above this line ***/
#include "Souliss.h"


// Define the network configuration according to your router settings
//#define Gateway_address     0xAB01              // The Gateway node has two address, one on the Ethernet side
                                                // and the other on the wireless one
//#define Peer_address_n1     0xAB09
#define Peer_address_n2     0xAB0A
//#define myvNet_subnet       0xFF00
//#define myvNet_supern       Gateway_address

#define ANTITHEFT               0           // This is the memory slot used for the execution of the anti-theft
#define WATCHDOG                1           // This is the memory slot used for the execution of the watchdog

void setup()
{
    Initialize();

    // Connect to the WiFi network and get an address from DHCP
    GetIPAddress();                          

    // This is the vNet address for this node, used to communicate with other
  // nodes in your Souliss network
    SetAddress(0xAB09, 0xFF00, 0xAB01);  
   
    // Setup the anti-theft
    Set_T42(ANTITHEFT);

   
    // Define inputs, outputs pins and pullup
    pinMode(0, INPUT);  // Hardware pullup required
}

void loop()
{
    // Here we start to play
    EXECUTEFAST() {                    
        UPDATEFAST();  

        // Process every 510ms the logic that control the curtain
        FAST_510ms() {

           
            // Input from anti-theft sensor
            LowDigIn(0, Souliss_T4n_Alarm, ANTITHEFT);

       
            // Execute the anti-theft logic and report to the main node
            Logic_T42(ANTITHEFT, 0xAB01);

        }
       
        // Process the communication
        FAST_PeerComms();
       
        // Execute the code every 2110ms         
        FAST_2110ms()   {  
       
           // // Build a watchdog chain to monitor the nodes
          //  mInput(ANTITHEFT) = Watchdog(Peer_address_n2, WATCHDOG, Souliss_T4n_Alarm);
        }          
    }
}




Il giorno giovedì 26 maggio 2016 20:10:46 UTC+2, Giuseppe P. ha scritto:
È consigliabile creare nodi peer esp01 così da creare dei sensori pir allarme wifi con watchdog?
Ho creato tutto a banco ma il timore che una qualche esp 01 si dovesse scollegare dato che ho notato poca stabilità in wifi e far scattare l'allarme e quindi la sirena non mi da molta fiducia.
Cosa ne pensate?

Di Maio, Dario

unread,
Jun 25, 2016, 3:21:07 PM6/25/16
to souliss-it

Vedo Set_T41 ma non Logic_T41, ho guardato velocemente, se manca aggiungilo.

Dario.

From Mobile.

Livio Merola

unread,
Jun 25, 2016, 3:55:58 PM6/25/16
to souliss-it
ciao Dario

tolto il commento alla righe per abilitare il fast_510 e la logica del t41, togliendo il secondo parametro perché prima era un t42,

risultato non cambia..
mi chiedo
1) è corretto impostare un t41 nel gateway e un t42 nel peer? credo di si ma chiedo conferma;
2) ho notato che l'allarme si resetta e si spegne quando legge l'umidità, non è che ho fatto casino con gli slot di memoria?
3) per il watchdog che io adesso ho commentato nel codice, come funziona? il gateway mette come nodo da controllare il successivo appartenente all'allarme e cosi via fino all'ultimo dove non va messo niente?

mi spiego
gateway AB01
pir1 AB09
pir2 AB0A

nel gateway metto
mInput(ANTITHEFT) = Watchdog(0xAB09, WATCHDOG, Souliss_T4n_Alarm);

nel nodo AB09 invece metto
mInput(ANTITHEFT) = Watchdog(0xAB0A, WATCHDOG, Souliss_T4n_Alarm);

è corretto?


         // // Process every 510ms the logic that control the curtain

       FAST_510ms
() {
           
         
//   // Input from anti-theft sensor
           
// LowDigIn(2, Souliss_T4n_Alarm, ANTITHEFT);
       
           
//// Execute the anti-theft logic and report to the main node

           
Logic_T41(ANTITHEFT);
       
}

Di Maio, Dario

unread,
Jun 25, 2016, 3:59:18 PM6/25/16
to souliss-it

Si alle prime due, per la terza fai una catena che chiudi sul t41.

Dario.

From Mobile.

--
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 visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/souliss-it/1f37c6c8-4f0e-48aa-82a7-811c269f3275%40googlegroups.com.
Per altre opzioni visita https://groups.google.com/d/optout.

Livio Merola

unread,
Jun 25, 2016, 4:21:40 PM6/25/16
to souliss-it
per gli slot di memoria ho risolto, il t53 ha due slot, quindi ho impostato

#define ANTITHEFT               4           // This is the memory slot used for the execution of the anti-theft
#define WATCHDOG                5           // This is the memory slot used for the execution of the watchdog


prima erano 3 e 4

per il watchdog non ho capito

al momento sul gateway ho impostato

  FAST_2110ms()
       
{
           
Logic_Temperature(TEMPERATURE);
           
Logic_Humidity(HUMIDITY);

            mInput
(ANTITHEFT) = Watchdog(0xAB09, WATCHDOG, Souliss_T4n_Alarm);
       
}


e sul peer

            mInput(ANTITHEFT) = Watchdog(Peer_address_n2, WATCHDOG, Souliss_T4n_Alarm);

e


#define Peer_address_n1     0xAB09
#define Peer_address_n2     0xAB01



corretto?

Di Maio, Dario

unread,
Jun 25, 2016, 4:27:08 PM6/25/16
to souliss-it

Devi costruire un anello chiuso, il peer sul gateway ed il gateway sul peer nel tuo caso.

Dario.

From Mobile.

Giuseppe P.

unread,
Jun 25, 2016, 4:47:52 PM6/25/16
to souliss-it
Livio non capisco che problemi hai. Nel gateway vedo che in setup dichiari un T41 ed in loop logic_T42 tra la l'altro con slash. ...

Livio Merola

unread,
Jun 25, 2016, 5:00:58 PM6/25/16
to souliss-it
ciao Giuseppe, Dario

problemi con slot memoria e watchdog

in allegato i due scketch gateway e nodo

nel gateway ho

#define TEMPERATURE           0 
#define HUMIDITY              2

DHT dht(DHTPIN, DHTTYPE);

#define ANTITHEFT               4           // This is the memory slot used for the execution of the anti-theft
#define WATCHDOG                5           // This is the memory slot used for the execution of the watchdog


e

  FAST_2110ms()
        {
            Logic_Temperature(TEMPERATURE);
            Logic_Humidity(HUMIDITY);
            mInput(ANTITHEFT) = Watchdog(0xAB09, WATCHDOG, Souliss_T4n_Alarm);
        }



nel peer

#define Peer_address_n1     0xAB09
#define Peer_address_n2     0xAB01
//#define myvNet_subnet       0xFF00
//#define myvNet_supern       Gateway_address
#define ANTITHEFT               4           // This is the memory slot used for the execution of the anti-theft
#define WATCHDOG                5           // This is the memory slot used for the execution of the watchdog



e


            mInput(ANTITHEFT) = Watchdog(Peer_address_n2, WATCHDOG, Souliss_T4n_Alarm);
      


ho impostato  lo slot di memoria con 4 e 5 come nel gateway perché alrimenti mi dava errore prima sul'umidità, fopo sulla temperatura, ma ora non mi legge il sensore pir

mi dice solamente stato armed e stato nodo 8 UNKNOWN
Nodo8_PIR.ino
Tapparelle_Gateway_Temperatura_ALLARME.ino

Livio Merola

unread,
Jun 27, 2016, 12:17:06 AM6/27/16
to souliss-it
Ciao ragazzi

Potete dare uno sguardo al codice allegato nel post precedente, soprattutto alla parte watchdog, adesso vedo il nodo ma ciclicamente, credo ogni 3/4 ore circa, va in allarme il sensore ed è dovuto al watchdog perché mi andava in allarme quando non c'era nessuno in quella stanza.

Come posso verificare se l'allarme è dato dallo slot 4 o dallo slot 5?

Grazie a tutti per l'aiuto

Di Maio, Dario

unread,
Jun 27, 2016, 1:32:50 AM6/27/16
to souliss-it

Puoi inviare una notifica (pushetta), accendere un led o altro quando Watchdog restituisce un valore di allarme.

Basta un if(mInput(...)) subito dopo la chiamata Watchdog da cui fai partire un'azione di notifica.

Un'altra possibilità é quella di definore dei T13 fittizzi a cui forzi mInput quando rilevi che l'uscita (mOutput) di un T42 é in allarme.

Dario.

From Mobile.

--
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 messaggi 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/2831db0f-1226-4583-94d3-e4464f3af53f%40googlegroups.com.
Per ulteriori opzioni, visita https://groups.google.com/d/optout.

Giuseppe P.

unread,
Jun 27, 2016, 3:02:11 PM6/27/16
to souliss-it
Livio come ha detto Dario puoi utilizzare quegli accorgimenti per rilevare quale sensore è in allarme. Io ho preparato degli sketch in merito e funzionano perfettamente. Per quanto riguarda il tuo problema che schede utilizzi? Nel caso fossero delle esp controlla l'alimentazione oppure se hai pin flottanti, perché è probbabile che si manifestano riavvii sporadici ed interviene in watchdog.

Livio Merola

unread,
Jun 28, 2016, 2:15:39 PM6/28/16
to souliss-it
ciao Dario, Giuseppe

intanto grazie per le dritte,

premesso che avevo gia messo un led collegato al pin 2 della scheda esp01fuori dalla logica di souliss per verificare se il PIR funzionava al rilevamento della presenza...e il led si accende regolarmente quando qualcuno gli passa davanti, mi arriva la notifica di souliss app  e dopo circa un paio di secondi il led si spegne se non rivela più presenza..... invio il comando di reset da souliss app e tutto ricomincia...

Avendo solo un nodo PIR se lo stacco dovrebbe arrivarmi la notifica watchdog, corretto?

inoltre ho modificato lo sketch come segue aggiungendo un led blu e uno giallo per monitorare i due slot di memoria 4 e 5....ma mi sa che ho cannato qualcosa  
infatti non si accende ne il led giallo ne il led blu...ma solamente quello bianco (che è fuori dalla logica di souliss)....
/**************************************************************************
    Souliss - Hello World for Expressif ESP8266
   
    This is the basic example, create a software push-button on Android
    using SoulissApp (get it from Play Store). 
   
    Load this code on ESP8266 board using the porting of the Arduino core
    for this platform.
       
***************************************************************************/

// Configure the framework
#include "bconf/MCU_ESP8266.h"              // Load the code directly on the ESP8266
#include "conf/IPBroadcast.h"

// **** Define the WiFi name and password ****
#define WIFICONF_INSKETCH
#define WiFi_SSID               "merola-Alice"
#define WiFi_Password           "mlivio6703"   

// Include framework code and libraries
#include <ESP8266WiFi.h>
#include <EEPROM.h>

/*** All configuration includes should be above this line ***/
#include "Souliss.h"


// Define the network configuration according to your router settings
//#define Gateway_address     0xAB01              // The Gateway node has two address, one on the Ethernet side
                                                // and the other on the wireless one
//#define Peer_address_n1     0xAB09

#define Peer_address_n2     0xAB01
//#define myvNet_subnet       0xFF00
//#define myvNet_supern       Gateway_address

#define ANTITHEFT               4           // This is the memory slot used for the execution of the anti-theft
#define WATCHDOG                5           // This is the memory slot used for the execution of the watchdog



void setup()
{
    Initialize();

    // Connect to the WiFi network and get an address from DHCP
    GetIPAddress();                          

    // This is the vNet address for this node, used to communicate with other
  // nodes in your Souliss network
    SetAddress(0xAB09, 0xFF00, 0xAB01);  
   
    // Setup the anti-theft
    Set_T42(ANTITHEFT);
   
    // Define inputs, outputs pins and pullup
    pinMode(0, INPUT);  // Hardware pullup required


    pinMode(2, OUTPUT); // accende un led se il pin di input ha un valore HIGH

   
    pinMode(1, OUTPUT); //tx pin
    pinMode(3, OUTPUT); //rx pin

digitalWrite(1, 0);
digitalWrite(3, 0);

}

void loop()

{



  int val = 0;     // variable to store the read value
  val = digitalRead(0);   // legge il valore del pin0
  digitalWrite(2, val);  // imposta il pin 2 al valore del pin 0, se in allarme il led si accende

 
    // Here we start to play
    EXECUTEFAST() {                    
        UPDATEFAST();  
        // Process every 510ms the logic that control the curtain
        FAST_510ms() {
           
            // Input from anti-theft sensor
            LowDigIn(0, Souliss_T4n_Alarm, ANTITHEFT);
                   
            // Execute the anti-theft logic and report to the main node
            Logic_T42(ANTITHEFT, 0xAB01);
        }
       
        // Process the communication
        FAST_PeerComms();
       
        // Execute the code every 2110ms         
        FAST_2110ms()   {  
       
           // // Build a watchdog chain to monitor the nodes
            mInput(ANTITHEFT) = Watchdog(Peer_address_n2, WATCHDOG, Souliss_T4n_Alarm);

            if (mInput(5)== Souliss_T4n_Alarm) {
              digitalWrite(1,HIGH); //pin 1 SLOT MEMORY 5 - led giallo
            }
           // else {
            //  digitalWrite(1, 0);
           // }


            if (mInput(4)==Souliss_T4n_Alarm) {
              digitalWrite(3,HIGH); //pin 3 SLOT MEMORY 4 - led blu
            }
            //else {
             // digitalWrite(3, 0);
           // }

           
        }          
    }
}

HELP

Grazie mille

Livio

Livio Merola

unread,
Jun 28, 2016, 2:16:27 PM6/28/16
to souliss-it
come si controllano i pin flottanti Giuseppe?

Giuseppe P.

unread,
Jun 28, 2016, 4:47:05 PM6/28/16
to souliss-it
Collegali a +3,3v quindi al pin di ingresso dell'alimentazione della esp con resistenze da 10k... se vuoi utilizzarli puoi farlo comunque. GPIO 0 e 2 su esp 01 vanno collegati in questo modo compreso il reset ed il CH_PD. Per avere stabilità e di conseguenza nessun riavvio. Altra cosa importante dai la giusta corrente-amperaggio, soffrono parecchio su questo punto di vista. Ciao.
Giuseppe

Livio Merola

unread,
Jun 28, 2016, 5:22:43 PM6/28/16
to souliss-it
Ciao Giuseppe

E per la parte software (vedi post precedente) perché il led bianco si accende correttamente mentre blu e giallo nn danno segni di vit....

Aggiornamento delle 23:20...
Con il codice del post precedente (forse è solo un casoo) forse perché ho settato i due pin tx e rx, rispettivamente pin 1 e pin 3, a LOW ma dalle 21 non ricevo falsi allarmi....devo solo capire se gli if che ho impostato sono corretti o meno...

Giuseppe P.

unread,
Jun 28, 2016, 5:39:38 PM6/28/16
to souliss-it
Innanzitutto non vedo il pin di output per il relè che attiva la sirena.... possibilmente non ti serve... e va bene.... per il led di presenza quello bianco io l'ho utilizzo senza occupare i pin e di conseguenza non attivato da sketch. Io l'ho collegato con un transistor NPN bc327 con base collegata al pin di output del pir che va a collegarsi alla esp per dare l'input per la logica e su emititore ho collegato la 5v e sul collettore il led con resistenza calcolata in base al led utilizzato. Poi i pin dichiarali come Low al posto di 0. Il codice che hai postato devo controllarlo sul pc perché ora sono con il cel.... ma ho visto che leggi l'area di memoria dopo la FAST_ peercomm e non so se questo possa comportare un problema.. per quanto riguarda il led del watchdog credo non abbia nessun motivo di esistere dato che se ol problema è stato quello a far scattare l'allarme noterai subito il nodo peer del T42 con salute a 0... perché quello serve solo se un nodo peer non viene più visto dal nodo successivo

Giuseppe P.

unread,
Jun 28, 2016, 5:58:51 PM6/28/16
to souliss-it
Prova in questo modo, e cambia nel setup i pin da 0 con LOW, fammi sapere. Sono sempre con il cel.... se non va prova anche con mOutput al posto delle mInput

if (mInput(WATCHDOG)== Souliss_T4n_Alarm) {


digitalWrite(1,HIGH); //pin 1 SLOT MEMORY 5 - led giallo
}
// else {

// digitalWrite(1, LOW);
// }


if (mInput(ANTITHEFT)==Souliss_T4n_Alarm) {


digitalWrite(3,HIGH); //pin 3 SLOT MEMORY 4 - led blu
}
//else {

// digitalWrite(3, LOW);
// }


}
}
}

Giuseppe P.

unread,
Jun 29, 2016, 4:21:23 AM6/29/16
to souliss-it
Ovviamente elimina gli slash che avevi inserito

Livio Merola

unread,
Jun 29, 2016, 6:14:45 PM6/29/16
to souliss-it
ciao Ragazzi

Aggiornamenti dopo le prove.....anche se devo dire la verità non ho capito gran che.
Gateway, codice invariato ma ci sono alcuni dubbi


#define ANTITHEFT               4           // This is the memory slot used for the execution of the anti-theft
#define WATCHDOG                5           // This is the memory slot used for the execution of the watchdog

definisco gli slot di memoria
4 antitheft
5 watchdog

ma ne utilizzo solamente uno


    Set_T41(ANTITHEFT);    // Setup the anti-theft

anche se successivamente, come da esempi di souliss, il codice in mInput riporta: mInput(ANTITHEFT) = Watchdog(0xAB09, WATCHDOG, Souliss_T4n_Alarm);

  FAST_2110ms()
       
{
           
Logic_Temperature(TEMPERATURE);
           
Logic_Humidity(HUMIDITY);
            mInput
(ANTITHEFT) = Watchdog(0xAB09, WATCHDOG, Souliss_T4n_Alarm);
       
}

e ancora

        FAST_510ms() {
           
           
Logic_T41(ANTITHEFT);
       
}


non dovrei aggiungere un  Set_T41(WATCHDOG);  e riportare le logiche anche nel FAST_510ms() inserendo Logic_T41(WATCHDOG);  ?????
nel FASt_2110() dovrei inserire qualcosa?


PASSIAMO AL PEER (NODO 8)

impostando nel setup
    pinMode(1, OUTPUT); //tx pin
    pinMode(3, OUTPUT); //rx pin


digitalWrite(1, LOW);
digitalWrite(3, LOW);

adesso funziona in questo modo modificando il codice come da allegato
led bianco, fuori dalla logica di souliss, si accende immediatamente al passaggio davanti al pir,
pochi istanti dopo si accende il led blu (slot di memoria 4, ANTITHEFT);
qualche istante dopo compare la notifica souliss app sul telefono.
Resetto da souliss app dal nodo contenente il t41 ma il led blu non si spegne; se invece resetto dal nodo 8 il led si spegne

ANOMALIA, il led blu dell'ESP01 rimane permanentemente accesso (dichiarato LOW, se invece lo dichiaro HIGH rimane spento, è legato al pin TX che io utilizzo come pin di output), non è possibile "spegnerlo" mettendolo ad HIGH si accenderebbe il led giallo, io vorrei evitarlo

WATCHDOG invece funziona solamente inviando la notifica da souliss app, verificato togliendo l'alimentazione all'esp, dopo pochi istanti arriva la notifica ma su souliss app non indica quale sensore è in allarme, l'unico nodo viene segnalato come "ok".

ho notato che il led blu si accende anche se l'esp non si connette alla rete, può essere che il nodo va in allarme e, leggendo lo stato dello slot di memoria 4, legge che è in allarme e si accende????

per far tutto questo ho cambiato il codice come segue

            if (mOutput(5)==Souliss_T4n_Alarm) {

              digitalWrite(1,HIGH); //pin 1 SLOT MEMORY 5 - led giallo
            }
            else {
             digitalWrite(1, LOW);
            }


            if (mOutput(4)==Souliss_T4n_Alarm) {
              digitalWrite(3,HIGH); //pin 3 SLOT MEMORY 5 - led blu
            }
            else {
              digitalWrite(3, LOW);
            }


ma le domande nascono a decine.

io vorrei avere due logiche distinte e cioè vedere da souliss app i due stati del nodo, antitehft e watchdog
vorrei avere la stessa logica anche sul nodo e cioè far acendere i due led separatamente il blu per l'allarme antitheft e il giallo per allarme watchdog

nel codice ho scritto  if (mOutput(4)==Souliss_T4n_Alarm), ma da wiki mOutput non dovrebbe essere Souliss_T4n_InAlarm?? questa cosa non l'ho capita...c'è qualche anima pia che me la spiega?

per il codice valgono le stesse considerazioni fatte per il gateway e il tipico T41, devo farlo anche per il T42 sul nodo?


come si potrebbe inserire un interruttore per disabilitare solo un nodo, se ad esempio si vuole allarmare tutto il resto tranne un nodo? e come far in modo che il watchdog continui a funzionare non considerando i nodi esclusi?

inoltre per resettare il nodo 8 da souliss app occorre prima entrare nel nodo poi cliccare di nuovo per entrare nella schermata dove c'è il bottone "ripristina", non si può mettere il bottone ripristina sotto lo stato evitando un passaggio in più?
e ancora non si può mettere un bottone ripristina tutti sempre sotto lo stato del nodo contenente il tipico t41 senza dover ancora una volta entrare nel dettaglio? e perché non fare in modo che il bottone ripristina del T41 resetti già il nodo/i nodi /  che sono in allarme oppure semplicemente tutti i nodi senza dover andare poi a resettare il singolo nodo????

lo so mi odiate per la lungaggine ma vi ringrazio già in anticipo per le risposte.

Livio
Tapparelle_Gateway_Temperatura_ALLARME.ino
Nodo8_PIR.ino

Livio Merola

unread,
Jun 29, 2016, 6:19:41 PM6/29/16
to souliss-it
Scusate dimenticavo,

parlando del NODO PEER il mio nodo 8, dimenticavo di segnalare che il led giallo legato allo slot di memoria 5 dichiarato come watchdog non si accende mai,

forse perché mancano le logiche come dicevo prima?

Di Maio, Dario

unread,
Jun 30, 2016, 1:58:43 AM6/30/16
to souliss-it

Ciao Livio,

il watchdog non é un tipico e quindi non usi Set_Tnn e per come é pensato ora non puoi escludere dinamicamente un nodo dal watchdog.

Puoi escludere un nodo dall'antifurto (zona) creando un T11 nel nodo da escludere ed usando un codice del genere:

Logic_T11(ZONA1);
if(mOutput(ZONA1)) DigIn(pin, ANTOFURTO);
Logic_T42(ANRIFURTO);

Così solo attivando il T11 vai a leggere il pin che fa scattare il T42.

Per i consigli su SoulissApp, apri un issue (in inglese) sul relativo github.

Dario.

From Mobile.

Giuseppe P.

unread,
Jun 30, 2016, 5:16:44 AM6/30/16
to souliss-it
Livio spiega meglio cosa devi realizzare che non ne sto capendo niente piu. Cmq in ogni caso in mInput va indicato lo slot ma non come numero occupato di conseguenza

if (mOutput(WATCHDOG)==Souliss_T4n_Alarm) {


digitalWrite(1,HIGH); //pin 1 SLOT MEMORY 5 - led giallo
}
else {
digitalWrite(1, LOW);
}


if (mOutput(ANTITHEF)==Souliss_T4n_Alarm) {

Livio Merola

unread,
Jun 30, 2016, 3:36:11 PM6/30/16
to souliss-it
ciao Giuseppe

funziona anche senza sostituire il 5 con WHATCDOG e il 4 con ANTITHEFT, sono dichiarati con un #Define

Oggi ho scoperto anche che funziona il pin giallo...si accende nel momento in cui non si collega alla rete wifi...dovrò abituarmi a usare le resistenze :-P

Livio Merola

unread,
Jun 30, 2016, 3:52:12 PM6/30/16
to souliss-it
grazie Dario

farò una prova.

altra domanda, ovviamente non con esp01 per via dei pochi pin, ma secondo voi è possibile mettere in un solo NODO tre sensori PIR e fare in modo che souliss app ne veda solo uno considerandoli un unico nodo?

come dovrei gestire la logica?

dentro il nodo triplico le dichiarazioni?



ancora come posso migliorare la velocità di sincronizzazione con souliss app?? delle volte il nodo non è in allarme( led spenti) e nell'app invece risulta ancora in allarme, solo dopo qualche secondo si aggiorna;

grazie ancora

Livio

Giuseppe P.

unread,
Jun 30, 2016, 4:40:42 PM6/30/16
to souliss-it
Sono molto strane le cose che succedono a te. Io non ho mai avuto questi comportamenti da parte di souliss app per quanto riguarda l'aggiornamento di stato dei tipical. Probabilmente il loop rimane all'interno di qualche if e ti manda in pausa lo sketch

Di Maio, Dario

unread,
Jul 1, 2016, 1:23:13 AM7/1/16
to souliss-it

Leggi tre pir e li usi per scrivere nello stesso slot, il primo che salta ti fa suonare l'allarme.

Dario.

From Mobile.

--
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 visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/souliss-it/66a9c55c-0976-48a0-a725-56a5921ef2ed%40googlegroups.com.

Livio Merola

unread,
Jul 4, 2016, 7:44:26 AM7/4/16
to souliss-it
ciao Dario,

Grazie per la Dritta...

ma vi chiedo ora, esistono sensori che hanno logiche di costruzione diversa (vedere figure allegate differiscono solamente per il JUMPER )?

mi spiego con il sensore della figura 1, proprio quello della  D-Sun, la logica funziona come mi aspetto, il led si accende se rileva un movimento, si spegne se non lo rileva più

con quelli della figura due varia a seconda di come imposto il jumper ma non è mai uguale a quello dei sensori d-sun,

se imposto il jumper in un modo il segnale si ripete all'infinito quando il time (impostato con il potenziometro) si resetta, il mio led si accende e si spegne a intervalli regolari anche se non c'è nessuno nella stanza.
se lo metto nell' altro modo il sensore va in allarme una e sola una volta e il led rimane acceso all'infinito senza rilevare altri movimenti...nenache se gli do delle martrellate.


come posso fare in modo che il sensore della figura due si comporti come quello della figura uno?

Grazie mille

Livio
1.png
2.jpg

tony pedi

unread,
Jul 4, 2016, 12:41:39 PM7/4/16
to souliss-it


se imposto il jumper in un modo il segnale si ripete all'infinito quando il time (impostato con il potenziometro) si resetta, il mio led si accende e si spegne a intervalli regolari anche se non c'è nessuno nella stanza.

e questa è la modalità contrassegnata sul disegnao con la lettera H
 
se lo metto nell' altro modo il sensore va in allarme una e sola una volta e il led rimane acceso all'infinito senza rilevare altri movimenti...nenache se gli do delle martrellate.


e questa è la modalità contrassegnata dalla lettera L

te ne devi afre una ragione : il tuo è rotto

infatti rileva SEMPRE movimento anche quando non c'è , praticamente, risulta sempre in modalità "movimento rilevato", che nella modalità L inizia dopo il tempo minimo impostato DOPO il quale la rilevazione di movimento devve considerarsi "effettiva" e non un segbnale spurio dell'elettronica o di qualche ape che passa vicinissima al sensore ( che quindi rimrrebbe per pochi istanti davanti)

mentre nell'altra modalità rimane sempre in lampeggiament, come apputno se avesse rilevato movimento ... più chiaro di così ... ;-) :-(

immagino che tu avrai sperimentato TUTTE le possibili varianti / combinazioni di potenziometri a fondo scala in un verso e poi nell'altro ... metodficamente , "UNO AD UNO " ... se così è ... non mi viene per la testa altro che sia rotto

dato che li ho anche io ma ancora non li ho provati ... mi linki una pagina dove spiega COME si collegano , con quali componenti ... visto che leggo che ils egnale in output è a 3,3volt e non ho la più pallida idea di quali resistenze/condensatori frapporre sui pin di arduino ...
 

Livio Merola

unread,
Jul 4, 2016, 12:59:43 PM7/4/16
to souliss-it
Ciao Tony

In tutta la mia ignoranza nn credo che sia rotto per i seguenti motivi:
1)Ho provato il comportamento di altri sensori (non D-Sun) identici a quello che ho è il comportamento è identico.

2) con Arduino e vari sketch di esempio presi da diverse parti funziona o almeno sembra....

Vedi link https://learn.adafruit.com/pir-passive-infrared-proximity-motion-sensor/using-a-pir

Ma anche cercando con google sensore pir Arduino ne vengono fuori tantissimi





Livio Merola

unread,
Jul 4, 2016, 3:26:47 PM7/4/16
to souliss-it

Giuseppe, Tony, Dario

Help me..potete per favore postare lo sketch di un vostro nodo pir???

con questo codice di esempio su arduino uno il pir ( entrambi i modelli) funziona perfettamente

/*
* PIR sensor tester
*/

 
int ledPin = 13;                // choose the pin for the LED
int inputPin = 2;               // choose the input pin (for PIR sensor)
int pirState = LOW;             // we start, assuming no motion detected
int val = 0;                    // variable for reading the pin status
 
void setup() {
  pinMode
(ledPin, OUTPUT);      // declare LED as output
  pinMode
(inputPin, INPUT);     // declare sensor as input
 
 
Serial.begin(9600);
}
 
void loop(){
  val
= digitalRead(inputPin);  // read input value
 
if (val == HIGH) {            // check if the input is HIGH
    digitalWrite
(ledPin, HIGH);  // turn LED ON
   
if (pirState == LOW) {
     
// we have just turned on
     
Serial.println("Motion detected!");
     
// We only want to print on the output change, not state
      pirState
= HIGH;
   
}
 
} else {
    digitalWrite
(ledPin, LOW); // turn LED OFF
   
if (pirState == HIGH){
   
// we have just turned of
     
Serial.println("Motion ended!");
     
// We only want to print on the output change, not state
      pirState
= LOW;
   
}
 
}
}


premesso che cambio i pin
input PIN 0
led PIN 2
ora quello che mi chiedo nel loop come faccio per integrare la logica di souliss?

ho messo i miei dubbi nel codice in BLU elettrico

grazie mille per l'aiuto





 
void loop(){


   
// Here we start to play
    EXECUTEFAST
() {                    
        UPDATEFAST
();  
// EXECUTE FAST E UPDATE FAST VANNO  QUI?????


  val
= digitalRead(inputPin);  // read input value
 
if (val == HIGH) {            // check if the input is HIGH
    digitalWrite
(ledPin, HIGH);  // turn LED ON
   
if (pirState == LOW) {
     
// we have just turned on
     
Serial.println("Motion detected!");

// qui ci va il il FAST???
/*

        FAST_510ms() {

            // Input from anti-theft sensor
            LowDigIn(0, Souliss_T4n_Alarm, ANTITHEFT);

            // Execute the anti-theft logic and report to the main node
            Logic_T42(ANTITHEFT, 0xAB01);
           
        }


*/

// e il codice seguente dove va???????????

/*

        FAST_PeerComms();
       
        // Execute the code every 2110ms         
        FAST_2110ms()   {  
       
           // // Build a watchdog chain to monitor the nodes
            mInput(ANTITHEFT) = Watchdog(Peer_address_n2, WATCHDOG, Souliss_T4n_Alarm);


*/



     // We only want to print on the output change, not state
      pirState = HIGH;
    }
  } else {
    digitalWrite(ledPin, LOW); // turn LED OFF
    if (pirState == HIGH){
    // we have just turned of
      Serial.println("Motion ended!");
      // We only want to print on the output change, not state
      pirState = LOW;
    }
  }
}

Giuseppe P.

unread,
Jul 4, 2016, 4:30:08 PM7/4/16
to souliss-it
Probabilmente hai dei PIR che lavorano a logica inversa uno su HIGH ed uno su LOW, quindi prova ad utilizzare gli sketch di souliss modificando

LowDigIn(0, Souliss_T4n_Alarm, ANTITHEFT);

con

DigIn(0, Souliss_T4n_Alarm, ANTITHEFT);

 

e vedi se funziona.

 

Nello sketch che hai postato non fai altro che memorizare in una variabile lo stato iniziale del sensore..

 

Ti allego cmq uno sketch che penso funzioni, io non l'ho provato, serve per accendere un led quando il PIR rileva la presenza

T42_LEDpresenza.ino

Giuseppe P.

unread,
Jul 4, 2016, 4:35:01 PM7/4/16
to souliss-it
Lo sketch è per esp ovviamente modifica i parametri di configurazione wifi e gli indirizzi watchdog con quelli che hai tu sul gateway

Livio Merola

unread,
Jul 4, 2016, 11:29:38 PM7/4/16
to souliss-it
ciao Giuseppe, ma anche tutti gli altri....

innanzitutto grazie per l'aiuto, lo sketch funziona;
Ho integrato anche un secondo PIR nello stesso nodo, posto il codice per tutti, magari può tornare utile, occorre cambiare i dati per la connessione, gli indirizzi IP e l'indirizzo del nodo peer (nel mio caso 0xAB09)

ma ti chiedo di spiegarmi una cosa

      if(memory_map[MaCaco_OUT_s + ANTITHEFT] == Souliss_T4n_Alarm){

la parte
memory_map[MaCaco_OUT_s + ANTITHEFT]==Souliss_T4n_Alarm

 è la stessa cosa di 

mOutput(ANTITHEFT)==Souliss_T4n_Alarm

oppure sono due cose diverse, e nel caso mi puoi spiegare la differenza?

altra domanda sul comportamento del pir che ho notato collegando il secondo pir al PIN 1  dell'esp01 (che è il pin TX e che a sua volta è collegato al led blu che c'è sull'esp01);
Vedo che in stato normale, quando non c'è movimento, il led, e di conseguenza il pin 1 è in stato HIGH (led dell'esp01 acceso).
Nel momento in cui rileva il movimento passa a LOW e ci rimane fino a quando il movimento non smette, se qualcuno si muove per 10 minuti il led rimane spento (LOW) per dieci minuti.

questo non impedirebbe a qualcuno di poter manomettere il PIR fino a che c'è movimento....in pratica io smanetto, manometto il pir e se non smetto di muovermi non segnala niente....
come si può rimediare?

come posso modificare i collegamenti (se si può) in modo che anche il secondo PIR, quello collegato al pin 0, accenda e spenga il led in caso di rilevamento del movimento o meno?

voi che siete esperti, anche il pin 3  del'esp01 (RX per intenderci) è collegato al led?
in caso positivo potrei cambiare il pin 0 con il pin 3 ed ottenere lo stesso comportamento sull'altro PIR che è collegato al pin 1?

grazie mille

Livio  






questo il codice funzionante se qualcuno è interessato (cambiare anche gli slot di memoria, io ho impostato

#define ANTITHEFT               4          
#define WATCHDOG                5  

perché con 0 e 1 in passato mi andava in contrasto con il tipico delle sensore temperatura e umidità.


/**************************************************************************
    Souliss - Anti-theft + led

    */



// Configure the framework
#include "bconf/MCU_ESP8266.h"                          
#include "conf/IPBroadcast.h"

// **** Configurar WiFi ****
#define WIFICONF_INSKETCH

#define WiFi_SSID               "XXXXXx"
#define WiFi_Password           "yyyyyyyy"

// Include framework code and libraries
#include <ESP8266WiFi.h>
#include <EEPROM.h>
#include "Souliss.h"


//Indirizzo ip statico
uint8_t ip_address[4]  = {192, 168, X, x}; //indirizzo peer corrente
uint8_t subnet_mask[4] = {255, 255, 255, 0}; //subnet
uint8_t ip_gateway[4]  = {192, 168, X, X}; // indirizzo gateway internet
uint8_t gatewaysouliss[4]  = {192, 168, X, X}; // indirizzo gateway Souliss
#define myvNet_gateway  gatewaysouliss[3]
#define myvNet_subnet       0xFF00
#define myvNet_supern       0x0000


#define Gateway_address     0xAB01  
#define Peer_address_n1     0xAB09



#define ANTITHEFT               4          
#define WATCHDOG                5          

int valore_sensore = 0;

void setup()
{
    Initialize();

    // Setup the network configuration     
   
    SetIPAddress(ip_address, subnet_mask, ip_gateway);
    SetAsGateway(myvNet_gateway);

   
    SetAddress(0xAB09, 0xFF00, 0xAB01); 

    // Setup the anti-theft
    Set_T42(ANTITHEFT);
   
  pinMode(0, INPUT);
  pinMode(2, OUTPUT);     
  pinMode(1, INPUT);
  pinMode(3, OUTPUT);

  //digitalWrite(1, LOW);
  digitalWrite(3, LOW);
 
}

void loop()
{
    // Here we start to play
    EXECUTEFAST() {                    
        UPDATEFAST();  

           FAST_510ms() {
           
            // Input SENSORE PIR
            LowDigIn(0, Souliss_T4n_Alarm, ANTITHEFT);
             LowDigIn(1, Souliss_T4n_Alarm, ANTITHEFT);
       
            Logic_T42(ANTITHEFT, Gateway_address);

      if(memory_map[MaCaco_OUT_s + ANTITHEFT] == valore_sensore){
  digitalWrite(2, LOW);
      }else{
      if(memory_map[MaCaco_OUT_s + ANTITHEFT] == Souliss_T4n_Alarm){
     digitalWrite(2, HIGH);  // turn LED ON
      }
      valore_sensore = memory_map[MaCaco_OUT_s + ANTITHEFT];
        }
      }

        // Process the communication

        FAST_PeerComms();
       
        // Execute the code every 2110ms         
        FAST_2110ms()   {  
       
            // Build a watchdog chain to monitor the nodes
            mInput(ANTITHEFT) = Watchdog(Gateway_address, WATCHDOG, Souliss_T4n_Alarm);

            /*

            if (mOutput(5)==Souliss_T4n_Alarm) {
              digitalWrite(1,HIGH); //pin 1 SLOT MEMORY 5 - led giallo
            }
            else {
             digitalWrite(1, LOW);
            }
            */

            if (mOutput(4)==Souliss_T4n_Alarm) {
              digitalWrite(3,HIGH); //pin 3 SLOT MEMORY 5 - led blu
            }
            else {
              digitalWrite(3, LOW);
            }

           
        }          
    }
}



Il giorno lunedì 4 luglio 2016 22:35:01 UTC+2, Giuseppe P. ha scritto:
Message has been deleted

Giuseppe P.

unread,
Apr 11, 2017, 3:43:35 PM4/11/17
to souliss-it
Ma i pir sr501 scattano anche quando c'è uno spostamento d'aria?
Ho ricevuto una notifica di allarme ma è risultata falsa...non c'era nessuno in quella stanza....mua....avevo spento questo sistema tempo fa per dedicarmi ad altro....ma non ricordavo più di questa anomalia.....sono i pir sr501 poco affidabili....

Giuseppe P.

unread,
Apr 19, 2017, 12:53:17 AM4/19/17
to souliss-it
Qualcuno ha usato la resistenza di bilanciamento sui pir? Ovviamente con dovuta condizione in sketch per far scattare l'allarme..

Lorenzo

unread,
Apr 25, 2017, 1:51:05 PM4/25/17
to souliss-it
Io sui sr501 ci ho messo una resistenza da 5k tra input e massa (collegata ad un ESP).
Li uso per accendere la luce del box e con Grafana monitoro la luce del box (con timer) e non ho mai avuto falsi allarmi.

Ciao
Lorenzo

Giuseppe P.

unread,
May 19, 2017, 7:47:47 PM5/19/17
to souliss-it
Scusa Lorenzo ma con Grafana che monitoraggio fai della Luce?

Hai un grafico 0/1 che sarebbe ON/OFF?

Io per esempio ho lo stato caldaia collegato a Grafana (vedi allegato)..misuro il tempo di attivzione.
Grafana.jpg

Lorenzo Giordano

unread,
May 20, 2017, 4:33:27 AM5/20/17
to souli...@googlegroups.com
Esatto Giuseppe monitor ON/OFF anche Delle luci perché mi succedeva che ogni tanto trovavo la luce box accesa...dopo aver messo una resistenza da 5k anziché 10k non ho più avuto problemi
Ciao
Lg

--
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.

Giuseppe P.

unread,
Jun 28, 2017, 8:16:56 AM6/28/17
to souliss-it
Il giorno martedì 25 aprile 2017 19:51:05 UTC+2, Lorenzo ha scritto:
Sto usando un sensore della fracarro che avevo su una ESP..nessun falso allarme....precisissimo
Screenshot_2017-06-28-14-13-57.png

Giuseppe P.

unread,
Jun 29, 2017, 11:18:28 AM6/29/17
to souliss-it
Sto mettendo su un nodo che all'uscita di casa tramite un RFID, al passaggio della tessera mi chiude tutte le tapparelle, mi spegne le luci, e mi aziona l'allarme......speriamo bene. ;-)

Fulvio Spelta

unread,
Jun 29, 2017, 11:59:01 AM6/29/17
to souliss-it
Ciao nella query elimina la funzione di aggregazione mean che altrimenti invece di visualizzare lo stato puntuale visualizzi la media nell'intervallo di aggregazione la cui durata varia in funzione del livello di zoom che stai utilizzando.

Se guardi nel grafico che hai postato si vedono dei punti il cui valore è diverso da 0 e 1 quindi una caldaia "accesa parzialmente" :-)
Se elimini l'aggregazione visulizzerai solo i dati "così comme sono" e quindi vedrai in modo netto acceso/spento.
Fai una prova

Giuseppe P.

unread,
Jun 29, 2017, 1:16:40 PM6/29/17
to souliss-it
Grazie Fulvio ..... ci provo....non lo so sapevi sinceramente perché non lo conosco bene bene

Giuseppe P.

unread,
Jun 29, 2017, 2:08:37 PM6/29/17
to souliss-it
Ottimo ho modificato, selector -> last...

Fulvio Spelta

unread,
Jun 30, 2017, 2:44:37 AM6/30/17
to souliss-it
last significa "solo l'ultimo campione" se stai facendo un grafico storico (vedo che hai un asse del tempo) semplicemente non devi usare aggregazione.
Esempio:


Reply all
Reply to author
Forward
0 new messages