Il PING 200 nel setup ha una sua funzione specifica che non va ad influire nel resto del codice. I collegamenti a server http cloud etc devono rispettare delle tempistiche, se eseguiti troppo vicini vanno in errore in quanto il socket tcp risulta occupato dalla funzione precedentemente eseguita.
Thread Rating:
$CLOUD GET:DATE+TimeZone
|
10-31-2017, 11:50 AM
(10-27-2017, 06:23 AM)Dok Wrote: Il PING 200 nel setup ha una sua funzione specifica che non va ad influire nel resto del codice. I collegamenti a server http cloud etc devono rispettare delle tempistiche, se eseguiti troppo vicini vanno in errore in quanto il socket tcp risulta occupato dalla funzione precedentemente eseguita. Concordo con Dok. E' proprio così. E' bene attendere che il modulo restituisca il messaggio di risposta prima di inviare altro. Inoltre, se usi comandi subito dopo l'accensione del modulo wifi, è bene attendere qualche secondo, o meglio, attendere il messaggio che conferma l'avvenuta connessione al router prima di inviare comandi che coninvolgono internet.
11-12-2017, 06:21 PM
Grazie mille a tutti .... ho ristrutturato il flusso e ora funziona bene
Il modulo controlla un sensore magnetico alla porta di ingresso dicendomi se è aperta o chiusa, quante volte è stata aperta, gli orari di apertura. Con 3 pulsanti posso:
Comunque alla fine ho usato per la data il comando del pannello, quello del GET TIME continuava a non funzionare.... Ciao Mic
12-22-2017, 03:01 PM
(This post was last modified: 12-22-2017, 03:04 PM by Technomaker.)
(11-12-2017, 06:21 PM)migreco Wrote: Comunque alla fine ho usato per la data il comando del pannello, quello del GET TIME continuava a non funzionare.... Ciao, ho provato e funziona tutto. Ma non è che invii comandi CLOUD senza prima attendere che il modulo si sia effettivamente connesso al cloud????? Provo a spiegare meglio il mio ultimo messaggio: il modulo, dopo l'accensione, si connette al cloud dopo pochi secondi (ovviamente se è stato abilitato a connettersi ![]() Non appena si connette al cloud, il modulo restituisce il seguente messaggio: $CLOUD-JOINED
Quindi, basta intercettare questo messaggio per sapere con certezza quando si è connesso al cloud. Dopo il micro può inviare tutti i comandi cloud che volete (PUSH, TIME etc...)
01-20-2019, 08:39 PM
Con questo semplice sketch non ricevo niente:
Code: String Msg; Code: $CLOUD:TIME:154801656927$ERR-TCP-Socket-Mode che non so interpretare. Saluti
01-21-2019, 09:40 AM
non si capisce cosa vorresti fare, ti consiglio di rileggiti bene tutto
01-21-2019, 10:02 AM
Vorrei leggere , ricevere un orario attendibile per poi utilizzarlo a mio piacere senza dover usare un RTC esterno tipo DS3231, ecc.
Nei post precedenti c'era scritto che se io attendevo il messaggio $CLOUD-JOINED che restituisce il modulo, poi potevo usare il comando $GET:TIME per scaricare l'orario. Con il semplice programmino che intercetta il $CLOUD-JOINET, non mi arriva niente, non vedo il comando indietro quando il modulo è connesso al Cloud. Se uso invece l'esempio scritto nei post precedenti da "migrerco" mi arriva indietro la stringa :$CLOUD:TIME:154801656927$ERR-TCP-Socket-Mode. Il numero scritto in JAVA e l'$ERR non mi sono utili. Saluti
01-21-2019, 10:33 AM
$CLOUD-JOINET significa che il modulo si è connesso al cloud. A questo punto puoi inviare il comando $GET:TIME e rilevare pertanto l'orario.
Quindi riassumendo intercetta l comando $CLOUD-JOINET Code: if (Msg.substring(0, 13).equals("$CLOUD-JOINET")) { e poi vedrai su seriale la risposta
Ok!
Grazie Con: Code: String Msg; Sulla seriale mi visualizza solo "GO!" ma nessuna data, rimane in attesa della risposta dal cloud. Saluti
01-23-2019, 10:23 AM
(This post was last modified: 01-24-2019, 12:17 PM by Technomaker.)
devi abilitare la lettura su seriale
Code: while ((c = Serial1.read()) > '\n') Msg += (char) c; // Read incoming chars, if any, until new line se non ti va il GET:TIME prova anche il GET:DATE, potrebbe dipendere anche dal firmware |
« Next Oldest | Next Newest »
|
Users browsing this thread: 1 Guest(s)