Domotica, android, e webserver su arduino

Buongiorno ragazzi, scrivo per chiedere spunti/delucidazioni su un 'idea che mi è venuta qualche tempo fa e che sto cercando di implementare. Prendendo spunto da questo esempio http://www.logicaprogrammabile.it/webduino-scheda-rele-arduino-ethernet/ ho deciso di creare un piccolo webserver da poter comandare via browser ( da casa) e via app android ( da fuori ) per un semplice sistema di domotica. La rete è gia settata e attualmente riesco a raggiungere tutti i nodi della rete senza problemi. Ho deciso di usare la libreria Webduino poiche implementa un , seppur minimo, livello di sicurezza con password e user. Mi piacerebbe avere qualche spunto ( e vi dico anche cosa ho pensato io ) sui seguenti punti.

1.Riesco ad accendere e spegnere una lampada tramite relè, anche tramite l'app android che sto sviluppando con AppInventor Tuttavia non so come poter ottenere lo stato dei relè su android, cosa abbastanza importante in quanto il sistema è pensato per multi-utente. ( Mia soluzione: salvo il loro stato su Xively.com e poi li recupero dall'app android. Problema, non mi funzionano le API)

  1. Come inviare stringhe numeriche, da browser/android ad arduino, in modo da poter fare una cosa del genere " quando la resistenza dell'LDR supera un valore INVIATO DA BROWSER/ANDROID , alza /abbassa le tapparelle.

  2. Esiste un modo per stampare su una pagina HTML il valore di una variabile? ( senza gestire milioni di if come nell'esempio e generare il codice caso per caso? ) Premetto che ho gia cercato in rete Tutorial/Esempi/sistemi gia pronti da cui prendere spunto, ma nessuno di questi risponde alle mie esigenze per i motivi piu disparati ( es. dice cosa fa ma non spiega come, oppure spiega un pezzo ma un altro no, o altri semplicemente vanno fuori dalla mia comprensione ( vedi esempio della caldaia controllata :D ) ). Le parti in cui sono piu carente sono , come avrete capito, la parte di gestione HTML/Server.

Ringrazio chiunque voglia dire la sua o dare il suo contributo :)

Per adesso contribuisco per la parte "comunicare lo stato del relè".

La mia idea è: uso un relè a dippio contatto, con uno accendo l'utenza e l'altro lo uso come se fosse che arduino debba leggere un pulsante. In altre parole quando attivi il relè chiude anche un pulsante che viene letto da Arduino. Oppure rilevi la corrente dell'utenza, ad esempio con l'ACS712.

Se il relé è comandato direttamente dalla scheda ed è un monostabile (relé classico), allora il valore di comando corrisponde (salvo guasti) allo stato del tuo relé.

Se usi un relé bistabile invece devi seguire la soluzione di zoomx usando relé con contatti ausiliari.

Per l'applicazione Android, puoi guardare qui: http://forum.arduino.cc/index.php?topic=80055.0

Saluti, Dario.

Scusate ragazzi se ci ho messo tanto, ma mi sto occupando molto della parte web in questi giorni. Nel frattempo però, a propositò di relè, vi chiedo un opinione. Secondo voi quale scheda multi relè conviene acquistare per pilotare elementi della rete domestica? Su ebay ne esistono milioni e ho troppa confusione ( considerando poi che le alte tensioni non sono esattamente il mio campo di competenza)

visto che stiamo parlando di Domotica e quindi non credo tu voglia tenere perennemente attivati i rele', le uniche schede sono quelle con bistabile ad esempio questa a 5v http://www.ebay.it/itm/Bistable-Latching-DPDT-8-Amp-Power-Relay-Module-DC5V-Coil-with-DIN-Rail-Feet-/371029524674?pt=LH_DefaultDomain_0&hash=item56631540c2

o questa a 12V http://www.ebay.it/itm/Bistable-Latching-DPDT-8-Amp-Power-Relay-Module-DC12V-Coil-Tyco-RT424F12-/201057709345?pt=LH_DefaultDomain_0&hash=item2ecff92d21

A proposito di schede relè , su ebay ho trovato questa ad un prezzo veramente interessante: http://cgi.ebay.it/ws/eBayISAPI.dll?ViewItem&item=310574401892&fromMakeTrack=true&ssPageName=VIP:watchlink:top:it

(Si lo so, non è bistabile , ma almeno per fare qualche test può tornare sempre utile). Tuttavia la descrizione mi lascia un po perplesso. Dice che la scheda può essere controllata DIRETTAMENTE da arduino, pic , ecc ecc. Poi sotto riporta che ogni relè ha bisogno di un ingresso che fornisca 50-60 mA per ogni relè. Il che ovviamente non torna , in quanto se non ricordo male , un pin digitale arduino eroga al massimo 20 mA.

Perciò, secondo voi, è un fregatura? qualcuno ha esperienze con schede di questo tipo?

5V 4-Channel Relay interface board, and each one needs 50-60mA Driver Current.

leggi bene. Ogni rele' richiede 50-60mA Non confondere la corrente che serve ad attivare un rele', con quella di pilotaggio. Che in questo caso passa da un fotoaccoppiatore seguito da un transistor Da un pin di Arduino prelevera' solamente la corrente che serve per comandare il Led del fotoaccoppiatore ( 10-15mA) Mentre dalla linea 5V serviranno per tutti e 4 almeno 250mA. Quindi se lo alimenti attraverso la USB puoi avere dei problemi

Brunello:

5V 4-Channel Relay interface board, and each one needs 50-60mA Driver Current.

leggi bene. Ogni rele’ richiede 50-60mA
Non confondere la corrente che serve ad attivare un rele’, con quella di pilotaggio. Che in questo caso passa da un fotoaccoppiatore seguito da un transistor
Da un pin di Arduino prelevera’ solamente la corrente che serve per comandare il Led del fotoaccoppiatore ( 10-15mA)
Mentre dalla linea 5V serviranno per tutti e 4 almeno 250mA.
Quindi se lo alimenti attraverso la USB puoi avere dei problemi

Mi era completamente sfuggito, non avevo considerato il disaccoppiamento dell’opto. Grazie

Ciao , ti posso dare qualche consiglio su come inviare stringe da browser android:
con app inventor visto che sai usarlo, ti crei un bottone e nella sezione non ancora pronto per il debutto selezioni l’icona web viewer e la trascini nello screen come hai fatto per il pulsante. dopo basta che entri in java quindi nell’assemblaggio tipo puzzle definisci cosa deve fare il pulsante tramite il web viewer,quindi per esempio quando premi sul pulsante lo puoi impostare per inviare una striga del tipo 192.168.1.5:80/?L=1 (alza tapparella). sempre che tu abbia usato la stessa stringa che hai caricato nello scketch di arduino.
spero di esserti stato d’aiuto se vuoi altre info chiedi pure.
Ciao.
Enzo

 192.168.1.5:80/?L=1 (alza tapparella)

ma, usate questo sistema per comunicare col server? ma è da brivido! :) :)

pablos: ma, usate questo sistema per comunicare col server? ma è da brivido! :) :)

Pablos, perdona la mia ignoranza in materia ... perché l'uso di un metodo HTTP GET è da brivido ???

Guglielmo

Non è la GET in se stessa che è largamente usata nell’inviare messaggi al server, il problema è il metodo
se nello sketch usiamo ad esempio

 client.print("<h2><a href='/?L=1'>APRI</a>");

quando andiamo a premere col mouse il collegamento “APRI” sulla barra dei link sul browswr apparirà
http://192.168.1.50/?L=1 e fin qui nessun intoppo, il comando viene eseguito anche se è visibile a mezzo mondo cosa su quell’ip dobbiamo scrivere per alzare la tapparella, il problema avviene quando lo stesso client (browser) deve fare l’aggiornamento, ecco qui la scomodità sulla barra, adesso c’è sempre quel IP+/?L=1, quindi ogni volta che aggiorno invio quel comando.
devo resettare il link e metterci nuovamente http://192.168.1.50
Se vogliamo comunque usare la GET ma non visibile sulla barra ci dobbiamo attrezzare di un piccolo script js/ajax o json che lo fa lo stesso ma senza toccare l’indirizzo sul browser, ma a questo punto tanto vale farlo con POST

Comunque non è il caso dell’utente che ha posto la domanda, la webduino usa degli script GET e POST che gestiscono le richieste e risposte su html, se non ricordo male arduino con quella lib riceve messaggi dal client tipo POST

//send message
$.ajax({type: "POST",
	    data: xxxxxxxxxxx,
	    dataType: "text",
	    cache: false,
	    url: url,

Ho giocato con quella lib 2 anni fa e non mi è piaciuta molto, l’ho scartata subito, poi la negozianione client-server che ogni volta avviene per un messaggio anche di un solo char è troppo impegnativa (a parer mio) per arduino.
Ora sono affezionato al protocollo tcp/websocket e non riesco più a farne a meno :slight_smile: :slight_smile:

ciao

Ah, in tal senso ... ok, grazie :)

Mi avevi fatto preoccupare, visto che spesso anche io uso il metodo HTTP GET e pensavo ci fossero delle particolari controindicazioni ;)

Guglielmo

Pablos, se non ho capito male tu preferisci aprire un socket e comunicare con quello?
Niente web server e client giusto?

io sto sviluppando un sistema , da solo Ci sono da un lato android e dall'altro Arduino Due https://youtu.be/sySSH4LNOrw?list=PLJmvUGejM2TOA72JRQe5f5mBr67yPRhgk https://youtu.be/ONsof_ZIrpI?list=PLJmvUGejM2TOA72JRQe5f5mBr67yPRhgk ciao

@walterp ... sei un installatore di impianti elettrici civili e industriali?