Python:无法读取函数

时间:2018-05-12 11:37:51

标签: python firebase firebase-realtime-database push-notification

我正在研究跌倒检测系统。我编写了Arduino代码并连接到Firebase。所以现在我有两个变量获得1或0状态,并且我创建了一个移动应用程序,以便在系统检测到 Firebase + Pusher 时发生故障时接收自动推送通知。我用PyCharm编写了这个Python代码,并使用stream函数从Firebase读取实时数据并发送自动通知。代码正在为变量" Fall_Detection_Status"每次跌倒检测都能正常接收推送通知。但我试图修改代码以从另一个变量读取数据" Fall_Detection_Status1 "我希望我的代码现在发送通知,如果两个变量都给出1#。我想出了这个代码,但似乎最后一个if语句不起作用,因为我无法接收通知,并且在if语句的末尾打印(response [' publishId'])显示任何结果。

那有什么不对?

import pyrebase

from pusher_push_notifications import PushNotifications
config = {
    'apiKey': "***********************************",
    'authDomain': "arfduinopushnotification.firebaseapp.com",
    'databaseURL': "https://arduinopushnotification.firebaseio.com",
    'projectId': "arduinopushnotification",
    'storageBucket': "arduinopushnotification.appspot.com",
    'messagingSenderId': "************"
  }

firebase = pyrebase.initialize_app(config)
db = firebase.database()
pn_client = PushNotifications(
    instance_id='*****************************',
    secret_key='**************************',
)

value = 0
value1 = 0


def stream_handler(message):
    global value
    print(message)
    if message['data'] is 1:
        value = message['data']
    return value


def stream_handler1(message):
    global value1
    print(message)
    if message['data'] is 1:
        value1 = message['data']
    return value1


if value == 1 & value1 == 1:
        response = pn_client.publish(
            interests=['hello'],
            publish_body={
                'apns': {
                    'aps': {
                        'alert': 'Hello!',
                    },
                },
                'fcm': {
                 'notification': {
                    'title': 'Notification',
                    'body': 'Fall Detected !!',
                    },
                },
            },
        )
        print(response['publishId'])


my_stream = db.child("Fall_Detection_Status").stream(stream_handler)
my_stream1 = db.child("Fall_Detection_Status1").stream(stream_handler1)

1 个答案:

答案 0 :(得分:0)

您使用了错误的操作员'&'结合两个测试的结果。在Python中,'&'是按位和运算符!我相信你想要的逻辑版本是'和'。

其次,假设stream_handler / 1调用由最后两个语句运行,那么这两个语句就是在if语句中测试值的地方之后。将这些行移到if块上方。