电报机器人传感器数据

Telegram-bot sensor data

我正在尝试编写简单的电报机器人,其中 returns 来自安装在 raspberry pi 上的传感器的温度或湿度值。问题是我一直在为温度和嗡嗡声获取恒定值。基本上循环不工作,机器人不读取 temp 和 hum 的新值。 我做错了什么?

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