02/08/2019, 07:19
Finalmente ho completato il progetto del "notificatore".
Posizionando il Raspy nel quadro elettrico di casa mi notifica via mail e potenzialmente via sms l'interruzione elettrica della linea, il ritorno della linea elettrica, l'avvio dell'irrigazione e lo spegnimento dell'irrigazione.
Il tutto è partito per sapere quando partiva e quando terminava l'irrigazione e poi si è esteso mano a mano.
L'hardware è un raspberry pi3b+ con case corredato di dissipatori e ventola, modulo ups, relè con bobina a 24 e 220v.
Collegamenti:
Da un ground delle gpio vado ai com dei relè, dall'no dei relè vado ai rispettivi ingressi programmati.
La bobina dei relè è collegata in parallelo al carico da monitorare, nel mio caso a fase e neutro del generale quadro e 24v in uscita alla valvola giardino comandata da uno sonoff sv.
Codice:
Il codice è ancora grezzo ma funziona egregiamente e chiedo il vostro aiuto per poterlo semplificare.
Ad esempio: i contatori li utilizzo per inviare una sola mail al cambio di stato, non cè nella libreria gpiozero un comando del tipo "passato da pressed a released"?
Inviato dal mio SM-A320FL utilizzando Tapatalk
Posizionando il Raspy nel quadro elettrico di casa mi notifica via mail e potenzialmente via sms l'interruzione elettrica della linea, il ritorno della linea elettrica, l'avvio dell'irrigazione e lo spegnimento dell'irrigazione.
Il tutto è partito per sapere quando partiva e quando terminava l'irrigazione e poi si è esteso mano a mano.
L'hardware è un raspberry pi3b+ con case corredato di dissipatori e ventola, modulo ups, relè con bobina a 24 e 220v.
Collegamenti:
Da un ground delle gpio vado ai com dei relè, dall'no dei relè vado ai rispettivi ingressi programmati.
La bobina dei relè è collegata in parallelo al carico da monitorare, nel mio caso a fase e neutro del generale quadro e 24v in uscita alla valvola giardino comandata da uno sonoff sv.
Codice:
Codice:
#!/bin/usr/python
# /etc/init.d/notifica.py ###BEGIN INIT INFO
# Provides: notifica.py
# Required-Start:$remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
from gpiozero import Button
import smtplib
irrigazione = Button(20)
fm = Button(21)
fromaddr = 'raspyluca@gmail.com'
toaddr = 'l.bosca83@gmail.com'
msg = 'subject:monitoraggio avviato'
msg1 = 'subject:irrigazione on'
msg2 = 'subject:irrigazione off'
msg3 ='subject:mancanzafm'
msg4 ='subject:ripristinofm'
username = 'raspyluca@gmail.com'
password = 'XXXXZXXX'
contirr = 0
contfm = 0
#notifica avvio attività
server.starttls()
server.login(username, password)
server.sendmail(fromaddr, toaddr, msg1)
server.quit()
if ( irrigazione.is_pressed and contirr == 0):
server = smtplib.SMTP ('smtp.gmail.com:587')
server.starttls()
server.login(username, password)
server.sendmail(fromaddr, toaddr, msg1)
server.quit()
contirr = contirr + 1
elseif (contirr == 1):
server = smtplib.SMTP ('smtp.gmail.com:587')
server.starttls()
server.login(username, password)
server.sendmail(fromaddr, toaddr, msg2)
server.quit()
contirr = contirr - 1
if ( fm.is_pressed and contfm == 0):
server = smtplib.SMTP ('smtp.gmail.com:587')
server.starttls()
server.login(username, password)
server.sendmail(fromaddr, toaddr, msg3)
server.quit()
contfm = contfm + 1
elseif (contfm == 1):
server = smtplib.SMTP ('smtp.gmail.com:587')
server.starttls()
server.login(username, password)
server.sendmail(fromaddr, toaddr, msg4)
server.quit()
contfm = contfm - 1
Il codice è ancora grezzo ma funziona egregiamente e chiedo il vostro aiuto per poterlo semplificare.
Ad esempio: i contatori li utilizzo per inviare una sola mail al cambio di stato, non cè nella libreria gpiozero un comando del tipo "passato da pressed a released"?
Inviato dal mio SM-A320FL utilizzando Tapatalk