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

物联网模拟: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,) 平

我开发了一个python脚本,将JSON消息发送到IoT基础设施。该消息包含大量基于“主”设备的模拟传感器值。有一个值对用于测量容器的填充程度[0-100%]

valuepair应该在几天内从0开始递增到100。脚本每20秒运行一次


目前,我传递了一个“静态”值,但我想模拟该值的增加,结果是每个模拟设备在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()