最终我想将一个值写入数据库。
我找到了一个脚本来输出所需的数据。 然而,它确实在循环中返回它 - 但每次触发脚本时我只需要一个值,而不是循环。
import tibber
account = tibber.Account("tokenstring")
home = account.homes[0]
@home.event("live_measurement")
async def process_data(
data):
print(data.power)
home.start_live_feed(user_agent="Homey/10.0.0")
print(home.event("live_measurement"))`
这将在循环中输出值 - 但每次代码运行时我只需要一个值。
救命!
设法实现它并将其放入可调用函数中。
def get_tibber():
account = tibber.Account(f"{TIBBER_API_KEY}")
home = account.homes[0]
@home.event("live_measurement")
async def process_data(data):
pass
def my_exit_function(live_measurement_data):
global cons
cons = live_measurement_data.power
return cons != 0
# Now start retrieving live measurements
home.start_live_feed(exit_condition=my_exit_function,
user_agent="UserAgent/0.0.1")
return cons
如果使用默认参数调用,
start_live_feed
函数将启动无限循环。换句话说,调用此函数后,Python 将不会运行任何代码。
该函数接受一个参数
exit_condition
。这是一个在每次接收到数据时运行after的函数。如果它返回一个真值,循环将结束,Python 将继续运行 home.start_live_feed(...)
行之后的内容。
因此,要运行一次,您只需传递一个始终返回 True 的函数即可。
import tibber
account = tibber.Account(TOKEN_STRING)
home = account.homes[0]
@home.event("live_measurement")
async def process_data(data):
# Database storing logic here
home.start_live_feed(user_agent="Homey/10.0.0", exit_condition=lambda data: True)