Differenze tra le versioni di "Cronotermostato settimanale"

Da raspibo.
Jump to navigation Jump to search
(Creata pagina con '<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 8p...')
 
Riga 34: Riga 34:
 
   * This Raspberry Pi supports user-level GPIO access.
 
   * This Raspberry Pi supports user-level GPIO access.
 
</pre>
 
</pre>
 +
E` il tipo di [[Raspberry Pi]] utilizzato.
  
 
<source lang=[shell]>lsusb</source>
 
<source lang=[shell]>lsusb</source>
Riga 39: Riga 40:
 
   .. Ralink Technology, Corp. RT5370 Wireless Adapter
 
   .. Ralink Technology, Corp. RT5370 Wireless Adapter
 
</pre>
 
</pre>
 +
E` la chiave wifi [[Raspberry_PI-WiFi_Client#TP-LINK_TL-WN727N|TP-LINK_TL-WN727N]] usata.
  
Legge temperatura e umidita` dal sensore SHT20<br/>
+
Legge temperatura e umidita` dal sensore [https://www.ebay.it/itm/I2C-GY-213V-HTU21D-SHT21-SI7021-HDC1080-SHT20-Temperature-Humidity-Sensor-/401364416322?var=&hash=item9c39e65c46 SHT20]<br/>
Visualizza su un piccolo display lcd 128x128 pixel (8 righe 16 colonne)<br/>
+
Visualizza su un piccolo [https://www.ebay.it/itm/1-44-Red-Serial-128X128-SPI-Color-TFT-LCD-Module-Display-Replace-Nokia-5110-LCD-/310876068105?hash=item4861a85909 display lcd 128x128 pixel (8 righe 16 colonne)]<br/>
Trasmette i valori via MQTT alla centralina "Livello 1"<br/>
+
Trasmette i valori via MQTT alla [[Centralina livello 1]]<br/>
 
Gestisce un'uscita per comando riscaldamento<br/>
 
Gestisce un'uscita per comando riscaldamento<br/>
  
Tranne la chiave wifi, tutto il resto dei componenti dovrebbe essere indicato nel
+
Tranne la chiave wifi, tutto il resto dei componenti dovrebbe essere indicato nel ..
  
 
= Circuito elettrico/elettronico =
 
= Circuito elettrico/elettronico =
Riga 51: Riga 53:
 
[[File:rpi2dev_tmp.pdf]]
 
[[File:rpi2dev_tmp.pdf]]
  
Il sensore [[SHT20]] richiede resistenze di pull-up sul collegamento I2C (SDA, SCL), non ci sono perche` sono gia` presenti nel [[Raspberry Pi]].
+
Il sensore [https://www.sensirion.com/en/environmental-sensors/humidity-sensors/humidity-temperature-sensor-sht2x-digital-i2c-accurate/ SHT20] richiede resistenze di pull-up sul collegamento I2C (SDA, SCL), non ci sono perche` sono gia` presenti nel [[Raspberry Pi]].
  
 
Al momento in cui scrivo il circuito e` completo di annotazioni per la fase di test (in corso).<br/>
 
Al momento in cui scrivo il circuito e` completo di annotazioni per la fase di test (in corso).<br/>
Riga 210: Riga 212:
 
* [http://wiki.bash-hackers.org/howto/conffile Config files for your script]
 
* [http://wiki.bash-hackers.org/howto/conffile Config files for your script]
 
* [https://storma.wordpress.com/2012/11/28/debian-systemd-autologin-without-a-display-manager/ Debian systemd autologin without a display manager]
 
* [https://storma.wordpress.com/2012/11/28/debian-systemd-autologin-without-a-display-manager/ Debian systemd autologin without a display manager]
 +
* [https://www.sensirion.com/en/environmental-sensors/humidity-sensors/humidity-temperature-sensor-sht2x-digital-i2c-accurate/ SHT20]
 +
* [https://www.ebay.it/itm/I2C-GY-213V-HTU21D-SHT21-SI7021-HDC1080-SHT20-Temperature-Humidity-Sensor-/401364416322?var=&hash=item9c39e65c46 SHT20 ebay]
 +
* [https://www.ebay.it/itm/1-44-Red-Serial-128X128-SPI-Color-TFT-LCD-Module-Display-Replace-Nokia-5110-LCD-/310876068105?hash=item4861a85909 Display LCD 1,44"]

Versione delle 11:47, 7 gen 2018

2018/01/07 08:35

Temperatura: 
          20.761
Umidita`: 43.102

Relay:    off
SetPoint: 15

Cronotermostato settimanale
Device lettura temperatura/umidita`, controllo riscaldamento, visualizzazione su display lcd
Repository: https://github.com/raspibo/cronotermostato

Descrizione

gpio -v
Raspberry Pi Details:
Type: Model A+, Revision: 01, Memory: 256MB, Maker: Sony
  * Device tree is enabled.
  *--> Raspberry Pi Model A Plus Rev 1.1
  * This Raspberry Pi supports user-level GPIO access.

E` il tipo di Raspberry Pi utilizzato.

lsusb
  .. Ralink Technology, Corp. RT5370 Wireless Adapter

E` la chiave wifi TP-LINK_TL-WN727N usata.

Legge temperatura e umidita` dal sensore SHT20
Visualizza su un piccolo display lcd 128x128 pixel (8 righe 16 colonne)
Trasmette i valori via MQTT alla Centralina livello 1
Gestisce un'uscita per comando riscaldamento

Tranne la chiave wifi, tutto il resto dei componenti dovrebbe essere indicato nel ..

Circuito elettrico/elettronico

File:Rpi2dev tmp.pdf

Il sensore SHT20 richiede resistenze di pull-up sul collegamento I2C (SDA, SCL), non ci sono perche` sono gia` presenti nel Raspberry Pi.

Al momento in cui scrivo il circuito e` completo di annotazioni per la fase di test (in corso).
(Terminata questa, la seconda sara` di effettuare rilievi di funzionamento dell'attuale cronotermostato, solo successivamente, terza e ultima fase, andra` a sostituirlo)


Software

Come noterete dal repository dei files, e` scritto in "bash".

cronotermostato.sh
Programma principale, e` l'unico da eseguire, gli altri sono di contorno ed utilizzati da questo.
cronotermostato.conf
File di configurazione (parametrizzazione) dello script principale.
E` possibile cambiare tempi e qualche identificatore.
help.sh
Ho voluto mantenere separato dal programma principale le visualizzazioni di aiuto (perche` le modifico/avo spesso)
program7d.txt
File di programma settimanale, contiene le programmazioni giornaliere/orarie del termostato.
cecho.sh
mvcursor.sh
Sono script di controllo della visualizzazione in console, il primo si coccupa della colorazione dei testi (ma non funziona su tutte), il secondo degli spostamenti cursore.
sht20_rh.sh
sht20_t.sh
Umidita` relativa e Temperatura, questi si occupano di leggere il sensore SHT20 (i2c), ho preferito mantenerli indipendenti dal tutto il resto.

Install

Per il Raspberry Pi ho utilizzato la Raspbian Stretch Lite (Minimal image based on Debian Stretch), non sto` a spiegare come si installa, e` gia` spiegato ovunque in rete, credo anche in questo wiki, da qualche parte.

Per installare il programma del cronotermostato in oggetto e` sufficiente scaricarlo (sul proprio Raspberry Pi), oppure clonare il repository git (git clone https://github.com/raspibo/cronotermostato.git), nella directory che preferite.

Nel Raspberry Pi dovremo sistemare alcune cose prima di eseguire il programma:

  • Attivare SPI
  • Attivare I2C

Potete farlo eseguendo (da utente root, oppure fate precedere il comando da "sudo"):

sudo raspi-config

selezionate l'opzione 5, poi P4, poi P5 (dovrete ricominciare da capo perche` ad ogni selezione sarete rimandati alla prima pagina di scelta).
Se volte farlo a mano, abilitate le righe:

dtparam=i2c_arm=on
dtparam=spi=on

nel file "/boot/config.txt".

Nel mio caso (Raspbian Lite) ho dovuto installare qualche pacchetto software accessorio (spero di non averne dimenticati):

Necessari
apt-get install bc i2c-tools mosquitto-clients wiringpi fbset
Opzionali
apt-get install git
Sicuramente non necessari
apt-get install fim fbi tio python3-serial imagemagick tput cadubi screen tmux figlet toilet aria2 fbterm
Potrebbero servire per visualizzazioni immagini sul display lcd e trasmissioni/letture seriali
Note
Ho aggiunto lo user "pi" al gruppo "tty", per scrivere da qualsiasi terminale sulla tty0 (es.: echo "testo" >> /dev/tty0 ).
fbi, fim, visualizzano immagini tramite framebuffer
imagemagick, pensavo di usarlo per convertire il testo in immagini ... (poi ho preferito, per ora, non usare immagini)

Configurazione wifi

Modificato "/etc/network/interfaces":

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

#allow-hotplug eth0
#iface eth0 inet dhcp

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


allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Trovate due "wlan" perche` per accelerare le sperimentazioni (install e setup) ho usato un Raspberry Pi Versione 3, potete omettere le righe che riguardano la seconda "wlan" (wlan1), o lasciatele, male non fanno.

Aggiunto/modificato "/etc/wpa_supplicant/wpa_supplicant.conf", ricordateVi di mettere la vostra rete e password dove indicato:

country=IT
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="<VOSTRO IDENTIFICATIVO RETE WIFI>"
    psk="<VOSTRA PASSWORD RETE WIFI>"
    key_mgmt=WPA-PSK
}


Configurazione display

Ho scelto la via piu` breve, usare il file "/etc/rc.local", cui ho aggiunto le seguenti righe, prima dell'ultima "exit 0":

# Carica il display LCD, non so come, ma finisce in "fb1"
modprobe fbtft_device custom name=s6d02a1 gpios=reset:25,dc:24,led:23 width=128 height=128 rotate=270
#dmesg | tail -10 # Check messages
# Ritardo 3 secondi per il caricamento di "fb device" ..
#sleep 3
#con2fbmap 1 1 # Mappa la console 1 sul framebuffer 1

# Disable savescreen
/usr/bin/setterm -blank 0 -powerdown 0 -powersave off

Notare la disattivazione dello screen saver e del power off, perche` il display lo tengo sempre acceso (ho fatto testi che si visualizzano a colorazione random).

Configurazione autologin

Ho creato il file "/etc/systemd/system/getty@tty1.service.d/override.conf", con questo contenuto:

[Service]
ExecStart=
ExecStart=-/sbin/agetty -a pi --noclear %I $TERM
Type=idle

Configurazione autostart cronotermostato

Nella directory utente ("pi" ovviamente), ho modificato il file ".profile", aggiungendo le righe seguenti:

# Start cronotermostato
cd /home/pi/projects/cronotermostato
PATH="$PATH:`pwd`"
./cronotermostato.sh


Chiavi/Codici

Topic (mqtt)

Chiavi e codici, esempi da ultimo device

Riferimenti