物联网模拟:Python 函数可在几天内为 50 台设备从 0 随机递增到 100



我开发了一个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()

您可能还想要其他因素,例如没有纯粹的随机选择。我不知道您正在模拟哪种设备,但填充它们的过程可能具有一天中的时间、天气或其他可能被纳入模拟的因素

最新更新