物联网模拟:Python函数可以在几天内为50台设备从0随机增加到100
我开发了一个python脚本,将JSON消息发送到IoT基础设施。该消息包含大量基于“主”设备的模拟传感器值。有一个值对用于测量容器的填充程度[0-100%] valuepair应该在几天内从0开始递增到100。脚本每20秒运行一次物联网模拟:Python函数可以在几天内为50台设备从0随机增加到100,python,simulate,Python,Simulate,我开发了一个python脚本,将JSON消息发送到IoT基础设施。该消息包含大量基于“主”设备的模拟传感器值。有一个值对用于测量容器的填充程度[0-100%] valuepair应该在几天内从0开始递增到100。脚本每20秒运行一次 目前,我传递了一个“静态”值,但我想模拟该值的增加,结果是每个模拟设备在24小时内具有不同的填充级别。我想用一些东西作为“趋势”来定义设备达到100%所需的时间。如果每个设备都有一个填充时间t(以秒为单位),那么假设t是所有设备的元组t=(t1,t2,.tn,) 平
目前,我传递了一个“静态”值,但我想模拟该值的增加,结果是每个模拟设备在24小时内具有不同的填充级别。我想用一些东西作为“趋势”来定义设备达到100%所需的时间。如果每个设备都有一个填充时间t(以秒为单位),那么假设t是所有设备的元组t=(t1,t2,.tn,) 平均而言,每个设备需要增加的秒数(如果以整数百分比增加)为t/100 因此,对于每次迭代,应该有20/t/100的增量概率 因此,对于N个设备,要返回(设备#,I是否递增?)对的列表,您可以这样做
from random import random
class devices():
def __init__(self, T, interval=20):
self.devices = N * [0]
self.T = T
def iteration(self):
for i in range(len(self.devices)):
self.devices[i] = min(100, self.devices[i] + \
(1 if random() < (interval * 100 / self.T[i])) else 0)
return [[i, self.devices[i] for i in range(len(self.T))]
你可能还需要其他因素,比如不要纯粹的随机选择。我不知道您正在模拟的是哪种设备,但填充它们的过程可能有一天中的时间、天气或其他因素,这些因素可能会被纳入模拟中
devs = devices([t1, t2, t3, ..., tn])
then every 20 seconds
state = devs.iteration()