Ethical DIY

Progetti hardware & software etici


Menu orizzontale con sottomenu CSS






 




Pagina principale per Raspberry



Informazioni di base




La basetta sperimentale (BDS)


Applicazioni



Librerie e programmi
  • La gestione delle librerie

  • Programmi applicativi
    • Protocollo_I2C
    • I2C_BME280
    • I2C_BME680
    • I2C_ Display_LCD_1602
    • I2C_Display_SSD1306
    • I2C_SGP30-SGP40
    • SPI_RFID_RC522
    • One-wire_18B20
    • DHT11/DHT22
    • Motore_elettrico
    • Servomotore
    • Motore a passo
    • Encoder_Joystick
    • Pulsanti/piccoli_sensori
    • Led
    • Telecamera_OpenCV
    • Gestione_immagini
    • Ingressi_Analogici
    • Display: LCD1602
    • Display: SSD1306 Oled
    • Display: ST7735
    • Ingressi analogici
    • Programmi vari














 








 
















Raspberry PI 3/4/5
Programmi  per Telegram

Come già illustrato nella pagina di configurazione di Telegram, esso è molto utile per ricevere dati o inviare comandi al Raspberry attraverso al Web in ogni parte del mondo.
Il questa pagina verrà illustrato come inserire i moduli necessari sulla BDS, creare l'ambiente virtuale, utilizzare i programmi dedicati.

I primi due programmi ricevono dei comandi da Telegram ed eseguono delle operazioni per mezzo del Raspberry, quali accendere una luce, un condizionatore, aprire una porta, ecc. I seguenti funzionano in modo opposto: Telegram riceve delle informazioni (frasi di testo, valori di un sensore, ecc.) dal Raspberry e le mostra su Telegram in base a una scedulazione: per esempio indicare dati quale temperatura, umidità, pressione, ecc.
Gli ultimi programmi sono simili ai precedenti, però si attivano in base a un cambio di stato di un qualche parametro, come un allarme: l'apertura di una porta o di una finestra, un movimento in un ambiente, una fuga di gas o un incendio... e magari anche per eventi meno problematici.


Ecco il collegamento ai vari gruppi di programmi:



Come inserire DHT11, BME280 e i led/Relè sulla BDS

bdst
La BDS con tutti i componenti necessari per i vari programmi presentati in questa pagina:
relè, led, DHT11/22, BME280





La creazione dell'ambiente virtuale e l'inserimento delle librerie necessarie

Ipotizziamo che sul desktop del proprio Raspberry si crei una cartella "Projects" e all'interno una sottocartella "telegram " in cui creeremo l'ambiente virtuale (che chiameremo "tele "), le librerie necessarie e i programmi.
Nota: naturalmente i nomi dati alle sottocartelle possono essere variati a piacere. Postulando che si siano create le cartelle indicate, si può iniziare con la programmazione.
Aprire un terminale (la quarta icona in alto a destra) term e digitare quanto segue:
cd Desktop/Projects/telegram   per spostarsi nella cartella "telegram ";
python3 -m venv  tele                   per creare l'ambiente virtuale "tele ";
source  tele/bin/activate               per attivare l'ambiente virtuale: apparirà (tele) all'inizio della nuova riga;

Come installare le librerie necessarie

Dopo aver creato la cartella e attivato l'ambiente virtuale si possono installare le librerie necessarie.
  • Installazione di Telepot e RPi.GPIO, necessarie per i programmi tele_bot.py e tele_bot2.py:
    dal terminale, lanciare il comando: "pip3 install telepot":
    tp
    e di seguito:
    "pip3 install RPi.GPIO":
    rp

  • Installazione di requests per il programma send_tele.py
    dal terminale, lanciare il comando: "pip3 install requests"t11

  • Installazione di board e di adafruit_dht  per il programma tele_dht.py.
    dal terminale, lanciare il comando: "pip3 install board"t12
    dal terminale, lanciare il comando: "pip3 install adafruit-circuitpython-dht"
    t14
    Attenzione a inserire il nome della libreria corretta!
    Nota: per lanciare
    tele_dht.py, è necessara anche la libreria requests.

  • Installazione di gpiozero  per il programma tele_dht_c.py.
    dal terminale, lanciare il comando: "pip3 install gpiozero"
    t15
    Nota: per lanciare tele_dht.py_c, sono necessarie anche le librerie:
    requests
    , board, adafruit_dht.

  • Installazione di smbus2 e bme280 per il programma tele_280.py.
    dal terminale, lanciare il comando: "pip3 install smbus2":
    t16
    dal terminale, lanciare il comando: "pip3 install RPi.BME280"
    t17
    Attenzione a inserire il nome della libreria corretta!
    Nota: per lanciare tele_280.py, è necessara anche la libreria requests.

  • Per lanciare il programma tele_280_c.py sono necessaire le seguenti librerie (probabilmente già installate):
    requestssmbus2bme280gpiozero.








Altri programmi che usano relè, DHT11/22, BME280, relè.

Altri programmi che usano DHT11/DHT22:
Clicca qui per un primo programma con il display SSD1306 OLED.
Clicca qui per
un secondo programma con il display SSD1306 OLED.
Clicca qui per un terzo programma, con il display Led 1602.
Clicca qui per i programmi che utilizzano Thingspeak
Clicca qui per i programmi che utilizzano DHT11/22


Altri programmi che usano BME280:
Clicca qui per programmi relativi a BME280 presenti nella pagina del display SSD1306
Clicca qui per programmi con BME280 con il sensore di qualità dell'aria SGP30.
Clicca qui per programmi con BME280 

Altri programmi che usano i relè:
Clicca qui per programmi con l'uso di relè








Primo gruppo: Telegram invia comandi al Raspberry








Il primo programma: inviare UN comando al Raspberry

In questo primo programma, useremo Telegram per inviare un comando al Raspberry. Questo semplicissimo programma ha un numero infinito di applicazioni: accendere una luce da remoto, oppure un cancello, un condizionatore, una stufa... dipende solo dalle necessità e fantasia.
E' necessario conoscere il proprio API TOKEN. Clicca qui per vedere come reperirlo.
E' stato inserito un led su LED1 (GPIO19); si può inserire un relè su DG1. In questo modo si potrà controllare una qualsiasi periferica. E' sufficiente digitare "on" oppure "On" per attivare e "off" oppure "Off" per disattivare.
 
imm

def
Le due funzioni "def" stabiliscono quale comando eseguire quando si digita "on" oppure "off"

if
La funzione if/elif stabiliscono quale comando relato alla subroutine "def" eseguire
Clicca qui per scaricare il programma in formato ".zip"
Clicca qui per visualizzare il programma in formato testo.

Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella  "Desktop/Projects/telegram"
e lanciarlo con il seguente comando: "python tele_bot.py"

Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie.







Il secondo programma: inviare DUE comando al Raspberry

Questo secondo programma è identico al primo; semplicemente si possono inviare due comandi distinti. Con questa tecnica è sufficiente inserire più funzioni "def" e "if/elif" per poter controllare più apparecchi esterni.
In questo caso, useremo due led/relè:bo2a
  • E' stato inserito un led su LED1 (GPIO19); si può inserire un relè su DG1;
  • ed un secondo, su LED3 (GPIO21); si può inserire un relè su DG3.

E' sufficiente digitare "on" oppure "On" per attivare e "off" oppure "Off" per disattivare LED1/Relè su DG1.
E digitare "ok" oppure "Ok" per attivare e "okk" oppure "Okk" per disattivare LED3/Relè su DG3.
Naturalmente si può scegliere qualsiasi comando preferiamo per attivare/disattivare la periferica.E' necessario conoscere il proprio API TOKEN. Clicca qui per vedere come reperirlo.

Di seguito viene mostrato come duplicare le funzioni "def" e "if/elif" per controllare "x" periferiche:


b2a
la lista delle possibili opzioni per accendere/spegnere due led/relè
d2
Come si può vedere, sono stati semplicemente duplicate le funzioni "def", selezionando quali comandi eseguire
 
i2



Anche le le funzioni if/elif sono state duplicate, sostituendo nella seconda routine i comandi da eseguire

Clicca qui per scaricare il programma in formato ".zip"
Clicca qui per visualizzare il programma in formato testo.

Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il
programma nella cartella  "Desktop/Projects/telegram" e lanciarlo con il seguente comando: "python tele_bot2.py"

Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie.










Il secondo gruppo di programmi: Rapberry invia dati schedulati a Telegram







Il terzo programma: invia generico di dati a Telegram
Questo programma mi è servito di base a quelli successivi: in poche istruzioni sipossono inviare dei messaggi a Telegram.
Affinchè funzioni, è necessario inserire il proprio API Token e Chat_id.
Nell'immagine a destra si vedono le poche istruzioni necessarie per inviare messaggi a Telegram.

sd

Clicca qui per scaricare il programma in formato ".zip"
Clicca qui per visualizzare il programma in formato testo.

Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella  "Desktop/Projects/telegram"
e lanciarlo con il seguente comando: "python send_tele.py"

Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie.









Il quarto programma: invia dati schedulati a Telegram da DHT11/22
In questo programma comincia ad accadere qualcosa di interessante: un sensore DHT11/22 invia dati schedulati a Telegram su temperatura e umidità.
Affinchè funzioni, è necessario inserire il proprio API Token e Chat_id.

La prima parte di codice (in alto) riguarda la configurazione del sensore: potrà essere adafruit_dht.DHT11 o
adafruit_dht.DHT22 in base al sensore che si usa.  Il sensore è posto sullo zoccolo one_wire (GPIO4). Temperature_offset è relativa alla calibrazione del sensore: "-4" significa che mostra 4 gradi in più del reale.  Verificare con cura.

I dati sono inviati a Telegram per mezzo di una schedulazione: "time.sleep(30.0)". Significa che invieremo i dati ogni 30 secondi, tempo servito per i test. Se si volesse inviare l'informazione ogni ora, sarebbe: "time.sleep(3600.0), eccetera.

Clicca qui per vedere le info del programma "di base".

td1
Configurazione di DHT11/DHT22

dt2
Le righe di codice per inviare temperatura e umidità

Nota: righe incorniciate sono state spezzate solo per ragioni di
esposizione, ma entrambe sono un'unica linea.

dhtt
L a schedulazione in secondi


tmp

Clicca qui per scaricare il programma in formato ".zip"
Clicca qui per visualizzare il programma in formato testo.

Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella  "Desktop/Projects/telegram"
e lanciarlo con il seguente comando: "python tele_dht.py"

Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie.









Il quinto programma: invia dati schedulati a Telegram da DHT11/22 + attivazione relè

Il quinto programma usa lastetta struttura del precedente come base, ma fa qualcosa in più: relativamente alle informazioni ricevute da DHT11 e dalle variabili di soglia, può attivare automaticamente un condizionatore, una pompa di calore o un deumidificatore, inviando i dati schedulati a Telegram.
In questo senso lo si può considerare un veo programma di domotica.

Le righe di base per  sviluppare queso programma
(variabili, comandi dei relè, ecc.) sono state prelevate da questo sketch. Vedere le informazioni dettagliate.

Affinchè il programma funzioni funzioni, è necessario inserire il proprio API Token e Chat_id.

tmp

Clicca qui per scaricare il programma in formato ".zip"
Clicca qui per visualizzare il programma in formato testo.

Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella  "
Desktop/Projects/telegram" e lanciarlo con il seguente comando: "python tele_dht_c.py"

Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie.









Il sesto programma: invia dati schedulati a Telegram da BME280
Il sesto programma invia i dati di temperatura, umidità e pressione (quindi diventa una vera stazione meteorologica) a Telegram, con ua schedulazione a piacere.
Affinchè funzioni, è necessario inserire il proprio API Token e Chat_id.
La schedulazione, come per il quarto programma, è impostato in secondi. Un ora: 3600 secondi

b3

b1

i dati relativi alla configurazione del sensore BME280
b2


le righe di codice relative al trasferimento dei dati su Telegram.
I dati contenuti in un riquadro blu sono relativi ad un'unica linea di codice.




Clicca qui per scaricare il programma in formato ".zip"
Clicca qui per visualizzare il programma in formato testo.

Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella  "
Desktop/Projects/telegram" e lanciarlo con il seguente comando: "python tele_280.py"

Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie.









Il settimo programma: invia dati schedulati a Telegram da BME280 + attivazione relè
Questo programma è sulla stessa linea del quinto programma, per DHT11; semplicemente è stato sostituito con il  BME280 e quindi modificate le linee relative alla configurazione del sensore stesso.
Affinchè il programma funzioni,  funzioni, è necessario inserire il proprio API Token e Chat_id.
Le righe di base per  sviluppare queso programma (variabili, comandi dei relè, ecc.) sono state prelevate da questo sketch. Vedere le informazioni dettagliate.

b33

Clicca qui per scaricare il programma in formato ".zip"
Clicca qui per visualizzare il programma in formato testo.

Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella  "
Desktop/Projects/telegram" e lanciarlo con il seguente comando: "python tele_280_c.py"

Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie.










Il terzo gruppo di programmi: Rapberry invia dati a Telegram al cambio di condizioni







L'ottavo programma: inviare messaggi al cambio di condizioni dal Raspberry a Telegram

L'ottavo (e per ora ultimo!) programma è molto interessante, perché viene mandato un messaggio a Telegram ogni volta che un sensore registra un camio di condizioni: una porta/finestra aperta o chiusa; un movimento in una camera, una fuga di gas, un incendio... e questo praticamente in tempo reale !
All'avvio del programma è necessario per esempio aprire e chiudere una porta per metterlo in condizione di verificare le variazioni future.
Affinchè il programma funzioni,  funzioni, è necessario inserire il proprio API Token e Chat_id.



dr1
dr3
 
Le righe di codice specifiche per questo programma.
All'avvio verifica lo stato del sensore;
appurato ciò, al cambio dello stato del sensore, invia un messaggio a Telegram con lo stato attuale.

Clicca qui per scaricare il programma in formato ".zip"
Clicca qui per visualizzare il programma in formato testo.

Se stai eseguendo queste operazioni direttamente dal Raspberry, puoi scaricare e scompattare direttamente il programma nella cartella  "
Desktop/Projects/telegram" e lanciarlo con il seguente comando: "python door_ctrl.py"

Controllare di aver attivato l'ambiente virtuale e scaricato le librerie necessarie.









Per contatti: etdiy@centroanahata.it