• 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
piface telecamere antifurto

[Problema] Piface, antifurto, telecamere
#1
Buongiorno a tutti, questo è il mio primo post. Mi chiamo Stefano, scrivo dalla provincia di Brescia e sono alle prese con un pi "capriccioso" (o meglio, con un programmatore assolutamente inesperto ... io ...)

Ho una piface collegata al pi e con un contatto pulito proveniente dall'antifurto che le dice se lo stesso è inserito oppure no.

Ho creato un listener che lancio al boot e sta in ascolto. Se l'antifurto si inserisce chiama le telecamere via web, le "arma" e quindi accende due led sulla piface.

Primo problema: se una delle telecamere non è raggiungibile per qualche motivo si blocca tutto.

Secondo problema: se tolgo l'antifurto spesso accade che dopo aver spento i led ... li riaccenda ... e non mi spiego il motivo. Qualche anima pia mi da una dritta?

Questo lo script che lancio al boot:

#importo la libreria piface
import pifacedigitalio
#importo la libreria per aprire gli url
import urllib
import subprocess

def allarme_inserito(event):
execfile("/stefano/antifurto/allarme_on.py")

def allarme_disinserito(event):
execfile("/stefano/antifurto/allarme_off.py")

def allarme_suona(event):
execfile("/stefano/antifurto/allarme_suona.py")

# attenzione, sono lo script che parte al boot, quindi se parto io devo inizializzare la scheda a quanto pare, non metto init_board=False tra le parentesi tonde
pifacedigital = pifacedigitalio.PiFaceDigital()
listener = pifacedigitalio.InputEventListener(chip=pifacedigital)
#il primo numero rappresenta il contatto da monitorare, RISING o FALLING dice se quando si apre o quando si chiude, poi dice cosa fare
listener.register(0, pifacedigitalio.IODIR_RISING_EDGE, allarme_inserito)
listener.register(0, pifacedigitalio.IODIR_FALLING_EDGE, allarme_disinserito)
listener.register(1, pifacedigitalio.IODIR_RISING_EDGE, allarme_suona)
#listener.register(2, pifacedigitalio.IODIR_RISING_EDGE, alimentazione_assente)
#listener.register(2, pifacedigitalio.IODIR_FALLING_EDGE, alimentazione_presente)
#listener.register(3, pifacedigitalio.IODIR_RISING_EDGE, batteria_problema)
#listener.register(3, pifacedigitalio.IODIR_FALLING_EDGE, batteria_ok)
listener.activate()


Questo lo script allarme_on.py

#importo la libreria piface
import pifacedigitalio as p
#importo la libreria per aprire gli url
import urllib
import subprocess
#resetto il led che segnala movimento retro
subprocess.call(['/stefano/./kill_notifica_retro_led.sh'])
#resetto led e telecamere, questo file si usa visto che lo script monitor non sembra andare correttamente purtroppo
p.init(init_board=False )
content = urllib.urlopen("http://admin:password@192.168.0.102/control/control?set&section=actions&ah2_arming=enable").read()
content = urllib.urlopen("http://admin:password@192.168.0.103/control/control?set&section=actions&ah2_arming=enable").read()
content = urllib.urlopen("http://admin:password@192.168.0.104/control/control?set&section=actions&ah2_arming=enable").read()
content = urllib.urlopen("http://admin:password@192.168.0.105/control/control?set&section=actions&ah2_arming=enable").read()
p.digital_write(4,1)
p.digital_write(5,1)


e questo allarme_off.py

#importo la libreria piface
import pifacedigitalio as p
#importo la libreria per aprire gli url
import urllib
import subprocess
#resetto il led che segnala movimento retro
subprocess.call(['/stefano/./kill_notifica_retro_led.sh'])
#resetto led e telecamere, questo file si usa visto che lo script monitor non sembra andare correttamente purtroppo
p.init(init_board=False )
content = urllib.urlopen("http://admin:password@192.168.0.102/control/control?set&section=actions&ah2_arming=disable").read()
content = urllib.urlopen("http://admin:password@192.168.0.103/control/control?set&section=actions&ah2_arming=disable").read()
content = urllib.urlopen("http://admin:password@192.168.0.104/control/control?set&section=actions&ah2_arming=disable").read()
content = urllib.urlopen("http://admin:password@192.168.0.105/control/control?set&section=actions&ah2_arming=disable").read()
p.digital_write(4,0)
p.digital_write(5,0)

Grazieeeeeee
Risposta
#2
Ciao Stefano,
non sono esperto di pyton ma il primo problema potrebbe essere relativo al timeout e l'eccezione generata dalla mancata raggiungibilità della telecamera via http.
Prova a gestire sia il timeout che l'eccezione come l'esempio riportato qui
http://stackoverflow.com/questions/87634...n-python-3
Risposta
  


Vai al forum:


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