122 commenti su “ArduDome: Domotica Opensource con Arduino + RaspberryPI + PHP + JSON + jQuery

    • Perché sebbene il Raspberry Pi è molto più web oriented, Arduino è molto più electronic oriented… In parole povere è più facile gestire la mole di shield esistenti per Arduino in questo modo piuttosto che fare il porting.
      A presto

  1. Ciao complimenti per il tuo lavoro.
    Ho provato a caricare lo sketch ArduDome.ino ma mi da questo errore:

    ArduDome.ino: In function ‘void setup()’:
    ArduDome:49: error: ‘initializePins’ was not declared in this scope
    ArduDome.ino: In function ‘void loop()’:
    ArduDome:59: error: ‘getPin’ was not declared in this scope
    ArduDome:65: error: ‘readStatus’ was not declared in this scope
    ArduDome:69: error: ‘readStatus’ was not declared in this scope
    ArduDome:72: error: ‘writeStatus’ was not declared in this scope

    evidenziando in questa riga:

    inputString.reserve(200);

    cosa potrebbe essere?????

    Ho Arduino uno …….grazie e buona serata

      • OK …….il caricamento degli sketch sono andati a buon fine.
        Ora altro problema (scusa se ti rompo):
        1. mi potresti mandare uno schema dove collegare il condensatore a Arduino tra il reset e gnd;
        3. come faccio a dare i permessi, WWW-DATA cosa sognofica???
        2. ho caricato i rimanenti file su srv/http (considera che ho un POGOPLU con sopra archlinuk per monitorare l’impianto fotovoltaico tramite 123aurora in remoto, sempre connesso ad internet) mi si carica la pagina come nella tua figura ma poi diventa inacessibile.
        Grazie ancora per la tua disponibilità. Poi mandarmi anche tramite la mia email

      • Ciao Roberto,
        rispondo ai tuoi dubbi:
        1 – Il condensatore ha due PIN. Uno va su RESET e l’altro su GND, non ti puoi sbagliare.
        2 – Per dare i permessi devi eseguire il seguente comando (Testato su Ubuntu, Debian e Raspberry PI): usermod -a -G dialout www-data
        3 – Diventa inaccessibile perchè se non comunica con Arduino automaticamente la pagine diventa inaccessibile in modo che si ha la certezza che la nostra interfaccia non sta comunicando con le uscite (o le entrate di Arduino)
        A presto

  2. foto reali del progetto si possono vedere?
    tipo il collegamento dei fili da arduino a le apparecchiature controllate (immagino con in mezzo un relè).
    comunque complimenti davvero per il progetto.

    • A breve pubblicherò qualche foto, comunque non è che ci sia un granché da vedere…
      Tra Arduino e il Raspberry c’è solo un cavo USB. Il resto dipende da cosa vuoi collegare.
      Nel mio caso specifico ho collegato una “Relay Shield”, ma qualsiasi uscita è accetta.
      A presto

  3. Ciao,

    ho fatto anche io un progetto analogo per monitorare i sensori pir dell’antifurto piu’ alcuni sensori di temperatura; i dati dell’arduino vengono elaborati con degli scripts in python che archiviano su DB e creano delle pagine statiche con i grafici dello storico per ora e giorno e lo stato istantaneo aggiornato ogni 30sec. Inizialmente ho usato un guruplug poi sono passato al Raspberry Pi ma con quest’ultimo ho problemi di instabilita ( hang randomici del RPi ) parlando con arduino tramite USB.
    Che distribuzione linux stai usando su RPi ?
    Hai avuto problemi analoghi ?

    Ciao
    Michele

    • Ciao Miki,
      io uso l’ultima debian (raspbian) che mi pare la più stabile…
      Per quanto riguarda gli hang periodici gli ho sperimentati anche io, ma solo con convertitori USB/Seriali con chip FTDI, mentre con il convertitore seriale integrato in Arduino UNO, non ho avuto problemi (il mio circuito è accesso da circa un mese).
      Se non è una delle cose di cui sopra, potrebbe essere legato a qualche error / bug in python.
      A presto
      Luca

    • Ciao Michele.
      Sto cercando da farre un proggetto simile col tuo. Potresti darmi una mano? Qualche dritta per il sketch del arduino e per il sito web del server?

      Grazie,
      Marian

  4. Ciao scusa ho modificato il codice in modo da poter accendere le luci anche con i pulsanti, l’unica cosa e che ora lo sto testando, e capita a volte che le luci si accendano da sole. Sui pulsanti ho usato delle resistenze da 10kohm. Secondo te da cosa potrebbe dipendere?

  5. Ho provato a mettere il condensatore tra il reset e gnd, ma non funziona credo che sia un problema di permessi infatti con il comando “usermod -a -G dialout www-data” mi dice che non riconosce “dialout”. Nel frattempo ho acquistato la Ethernet Shield e con questa non si può adattare il codice dell’arduino anzichè con collegamento seriale con il collegamento ethernet, inviado i dati alla pagina php residente sul server di linux ????????

    • Ciao Roberto,
      ho ricontrollato tutto, ma è corretto (come spiegato anche qui: http://www.fritz-hut.com/tag/dialout/)…
      Se non funziona il comando, l’unica spiegazione è che stai usando una distribuzione Linux diversa… Io sto usando l’ultima raspbian (debian) disponibile sul sito…
      Fai questa verifica e fammi sapere…
      Ciao

  6. Avviso : impossibile aprire il dispositivo in / srv / http / php_serial.class.php on line 157

    Warning : dispositivo deve essere aperto in / srv / http / php_serial.class.php on line 541

    Attenzione : il dispositivo deve essere aperto per leggerlo in / srv / http / php_serial.class.php on line 474

    Notice : Undefined offset: 1 in / srv / http / ardudome.php on line 70

    Notice : Undefined offset: 2 in / srv / http / ardudome.php on line 70

    Notice : Undefined offset: 3 in / srv / http / ardudome.php on line 70

    Notice : Undefined offset: 4 in / srv / http / ardudome.php on line 70

    Notice : Undefined offset: 5 in / srv / http / ardudome. php on line 70

    Notice : Undefined offset: 6 in / srv / http / ardudome.php on line 70

    Notice : Undefined offset: 7 in / srv / http / ardudome.php on line 70

    Notice : Undefined offset: 8 in / srv / http / ardudome.php on line 70

    Notice : Undefined offset: 9 in / srv / http / ardudome.php on line 70

    Notice : Undefined offset: 10 in / srv / http / ardudome.php on line 70

    Notice : Undefined offset: 11 in / srv / http / ardudome.php on line 70

    Notice : Undefined offset: 12 in / srv / http / ardudome.php on line 70

    Notice : Undefined offset: 13 in / srv / http / ardudome.php on line 70

    Notice : Undefined offset: 14 in / srv / http / ardudome.php on line 70

    Notice : Undefined offset: 15 in / srv / http / ardudome.php on line 70

    Notice : Undefined offset: 16 in / srv / http / ardudome.php su linea 70

    Notice : Undefined offset: 17 in / srv / http / ardudome.php su

    Questo è la pagina ardudome.php (tradotta in italiano)

    • Problema di permessi, non hai il permesso di usare la seriale.
      In debian il gruppo è “dialout”: devo cercare come dare i permessi con ArchLinux…
      Ti farò sapere.
      A presto
      Luca

  7. OK il comando è “usermod -a -G uucp www-data” a posto dialout ho sostituito uucp. Ora mi dice che www-data non esiste. Considera che la cartella di linux dove ho copiato i file html e php è /srv/http. Ho provato a mettere http a posto di www ma mi da sempre errore credo che a questo punto ci sia qualcosa che non va su “www-data”. Ti ringrazio per la tua pazienza 🙂

    • Tranquillo, son qui apposta… 🙂
      Devi vedere con quale utente viene lanciato lo script php…
      Solitamente è www-data, ma potrebbe essere un’altro utente.
      Verifica innanzitutto se usi apache o cherokee come web server, e cerca di capire quale utente usa.
      Puoi anche fare un “ls -al” sotto srv e verificare http a quali gruppi/utenti appartiene.
      Fammi sapere.
      A presto

  8. Notice: Undefined offset: 1 in /var/www/ardudome/ardudome.php on line 69

    Notice: Undefined offset: 2 in /var/www/ardudome/ardudome.php on line 69

    Notice: Undefined offset: 3 in /var/www/ardudome/ardudome.php on line 69

    Notice: Undefined offset: 4 in /var/www/ardudome/ardudome.php on line 69

    Notice: Undefined offset: 5 in /var/www/ardudome/ardudome.php on line 69

    Notice: Undefined offset: 6 in /var/www/ardudome/ardudome.php on line 69

    Notice: Undefined offset: 7 in /var/www/ardudome/ardudome.php on line 69

    Notice: Undefined offset: 8 in /var/www/ardudome/ardudome.php on line 69

    Notice: Undefined offset: 9 in /var/www/ardudome/ardudome.php on line 69

    Notice: Undefined offset: 10 in /var/www/ardudome/ardudome.php on line 69

    Notice: Undefined offset: 11 in /var/www/ardudome/ardudome.php on line 69

    Non riesco ad uscirne!!!
    messo il consensatore, caricato lo sketch, mi da sempre questo errore. Ho visto che potrebbero essere i permessi ma non so come fare.

    • Probabilmente è un problema di permessi…
      Che versione di linux hai?
      Hai eseguito il comando “usermod -a -G dialout www-data”?
      A presto

      • risolto!!!! erano i permessi!!!!!!!! Ma se volessi mettere i dati in mysql come posso far?

      • Ciao Luigi,
        sono contento che hai risolto… per quanto riguarda mySQL, va implementato il software per la gestione del DB…
        A presto

  9. ————————————————————————–
    [root@pogosemmy srv]# ls -al
    total 16
    drwxrwxrwx 4 root root 4096 Mar 16 02:25 .
    drwxr-xr-x 19 root root 4096 Jun 5 22:47 ..
    drwxrwxrwx 2 root ftp 4096 Mar 16 02:25 ftp
    drwxrwxrwx 12 root root 4096 Jun 5 22:48 http
    ———————————————————————-
    [root@pogosemmy dev]# ls -l ttyACM0
    crw-rw—- 1 root uucp 166, 0 Jan 1 1970 ttyACM0
    —————————————————————————

    Ricapitolando:

    1) Cherokee lavora con utente e gruppo “http”;
    2) la cartella “http” con utente e gruppo “root”;
    3) la ttyACM0 con utente e gruppo “root” e “uucp”;

    non ci sto capendo piu nulla …. 🙂 qual’è il comando che mi abilita i permesso sulla ttyACM0 ?????

  10. Penso che dovrò rinunciarci……… 😦 non funziona……..

    Avviso : impossibile aprire il dispositivo in / srv / http / ardudome / php_serial.class.php on line 157

    Warning : dispositivo deve essere aperto in / srv / http / ardudome / php_serial.class.php on line 541

    Warning : dispositivo deve essere aperto a leggerlo in / srv / http / ardudome / php_serial.class.php on line 474

  11. Spero di essere in tempo..allora ho messo su tutto, ho dato i permessi a www-data
    ma quando vado sulla pagina php mi da questo errore:

    Notice: Undefined offset: 1 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 2 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 3 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 4 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 5 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 6 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 7 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 8 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 9 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 10 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 11 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 12 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 13 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 14 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 15 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 16 in /var/www/arduinoWeb/ardudome.php on line 70

    Notice: Undefined offset: 17 in /var/www/arduinoWeb/ardudome.php on line 70
    {“02″:0,”03″:0,”04″:0,”05″:0,”06″:0,”07″:0,”08″:0,”09″:0,”10″:0,”11″:0,”12″:0,”13″:0,”14″:0,”15″:0,”16″:0,”17″:0,”18″:0,”19”:0}

    Inoltre se vado sull’html è tutto disabilitato.

    Potresti aiutarmi??

    Grazie mille!!

    • ho messo un alert nel js nella parte dell’error del json e mi tira fuori questo:
      SyntaxError: Unexpected token ,<

      Help! 😉

      • Il problema è comunque nella comunicazione, perchè il file php non risponde correttamente…
        Hai disabilitato l’autoreset su Arduino?
        Hai provato a lanciare lo script da riga di comando da root?
        Fammi sapere
        A presto

  12. Ciao, bello il progetto ed in settimana lo metterò in pratica.
    Ti chiedo invece se hai mai pensato di far comunicare arduino e rasp via ethernet perche tipo nel mio caso avrei più piani in casa e non vorrei viaggiare con cavi “seriali” in giro per la casa mentre per l’impianto di rete è tutto cablato.
    Tu che mi consigli?

    Ciao Max

    • Ciao,
      lo scopo del progetto è proprio quello di non usare ethernet su Arduino.
      Ma non serve viaggiare con cavi seriali, semplicemente colleghi il Raspberry Pi alla rete, in un punto vicino ad Arduino.
      A presto

      • Ok, ma nel progetto riesci a gestire tutte le luci di una casa e varie prese? se si come hai sviluppato la parte hardware?

      • Certamente,
        ho semplicemente collegato un modulo con 4 relais, alla quale ho collegato le varie luci e prese.
        Niente di speciale.
        A presto

      • quindi tu hai collegato solo 4 rele, non sei andato oltre, io per domonica mi immagino tutta la casa cablata quindi circa 22 rele per le luci e 25 pulsanti, quindi immaginavo qualcosa di più… ecco perche immaginavo un paio di arduino per dividere i piani della casa e quindi comandarli con le seriali…
        comunque un buon inizio che merita da testare. bravo

      • Ah ok, ora mi è un po’ più chiaro.
        In realtà ho collegato 4 relais, 4 pulsanti, un display LCD e un ricevitore infrarosso (per usare anche un telecomando).
        La cosa più semplice ed economica per utilizzare tutte quegli ingressi / uscite è usare un Arduino Mega (che ha 54 I/O), così non hai bisogno di due “Arduini”.
        Il codice funziona già anche per il mega. Si tratta di modificarlo per permettere di gestire tutte le uscite e/o ingressi.
        Eventualmente puoi usare anche più “Arduini” e la cosa più semplice per farli comunicare su più piani è usare dei moduli radio 433Mhz a bassissimo consumo (tipi quelli delle centraline meteo) e scambiarsi i dati in quel modo.
        Eventualmente se vuoi usare il cavo di rete puoi usare due Raspberry Pi (o più) con i due (o più) “Arduini”. A quel punto fai comunicare tra di loro i due raspberry (tipo fai un’interfaccia web unica, che però punta a due siti diversi – uno per il piano A ed uno per il piano B).
        A presto

  13. Be diciamo che mi immaginavo che un rasp pilotasse un arduino uno, questo per moltiplicare le uscite userei un hc595 o più di questi in serie, per gli ingressi userei 6 resistenze ad ogni canale analogico cosi da avere 5 pulsanti con 5 cadute di tensione diverse. per spostarmi dal primo al secondo piano sono limitato come passaggio cavi quindi immaginavo o una comunicazione tramite eth o tramite seriale, cioè il primo ardu funge da “master” mentre il secondo da slave se le comunicazioni viaggiassero tramite eth (ma il sito deve risiedere sul rasp perchè arduino e troppo lento per ste cose) e comunicasse con entrambi gli ardu sarebbe il massimo dato che la casa è totalmente cablata…
    comunque un cave com riesco a farlo passare…

    • Chiaro,
      il problema è che il costo di una Ethernet Shield per Arduino equivale ad un Raspberry Pi, è per quello che non ho implementato la comunicazione ethernet tra più Arduino.
      A questo punto risolvi o mettendo un’altro Raspberry Pi collegato ad Arduino e poi fai comunicare i due Raspberry Pi tra di loro.
      Oppure se hai pazienza attendi un mesetto che esce Arduino Yun con ethernet integrata.
      A presto

  14. Ciao Luca,
    grazie per aver condiviso questo articolo e complimenti, molto interessante e devo dire che funziona.
    Ho giusto due domande:
    – a un input dell’arduino ho attaccato un sensore di tempereature TMP36. Il valore che trovo sulla pagina web é il valore raw ((raw *5/1024)-5)*100 e ho la temperatura in gradi °C. Come faccio a far fare questo calcolo alla pagina web? (come ad esempio nello screenshot che hai messo)

    – qualche suggerimento su come potrei loggare in un database la temperatura ogni ora ad esempio? pensavo uno script schedulato che via seriale interraga I valori, ma ho notato che se spio con “cat /dev/ttyACM0” l’interfaccia web non funziona piu’. Significa che in parallelo non posso leggere (e nemmeno scrivere) sulla seriale e contemporaneamente avere l’interfaccia attiva?

    grazie
    Ciao
    dk

    • Ciao Aldo,
      mettiamo che il tuo input sia ad esempio sul pin 15, puoi aggiungere nel file “ardudome.js” la riga:
      if(parseInt(index)==15) $('#P15').html(parseFloat(Math.round((((value*5)/1024)-5)*100*10)/10).toFixed(1)+"°C");
      dopo la riga 66:
      $('#P'+index).text(value);

      A presto

  15. Ciao a tutti, bellissimo il progetto, stavo implementando il codice per poter pilotare una tapparella (su/giù) ma mi sono bloccato con il pulsante slider. Potete aiutarmi? tipo uno slider che al centro è off, a destra sia on sallita (e magari il codice fa anche controllo che sia off discesa) e a sinistra sia on discesa (e ovviamente codice controlla che il relè sia off salita). Il codice ho già pronto e per ora funziona con 3 pulsanti, uno salita uno discesa e centrale stop motore. Potete aiutarmi con grafica e slider?? GRAZIEEE

  16. altra domanda, quali file devo modificare per implementare le uscite a 53 invece che a 13 (per usare arduino mega per esempio)?, per il file html e grafica no problem, ma non riesco a capire cosa modificare, ho provato a modificare 53 al posto del 13 nei vari file, ma non funziona. Il tasto nell’interfaccia web funziona, ma non accade nulla, non si accende il led 22 per esempio…
    grazie !!

  17. Ciao toggio, in realtà dopo varie prove, mi funzionano solo 48 IO di arduino su 53, e poi ho un po’ di problemi se collego anche lo shield ethernet di arduino su arduino, forse xchè lo shield usa alcune IO. Se ti mando il codice (quello tuo, ampliato a 53) puoi aiutarmi a controllare che tutto sia corretto?

    • Ciao Sergio,
      è ovvio che con la schield ethernet crea problemi… Devi lasciare da parte i PIN utilizzati… Il mio era solo un’esempio…
      Ti conviene decidere quali pin usare (ad esempio la shield di sicuro non userà quelli dal 30 in su) e fissare un range (per esempio 30-47).
      A presto

      • e infatti immaginavo, un’altra cosa, ho rimodificato il tutto dal pin 14 al 47, ma continua a darmi una serie di errori sul ardudome.php, una serie di righe tipo
        Notice: Undefined offset: 12 in /var/www/ardudome.php on line 70
        13 – 14 -15 ecc fino al 45
        i permessi e la lettura della seriale da parte del rbpi tutto ok,
        sembra che varia in base al valore inserito qui

        $tempArray=explode(“\n\n”,$read,47);

        // create array with read values
        for ($i = 14; $i<=47; $i++) {

        dove sbaglio??? me lo dava anche prima ogni tanto quando erano 53, se carico il tuo ardudome.php tutto torna ok…

      • Ok.
        A questo punto il problema sembrerebbe legato alla velocità della seriale. Se il problema come dici tu, si presenta “a volte”, sembrerebbe proprio essere un problema di questo tipo. Prova a portare la seriale a 115200 e partire con 20 pin per poi salire pian piano di 5 alla volta.
        A presto

  18. Ciao Toggio,

    ho provato il tuo ambiente: funziona!
    Il mio obiettivo è avere anche input digitali, per cui proverò a modificare il codice in Functions.ino, a meno che tu mi consigli qualcos’altro… 🙂

    Grazie comunque per il buon inizio!

    Luigi

    • Ciao Luigi, la cosa più semplice è quella di usare gli ingressi analogici come se fossero digitali… se applichi un ingresso digitale su una porta analogica otterrai un valore tra 0 e 511 per lo stato logico OFF e un valore tra 512 e 1023 per lo stato logico ON. Altrimenti puoi modificare lo sketch Arduino in base alle tue necessità.
      A presto.

  19. ciao toggio, voglio mostrare nella pagina web la temperatura come nel tuo screenshot, usando un DS18B20 con la funzione: temp=sensors.getTempCByIndex(0):cosa devo modificare in html, php e js
    per ottenere il risultato come nella tua foto?
    a presto

    • CIao Lappy,
      devi modificare un po’ tutto il codice, ma la cosa è abbastanza complessa…
      Guarda bene il codice di esempio e prova a modificarlo di conseguenza.
      A presto

  20. ciao ragazzi ho dei dubbi da risolvere e spero che qualcuno mi aiuti.im casa ho il comando delle luci con relè 220v della finder a doppio stato. ora pensavo di collegare la shield relè che ho con arduino come se fossero dei pulsanti aggiuntivi e sfruttare il secondo contatto del relè finder per comunicare lo stato del relè ad arduino ed al server. solo che non ho la più pallida idea di come fare con il codice.

  21. ciao io vorrei adattare il codice per comandare i miei relè passo passo in pratica dovrei portare le uscite di Arduino in high per qualche decimo di secondo . poi il relè passo passo ha un contatto che simula un. interruttore se high la luce e’ accesa. ma non so come fare

  22. Bellissimo progetto ! Proprio quello che stavo cercando ! Ho un problema però: io uso un arduino Mega e non so cosa devo modificare per far funzionare tutte le altre uscite.
    Sono riuscito a modificare l’html per fare in modo che vengano visualizzati molti più pulsanti ma immagino che ora ci sia da modificare anche il file php, e il JS perché da quello che ho capito tu fai un controllo che il pulsante premuto (nella pagina) sia compreso tra 2 e 13. Per la parte Arduino dovrei riuscire anche se devo capire bene qual è il comando preciso che arriva sulla seriale quando premo per esempio il pulsante P02 nella pagina web. Sulla seriale viene inviato il comando *CMD02H/ o *CMD02T/ ? Oppure nessuno dei due ?!?

  23. Complimenti, bellissimo progetto! Ha funzionato tutto al primo colpo!
    Avrei un paio di domande; sono un elettricista, quindi in collegamenti e tutto chiaro, ma in programmazione sono veramente scarso e x questo mi piacerebbe capire e imparare!
    1 – nella descrizione parli anche di comandi locali, tramite pulsanti; che attivano sempre le stesse uscite attivabili da remoto! suppongo che sia parte di codice da aggiungere…potresti aiutarmi a capire?
    2 – solo x alcune uscite, come si può dare un comando temporizzato di una trentina di secondi (chiaramente sia da locale e che da remoto) x comandare la salita e la discesa delle tapparelle?

    • Ciao Tony e grazie per i complimenti!
      Per quanto riguarda i tuoi quesiti, ti consiglio di fare delle ricerche su internet. Ti posso comunque dare un paio di spunti. Per i comandi locali, cerca articoli che riguardano l’utilizzo dei pulsanti su Arduino, mentre per il discorso temporizzato è un po’ più complesso… Prossimamente pubblicherò un’articolo sulle temporizzazioni…
      A presto!

      • Ho seguito il tuo consiglio sulla funzione pulsante, che ho capito e funziona! ma inserendola nel tuo codice, non riesco a farla funzionare, mi causa un blocco nella pagina web, e non funziona più nulla!! help!

  24. Ciao, complimenti per il progetto .. E tutto aveva bisogno. Peccato che non so molto di programmazione ..
    Volevo vedere se mi può aiutare, io non sto ottenendo il file ardudome.ino dare questo errore, initializePins, chiedendo di impostare questo, ecco nei commenti che ho visto è stato il file mancanza functions.ino, qui è più come faccio a caricare perguna i due file invece?

    Un’altra domanda che volevo mettere un cursore di tipo pulsante per controllare una lampada in una delle uscite PWM, potrebbe dirmi come fare, se possibile, alcuni comandi presenti sul web, ma non ho potuto farlo funzionare .. Sono molto male necessità di programmazione, se non occupa molto del vostro tempo e mi può aiutare, mi dispiace perché sto utilizzando google traduttore per parlare qui .. Successo abbracci partner.
    att: Andre Rds.

    • Caro Andrerds,
      il file function.ino va messo nella cartella assieme al file principale: in questo modo verrà caricato direttamente nell’IDE di Arduino.
      Per quanto riguarda il PWM, è una delle cose che mi ero posto di fare, ma al momento risultava abbastanza complicato. Dovrei riuscire prossimamente, tempo permettendo, ad implementare anche questa funzionalità.
      A presto

  25. Ciao e complimenti per il progetto. ottimo.

    ti volevo chiedere come si fa a caricare i file nel raspberry (nella cartella var/www).

    Grazie

  26. Hey! , Toggio,
    Quanto sopra potrebbe risolvere il mio problema,
    Comandi impartiti tramite la porta seriale (exemplor CMD12H * /) tutto ha funzionato perfettamente, il mio problema ora e Php. mi sta restituendo gli errori di seguito.

    Warning: Reading serial port is not implemented for Windows in C:\xampp\htdocs\ardudome-master\php_serial.class.php on line 503

    Notice: Undefined offset: 1 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 2 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 3 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 4 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 5 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 6 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 7 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 8 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 9 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 10 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 11 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 12 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 13 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 14 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 15 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 16 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71

    Notice: Undefined offset: 17 in C:\xampp\htdocs\ardudome-master\ardudome.php on line 71
    {“02″:0,”03″:0,”04″:0,”05″:0,”06″:0,”07″:0,”08″:0,”09″:0,”10″:0,”11″:0,”12″:0,”13″:0,”14″:0,”15″:0,”16″:0,”17″:0,”18″:0,”19”:0}

    Mi potete aiutare?
    Grazie!

  27. Ciao, complimenti per il sito (e per la lampada…).
    Anche io sto realizzando un impianto domotico e vorrei renderlo ‘auto aggiornante’ come hai fatto tu con AJAX.
    Purtroppo questo linguaggio proprio non lo conosco.
    Saresti così gentile di commentare le varie function presenti all’interno del file “ardudome.js”.
    Grazie, Simone.

  28. Ottimo progetto. Io sto iniziando a studiare questo mondo e ho intenzione di aggiungere altre funzionalità. Tuttavia riscontro il solito problema ( Notice: Undefined offset: 1 in /var/www/ardudome.php on line 70 ). Il mio arduino Uno REV3 è collegato ad un pc con ubuntu 12.04.4.

    Ho dato il comando “usermod -a -G dialout www-data” e “sudo chmod 666 /dev/ttyACM0
    “. La porta dovrebbe essere quella giusta visto che dmesg mi da questo “[1882144.794097] cdc_acm 3-2:1.0: ttyACM0: USB ACM device”.

    Inoltre ho disabilitato l’autoreset in questo modo —> https://docs.google.com/file/d/0B7OLu7EN8ZW-bHhGOFN4RmVHVFE

    • [RISOLTO] In pratica se collegate arduino al pc tramite HUB USB non riuscirete a comunicare tramite seriale.

  29. Ciao, complimenti per il progetto è utilissimo per chi vorrebbe fare un impianto economico di domotica a casa 🙂 … Sono riuscito a farlo funzionare perfettamente, però ho un problema ora. Come faccio a far leggere un segnale analogico e inviarlo al php? Che parte dello sketch devo modificare? Lo sketch legge il valore analogico però se voglio gestire quel valore e inviarlo al php come posso fare? Come ad esempio il valore di temperatura di un sensore come il ds18b20 ( così come illustrato nell’immagine di copertina dell’articolo ). Spero di averti fatto capire il mio problema… Grazie mille ! A presto 🙂

    • Ciao Giuseppe,
      il software fa già le letture dei segnali analogici e le trasferisce in automatica allo script PHP.
      Il valore trasferito sarà sempre un valore da 0 a 1023, e poi o in PHP, in js andrà fatto il calcolo per la conversione in temperatura.
      A presto

      • Ciao Luca, grazie mille per avermi risposto 🙂 … Infatti studiando bene come avveniva il funzionamento sono riuscito a risolvere il problema aggiungendo delle funzioni in php… Grazie ancora per questo utilissimo progetto!!! A presto!

  30. Ciao,
    complimenti per il tuo progetto, ho seguito la procedura
    da te indicata, ma mi sono bloccato sulla pagina di test
    ardudome.php che mi da una serie di errori tipo il seguente:

    Notice: Undefined offset: 1 in /var/www/HTML/ardudome.php on line 70

    Il Sistema operativo che sto usando è Centos con Apache,
    ho dato i permessi alla usb /dev/ttyACM0 inserendo la
    user apache nel gruppo uucp.
    Ho copiato i seguenti files, in /var/www/HTML
    ardudome.css
    ardudome.html
    ardudome.js
    ardudome.php
    php_serial.class.php

    Se apro la pagina http://localhost/ardudome.html si apre
    l’interfaccia con tutti gli slide che rimangono abilitati
    per 2-3 secondi e poi si disabilita tutto, se faccio un refresch
    della pagina si riabilitano per 2-3 secondi e poi si disabilita tutto
    di nuovo.
    Se porto a ON uno degli slide prima che venga disabilitato, funziona.

    Se punto direttamente a http://localhost/ardudome.php?pin=P13&cmd=1
    funziona e mi porta a 1 l’uscita 13 dell’Arduino.

    Mi sapresti aiutare a risolvere questo problema?

    Grazie

    Paolo

      • Ciao,
        l’autoreset è già disabilitato inserendo il condensatore da 10uF fra la GND e il Reset di Arduino.

      • Ciao,
        non so più cosa fare… ho ricontrollato tutto, ma il problema è sempre lo stesso che ti ho descritto il 4 novembre, forse non è compatibile con CentOS? Altre idee?
        Grazie
        Paolo

      • Ciao,
        sono finalmente riuscito a far funzionare il tutto sul Raspberry!
        Ma ho un problema con la lettura della temperatura usando il sensore LM35 su uno degli ingressi analogici. In pratica aggiungendo la seguente riga,
        if(parseInt(index)==14) $(‘#P14’).html(parseFloat(Math.round(value*0.5)).toFixed(1)+”C”);
        nella pagina ardudome.js appena dopo la riga 66, la temperatura viene correttamente letta, ma i valori continuano ad oscillare come per gli ingressi analogici che non hanno nulla di collegato.
        Il sensore funziona correttamente perchè l’ho testato collegandolo in un altro progetto solo con l’Arduino e i valori di temperatura letti sono precisi e stabili.
        Mi sai dire se c’è altro da modificare nel codice della pagina ardudome.js?

        Grazie!

        Paolo

  31. Ciao,

    intanto complimenti per il tuo progetto e grazie per averlo condiviso.
    Sto cercando di fare un lavoro simile al fine di farlo funzionare con arduino Yun in modo da poter evitare il collegamento usb con il RaspberryPI e sfruttare invece le librerie bridge.
    L’idea è quella di poter avere un webserver che sia aggiornato sullo stato dei sensori/attuatori dello Yun, e da questo comandare/controllare lo Yun.
    Partendo dal tutorial del Bridge (http://arduino.cc/en/Tutorial/Bridge) ho fatto uno sketch che restituisce una stringa (es. {0000100518011148100}) corrispondente allo stato dei vari sensori/attuatori in uso, e sul server ho fatto una paginetta php che via curl (anzichè via usb/seriale) va a recuperarsi questi dati e li restituiscein formato json.
    Facendo alcuni test mi sono reso conto che la risposta dello Yun interrogato via web è piuttosto lenta, (qualcosa che va mediamente da 500 a 2000 ms per ottenere la stringa), pertanto inadeguata ad essere sfruttata in un sistema dove sapere se un attuatore è acceso o spento è fondamentale o poter accendere un carico senza dover aspettare 2 secondi è quantomeno auspicabile. 🙂
    Cercando in rete ho capito che il problema è noto, allora ho pensato di sfruttare la parte linux dello Yun per ottenere la stringa.
    Ho trovato questa libreria (https://github.com/arduino/YunBridge/blob/master/bridge/php/bridgeclient.class.php) che mi ha portato sin qui e che, se non ho capito male, dovrebbe interfacciarsi con lo sketch sullo Yun e farmi ottenere in maniera molto più immediata i dati che mi occorrono, ma non capisco bene come usarla.
    Saresti così gentile da spiegarmelo?

    Grazie 1000

  32. Ciao, è la prima volta che ti scrivo e ti faccio i complimenti per il progetto.
    Nel provarlo non ho avuto problemi e funziona tutto.

    Ora però vorrei personalizzare l’interfaccia grafica inserendo nuovi slider e renderlo compatibile con uno sketch che gira su Arduino Uno che di fatto controlla le uscite di 5 moduli di espansione per mezzo del bus i2c.

    Ho iniziato a rivedere il codice del mio sketch di Arduino, utilizzando la tua sintassi per i comandi seriali. Quindi, nella parte relativi ai comandi seriali ho inserito quanto segue, per esempio per lo slider P02:

    if (inputString == “*CMD02V/”)Serial.println(StatoAttualeUscita0[0]); // StatoAttualeUscita0[0] è un boolean
    if (inputString == “*CMD02L/”)SpegniUscitaPP(0,0);
    if (inputString == “*CMD02H/”)AccendiUscitaPP(0,0);

    Eseguendo il debug dello sketch non ci sono problemi sia nell’inviare i comandi attraverso il serial monitor sia nel ricere 0 o 1 per gli stati uscita.

    Pur non avendo fatto alcuna modifica nei file php, html e js caricati nella cartella /var/www/ del raspberry (salvo aver tolto le parti riguardanti i valori letti dei pin analogici solo nella pagina html) la pagina html non risulta disponibile e la causa non è da imputare all’autoreset

    Penso che il problema possa essere nei vari file .js o .php ma non ne capisco il motivo visto che ho tenuto gli stessi comandi seriali del tuo progetto e, per ora, anche lo stesso numero di slider.

    Avrei bisogno cortesemente di una tua dritta.
    Grazie in anticipo
    Ciao

  33. CIao,
    complimenti per il progetto, molto bello, ed infatti sto cercando di attuarlo anche io 😉
    Ho però un problema, ovvero avendo una Raspberry B+, con 4 porte usb, non riesco a capire qual è l’indirizzo della porta usb a cui è collegato l’arduino!
    Dando dal raspberry “lsusb -v” vedo che è connesso, mi appare questa schermata ( http://s12.postimg.org/5dw1tmi19/RB_Arduino.jpg ) ma non capisco qual è il suo indirizzo da utilizzare 😦
    Mi puoi aiutare? Sai se c’è un altro comando da usare nel raspberry per ottenerlo?

    Grazie 🙂

    P.S.: Un altro piccolo dubbio, ma l’arduino oltre a connetterlo via usb al raspberry, lo devo anche alimentare? Non facendolo si accende, ma non so se è stabile/corretto

  34. ciao ,
    ho provato il tuo progetto con un arduino 2009 e la parte php su un server ubuntu 12.
    ho seguito tutte le indicazioni ( condensatore , permessi www-data ,)
    quando lancio ardudome.php ottengo questo errore :

    root@frserver:/var/www/tana# php ardudome.php
    PHP Notice: Undefined offset: 1 in /var/www/tana/ardudome.php on line 70

    Notice: Undefined offset: 1 in /var/www/tana/ardudome.php on line 70
    PHP Notice: Undefined offset: 2 in /var/www/tana/ardudome.php on line 70

    ripetuto per tutta la lunghezza dell’array,

    Leggendo altri commenti sembrerebbe un problema di permessi.
    Ho fatto varie prove ma nulla.

    Allora ho modificato il php facendo leggere lo stato solo del pin 14 ( A1) , e ottengo un valore :
    root@frserver:/var/www/tana# php rf.php
    “317\r\n”root@frserver:/var/www/tana# php rf.php ~
    “324\r\n”root@frserver:/var/www/tana#

    quindi penso che la comunicazione avvenga in modo corretto.
    Potresti darmi qualche indicazione ? forse non è compatibile con Arduino 2009 ?

    grazie
    ciao
    fabrizio

  35. Ciao e complimenti. Io ho realizzato una pagina web con cui controllo tramite il mio raspberry le luci di casa (non uso arduino). Tutto funziona perfettamente ma volevo inserire i pulsanti switch come i tuoi. Mi puoi aiutare?? se ho capito bene il file JS serve a fare da ponte tra html e php. Mentre php dovrebbe indicare l’accensione e lo spegnimento delle luci facendo riferimento al mio file luceon.py o luceoff.py. Ho provato a fare modifiche partendo da tuoi file ma non ci riesco. Grazie mille in anticipo

  36. Ciao, e’ tanto tempo che sto lavorando con uno sketch per domotizzare la mia casa. Ho un arduino mega 2560 e una eterneth shield. .poi ho preso un raspberry b+ e cercando cercando ho trovato il tuo progetto.Fantastico davvero !!!!
    Ho bisogno di un aiuto.
    I file per arduino li ho caricati perfettamente ..mentre non so come caricare gli altri file su raspberry. ..iinoltre ho sei sensori mcp9700a e/to che non so come adattare al tuo progetto.
    Resto a tua disposizione per altre informazioni.

    Grazie !!!!

  37. Ciao, complimenti per il progetto, mi chiedevo se potesse girare su un vecchio smartphone android, collegato ad arduino con cavo otg.

  38. Ciao e complimenti per il lavoro, installato tutto seguendo la guida, nessun problema.
    Ora pero ti volevo fare una domanda, usando una arduino mega ho provato a non usare la usb ma una delle sue seriali aggiuntive con un max232 per la conversione ttl seriale.
    Se provo uno sketch con arduino e il pc la seriale funziona perfettamente a 38400, se pero cambio i parametri nel file php, mettendo come seriale /dev/ttyS0, quando apro la pagina web rimane inattiva, come posso risolvere??
    Su puo usare una delle altre seriali dell’Arduino Mega o no ?

    Grazie

  39. Ciao, ottimo progetto. Da quello che intuisco, tramite Smart Phone mi collego al tuo sistema se sono in casa e mi collegi tramite wifi. Ma se fossi fuori casa e mi volessi collegare al tuo sistema tramite smartphone che cosa dovrei fare. Saluti

  40. Ciao Luca
    Gran bel progetto, volevo chiederti se è possibile cambiare il nome ad esempio OUT 02 in Corridoio e volevo sapere che tipo di sensore hai utilizzato per la temperatura . Io ho provato con un lm35dz ma mi sballa la temperatura.

    Grazie

  41. Ottimo lavoro e ben fatto. Ho letto nella tua presentazione che parlavi di poter utilizzare ardudome anche con un pulsante. Dato che non sono molto esperto, ma vorrei utilizzare anche con pulsanti manuali mi potresti spiegare come posso fare ad integrali.
    Ciao e grazie

  42. Ciao Toggio,

    ho dei LED collegati su Arduino ai pin 13, 12 e 11, che vorrei accendere tramite una pagina php presente su raspberry, i due sono collegati tramite seriale USB.

    Il collegamento seriale funziona
    la pagina php funziona
    accedendo da remoto al raspberry con l’ IDE riesco ad accendere regolarmente i LED

    non riesco ad accendere i led dalla pagina php

    ho controllato più volte la guida seguita e ne ho controllate altre per confrontarle, ma niente dovrebbe essere solo un problema di permessi è possibile?

  43. ciao, vorrei utilizzare questo tuo codice come partenza per un mio progetto ma non riesco a farlo funzionare.
    volevo creare una diversa mappatura di I/O e una comunicazione bidirezionale.
    puoi darmi una mano?

  44. Ciao, complimenti per il lavoro svolto…Eccellente!!! mi servirebbe oltre a leggere i valori dei pin far passare un valore intero e leggerlo sull’interfaccia, magari con l’implementazione html me la saprei cavare da solo, Grazie in anticipo

  45. Ciao Luca, sono riuscito a capire come implementare con il passaggio dei valori interi, ora mi sono bloccato con l’autentificazione e ti posto il codice

    “password” );
    $valid_users = array_keys ( $valid_passwords );

    $user = $_SERVER [ ‘PHP_AUTH_USER’ ];
    $pass = $_SERVER [ ‘PHP_AUTH_PW’ ];

    $validated = ( in_array ( $user , $valid_users )) && ( $pass == $valid_passwords [ $user ]);

    if (! $validated ) {
    header ( ‘WWW-Authenticate: Basic realm=”My Realm”‘ );
    header ( ‘HTTP/1.0 401 Unauthorized’ );
    die ( “Not authorized” );
    }
    ?>

    messo in testa sulla pagina in php funziona, ma se chiudo e riapro il browser e rientro si apre lo stesso senza farmi piu’ autenticare, se a questo punto aggiorno la pagina mi costringe ad autenticarmi.

    questo succede perchè sul tuo progetto non c’è aggiornamento di pagina ma si aggiornano solo i contenuti, e dopo un milione di prove non ci vengo a capo

    Sapresti aiutarmi a riguardo???

    Grazie 1000

Scrivi una risposta a tigre2297 Cancella risposta