Differenze tra le versioni di "Thermo"

Da raspibo.
Jump to navigation Jump to search
 
(23 versioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
 +
<div style="float:right;border:1px solid black;padding:10px;margin:10px background:#F5F6CE; border:1px solid #a7d7f9; vertical-align:top; color:#000; padding: 5px 10px 10px 8px; -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius:10px;" ">
 +
{| width="600px" style="text-align:center"
 +
![[File:Thermo-GraficoTemperature.png|400px]]
 +
|-
 +
| <hr>
 +
|-
 +
|  <span style="font-size:200%;font-weight:bold">Thermo</span>
 +
|-
 +
| CronoTermostato per il riscaldamento (e non)
 +
|-
 +
| [https://github.com/raspibo/Thermo repository]
 +
|}
 +
</div>
 +
 
[[Category:Progetti]]
 
[[Category:Progetti]]
  
 
== Premessa ==
 
== Premessa ==
  
Progetto in corso ..
+
Cronotermostato programmabile tramite (interfaccia) web, con predisposizione per invio avvisi ed allarmi ad una centralina ([[CentRed]]).
 
 
Sono ripartito con una nuova SDCard e sto` cercando di descrivere passo-passo l'installazione completa, software e hardware.
 
  
 
== Descrizione ==
 
== Descrizione ==
Riga 29: Riga 41:
  
 
<pre style="color:blue;overflow:auto">
 
<pre style="color:blue;overflow:auto">
sudo apt-get install nginx fcgiwrap checkinstall redis-server
+
sudo apt-get install nginx fcgiwrap checkinstall redis-server python3-redis
 
</pre>
 
</pre>
  
Riga 35: Riga 47:
  
 
'''redis-server''' e` necessario se intendete averlo sul Raspberry Pi che state utilizzando per [[Thermo]], potrete benissimo averlo installato in un'altro pc, dovrete impostarlo nel file di configurazione base.
 
'''redis-server''' e` necessario se intendete averlo sul Raspberry Pi che state utilizzando per [[Thermo]], potrete benissimo averlo installato in un'altro pc, dovrete impostarlo nel file di configurazione base.
 +
 +
'''python3-redis''' disponibile sulla [[raspbian jessie]] (non lo era ai tempi della prima installazione, [[raspbian wheezy]])
  
 
== Git clone ==
 
== Git clone ==
Riga 44: Riga 58:
 
cd git
 
cd git
 
git clone https://github.com/raspibo/Thermo.git
 
git clone https://github.com/raspibo/Thermo.git
git clone https://github.com/andymccurdy/redis-py.git
+
git clone https://github.com/andymccurdy/redis-py.git   # Non necessario se si installa "python3-redis" (jessie)
 
</pre>
 
</pre>
  
 
== Installazione da sorgenti ==
 
== Installazione da sorgenti ==
 +
 +
;Non serve se si e` installato "python3-redis"
  
 
<pre style="color:blue;overflow:auto">
 
<pre style="color:blue;overflow:auto">
Riga 78: Riga 94:
 
<pre style="color:blue;overflow:auto">
 
<pre style="color:blue;overflow:auto">
 
cd /var/www
 
cd /var/www
sudo wget http://dygraphs.com/1.1.0/dygraph-combined.js
+
sudo wget http://dygraphs.com/1.1.1/dygraph-combined.js
 
sudo chown :www-data dygraph-combined.js
 
sudo chown :www-data dygraph-combined.js
 
</pre>
 
</pre>
Riga 138: Riga 154:
 
== Collegamenti elettrici ==
 
== Collegamenti elettrici ==
  
Lo schema dei collegamenti lo trovate qua: http://raspibo.ofpcina.net/file/view/4680/circuito-rpi-thermored
+
Lo schema dei collegamenti lo trovate qua: [[file:Raspberrypi-thermo.pdf]]
  
 
== Primo avvio ==
 
== Primo avvio ==
Riga 155: Riga 171:
 
La pagina web e` un semplice menu a sinistra ed un frame a destra, normalmente la visione e` sul grafico temperature, che si auto-aggiorna ogni 5 minuti.
 
La pagina web e` un semplice menu a sinistra ed un frame a destra, normalmente la visione e` sul grafico temperature, che si auto-aggiorna ogni 5 minuti.
  
Questa e` una visione (somigliante) del menu` (che potrebbe cambiare nelle versioni future):
+
Questo e` uno screenshot della pagina principale, dove si vede il menu` sulla sinistra (potrebbe cambiare nelle versioni future):
 +
 
 +
[[File:Thermo-GraficoTemperature.png|800px]]
  
 +
<!--
 
{|
 
{|
 
| align="center" style="background:#f0f0f0;"|'''Thermo'''
 
| align="center" style="background:#f0f0f0;"|'''Thermo'''
Riga 189: Riga 208:
 
|-
 
|-
 
| align="center"|'''Servizio'''
 
| align="center"|'''Servizio'''
 +
|-
 +
| Archivi grafici temperature
 
|-
 
|-
 
| Visualizza archivio
 
| Visualizza archivio
Riga 194: Riga 215:
 
| Sposta in archivio temperature.csv
 
| Sposta in archivio temperature.csv
 
|}
 
|}
 
+
-->
  
  
Riga 205: Riga 226:
  
 
Questa voce configura il database da utilizzare per inserire e leggere i dati, per default e` configurato sul "redis" che abbiamo installato in locale.
 
Questa voce configura il database da utilizzare per inserire e leggere i dati, per default e` configurato sul "redis" che abbiamo installato in locale.
 +
 +
[[File:Thermo-ConfiguraNoSQLdb.png|800px]]
  
 
;Nota
 
;Nota
Riga 215: Riga 238:
  
 
La pagina e` un po` particolare, si auto aggiorna, quindi se aggiungete e/o eliminate sensori, procede in modo automatico ad eliminarli dal database "redis".
 
La pagina e` un po` particolare, si auto aggiorna, quindi se aggiungete e/o eliminate sensori, procede in modo automatico ad eliminarli dal database "redis".
 +
 +
[[File:Thermo-ConfiguraSonde.png|800px]]
  
 
;Nota
 
;Nota
Riga 232: Riga 257:
  
 
Ovviamente i valori '''sopra''', '''sotto''' e '''tempo''', sono da vagliare per una temperatura piu` costante, un risparmio energetico, ecc.ecc. ...
 
Ovviamente i valori '''sopra''', '''sotto''' e '''tempo''', sono da vagliare per una temperatura piu` costante, un risparmio energetico, ecc.ecc. ...
 +
 +
[[File:Thermo-ConfigurazionePID.png|800px]]
  
 
;Note
 
;Note
Riga 244: Riga 271:
 
;Valore
 
;Valore
 
:E` un valore (in gradi centigradi) da assegnare all'uscita a rele` per visualizzare in grafico temperature quando e` comandata, perche` quando non lo e` non viene nemmeno visualizzata (quindi vedrete una linea retta spezzettata nel grafico).
 
:E` un valore (in gradi centigradi) da assegnare all'uscita a rele` per visualizzare in grafico temperature quando e` comandata, perche` quando non lo e` non viene nemmeno visualizzata (quindi vedrete una linea retta spezzettata nel grafico).
 +
 +
[[File:Thermo-ConfigurazioneGrafico.png|800px]]
  
 
=== Temperature set point ===
 
=== Temperature set point ===
Riga 254: Riga 283:
 
;Manuale
 
;Manuale
 
Mi sembra superfluo commentarle, tranne la "confort", ho previsto una temperatura 'alta' ad uso "pantofole" ;)
 
Mi sembra superfluo commentarle, tranne la "confort", ho previsto una temperatura 'alta' ad uso "pantofole" ;)
 +
 +
[[File:Thermo-ConfigurazioneTemperature.png|800px]]
  
 
=== Programmazione settimanale ===
 
=== Programmazione settimanale ===
Riga 262: Riga 293:
  
 
Ovviamente questa impostazione e` valida solo per il funzionamento automatico.
 
Ovviamente questa impostazione e` valida solo per il funzionamento automatico.
 +
 +
[[File:Thermo-ProgrammazioneSettimanale.png|800px]]
  
 
=== Selezione funzionamento ===
 
=== Selezione funzionamento ===
Riga 270: Riga 303:
 
* antigelo = Antigelo (funzionamento antigelo)
 
* antigelo = Antigelo (funzionamento antigelo)
 
* off = Spento
 
* off = Spento
 +
 +
[[File:Thermo-SelezioneFunzionamento.png|800px]]
  
 
=== Sposta in archivio temperature.csv ===
 
=== Sposta in archivio temperature.csv ===
Riga 276: Riga 311:
  
 
Se ora selezioniamo "Grafico temperature", dovremmo visualizzare un grafico vuoto.
 
Se ora selezioniamo "Grafico temperature", dovremmo visualizzare un grafico vuoto.
 +
 +
[[File:Thermo-ArchiviaGraficoCorrente.png|800px]]
  
 
=== python3 thermo.py ===
 
=== python3 thermo.py ===
Riga 285: Riga 322:
 
Non essenziali al primo avvio
 
Non essenziali al primo avvio
  
=== Visualizza archivio ===
+
=== Archivi grafici temperature ===
 +
 
 +
Selezione e visualizzazione di un grafico archiviato.
 +
 
 +
[[File:Thermo-ArchiviGraficiTemperature.png|800px]]
 +
 
 +
=== Visualizza files in archivio ===
  
 
Qua potete vedere la directory con i files "temperature.csv.*", che sono quelli dei precedenti grafici temperature che avete spostato con la selezione alla relativa pagina.
 
Qua potete vedere la directory con i files "temperature.csv.*", che sono quelli dei precedenti grafici temperature che avete spostato con la selezione alla relativa pagina.
 +
 +
[[File:Thermo-VisualizzaFilesArchivio.png|800px]]
  
 
=== Grafico temperature ===
 
=== Grafico temperature ===
  
La pagina principale, la visualizzazione grafica delle temperature nel tempo.
+
Va'/torna alla pagina principale, la visualizzazione grafica delle temperature nel tempo.
  
 
=== Configura NoSQL DB Messaggi ===
 
=== Configura NoSQL DB Messaggi ===
  
 
Se avete un centralino messaggi, vedi [https://github.com/raspibo/CentRed CentRed] (funzionante, ma ancora "spoglio" e decisamente migliorabile).
 
Se avete un centralino messaggi, vedi [https://github.com/raspibo/CentRed CentRed] (funzionante, ma ancora "spoglio" e decisamente migliorabile).
 +
 +
[[File:Thermo-ConfiguraNoSQLdbMessaggi.png|800px]]
 +
 +
== Update ==
 +
 +
; 2016 10 06
 +
: Aggiunto invio della temperatura di riferimento alla [[Centralina livello 1]]
 +
: Aggiornamenti delle librerie funzioni (come [[Centralina livello 1]], ma ora la flt.py e` piu` aggiornata qua)
 +
 +
<pre style="color:blue;overflow:auto">
 +
apt-get install python3-pip
 +
pip-3.2 install paho-mqtt
 +
</pre>
  
 
== Note ==
 
== Note ==
Riga 310: Riga 368:
  
 
http://dygraphs.com/
 
http://dygraphs.com/
 +
 +
[http://www.raspibo.org/wiki/index.php?title=Centralina_livello_1 Centralina livello 1]

Versione attuale delle 13:06, 9 ott 2016

Thermo-GraficoTemperature.png

Thermo
CronoTermostato per il riscaldamento (e non)
repository

Premessa

Cronotermostato programmabile tramite (interfaccia) web, con predisposizione per invio avvisi ed allarmi ad una centralina (CentRed).

Descrizione

Trattasi di un cronotermostato realizzato con Raspberry Pi e Sensori di temperatura 1wire (qua un DS18S10, praticamente uguale).

Raspberry Pi
Versione B (quello a 26 pin)
Sensori (almeno uno) di temperatura funzionanti con protocollo/connessione 1wire
Dallas DS18B20

Raspbian

Il primo passo e` preparare il sistema, dopo aver installato raspbian, si procede alla normale configurazione.

sudo raspi-config
sudo apt-get update
sudo apt-get upgrade

Installazione programmi

sudo apt-get install nginx fcgiwrap checkinstall redis-server python3-redis

checkinstall e` facoltativo, lo utilizzo per comodita` quando installo programmi da sorgente, per tenerne traccia nel sistema generando un pacchetto d'installazione e rimuoverli quando non piu` necessari.

redis-server e` necessario se intendete averlo sul Raspberry Pi che state utilizzando per Thermo, potrete benissimo averlo installato in un'altro pc, dovrete impostarlo nel file di configurazione base.

python3-redis disponibile sulla raspbian jessie (non lo era ai tempi della prima installazione, raspbian wheezy)

Git clone

Per continuare, ci serve il nostro repository git di Thermo e delle librerie python per redis.

mkdir git
cd git
git clone https://github.com/raspibo/Thermo.git
git clone https://github.com/andymccurdy/redis-py.git    # Non necessario se si installa "python3-redis" (jessie)

Installazione da sorgenti

Non serve se si e` installato "python3-redis"
cd redis-py/
sudo checkinstall python3 setup.py install

Ho chiamato il pacchetto "python3-redis-py", versione "20150228", revisione "1".

Copia Thermo

cd git/Thermo
sudo cp -varp --parents var/ /
sudo cp -varp --parents etc/ /

Configura Thermo

Sistemazione dei permessi:

sudo chown root:root -R /etc/rc.local /etc/nginx/
sudo chown root:www-data -R /var/www/
sudo chown www-data /var/www/ /var/www/archive/

Aggiungo il javascript per la visualizzazione grafica delle temperature (non l'ho incluso nel repository git), e` sufficiente scaricarlo e metterlo in "/var/www" (non e` necessario cambiare il gruppo):

cd /var/www
sudo wget http://dygraphs.com/1.1.1/dygraph-combined.js
sudo chown :www-data dygraph-combined.js

Nel file di configurazione di nginx (il web server) e` previsto un file di autenticazione (non vorrete che chiuque abbia accesso riprogrammi il cronotermostato), generiamolo cosi`:

cd /var/www
sudo su
echo -n "thermo" >> /var/www/.htpasswd
echo -n ":" >> /var/www/.htpasswd
openssl passwd >> /var/www/.htpasswd

Modifichiamo anche "/boot/config.txt" perche` carichi il modulo "1wire" all'avvio, aggiungendo queste righe:

# 1wire
dtoverlay=1w-gpio,gpiopin=4

Adesso siamo costretti a riavviare, perche il "config.txt" viene letto solo all'avvio (per il web server 'nginx' e altri servizi, dopo le modifiche ai files di configurazione, avremmo potuto anche solo riavviarli).

Configurazioni personalizzate

WiFi

Per attivare la connessione di rete wireless, oltre ad utilizzare una chiavetta usb, mi basta modificare il file "/etc/wpa_supplicant/wpa_supplicant.conf", cosi`:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
 
network={
        ssid="<NAME>"
        psk="<PASSWORD>"
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP
        auth_alg=OPEN
}
<NAME>
Identificatore della rete wireless
<PASSWORD>
La password della rete wireless
Doppi apici "
I doppi apici ", che racchiudono NAME e PASSWORD vanno messi.


Giurerei di non averlo modificato, comunque, verificate che nel file "/etc/network/interfaces" ci siano queste righe (se serve, aggiungetele):

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Collegamenti elettrici

Lo schema dei collegamenti lo trovate qua: File:Raspberrypi-thermo.pdf

Primo avvio

Dopo aver effettuato tutte le installazioni di software necessario (e facoltativo), le configurazioni e le eventuali personalizzazioni, al primo avvio del Raspberry Pi ci sara` un'errore sul programma "thermo.py", questo perche` non abbiamo ancora configurato "il programma", cioe` non ci sono dati nel database "redis" (e` completamente vuoto).

Recandosi alla pagina web del nostro "thermo" (io l'ho chiamato cosi`) con un qualsiasi browser, possiamo cominciare a configurare ed impostare alcuni parametri.

Al momento il software non gestisce tutti gli errori, vedi per esempio l'errore di avvio di "thermo.py" avuto in precedenza, e per la prima configurazione e` bene seguire una "procedura".

Nota
Uno dei problemi lo si riscontra nel riconoscimento dei sensori di temperatura, sono automaticamente rilevati e proposti dalla relativa pagina web, ma se non ce ne sono di collegati, la pagina web va` in errore e cosi` pure il programma "thermo.py" (e` una delle prime cose che svolge, leggere la temperatura)

Prima configurazione

La pagina web e` un semplice menu a sinistra ed un frame a destra, normalmente la visione e` sul grafico temperature, che si auto-aggiorna ogni 5 minuti.

Questo e` uno screenshot della pagina principale, dove si vede il menu` sulla sinistra (potrebbe cambiare nelle versioni future):

Thermo-GraficoTemperature.png


Ora, procediamo "con il giusto ordine" alla prima configurazione ...

Nota
Non l'ho segnalato, ma in ogni pagina, la prima volta: DOVETE CONFERMARE COL PULSANTE SUBMIT, altrimenti i dati non saranno inseriti.
La prima volta i dati visualizzati sono solo delle impostazioni di default proposte dalla maschera d'inserimento se non ne trova.

Configura NoSQL DB

Questa voce configura il database da utilizzare per inserire e leggere i dati, per default e` configurato sul "redis" che abbiamo installato in locale.

Thermo-ConfiguraNoSQLdb.png

Nota
Il database non e` accessibile dall'esterno, a meno che abbiate cambiato la sua configurazione di default.
Se intendete utilizzare una password, oltre a indicarla in questa pagina, dovere utilizzare il client redis ("redis-cli") per andarla ad impostare.

Configura sonde temperatura

In questa pagina dovete solamente mettere una descrizione alle vostre sonde, se ne avete piu` di una, la descrizione e` quella che vi aiutera` a scegliere quella del PID e sara` il testo visualizzato nel grafico delle temperature.

La pagina e` un po` particolare, si auto aggiorna, quindi se aggiungete e/o eliminate sensori, procede in modo automatico ad eliminarli dal database "redis".

Thermo-ConfiguraSonde.png

Nota
Ogni volta che utilizzate la pagina di configurazione delle sonde, e` consigliato verificare poi il pid (correggendo la sonda), ed il grafico (archiviando).

Impostazioni PID

In questa pagina sono da configurare alcune variabili necessarie al funzionamento del Thermo, non e` stato realizzato un vero e proprio PID, ma un semplice controllo di temperatura, se sotto di ... accende l'uscita, se sopra .. spegne.

Le variabili attualmente previste sono:

  • Il sensore di temperatura di riferimento
  • L'uscita da comandare
  • Il tempo di controllo, ogni quanto
  • La sopra-temperatura, quanto deve oltrepassare prima di spegnere
  • La sotto-temperatura, quanto deve scendere in piu` prima di riaccendere

Ovviamente i valori sopra, sotto e tempo, sono da vagliare per una temperatura piu` costante, un risparmio energetico, ecc.ecc. ...

Thermo-ConfigurazionePID.png

Note
Tenere presente che queste "curve" di riscaldamento sono influenzate dalla temperatura esterna.
Aiutandosi col grafico, si dovrebbe riuscire ad aggiustare opportunamente i valori per ottimizzare (per quanto possibile) al meglio il riscaldamento.

Impostazioni grafico

Qua sono possibili due impostazioni:

Tempo
Quanto tempo deve intercorrere fra un controllo e memorizzazione dei valori, ed il successivo.
Valore
E` un valore (in gradi centigradi) da assegnare all'uscita a rele` per visualizzare in grafico temperature quando e` comandata, perche` quando non lo e` non viene nemmeno visualizzata (quindi vedrete una linea retta spezzettata nel grafico).

Thermo-ConfigurazioneGrafico.png

Temperature set point

Pagina delle impostazioni delle temperature.

Confort
Giorno
Notte
Antigelo
Manuale

Mi sembra superfluo commentarle, tranne la "confort", ho previsto una temperatura 'alta' ad uso "pantofole" ;)

Thermo-ConfigurazioneTemperature.png

Programmazione settimanale

In questa pagina e` possibile impostare le temperature nelle fascie orarie dei 7 giorni.

E` facile, cliccate sui pallini della temperatura richiesta in quell'orario, tenendo presente che, per esempio le 16, va dalle 16:00 alle 16:59.

Ovviamente questa impostazione e` valida solo per il funzionamento automatico.

Thermo-ProgrammazioneSettimanale.png

Selezione funzionamento

E` scritto nella pagina ;)

  • on = Acceso
  • manuale = Manuale (funzionamento con temperatura manuale)
  • antigelo = Antigelo (funzionamento antigelo)
  • off = Spento

Thermo-SelezioneFunzionamento.png

Sposta in archivio temperature.csv

E` un modo per archiviare e resettare il "temperature.csv", il file che contiene le temperature e le descrizioni per la generazione del grafico, non ha opzioni, facciamolo ora che siamo al nostro primo avvio.

Se ora selezioniamo "Grafico temperature", dovremmo visualizzare un grafico vuoto.

Thermo-ArchiviaGraficoCorrente.png

python3 thermo.py

A questo punto possiamo avviare il programma, o riavviare la "macchina".

Altre voci di menu

Non essenziali al primo avvio

Archivi grafici temperature

Selezione e visualizzazione di un grafico archiviato.

Thermo-ArchiviGraficiTemperature.png

Visualizza files in archivio

Qua potete vedere la directory con i files "temperature.csv.*", che sono quelli dei precedenti grafici temperature che avete spostato con la selezione alla relativa pagina.

Thermo-VisualizzaFilesArchivio.png

Grafico temperature

Va'/torna alla pagina principale, la visualizzazione grafica delle temperature nel tempo.

Configura NoSQL DB Messaggi

Se avete un centralino messaggi, vedi CentRed (funzionante, ma ancora "spoglio" e decisamente migliorabile).

Thermo-ConfiguraNoSQLdbMessaggi.png

Update

2016 10 06
Aggiunto invio della temperatura di riferimento alla Centralina livello 1
Aggiornamenti delle librerie funzioni (come Centralina livello 1, ma ora la flt.py e` piu` aggiornata qua)
apt-get install python3-pip
pip-3.2 install paho-mqtt

Note

Riferimenti

https://github.com/raspibo/Thermo

https://github.com/raspibo/Thermo/wiki

http://raspbian.org/

http://redis.io

http://dygraphs.com/

Centralina livello 1