电报机器人传感器数据
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
我正在尝试编写简单的电报机器人,其中 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