Discussione:Termostato
Quando provo ad installare phpredis e lancio phpize mi viene restituito l'errore Cannot find config.m4. Make sure that you run '/usr/bin/phpize' in the top level source directory of the module
ho provato a rimuovere e reinstallare php5-dev, ma il problema permane. qualche suggerimento? grazie
Devi lanciare phpize nella cartella in cui hai scaricato gli script da github (se guardi nell'archivio https://github.com/phpredis/phpredis si trova nella cartella principale). Per trovarla puoi lanciare il comando find e vedere dove hai scaricato gli script
find / -name config.m4
vai nella cartella e lancia phpize da lì.
Daniele
Ciao Daniele e grazie per la risposta.
Ho seguito il tuo suggerimento e ho risolto il problema di installazione di phpredis.
Solo che ora, qualsiasi file php apro, ho una blank page. Ho alzato i livelli di log dal php.ini ma a quanto pare non c'è alcun errore e anche il classico file di test con il phoinfo() restituisce errore, ma solo una bella pagina bianca.
Se apro la pagina di default di ngix invece appare, ma quella è in html. Ho verificato se ci fosse qualche errore in php.ini, ma niente... non ci capisco più nulla.
Smadonnandoci ulteriormente sono arrivato alla situazione in cui tutti i file php non vengono eseguiti ma vengono 'scaricati'.
Quindi è un problema di configurazione di ngix col php. Ma ancora non ho risolto...
Ho aggiornato un pò la pagina che ho scritto ormai qualche anno fa. L'avevo riaggiornata ma qualcosa è di nuovo cambiato.
Sto reinstallando anche io un Raspberry ex novo dato che avevo in mente di aggiornare il progetto.
Ricontrolla, un attimo anche i passaggi iniziali, ho lasciato la cartella del server web predefinita, dato che ora nginx prevede /var/www/html.
Mi sono trovato nella tua stessa situazione ed ho sistemato con una modifica al file /etc/nginx/sites-enabled/default, la direttiva cha causava probemi era "include fastcgi.conf;"
location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi.conf; }
Ora la parte web funziona anche se non completamente perchè durante l'installazione di redis restituisce un errore: Una volta lanciato il "./configure [--enable-redis-igbinary]" restituisce queste errore:
checking if compiler supports -R... yes checking build system type... Invalid configuration `[--enable-redis-igbinary]': machine `[--enable-redis' not recognized configure: error: /bin/bash ./config.sub [--enable-redis-igbinary] failed
Ciao, il comando che hai dato "./configure [--enable-redis-igbinary]" non esiste.
Nel senso che le parentesi quadre si usano per indicare un parametro opzionale(in questo caso --enable-redis-igbinary). Significa che puoi dare il comando:
./configure
oppure
./configure --enable-redis-igbinary
Lancia semplicemente il primo comando.
ciao Ok ok ...faccio la mia mezzora di vergnogna! :D Però ancora non ci riesco, se apro le pagina http://raspberrypi2/html/termo/temperature.php appaiono le righe in testata... connect('127.0.0.1', 6379); $redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_NONE); $t_min_notte=$redis->get('t_min_notte'); $t_max_notte=$redis->get('t_max_notte'); $t_min_giorno=$redis->get('t_min_giorno'); $t_max_giorno=$redis->get('t_max_giorno'); ?> "Regolazione temperature termostato" (questo è il titolo della pagina). Quindi ancora qualcosa non va...
Potrebbe essere una configurazione di php se fai girare la paginetta con phpinfo, il parametro short_open_tag è settato a on?
Per intenderci nelle pagine si può iniziare a scrivere codice con <?php (short_open_tag indifferentemente on oppure off) oppure <? (short_open_tag deve essere settato ad on), io il codice lo scrivo con la forma abbreviata quindi solo con il minore e il punto interrogativo.
Vedi se il parametro è settato off dovresti provare a settarlo ad on agendo sui files php.ini.
Per controprova puoi modificare il tag di apertura di una pagina e vedere se così funziona.
Come ti avevo già scritto ricontrolla anche i primi passi, ho dovuto fare anche una modifica al file /boot/config.txt perchè a me non funzionava 1wire e non vedevo i sensori.
PS: nella mia installazione ex novo non ho modificato nulla e mi trovo short_open_tag settato on.
Ciao Daniele era proprio quel parametro! Modificato dal php.ini (e riavviato il tutto) ha funzionato. Grazie Mille!
Considera che ho installato tutto su un RSB 2 e che sono ripartito 3 volte da sistema operativo pulito (a forza di fare prove e modificare file di configurazione arrivavo al punto che non funzionava più nulla) eppure quel parametro era su Off.
Ancora non sono riuscito a far funzionare tutto (non leggo la temperatura) ma probabilmente è qualcosa sul path, non c'è stato verso di installare gli script sulla root) mentre quella modifica sul config.txt è stata una delle prime cose che ho fatto perchè in effetti non mi rilevava i sensori ed avevo trovato documentazione a riguardo.
Ti ringrazio ancora...e ti aggiorno sugli sviluppi! E complimenti per il lavoro.
Non se ne esce ..:)
Non mi appare nulla di grafico sulle pagine (intendo grafici o temperature) e sul log di ngix è un continuo avere righe con questi errori:
2015/12/31 15:22:30 [error] 520#0: *16 FastCGI sent in stderr: " PHP message: PHP Notice: Undefined index: start in /var/www/html/termo/termo.php on line 21 PHP message: PHP Notice: Undefined index: end in /var/www/html/termo/termo.php on line 21 PHP message: PHP Notice: Undefined offset: 0 in /var/www/html/termo/termo.php on line 53 PHP message: PHP Notice: Undefined offset: 0 in /var/www/html/termo/termo.php on line 54 PHP message: PHP Notice: Undefined offset: 0 in /var/www/html/termo/termo.php on line 55 PHP message: PHP Notice: Undefined offset: 0 in /var/www/html/termo/termo.php on line 56 PHP message: PHP Notice: Undefined offset: 1 in /var/www/html/termo/termo.php on line 53 PHP message: PHP Notice: Undefined offset: 1 in /var/www/html/termo/termo.php on line 54 PHP message: PHP Notice: Undefined offset: 1 in /var/www/html/termo/termo.php on line 55 PHP message: PHP Notice: Undefined offset: 1 in /var/www/html/termo/termo.php on line 56 PHP message: PHP Notice: Undefined offset: 2 in /var/www/html/termo/termo.php on line 53 PHP message: PHP Notice: Undefined offset: 2 in /var/www/html/termo/termo.php on line 54 PHP message: PHP Notice: Undefined offset: 2 in /var/www/html/termo/termo.php on line 55 PHP message: PHP Notice: Undefined offset: 2 in /var/www/html/termo/termo.php on line 56 PHP message: PHP Notice: Undefined offset: 3 in /var/www/html/termo/termo.php on line 47 PHP message: PHP Notice: Undefined offset: 3 in /var/www/html/termo/termo.php on line 53 PHP message: PHP Notice: Undefined offset: 3 in /var/www/html/termo/termo.php on line 54 PHP message: PHP Notice: Undefined offset: 3 in /var/www/html/termo/termo.php on line 55 PHP message: PHP Notice: Undefined offset: 3 in /var/www/html/termo/termo.php on line 56 PHP message: PHP Notice: Undefined offset: 4 in /var/www/html/termo/termo.php on line 47 PHP message: PHP Notice: Undefined offset: 4 in /var/www/html/termo/termo.php on line 53 PHP message: PHP Notice: Undefined offset: 4 in /var/www/html/termo/termo.php on line 54 2015/12/31 15:22:30 [error] 520#0: *16 FastCGI sent in stderr: "hp on line 47 PHP message: PHP Notice: Undefined offset: 8 in /var/www/html/termo/termo.php on line 53 PHP message: PHP Notice: Undefined offset: 8 in /var/www/html/termo/termo.php on line 54 PHP message: PHP Notice: Undefined offset: 8 in /var/www/html/termo/termo.php on line 55 PHP message: PHP Notice: Undefined offset: 8 in /var/www/html/termo/termo.php on line 56 PHP message: PHP Notice: A non well formed numeric value encountered in /var/www/html/termo/termo.php on line 65 PHP message: PHP Notice: A non well formed numeric value encountered in /var/www/html/termo/termo.php on line 65 PHP message: PHP Notice: Undefined offset: 9 in /var/www/html/termo/termo.php on line 46 PHP message: PHP Notice: Undefined offset: 9 in /var/www/html/termo/termo.php on line 47 PHP message: PHP Notice: Undefined offset: 9 in /var/www/html/termo/termo.php on line 53 PHP message: PHP Notice: Undefined offset: 9 in /var/www/html/termo/termo.php on line 54 PHP message: PHP Notice: Undefined offset: 9 in /var/www/html/termo/termo.php on line 55 PHP message: PHP Notice: Undefined offset: 9 in /var/www/html/termo/termo.php on line 56 PHP message: PHP Notice: A non well formed numeric value encountered in /var/www/html/termo/termo.php on line 65 PHP message: PHP Notice: A non well formed numeric value encountered in /var/www/html/termo/termo.php on line 65 PHP message: PHP Notice: Undefined offset: 10 in /var/www/html/termo/termo.php on line 46 PHP message: PHP Notice: Undefined offset: 10 in /var/www/html/termo/termo.php on line 47 PHP message: PHP Notice: Undefined offset: 10 in /var/www/html/termo/termo.php on line 53 PHP message: PHP Notice: Undefined offset: 10 in /var/www/html/termo/termo.php on line 54 PHP message: PHP Notice: Undefined offset: 10 in /var/www/html/termo/termo.php on line 55 PHP message: PHP Notice: Undefined offset: 10 in /var/www/html/termo/termo.php on line 56 PHP message: PHP Notice: A non well formed numeric value encounter 12015/12/31 15:22:30 [error] 520#0: *16 FastCGI sent in stderr: "et: 13 in /var/www/html/termo/termo.php on line 53
PHP Notice: non è un errore è solo una informazione quindi niente di preoccupante, per gli altri errori, penso possano dipendere dalla mancata lettura dei sensori di temperatura(se ancora non riesci a leggerli).
Hai modificato gli script 04_leggi_temperatura.sh e 05_memorizza_temp.sh per metterci gli indirizzi dei tuoi sensori?
Su redis vedi che i dati vendono correttamente pubblicati? Prova il comando
redis monitor
Io sto procedendo con la nuova versione, ma sono ancora un pò indietro con i test e con l'interfaccia. Ho anche riscritto il codice in python, dato che il tutto diventa più complesso puoò anche darsi che crei una immagine pronta per Raspberry Pi modello B, vediamo se riesco ad arrivare ad un punto soddisfacente.
Ciao Daniele e buon anno!
la temperatura dei sensori è stata l'unica cosa che ha funzionato sempre :), gli script restituiscono correttamente la temperatura.
Il mio dubbio infatti è proprio redis, per me non è correttamente funzionante e redis monitor mi restituisce 'comanda non trovato'. Ho provato a cercare anche tutti i file redis ma escono solo file di configurazione o cartelle.
Buon anno!
..ho sbagliato a scrivere....
redis-cli monitor
guarda che ho anche corretto la pagina, probabilmente mancava la schedulazione della memorizzazione temperature, se lanci il monitor e lo lasci aperto in un'altra finestra lanciando lo script 05_memorizza_temp.sh dovresti vedere passare un pò di inserimenti di valori.
Dopo lancia anche termostato.sh e dovresti completare il giro.
Ciao... dunque, i dati passano...passa qualcosa anche mentre accedo alle pagine web, ma i vari grafici non appaiono, questo è uno screen-shot di cosa appare: Media:http://imageshack.com/a/img633/3715/nks2zn.jpg
Altra cosa, una delle ultime righe di termo.php contiene questo codice che però fa riferimento ad uno script inesistente: $comando="/root/redis_2_csv.sh " . $start . " " . $end;.
Ok, ho capito, che non sembra essere un problema di redis.
Proviamo a vedere se è un problema di Flotr2 la libreria grafica, dell'archivio che hai scaricato da github puoi provare a vedere se funzionano gli esempi che dovrebbero essere pià o meno a questo indirizzo.... http://raspberrypi2/html/Flotr2/examples/index.html
A questo punto se non vanno gli esempi bisogna vedere se c'è qualche altro problema con php, se gli esempi vanno allora potrebbe esserci qualcosa che non va sull'interrogazione di redis dalle pagine web.
Hai provato se variando la programmazione settimanale http://raspberrypi2/html/termo/prog_settimana.php le modiche vengono salvate?
Ho aggiornato la pagina del wiki aggiungendo anche redis_2_csv.sh è uno script che ho creato per il debug e che ho utilizzato nei primi tempi per vedere se l'algoritmo funzionava correttamente. Gli id dei sensori sono scritti a mano nel codice, correggili mettendoci i tuoi magari ti serve più avanti per fare un debug.
Dunque... Ho resettato il RP2 e l'ho riportato al jessie.
Ho ricominciato tutto dall'inizio, reinstallando tutto. Una cosa che ho fatto è installare gli script sh sotto /root/ e non sotto altro utente come avevo fatto precedentemente (cambiando comunque path sul codice).
Una cosa che manca alla documentazione ora e che prima c'era è quella della modifica del php.ini inserendo extension=redis.so.
altra cosa: per far funzionare redis è necessario eseguire anche l'installazione con questo comando: sudo pecl install redis
Per finire bisogna cambiare il codice su termo.php alla riga 39, infatti riporta questa linea :
$temp_1 = $redis->lRange('Temp_1', $start, $end); $temp_2 = $redis->lRange('Temp_2', $start, $end);
ma per farla funzionare ho dovuto mettere
$temp_1 = $redis->lRange('camera', $start, $end); $temp_2 = $redis->lRange('cucina', $start, $end);
Ora vedo tutto, anzi, in realtà mi manca il dato della temperatura esterna...probabilmente è sempre il nome del campo errato, ma non so qual è quello corretto.
Direi che hai fatto grossi passi avanti!
Per le modifiche al wiki al momento le ho riportate io, ma puoi controllare e correggere direttamente anche tu e' il bello del wiki!, fai solo attenzione all'impaginazione, non e' difficile guarda come e' fatta la pagina e usa il bottone "visualizza anteprima". Ho anche riportato le modifiche sull'archivio github per la parte web.
La libreria redis l'ho tolta io perche' me la sono trovata gia' installata sulla nuova versione del termostato, ma penso sia dovuto alla versione di Raspbian, ho messo una nota.
Se vuoi navigare su redis da browser ti consiglio redis-commander (ho provato solo quello, probabilmente c'e' di meglio, ma per un uso minimale mi sembra accettabile).
A guardare gli script (/root/termostato/06_display_letture.sh, non so perche' gli avessi dato questo nome...) sembra che la temperatura esterna venga salvata nella variabile temp_esterna. Pero' lo script non viene lanciato da altri script (io alla fine l'ho disabilitato), l'ho aggiunto nella schedulazione delle letture in crontab.
Ho disabilitato la lettura della temperatura esterna perche' non ne ho ricavato un beneficio, se le temp sono molto basse e vuoi disegnare tutte le temp, quelle di casa risultano molto appiattite.
Se forzi la scala del grafico come e' ora in un range di temperature poi la curva della temp esterna non la vedi quasi mai.
Comunque se vuoi cercare la stazione piu' vicina a casa tua http://www.wunderground.com/cgi-bin/findweather/getForecast?query=bologna&MR=1 in fondo alla pagina e prendi l'id dal link.
Daniele
Ciao, bè, a modificare il wiki ci avevo pensato, però senza il tuo consenso non mi sarei mai permesso ;) Riguardo il grafico con le temperature esterne, hai ragione..il grafico diventa illeggibile: ho collegato un sensore esterno e la temperatura esterna la leggo da quello. Una domanda, ma redis memorizza solo gli ultimi dati oppure ha uno storico? Perchè sarebbe interessante implementare le analisi dei grafici sui dai storici.
Ciao, redis memorizza tutto, anzi in realtà, manca la parte di svecchiamento dei dati é una di quelle cose che non ho mai sviluppato in attesa di capire se i dati mi servissero. Se vuoi li puoi leggere direttamemte da lí oppure esportarli verso un db. Comunque la pagina php con il grafico accetta in ingresso anche i parametri di start e stop, da un'occhiata al codice, magari per un'analisi iniziale pó andare bene.
Immagine raspberry termostato web
Salve, per iniziare volevo dirti che il progetto è fantastico ed è quello che serviva proprio a me per il mio impianto domotico... Ma ho dei problemi con le varie configurazioni essendo un neofita...
Se qualcuno che ha seguito la guida e sia riuscito a farlo funzionare perfettamente potrebbe creare una immagine della sua micro sd, per esempio con Win32 Disk Imager, ed aiutare cosi i caproni come me facendo un upload dell'immagine su un cloud come google drive... Io con tutta la buona volontà non riesco a cavarne un ragno dal buco... O riinstallato il tutto più di 5 volte ma non c'è verso.
Grazie mille per la collaborazione.
Info termostato web ==
Ciao Daniele
Mi sto applicando a realizzare un termostato. Mi sono letto velocemente il tuo progetto tutto perfetto. Con la fretta una cosa mi sfugge, guardando gli screenshot non capisco se visualizzi solo o se puoi intervenire da remoto per modificare i limiti di temperatura min e max interattivamente. La tua risposta mi sarebbe utile per capire se è utile che realizzi il mio termostato o no. Grazie Giovanni
-
Ciao Giovanni
La temperatura e' modificabile da remoto, ma questo progetto e' un po' obsoleto e ho voluto realizzarne una versione un po' piu' moderna anche perche' avevo ricevuto richieste di informazioni da persone che avevano altre necessita' oltre alle mie e far evolvere il progetto avrebbe portato vantaggi anche per il mio utilizzo come in effetti e' stato.
La nuova versione non e' cosi' ben documentata e ci sono ancora alcune cosette da sistemare, ma ti invito a guardarla e magari a migliorare la documentazione la pagina dedicata e' questa Termostato_2.0, tra l'altro la stagione potrebbe essere favorevole a qualche implementazione ora che il termostato non e' cosi' necessario....
Essendo piu' complessa penso sia meglio che ti condivida l'immagine gia' pronta piuttosto che reinstallare da zero.