繁体   English   中英

电报机器人传感器数据

[英]Telegram-bot sensor data

我正在尝试编写简单的电报机器人,它从安装在树莓派上的传感器返回温度或湿度值。 问题是我一直对温度和嗡嗡声保持不变。 基本上循环不起作用,机器人不会读取温度和嗡嗡声的新值。 我做错了什么?

import bme680 # sensor lib
import telebot

bot = telebot.TeleBot('TOKEN')

sensor = bme680.BME680()
sensor.set_humidity_oversample(bme680.OS_2X)
sensor.set_pressure_oversample(bme680.OS_4X)
sensor.set_temperature_oversample(bme680.OS_8X)
sensor.set_filter(bme680.FILTER_SIZE_3)

def temp():
    temp = sensor.data.temperature
    return temp

def hum():
    hum = sensor.data.humidity
    return hum

while True:
    if sensor.get_sensor_data():
    
        @bot.message_handler(commands=['start'])
        def start_message(message):
            bot.send_message(message.chat.id, 'Hi! Temp or Hum?')
                        
        @bot.message_handler(content_types=['text'])
        def send_text(message):
            if message.text == 'Temp':
                bot.send_message(message.chat.id, 'Temp ' + str(temp()))
            elif message.text == 'Hum':
                bot.send_message(message.chat.id, 'Hum '+str(hum()))
                
        bot.polling()

问题是 sensor.get_sensor_data() 从设备获取数据并将其值存储在数据中,并且该值永远不会刷新。 解决方案是将 sensor.get_sensor_data() 放在 Temp 和 Hum 函数的开头:

def temp():
    if sensor.get_sensor_data():
        temp = sensor.data.temperature
        return temp

def hum():
    if sensor.get_sensor_data():
        hum = sensor.data.humidity
        return hum

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM