Questo forum utilizza i cookies
Questo forum fa uso di cookie per migliorare l'esperienza utente. I cookie sono piccoli file di testo memorizzati sul tuo browser. I cookie impostati dal forum possono essere utilizzati solo su questo sito e non costituiscono rischio per la sicurezza, vengono utilizzati unicamente per memorizzare le tue preferenze. Navigando sul sito accetti che RaspberryItaly installi i cookie sul tuo browser.
Per maggiori informazioni consulta l'informativa sui Cookie di RasberryItaly

Un cookie verra memorizzato nel browser indipendentemente dalla scelta per evitare che questa domanda ti venga posta di nuovo. Sarai in grado di modificare le impostazioni dei cookie in qualsiasi momento utilizzando il link nel footer.
  • 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
non flag funziona che

[Risolto] flag che non funziona
#1
Ciao,
avrei bisogno di "settare" una "flag" da Telegram per poi usarla in un if per spegnere o accendere una parte dello script,
in questo caso voglio che funzioni il PIR ma voglio poter decidere se far scattare o meno una sirena che nell' esempio è un LED:

Codice:
#!/usr/bin/python
import requests
import time
import telepot
import subprocess
from signal import pause
from gpiozero import MotionSensor,LED

sensore = MotionSensor(4)
led5 = LED(5)
bot = telepot.Bot('xxxxxxxxxxxxxxxxxxxxx')  # token creato dal bot
chat_id = 'xxxxxxxxxxx'                     # chat_id creato dal bot
flag = 0
print"Pronto!"

def allarme():
        print"Motion detected!"
        bot.sendMessage(chat_id,"Allarme PIR")
        if flag == 0:                       # Sirena ON
           led5.on()                             
           time.sleep(2)
           led5.off()
           print"Sirena accesa"
        else:
           print"Sirena spenta"             # Sirena OFF

def no_allarme():
        print"Riposo"
        led5.off()

def handle(msg):
   chat_id = msg['chat']['id']
   command = msg['text']
   print ('Got command: %s' % command)

   if command == '/Ciao':
       bot.sendMessage(chat_id,"Sono attivo!")
   elif command == 'Sirena ON':
       flag = '0'                          # Sirena abilitata
   elif command == 'Sirena OFF':
       flag = '1'                          # Sirena disabilitata
  
bot.message_loop(handle)
print ('Sto ascoltando ...')
bot.sendMessage(chat_id,"Sorveglianza attivata")

sensore.when_motion = allarme
sensore.when_no_motion = no_allarme

while 1:


la "flag" non funziona, la sirena risulta sempre attivata, da ulteriori test ho scoperto che quando mando il comando 'Sirena OFF', entro correttamente nel command corrispondente ma la flag non va a '1'. Ho provato anche con True e False, dove sbaglio ?
Grazie
Maurizio
Risposta
#2
e come vuoi fare per "...voglio poter decidere se far scattare..."?
Heart Libro  | Blog EnricoSartori.it | Idea YouTube
Se un utente ti è stato utile, aumenta la sua reputazione! premi il Pollicione! 
Risposta
#3
sbagli nel considerare la variabile flag come universale. le variabili, all' interno delle funzioni, vivono solo all'interno della funzione stessa, e non sono globali.
In sostanza perchè non passi il valore di flag alla funzione? Esattamente come fai con msg nella funzione handle.
Risposta
#4
(24/11/2017, 13:21)Zzed Ha scritto: sbagli nel considerare la variabile flag come universale. le variabili, all' interno delle funzioni, vivono solo all'interno della funzione stessa, e non sono globali.
In sostanza perchè non passi il valore di flag alla funzione? Esattamente come fai con msg nella funzione handle.

grazie per la dritta, effettivamente la variabile flag và definita come "global", basta aggiungere dopo la riga
Codice:
print ('Got command: %s' % command)


la riga

Codice:
global flag

in questo modo quando la richiamo nella funzione "allarme" l'IF funziona abilitando o meno la sirena

Grazie
Maurizio
Risposta
  


Vai al forum:


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