我开发了一个python脚本来将JSON消息发送到物联网基础设施。该消息包含许多基于"主"设备的模拟传感器值。有一个值对来测量容器的填充度 [0 - 100 %]。
值对应在几天内从 0 开始递增到 100。脚本每 20 秒运行一次。
目前我传递了一个"静态"值,但我想模拟该值的增加,结果是每个模拟设备在 24 小时内都有不同的填充水平。我想使用一些东西作为"趋势"来定义设备需要多少时间才能达到 100%。
如果每个设备都有一个填充时间 t(以秒为单位(,那么假设 T 是所有设备 T = (t1, t2, ....TN,(
平均而言,每个设备需要递增的秒数(如果以整数百分比递增(将为 t/100。
因此,对于每次迭代,应该有 20/t/100 增量的概率。
因此,对于 N 个设备,要返回(设备 #,我是否递增?(对的列表,您可以这样做。
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()
您可能还想要其他因素,例如没有纯粹的随机选择。我不知道您正在模拟哪种设备,但填充它们的过程可能具有一天中的时间、天气或其他可能被纳入模拟的因素