WebIOPi…controllo remoto con raspberry

Avete capito cos’e’ la Raspberry…ma forse e’ meglio se mettiamo in pratica qualcosa.

In questo articolo descriviamo l’installazione di un sistema operativo su raspberry e di un tool che permetterà di gestire le porte GPIO,  presenti sulla scheda, utilizzate per controllare a distanza (attraverso pagina web) dal semplice led all’intero impianto elettrico casalingo.

Installiamo un sistema operativo….Linux 🙂

Cosa ci serve?

  • Raspberry con alimentatore
  • scheda SD da almeno 4gb
  • cavo connessione ethernet

 

Andiamo nella pagina principale di raspberry http://www.raspberrypi.org nella sezione download.

 

Procediamo per SISTEMI OPERATIVI….

Se abbiamo Windows….scarichiamo il tool per creare l’SD e l’immagine del sistema. Non vi copio i link perché sono sempre in aggiornamento.
Inseriamo la SD nel lettore e avviamo il programma (come amministratore se usiamo windows7/vista). Indichiamo qual’e’ l’immagine da copiare e andiamo avanti. In pochi minuti il sistema e’ tutto sull’SD.

 

Se avete Linux/Unix/MacOSX….non dovrei spiegarvi nulla…ma ve lo dico lo stesso 🙂

Si usa il comando DD già presente nel vostro sistema.

ecco la sintassi :

sudo dd if=immagineRaspberry.img of=/dev/diskn bs=1m

dove “diskn” e’ l’identificativo della SD.

 

Rimuoviamo l’SD dal pc, spostiamola sulla raspberry….e accendiamo.
(consiglio almeno per la prima volta di collegare una tastiera per le prime configurazioni)

All’avvio vi compare un piccolo menù testuale per le prime configurazioni…muovetevi con i tasti di direzione della tastiera per configurare.

Importante e’ ABILITARE SSH

Pooiii premiamo ESC e arriviamo al prompt.

Il sistema ha già configurato un utente “pi” con password “raspberry”

Il sistema e’ configurato in DHCP….ma a noi serve un indirizzo fisso….configuriamo quindi la scheda di rete

ecco i comandi:

cd /etc/networks
sudo nano interfaces

eliminiamo la riga

iface eth0 inet dhcp

e riempiamo con

iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
nameserver 192.168.1.1 

inserendo i dati relativi alla vostra rete.

chiudiamo e riavviamo con un sudo reboot

 

Diciamo che ora il sistema e’ pronto per poter installare ciò che volgiamo!

Procediamo ora all’installazione di WebIOpi. Tool molto interessante che sfrutta gli ingressi/uscite della raspberry visualizzando il loro stato su una normalissima pagina web.

 

NB ###

Posto di seguito l’installazione della nuova versione 0.51….io ho testato la 0.3 quindi non garantisco sulla procedura a seguire.

 

Iniziamo …

(con la raspberry connessa alla rete…e quindi a internet)

Installiamo/aggiorniamo python

sudo aptitude install python-dev

Lasciamo lavorare e premiamo Y per ogni richiesta.

Scarichiamo e installiamo WebIOpi

wget http://webiopi.googlecode.com/files/WebIOPi-0.5.1.tar.gz
tar xvzf WebIOPi-0.5.1.tar.gz
cd WebIOPi-0.5.1
sudo ./setup.sh

e se fila tutto liscio e non ci sono errori….

sudo python -m webiopi [porta]

dove porta e’ la porta di python….(di default la 8000)

alla fine mettiamo tutto in avvio automatico

sudo update-rc.d webiopi defaults

FINEEEE

Una volta terminato il tutto

apriamo il browser di un pc connesso alla stessa rete e andiamo alla pagina http://indirizzo raspberry:8000/webiopi

 

dovrebbe comparirci una schermata tipo questa

 

premendo su IN/OUT cambiamo la configurazione  del pin Entrata o Uscita

premendo sul numero del pin cambiamo lo stato Acceso o Spento.

Provate ad esempio a mettere un Led con una resistenza da 200 ohm tra il pin 17 e la massa e premete il pin GPIO17 sulla pagina web….il led dovrebbe accendersi!!!!

Ricordatevi che le uscite sono a 3,3 volt e non possiamo mettere carichi superiori a 15 milliampere

Questa paginetta web si puo’ modificare a nostro piacimento….e le istruzioni le trovate sul sito di WebIopi o sul file di installazione stesso.

Buon Lavorooo!!

 

 

 

 

 

43 thoughts on “WebIOPi…controllo remoto con raspberry

  1. GRAZIE !!!
    Davvero facile (quando le cose si sanno) .
    ero arenato sul come fare ma la tua guida chiara e semplice mi ha aperto la strada .
    E dopo aver acceso il primo led in remoto …. ora vado a cimentarmi con i relè di casa .

  2. Guida completa e molto chiara, ma se volessimo lanciare il programma webiopi con una icona dal deskto….. come si può fare, ho cercato su internet ma un esempi passo passo con spiegazioni dall’inizio fino alla fine non ne ho trovati. Puoi gentilmente inserire una guida? grazie in anticipo.
    Enrico.

  3. Ciao Dnilo, mi sono spiegato male, ho installato sulla raspberry pi questo programma “webiopi-0.6.0” e funziona, solo che per eseguirlo manualmente devo digitare da LXTerminal “sudo /etc/init.d/webiopi start” e per arrestarlo “…….stop”. Non conosco minimamente Linux, per icona sul desktop intendevo dire un link in posizionato in /home/pi che al doppio clic del mouse mi faccia partire il programma come da riga di comando. Ho fatto un file in quella posizione chiamandolo webio-start e all’interno ho scritto
    #! /bin/sh
    sudo /etc/init.d/webiopi start

    poi ho provato a rendere il file eseguibile ma mi da “errore nell’impostare i permessi”

    Vorrei evitare di avviarlo in automatico.
    Ti ringrazio per la tua attenzione.
    Enrico.

  4. Enrico….ho sbagliato io…
    Ho confuso gli applicativi….

    Era un articolo vecchio e ti ho risposto pensando ad un altro articolo….

    Tutto quello che devi fare é fare l’update dei programmi all’avvio

    Con questa riga

    sudo update-rc.d PROGRAMMA defaults

    Metti in avvio automatico il tutto…

  5. Si Danilo, ho visto la tua guida e su come lanciare il programma all’avvio in modo automatico, ma quello che chiedevo era di poterlo lanciare con doppio clic e solo quando voglio io e non quando alimento la raspberry.
    Era un modo per capire una cosa in più e poterla applicare anche sul lancio di altre applicazioni.
    Ti ringrazio.
    Enrico.

  6. Ok…ho capito male 2 volte 🙂
    e che non uso mai la rasp con interfaccia grafica.

    Quello che mi viene in mente e’ quello di creare un batch come lo hai fatto tu….cambiare i permessi con chmod +X ….e poi creare un’icona che punta al ./file.sh

  7. Ciao, risolto, la shell non era bin/sh ma bin/bash.
    Ripeto che non conosco linux.

    Grazie ciao
    Enrico

  8. Ciao e Grazie del tuo bellissimo sito.
    Bellissimo soprattutto perche’ lo trovo immediato , spiegato con semplicita’ , ma allo stesso tempo sofisticato per un utente che di elettronica/elettricita’ non capisce niente ,ma ne e’ appassionato dai suoi sviluppi.
    Approfitto per farti una domanda sull’accesso in remoto al raspberry .
    Da lan locale funziona regolarmente ,ma quando c’e’ di mezzo l’impostazione del router per accedere dall’esterno le cose si complicano un po’ nel mio caso.
    Sono riuscito a fissare un ip dinamico gratuitamente con un noto servizio italiano che ha fatto da ponte al servizio analogo statunitense per una settimana e la cosa ha funzionato .
    Il mio router supporta solo il servizio americano a pagamento e vorrei evitarlo .
    La domanda e’ questa : e’ possibile aggirare il problema dns dinamico istruendo il raspberry in modo che sia lui a comunicare l’ip necessario al collegamento esterno come succede un po’ per le centraline termoregolatrici gestite da ditte specializzate ?

    Grazie
    Ciao

  9. Ciao Luca,
    scusa per il ritardo nella risposta.

    E allora….prima di tutto devi impostare il router per permettere l’accesso all’esterno della porta 80 (HTTP). Una volta aperta la porta la pagina di webiopi e’ raggiungibile attraverso l’ip dinamico assegnato al tuo router.
    Per utilizzare i servizi di DNS…io uso dyndns.org. Semplice, intuitivo e gratuito. Prova e fammi sapere.

    Ciao

  10. Grazie della risposta .
    Ho fatto come dici ed ho avuto accesso al raspberry , ma mentre sullo smartphone visualizzo pi@raspberry $ , sul monitor collegato al rasp mi chiede il login .
    Se cerco di accedere da browser all’interfaccia di webiopi come scritto sopra mi dice pagina non disponibile.
    Da smartphone se do’ il comando startx mi da’ errore su xserver ( almeno mi sembra di capire), a monitor mi compare l’interfaccia grafica normalmente quindi sembrerebbe collegato ,ma male.
    Ciao

  11. Allora….facciamo un po di chiarezza.
    L’interfaccia di weiopi é una pagina web….quindi con il browser ti colleghi all’indirizzo della raspberry/webiopi e ti deve dare la paginetta con i contatti.

    La pagina con startx é la bash….la riga di comando…che probabilmente non é installata….e comunque non visualizzerai dallo smartphone

  12. Hai ragione e non avevo dubbi.
    Purtroppo ho fatto confusione , perche’ stavo facendo , come mio solito, due o 3 cose assieme.
    In effetti una volta impostato la destinazione del servizio dns dinamico nella barra degli indirizzi del browser (da smartphone in questo caso ) seguito da porta 8000/webiopi e login e passw di webiopi ho avuto accesso ai contatti del rasp.
    Adesso vado un po’ fuori tema ,ma spero tu mi possa dare una mano ugualmente.
    Nello stesso tempo volevo collegarmi con lo stesso servizio dns all’interfaccia grafica del rasp sempre tramite smartphone e non mi riesce anche se raggiungo il rasp perche’ vedo la bash e riesco a dare i comandi.
    Dico cosi’ perche’ se do’ il comando startx da smartphone sul monitor collegato al rasp vedo effettivamente uscire l’interfaccia ,ma dallo smartphone assolutamente no.
    Ho riconfigurato il servervnc che se ho capito bene e’ quello che serve ad identificare il desktop , ma qui vado a tentoni .
    Questa cosa invece ero riuscito a farla da lan locale , anche se poi ho dovuto reinstallare il rasp per eccesso di prove ed ho dimenticato i passaggi logici .
    Per il collegamento uso connectbot o server auditor da smartphone .
    Grazie
    Ciao

  13. Ciao Luca,
    allora….tu arrivi alla bash e leggi i caratteri. Magari ti colleghi in SSH…ma da vedere i caratteri e dare comandi…al visualizzare la grafica ne passa 🙂
    Quando tu scrivi startx stai dicendo alla macchina di far partire l’interfaccia grafica in locale…e non via rete!
    Quindi se vuoi visualizzare le icone della Rasp sul cellulare l’unico modo e’ installare un VNC server sulla raspbery e usare VNCclient sul cellulare.
    La banda usata sarà maggiore quindi attenzione ai piani tariffari (se non ti connetti in Wifi).
    Saluti
    Danilo

  14. Ciao e Tanti Auguri .
    Ti stresso ancora perche’ ho risolto una parte dei problemi che ti scrivevo sopra , ma desso voglio comandare 4 rele’ .
    Attualmente tramite webiopi e da smartphone collegato in 3g riesco a comandarne 1 solamente in quanto, come ho letto , penso che la tensione in uscita al raspberry sia bassa per poterne alimentare piu’ di uno ( mi compare sull’interfaccia webiopi in arancio solo uno dei gpio ed e’ proprio quello che riesco ad usare , gli altri no ).
    La lampada di prova a 220v collegata sull’uscita rele’ ha funzionato .
    Ho una scheda rele’ Keyes con 4 rele’ 10A 250vac in uscita e 5vdc in entrata ( anche se erroneamente ho collegato il 3.3v del rasp all’alimentazione della schedina e funziona lo stesso).
    Domanda : il problema e’ prorpio nella scarsa alimentazione ? Ho letto che si potrebbe alimentare esternamente la scheda con i rele’ , potrei usare un alimentatore per telefono da 5v e 1.2a ?
    Se si , devo collegare negativo dell’alimentatore al gnd solo della scheda od anche del raspberry ed il positivo all’ingresso vcc della scheda rele’ ?
    Grazie Ciao

  15. Ciao luca,
    La rasp ha le uscite a bassa tensione e bassissima corrente. Non puoi attaccare direttamente un relé alla scheda…bruceresti tutto.
    Dal pin della rasp devi mettere un transistor che comanda un relé..il tutto alimentato da alimentatore esterno.

    Ora…la scheda di cui tu parli ha i transistor di pilotaggio?? O sono solo 4 relays montati su una scheda. Nel secondo caso devi costruire una piccola scheda con 4 transistor con base connessa alla rasp , collettore all’alimentatore e emettitore al relé.

    Saluti e Auguri
    Danilo

  16. Ciao,
    purtroppo stai andando sul difficile con me, non ho basi necessarie a risponderti correttamente,ma da quel poco che capisco la scheda ha gia’ i transistor altrimenti avrei gia’ bruciato tutto , invece io sono riuscito a comandare un rele’ ed ad accendere una lampada a 220v.
    Ti riporto le caratteristiche della scheda keyes funduino con 4 rele’:
    Description:
    1.The input signal can be 3.3 V 5 V
    2.Are low level effective. Support 3.3V 5 V
    3.It has jump line. Can set high and low level
    4.The power source and the relay system power can be divided
    5.A set of jump cap. Jump hat off. Can separate the power supply
    6.Only one way of high level can be triggered
    Visto che riesco a comandare uno solo dei rele’ , cioe’ quello sul gpio 3 , nonostante io ne abbia collegato 4 (ai gpio 3-17-22-09 ) non so se e’ una questione di bassa alimentazione od altro.
    I collegamenti che ho fatto sono .
    3v3 raspberry al contatto power alla scheda funduino
    ground raspberry a GND scheda
    gpio 3 raspberry a 1N1 a scheda
    per gli altri gpio uguale usando gli altri contatti 1Nx sulla scheda.
    Grazie della pazienza

  17. Ciao luca,
    Io vado sul difficile…ma tu parli con me come se io fossi a casa tua e avessi davanti il tutto.
    Vado a tentoni e tento di aiutarti. La scheda con i relé se ha i transisor deve essere alimentata a parte….con un alimentatore a 5v.
    Quindi alimentatore che fa al power della scheda e al gnd. E poi i gpio della rasp ai vari relé e il gnd della rasp al gnd della scheda relé.

    Fammi sapere

  18. Si , hai sicuramente ragione e’ infatti difficile per me descrivere la situazione ,il problema e’ mio che conosco poco la materia.
    Comunque ho fatto come dici e funziona tutto a dovere.
    Grazie ancora.
    Ciao

  19. Ciao!

    è possibile fare una pagina web che mi indichi con 1 o 0 lo stato di GPIO0?
    quanto è il ritardo all interno della rete?

    Grazie!

    Ciao

    Igor

  20. Ciao Igor,
    Ma webiopi gia ti fa vedere lo stato dei pin. Prova a mettere un pulsante e vedi come si modificano sulla pagina web.
    Il ritardo dipende dalla rete…..

  21. Ciao,vorrei attivare delle luci a 220v.
    Ho pensato di collegare il raspberry a una scheda a quattro relè,pensi che devo usare un uln2803? O posso alimentare la scheda dall’esterno e collegare al raspberry solo i gpio?
    Per alimentatore da esterno della scheda a che voltaggio? 5 v se i relè sono a 5 v giusto?
    Ciao

  22. Fabrizio mi dai poche inforazioni. Le schede a 4 relè di solito hanno il proprio transistor per ogni rele…quindi basta connettere i gpio e poi alimentare la scheda. Se i rele sono a 5volt di solito dovrebbe essere anche l’alimentazione a 5v….ma non sapendo che hai davanti non posso aiutarti. cerca nelle specifiche della scheda che hai comprato

  23. ciao vorrei attivare e spegnere un gpio tramite comando ssh, qualcuno sa che script devo usare?

  24. Tramite SSH…mi sa che ci fai poco 🙂 SSH serve per stabilire una connessione tra due postazioni. Una volta entrato e loggato hai la SHELL…e da li con un comando puoi attivare o no un Pin.
    Cerca “Shell Gpio raspberry” e troverai l’infinito.

  25. Ciao, ho scritto(meglio scopiazzato in giro) questo codice per attivare i gpio da pagina web. A me serve che si attivi per 2 secondi invece mi da un impulso velocissimo e non riesco a temporizzare… mi daresti una mano?? sotto il codice

    Controllo Domotica By Dany

    webiopi().ready(function() {
    webiopi().setFunction(4,”out”);
    webiopi().setFunction(17,”out”);
    webiopi().setFunction(27,”out”);
    webiopi().setFunction(22,”out”);
    webiopi().setFunction(18,”out”);
    webiopi().setFunction(23,”out”);
    webiopi().setFunction(24,”out”);
    webiopi().setFunction(25,”out”);

    var content, button;
    content = $(“#content”);

    button = webiopi().createPulseButton(“pulse”, “LUCI SPENTE”, 4);
    content.append(button); // append button to content div

    button = webiopi().createPulseButton(“pulse”, “LUCI SALA”, 17);
    content.append(button); // append button to content div

    button = webiopi().createPulseButton(“pulse”, “MOBILE SALA”, 27);
    content.append(button); // append button to content div

    button = webiopi().createPulseButton(“pulse”, “TAPP. SU”, 22);
    content.append(button); // append button to content div

    button = webiopi().createPulseButton(“pulse”, “TAPP. GIU'”, 18);
    content.append(button); // append button to content div

    button = webiopi().createPulseButton(“pulse”, “LUCI CUCINA”, 23);
    content.append(button); // append button to content div

    button = webiopi().createPulseButton(“pulse”, “TAPP META'”, 24);
    content.append(button); // append button to content div

    button = webiopi().createPulseButton(“pulse”, “LUCI SPENTE”, 25);
    content.append(button); // append button to content div

    })

    button {
    display: block;
    margin: 5px 5px 5px 5px;
    width: 300px;
    height: 45px;
    font-size: 24pt;
    font-weight: bold;
    color: ORANGE;
    moz-border-radius: 20px;
    webkit-border-radius: 20px;
    border-radius: 20px;
    moz-box-shadow: 3 3px 6px rgba(0,0,0,0.5);
    webkit-box-shadow: 3 3px 6px rgba(0,0,0,0.5);
    box-shadow: 3 3px 6px rgba(0,0,0,0.5);
    }

    CONTROLLO DOMOTICA

  26. Ciao Dany,
    purtroppo nel periodo estivo non ho modo di testare nulla. Magari qui tra i vari “commentatori” c’e’ qualcuno che ti puo’ dare una mano.
    Saluti

  27. ti chiedo cortesemente se sai come si possa gerstire l’ accensione di una lampadina tramite interuttore (a muro) e il raspberry tramite rete,
    in tal caso come possa fare il raspberry a riconoscere lo stato dei rele in caso di riavvio dopo sospensione dell energia elettrica
    grazie mauro

  28. Mauro la domanda é poco chiara. Cmq la raspberry tramite le porte gpio e in transistor di potenza possono comandare una lampadina. Se la luce va via il relé tornerà allo stato di riposo e quindi lampadina spenta.

  29. Ciao Danilo, ho installato tutto come da guida ed è andato tutto a buon fine, nessun messaggio di errore.

    Solo che quando provo a connettermi a webiopi (mi viene 192.168.1.105:8000) non appare niente, “pagina inesistente”, non so davvero cosa fare…

    Ho provato anche a fare 192.168.1.105:8000/webiopi ma niente da fare…dove può essere l’errore?
    L’indirizzo è giusto perché il raspy lo uso solo via SSH, l’ip è quello per forza.

    Sono nel pallone 🙁

  30. Ciao,
    da quando ho scritto l’articolo ad oggi….sono cambiate un bel po di cose….il sito stesso ha cambiato faccia molto spesso 🙂
    Comunque…non avendo la tua raspy davanti…posso solo consigliarti di ricontrollare i file di configurazione, di vedere se i servizi sono tutti su e di controllare i file di log per capire se c’e’ qualcosa che non va. Magari in fase di test puoi provare ad attaccare il tutto ad un televisore con l’ingresso HDMI e vedere se in fase di boot c’e’ qualche messaggio di errore.
    Saluti

  31. Ciao, mi è appena arrivato il raspberry, ho già provato con l’interfaccia ad accendere dei led e la cosa funziona. Mi sono messo, grazie ai tuoi preziosi consigli, ad installare il Webiopi, (penso di aver fatto tutto bene, le videate combaciano, la scheda di rete è a 192.168.1.100 e la pingo dal telefono, ma l’interfaccia non si apre. Mi dice che non trova la pagina.
    Ho provato con 192.168.1.100:8000, con 192.168.1.100:8000/webiopi più combinazioni casuali varie…
    Se puoi aiutarmi…. E’ la prima volta in assoluto che traffico in ambiente Linux.
    Grazie Baldo

  32. Ci provo. Stavo proprio guardando i servizi anche se mi è difficile verificarli per inesperienza con Linux. Sei stato gentile e rispondermi velocemente GRAZIE Baldo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.