¿Cómo detectar cambios en el niño base de fuego con python?

Tengo algunos problemas con esta aplicación. Lo que necesito es que si detecto un cambio en la base de datos (FIREBASE), particularmente en los nodos ‘sala’ y ‘ventilacion’, la función hace lo que tiene que hacer. Si no hay ningún cambio en la base de datos, no haría nada. Estoy usando python y pyrebase library. Aquí está el código. Muchas gracias por su ayuda.

import pyrebase import serial import time config = { #firebase configurations } firebase = pyrebase.initialize_app(config) db = firebase.database() def ReconfiguracionFabrica(): ser.write('AT') time.sleep(0.2) ser.write('AT+RENEW') time.sleep(0.3) def ConfiguracionMaster(): time.sleep(0.5) ser.write('AT+IMME1') time.sleep(0.350) ser.write('AT+ROLE1') time.sleep(0.2) ser=serial.Serial(port="/dev/ttyAMA0", baudrate=9600, timeout=1) ReconfiguracionFabrica() time.sleep(0.1) ConfiguracionMaster() time.sleep(0.1) print "********** INICIO *************" ser.flushInput() contador=0 prender= '' ventilacion1= '' checkeo= '' while True: #if db.child("sala").: # It is the line where would be the conditional that allows me to detect any change only in the sala's node. salidaLed1 = db.child("sala").get() ser.write('AT') time.sleep(0.1) ser.write('AT+CON508CB16A7014') time.sleep(0.1) if salidaLed1.val()== True: prender=";" if salidaLed1.val()== False: prender="," ser.write('luz: %s \n' %(prender)) print ('luz: %s \n' %(prender)) time.sleep(1) ser.read(checkeo) if checkeo== 'j': ReconfiguracionFabrica() time.sleep(0.1) ConfiguracionMaster() 

Pregunta : ¿Cómo detectar cambios en niño base de fuego?


Nota : todos los ejemplos usan acceso público

  1. Configura los datos de ejemplo y verifica que sea legible.
    Esto hase hecho una vez !

    introduzca la descripción de la imagen aquí

     temperature_c = 30 data = {'date':time.strftime('%Y-%m-%d'), 'time':time.strftime('%H:%M:%S'), 'temperature':temperature_c} db.child('public').child('Device_1').set(data) response = db.child('public').child('Device_1').get() print(response.val()) 
  2. Crear primer script haciendo actualizaciones:

     for t in [25, 26, 27, 28, 29, 30, 31, 32, 33, 35]: temperature_c = t data = {'date':time.strftime('%Y-%m-%d'), 'time':time.strftime('%H:%M:%S'), 'temperature':temperature_c} db.child('public').child('Device_1').update(data) time.sleep(60) 
  3. Crear una segunda secuencia de comandos con el controlador de secuencia

     def stream_handler(message): print('event={m[event]}; path={m[path]}; data={m[data]}' .format(m=message)) my_stream =db.child('public').child('Device_1').stream(stream_handler) # Run Stream Handler forever while True: data = input("[{}] Type exit to disconnect: ".format('?')) if data.strip().lower() == 'exit': print('Stop Stream Handler') if my_stream: my_stream.close() break 
  4. Ejecutar secuencia de comandos de secuencia de comandos:

    Salida de respuesta de def stream_handler después del inicio (datos iniciales):

     event="put"; path=/; data={'Device_1': {'temperature': 30, 'time': '13:34:24', 'date': '2017-07-20'}} 
  5. Ejecutar el script de actualización:

  6. Salida de reloj de secuencia de comandos de secuencia

    Salida de respuesta de def stream_handler después de la primera actualización de datos:

     event=patch; path=/Device_1; data={'temperature': 25, 'time': '13:49:12'} 

Probado con Python: 3.4.2


Pyrebase
transmisión

Puede escuchar los cambios en vivo de sus datos con el método stream ().

 def stream_handler(message): print(message["event"]) # put print(message["path"]) # /-K7yGTTEp7O549EzTYtI print(message["data"]) # {'title': 'Pyrebase', "body": "etc..."} my_stream = db.child("posts").stream(stream_handler) 

Al menos debes manejar los eventos de poner y parchar. Consulte “Transmisión desde la API REST” para obtener más información.