IoT Simulation: функция Python для случайного увеличения от 0 до 100 в течение нескольких дней для 50 устройств - PullRequest
0 голосов
/ 09 июня 2019

Я разработал скрипт на python для отправки сообщений JSON в инфраструктуру IoT. Сообщение вкл. много смоделированных значений датчика, которые основаны на «главном» устройстве. Существует одна пара значений для измерения степени заполнения контейнера [0 - 100%].

Значение пары должно увеличиваться, начиная с 0 до 100, в течение нескольких дней. Сценарий запускается каждые 20 секунд.

В настоящее время я передаю «статическое» значение, но я хотел бы смоделировать увеличение значения, в результате чего каждое моделируемое устройство имеет различный уровень заполнения в течение 24 часов. Я хотел бы использовать что-то в качестве «тренда», чтобы определить, сколько времени потребуется устройству, чтобы достичь 100%.

1 Ответ

0 голосов
/ 09 июня 2019

Если у каждого устройства есть время t (в секундах), которое потребуется для заполнения, то, скажем, T является кортежем всех устройств T = (t1, t2, .... tn,)

В среднем количество секунд, которое необходимо увеличить каждому устройству (если увеличение в целочисленных процентах), будет t / 100.

Таким образом, для каждой итерации должна быть вероятность 20 / т / 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()

Могут быть и другие факторы, например, отсутствие случайного выбора.Я не знаю, какие устройства вы моделируете, но, возможно, процесс, который их заполняет, имеет время суток, погоду или другие факторы, которые могут быть включены в симуляцию

...