Python脚本查询mqtt主题中的值,然后发布到主题

2024-04-26 22:04:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Homebridge Mqttthing插件和一些移动传感器中配置安全系统

传感器发布到两个主题zigbee2/hex1zigbee2/hex2。 传感器信息包括:

{"battery":100,"linkquality":102,"occupancy":false,"update":{"state":"idle"},"update_available":false}

报警将状态发布到security/current。报警值为:预警、夜间防护、家庭防护、解除防护、触发

传感器在其消息中向zigbee2/hex发送以下信息:

我想编写一个python脚本,当zigbee2/hex“占用率”中的值更改为true时,将值“触发”发布到security/current。。。然而,只有在警报第一时间启动的情况下才能这样做

#!/user/bin/env python3

import paho.mqtt.client as mqtt

MQTT_BROKER = "192.168.0.189"
MQTT_PORT = 1883
MQTT_TOPIC = [("security/current", 0), ("zigbee2mqtt/hex1",0), ("zigbee2mqtt/hex2", 0)]

def on_connect(client,userdata, flags, rc):
  print("Connected with result code "+str(rc))
  client.subscribe(MQTT_TOPIC)
  print("Subscribed to topic.")

def on_message(client, userdata, message):
  if str(message.payload) == "AwayArm":
    if 'true,' in str(message.payload):
      print("Occupancy true, triggering alarm...")
      client.publish("security/current", "Triggered")

client = mqtt.Client()
client.connect(MQTT_BROKER, MQTT_PORT)

client.on_connect = on_connect
client.on_message = on_message

client.loop_forever()

Tags: clienttruemessageonconnect传感器currentmqtt