• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
notificare stato relè

[Problema] Notificare stato relè
#1
Buongiorno a tutti.
Eccomi di nuovo qui per sottoporvi un quesito:
Posso usare uno o più ingressi del Raspi 3b+ per inviare una notifica di qualsiasi genere (mail/sms/piccione viaggiatore) al cambio stato di un relè?
Mi spiego meglio: sto utilizzando uno sonoff tasmotato per comandare un'elettrovalvola per irrigazione, impianto semplice e veloce comandabile da remoto. Inoltre uso i classici relè temporizzati (comandato da sensori apertura) più un sonoff collegato ad una sirena di recupero che in caso di intrusione suona.
È un sistema molto economico e funzionale, dovrei solo avere una notifica quando scatta.
Quindi riassunto: posso farmi arrivare una mail al cambio stato del relè (quando apre "contatto aperto" e quando chiude "contatto chiuso"? Grazie

Inviato dal mio SM-A320FL utilizzando Tapatalk
Risposta
#2
Cercando in rete ho trovato questo codice:
Codice:
#!/bin/usr/python
import RPi.GPIO as GPIO
import smtplib

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(25, GPIO.OUT)
GPIO.setup(24, GPIO.IN)
GPIO.output(25, True)

fromaddr = 'indirizzo di chi manda'
toaddr = 'indirizzo a cui mandare'
msg = 'pulsante premuto'
username = 'tuo user'
password = 'tua password'
server = smtplib.SMTP('smtp.gmail.com:587')

while True:
    if (GPIO.input(24)):
    server.starttls()
    server.login(username, password)
    server.sendmail(fromaddr, toaddr, msg)
    server.quit()


A livello pratico chiudendo il ponte fra 24 e 25 arriva la mail, posso aggiungere un 26 per la chiusura usando il 25 come com di un relè ed il 26 come NC ed il 24 come NO.
Solo che non ho mai programmato in python e non saprei nemmeno dove scriverlo il codice. Potete aiutarmi?

Documentandomi basta usare nano
e salvare il file come nome_programma.py
Codice:
sudo nano nomeprogramma.py
e farlo eseguire, quindi
Codice:
sudo python nomeprogramma.py

Poi bisognerà renderlo eseguibile all'avvio creando uno script all'interno di /etc/init.d/

Codice:
#!/bin/sh python nomeprogramma.py

Man mano che trovo soluzioni le scriverò qui come diario personale e guida per chi vorrà cimentarsi...
Risposta
#3
Se hai un contatto libero, si, fai così. (anche se l'esempio che hai trovato è vetusto, è funzionante).
Se non lo hai, puoi realizzare un sensore di tensione optoisolato così

Inviato dal mio A0001 utilizzando Tapatalk
Risposta
#4
Grazie per la risposta. So che lo script è vecchiotto infatti gira su python2 e non sul 3 ma per quello che deve fare va bene così.
Dal momento che userò un relè no/nc e vorrei due notifiche ho modificato lo script così:

Codice:
#!/bin/usr/python
import RPi.GPIO as GPIO
import smtplib

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(16, GPIO.OUT)
GPIO.setup(20, GPIO.IN)
GPIO.setup(21, GPIO.IN)
GPIO.output(16, True)

fromaddr = 'raspyluca@gmail.com'
toaddr = 'l.bosca83@gmail.com'
msg1 = 'subject:irrigazione on'
msg2 = 'subject:irrigazione off'
username = 'raspyluca@gmail.com'
password = 'xxxxx'  
contatore = 0

while True:
    server = smtplib.SMTP('smtp.gmail.com:587')
    if (GPIO.input(20)):
        if contatore == 0:
            server.starttls()
            server.login(username, password)
            server.sendmail(fromaddr, toaddr, msg1)
            server.quit()
            print(contatore)
            contatore = contatore + 1
    if (GPIO.input(21)):
        if contatore == 1:
            print(contatore)
            contatore = contatore - 1
            server.starttls()
            server.login(username, password)
            server.sendmail(fromaddr, toaddr, msg2)
            server.quit()
Il contatore ed il suo controllo serve a non far inviare mail di continuo visto che il contatto sarà sempre chiuso o sul 20 o sul 21 e così invia la mail con il cambio in oggetto solo al cambio dello stato.
Risposta
#5
Ieri sera lo script ha dato parecchi problemi, entrava nell'if anche se le condizioni non erano soddisfatte, non mandava più le mail ecc ec.
Quindi ho studiato un pò ed ho modificato l'intero script. Ecco la versione ultima.

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
acceso = Button(20)
spento = Button(21)

fromaddr = 'xxx@gmail.com'
toaddr = 'yyy@gmail.com'
msg = 'subject:monitoraggio avviato'                  
msg1 = 'subject:irrigazione on'
msg2 = 'subject:irrigazione off'                        
username = 'yyy@gmail.com'
password = 'XXXXZXXX'
cont = 0

if (acceso.is_pressed and cont == 0):
        server =  smtplib.SMTP ('smtp.gmail.com:587')
        server.starttls()
        server.login(username, password)
        server.sendmail(fromaddr, toaddr, msg1)
        server.quit()
        cont = cont + 1
    if (spento.is_pressed and cont == 1):
        server =  smtplib.SMTP ('smtp.gmail.com:587')
        server.starttls()
        server.login(username, password)
        server.sendmail(fromaddr, toaddr, msg2)
        server.quit()
        cont = cont - 1

Inviato dal mio SM-A320FL utilizzando Tapatalk
Risposta
  


Vai al forum:


Navigazione: 3 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect