Go Down

Topic: Automazione Tende antipioggia (Read 13803 times) previous topic - next topic

simosere

Ciao ragazzi,

sono ormai 4 giorni che testo il funzionamento del tutto e va una bellezza, web server compreso... grazie ancora a tutti soprattutto per la pazienza e per l'aiuto!!!

solo una piccola noglia... nulla di che, ma anche solo per capire... in pratica se digito il numero ip del mio router per aprire il web server(devo digitale il numero di IP visibile dall'esterno, non il classico 192.168 ecc ... ma tipo 95.251 ecc...) alla prima botta non carica la pagina , alla senconda si, alla terza no... alla quarta si, e cosi all'infinito... quasi mai due volte consecutive riesce a caricare...

qualche consiglio?

grazie

Patrick_M

per inserire (lo sketch) il programma, dall'IDE clicca modifica, clicca copia per il forum poi vieni qui e incolla nel tuo post (ctrl+v) ;)

simosere

 :o

ok... ma una spiegazione!? dipende dal codice!? è un codice un pò artistico, ma sempre e solo per imparare...

vabbè.... :) grazie

Patrick_M

mi dispiace non ne ho proprio idea del perchè....
per inserire (lo sketch) il programma, dall'IDE clicca modifica, clicca copia per il forum poi vieni qui e incolla nel tuo post (ctrl+v) ;)

simosere

grazie Patrick!

vediamo se qualcuno mi sa dire...

simosere

#455
Sep 09, 2018, 08:36 pm Last Edit: Sep 09, 2018, 08:40 pm by simosere
ragazzi,
in attesa degli extender i2c in arrivo per il display sto aggiungendo anche un bel DHT22 al progetto. funziona alla grande!!! è integrato e in opera...

chiedo conferma su una parte di codice che vorrei intregrare come controllo apertura e chiusura delle tende... in pratica avendo delle piante di agrume sul terrazzo di inverno anche la temperatura è una condizione per chiudere o aprire le tende...


nel comando tenda da abbassare ho insertito il controllo della temperatura, che se è maggiore di  30 grandi(solo per le prove) la tenda si deve srotolare... ovviamente se solo una delle condizioni sotto, la tenda si chiude altrimenti no... e infatti cosi funziona... ma non mi cambia lo stato di reset_timerGRANDE... cosa che invece avviene se non integro il controllo della temperatura... in pratica con aggiunto il controllo della temperatura,se scaldo il sensore oltre 30 gradi... la tenda si chiude,reset_timerGRANDE rimane falso, e si avvia il timer... dopo la fine del timer, la tenda si richiude(ma è già chiusa), mi cambia lo stato di reset_timerGRANDE in vero e riparte il timer.... dopo il timer, anche se la temperatura non è <30 la tenda me la apre ugualmente.... immaggino perchè per come è scritto il codice di apertura tende, è sufficiente che uno solo delle condizioni(misurazione o temperatura)sia vera per attivare l'if.... giusto?

come ovvio a questo problema? io voglio che se anche solo una condizione tra misurazione e temperatura sia falsa, la tenda rimanga chiusa...

grazie



codice tenda da abbassare




Code: [Select]
//--------------   tenda da abbassare GRANDE ---------------------
   // se sole o vento forte abbasso la tenda
   if  ((misurazione < 600 || Rotations > 28 || temperatura > 30) && !attivaz_chiusuraGRANDE && reset_timerGRANDE == false) {
    
      attivaz_chiusuraGRANDE = true ;           // evita nuova chiusura fino a che non sono riaperte
      srotolaTendeGRANDE = true;                // imposto flag srotolamento in corso
      inizioSvolgiTendaGRANDE = millis();       // memorizzo istate inizio operazione
      svolgiTendeGRANDE();                      // lancio comando srotolamento tende
      
   }
   // se è partita la tenda controllo che il vento non super il valore 15
   if (srotolaTendeGRANDE) {
      controlloFolateGiuGRANDE();
      // se è passato il tempo previsto per lo srotolamento...
      if ((millis() - inizioSvolgiTendaGRANDE) >= tempoTotSvolgiTendaGRANDE) {
         srotolaTendeGRANDE = false;               // la tenda è giù quindi
         attivaz_aperturaGRANDE = false ;          // abilita la possibilita' di arrotolarla
         startingTimeGRANDE = millis();            // inizio il conteggio dei 10 minuti per poter tirare su la tenda
         superamento_velocitaGRANDE = false;       // azzero il conteggio superamento velocità
         reset_timerGRANDE = true;
        
      }
   }


codice tenda da alzare


Code: [Select]
// -------------- tenda da alzare GRANDE ---------------
  //se poco sole e tenda srotolata
  if (misurazione > 900 && temperatura < 30  && !attivaz_aperturaGRANDE ) {
  
 if ((millis() - startingTimeGRANDE) < TIMEOUTGRANDE) {
   if (Rotations > 28){
     attivaz_chiusuraGRANDE = true ;
   }
    }
     // se c'è poco vento, sono passati almeno 10 minuti e non ci sono state folate tiro su le tende
       if ( Rotations < 18 && ((millis() - startingTimeGRANDE) > TIMEOUTGRANDE) && !superamento_velocitaGRANDE) {
        attivaz_aperturaGRANDE = true ;        // impedisco doppio comando
        arrotolaTendeGRANDE = true;            // flag partenza avvolgitura
        inizioSvolgiTendaGRANDE = millis();    // uso stessa variabile per memoria partenza operazione
        avvolgiTendeGRANDE();                  // comando avvolgimento
    }
}
  
  
  
  
  if ( arrotolaTendeGRANDE ) {
     // durante la salita controllo se ci sono folate
     // nel qual caso interrompo l'azione e resetto le variabili
     // e al prossimo giro la tenda andrà giu
     controlloFolateSuGRANDE();
     // se è trascorso il tempo previsto per arrotolamento...
     if ((millis() - inizioSvolgiTendaGRANDE) >= tempoTotSvolgiTendaGRANDE) {
        arrotolaTendeGRANDE = false;              // la tenda è su quindi
        attivaz_chiusuraGRANDE = false ;          // abilita la possibilita' di srotolarla
        superamento_velocitaGRANDE = false;       // azzero il conteggio superamento velocità
        reset_timerGRANDE = false;
  }
  }

simosere

#456
Sep 11, 2018, 07:12 pm Last Edit: Sep 11, 2018, 07:35 pm by simosere
anche quest'altra è fatta!!! implementato il controllo della temperatura!!!!


se posso chiedere, sto riscontrando un abbassamento del valore del sensore pioggia che è sceso da 1023 fisso da asciutto a 1000... non che sia un problema, ma osservando il sensore si comincia a vedere un pò di ossido.... la cosa che mi preoccupa è che fino a questa mattina mi segnava 1011-1015.... e un paio di giorni fa  1023 appunto....

nel giro di 3-4 giorni è sceso da 1023 a 1000..... e dopo un'inverno!?!?!?!? ha preso si e no 2-3 piogge....

sto usando il classico sensore da pioggia di arduino,tipo questo per intenderci... posso fare qualcosa?

https://www.ebay.it/i/162552455723?chn=ps





EDIT:


dopo qualche riavvio di arduino dato che non si collegava al wifi.... ora mi risegna valori prossimi ai 1020....  prima dei riavvi ho pulito il sensore con un poco di carva abrasiva.... molto delicatamente... ma cmq mi dava valori prossimi a 1000, ora dopo questi riavvii, mi segna intorno ai 1020.....  qualche consiglio?

simosere

#457
Sep 14, 2018, 09:43 pm Last Edit: Sep 14, 2018, 09:44 pm by simosere
ciao di nuovo a tutti!!!! :)

se possibile vorrei un chiarimento riguardo a questa parte di codice....

Code: [Select]
     sendData("AT+CIPSEND=" + String(connectionId) + "," + Webpagina.length() + "\r\n", 500, true);
      sendData(Webpagina, 1000, true); // Stuur de webpagina door.

 

quel 500 e quel 1000 risportato nel codice sopra cosa identificano? sarebbe 1 secondo e 0.5 secndo di attesa per svolgere quella funzione?

chiedo questo perchè dopo innumerovi prove ho constatato che quando vado a richiedere sul browser l'aggiornamento dei dati di arduino, arduino si "blocca" per circa 6-7 secondi e invia i dati poi al telefono o pc....  questi 6-7 secondi coincidono con il numero di richieste che arduino ha quando richiedo le info .... quindi la domanda è si possono abbassare? a cosa servono?  dato che vorrei ricevere più informazioni rispetto ad ora... cosi facendo però più ne aggiungo e più tempo di blocco avrei... sei secondi dove arduino non legge lo stato dei sensori sono già tanti....figuriamoci aggiungendo altre cose...

questa la parte del codice completa...


grazie per l'aiuto

Code: [Select]

sendData("AT+CIPSEND=" + String(connectionId) + "," + Webpagina.length() + "\r\n", 500, true);
      sendData(Webpagina, 1000, true); // Stuur de webpagina door.
      sendData("AT+CIPSEND=" + String(connectionId) + "," + two.length() + "\r\n", 500, true);
      sendData(two, 1000, true); // Stuur de webpagina door.
      sendData("AT+CIPSEND=" + String(connectionId) + "," + three.length() + "\r\n", 500, true);
      sendData(three, 1000, true); // Stuur de webpagina door.
      sendData("AT+CIPSEND=" + String(connectionId) + "," + four.length() + "\r\n", 500, true);
      sendData(four, 1000, true); // Stuur de webpagina door.
      
      
      sendData("AT+CIPCLOSE=" + String(connectionId) + "\r\n", 1000, true); // Sluit de connectie.

Patrick_M

Quote
quel 500 e quel 1000 risportato nel codice sopra cosa identificano? sarebbe 1 secondo e 0.5 secndo di attesa per svolgere quella funzione?
è il tempo di timeout entro il quale la send deve completare altrimenti ti ritorna un codice errore
per inserire (lo sketch) il programma, dall'IDE clicca modifica, clicca copia per il forum poi vieni qui e incolla nel tuo post (ctrl+v) ;)

simosere

grazie Patrick, posso abbassarlo secondo te? in base a quanto sono lunghe le info che invio...

ci sono altri modi per ovviare a questa cosa?

grazie

Patrick_M

#460
Sep 15, 2018, 10:19 am Last Edit: Sep 15, 2018, 12:19 pm by Patrick_M
non ti serve a nulla abbassarlo... la funzione se ci mette di meno bene, finisce prima. Se ci mette di più viene interrotta e ti avverte che c'è stato un problema. Anche se tu mettessi scritto 100 secondi, se riesce a completare l'invio in 10 millisecondi quando ha finito esce
per inserire (lo sketch) il programma, dall'IDE clicca modifica, clicca copia per il forum poi vieni qui e incolla nel tuo post (ctrl+v) ;)

Patrick_M

inoltre non vedo la necessità di avere tutto questo traffico di informazioni continue.... a parte che per fare una bella cosa dovresti inviare le info solo quando ci sono delle variazioni (e solo quelle che sono variate). Tutto il resto è inutile
per inserire (lo sketch) il programma, dall'IDE clicca modifica, clicca copia per il forum poi vieni qui e incolla nel tuo post (ctrl+v) ;)

simosere

grazie Patrick... è sarebbe una figata ricevere una mail solo quando alcune info sono variate....ma la vedo lunga e complicata la faccenda... cmq proverò a studiarmi qualcosa...

grazie

simosere

#463
Sep 15, 2018, 12:43 pm Last Edit: Sep 15, 2018, 12:45 pm by simosere
ho trovato questo in rete:

http://forum.arduino.cc/index.php?topic=58669.0

dove questo se ho capito bene sono i settaggi per la posta elettronica con (testo,seconda riga e terza riga) il testo dove metterei il valore dei sensori, ho capito bene?

al posto delle xxxxx mettere la mia email e la password

io dovrei cmq inviare una mail da libero a gmail... in questo caso basta sostuire libero con gmail?


Code: [Select]
ehlo libero.it
auth login
[xxxxxx user in BASE 64]
[xxxxxx password in BASE ]
MAIL FROM:<yyyyyyy@libero.it>
rcpt to:<aaaaaaa@libero.it>
data
subject:leggimi


testo
seconda riga
terza riga
.




in pratica se come ho capito è corretto, dovrei mettere questa parte di codice all'interno di ogni varazione di stato dei sensori, tipo:

se il sensore pioggia è minore di 850 chiudimi le tende ed invia una mail.... corretto?


grazie


steve-cr

se posso chiedere, sto riscontrando un abbassamento del valore del sensore pioggia che è sceso da 1023 fisso da asciutto a 1000... non che sia un problema, ma osservando il sensore si comincia a vedere un pò di ossido....

Il sensore di pioggia, così come il sensore di umidità da inserire nel terreno, sono ottenuti con un circuito stampato in rame, quindi ossidabile in poche ORE...
Teoricamente non so nemmeno perché lo fanno dato che dura da Natale a Santo Stefano, ma per fare degli esperimenti va più che bene.

Per qualcosa di "eterno" le cose sono due: o te ne fai uno in acciaio inossidabile Aisi316 ma anche Aisi304 vedendo di fare una specie di doppio pettine come, appunto, il circuito stampato, oppure vai su un sensore pioggia ormai collaudato e perfetto come... quello dei tergicristalli delle auto, che è un sensore ottico (puoi usare un vecchio mouse).

Altrimenti fra pochi giorni non funziona più nulla.

Attenzione anche al sensore umidità: I DHT22 sono dei gran bei sensori ma sono "deperibili" nel tempo, quindi, oltre a proteggerli in una scatolina "con un ottimo ricambio di aria" prevedi già di cambiarli ogni tanto: può essere qualche mese se sei al mare, un po' di più se sei in collina, dipende dall'umidità e dalla salsedine...

Go Up