Tipps & Tricks

Mocking a Year of IoT Sensor Time Series Data with Mimesis

6 min Lesezeit
Mocking a Year of IoT Sensor Time Series Data with Mimesis

In diesem Leitfaden erfahren Sie, wie Sie einen Jahresdatensatz mit täglichen Temperaturmessungen erstellen, der eine saisonale Kurve nachahmt und realistisch aussieht – einschließlich gerätespezifischer Metadaten und bereit für die Verwendung mit Open-Source-Frameworks.

Einleitung

Die Simulation von Daten aus dem Internet der Dinge (IoT), die in großem Maßstab schwer zu erfassen wären, kann eine wertvolle Methode sein, um experimentelle Analysen, Projekte und Studien zu erleichtern. Dies erfordert jedoch mehr als nur die zufällige Generierung von Werten: Es ist notwendig, eine chronologische Zeitachse, Gerätemetadaten und die Reflexion natürlicher Umweltschwankungen oder Muster wie Saisonalität zu berücksichtigen. Mimesis ist ein hervorragendes Open-Source-Tool zur Generierung von Testdaten, während eine Prise Mathematik in eine codebasierte Lösung integriert werden kann, um letzteres zu bewältigen. Dieser Artikel zeigt, wie das geht.

Im folgenden Schritt-für-Schritt-Leitfaden werde ich Sie durch den Prozess der Erstellung eines Jahresdatensatzes mit täglichen Temperaturmessungen führen, der eine saisonale Kurve nachahmt und realistisch aussieht – einschließlich gerätespezifischer Metadaten und bereit für die Verwendung mit Open-Source-Frameworks.

Schritt-für-Schritt-Anleitung

Wir werden uns auf drei wichtige Python-Bibliotheken stützen, um unseren ganzjährigen Satz von IoT-Sensormessungen zu erstellen: Mimesis für die synthetische Datengenerierung, Pandas zur Handhabung der Zeitreihenstruktur und NumPy für mathematische Berechnungen, die uns helfen, saisonale Muster nachzuahmen. Für weitere Informationen zu synthetischen Daten können Sie auch einige effektive Python-Skripte zur Generierung synthetischer Daten ansehen.

Beachten Sie, dass reale IoT-Zeitreihendatensätze in der Regel an ein konkretes Gerät gebunden sind. Um dies zu emulieren, unterstützt von Mimesis, verwenden wir die Generic-Provider-Klasse und generieren ein realistisches Hardware-Geräteprofil: unseren „fiktiven Sensor“. Dies geschieht, bevor wir die tatsächlichen täglichen Messungen erstellen:

import pandas as pd
import numpy as np
from mimesis import Generic
from mimesis.locales import Locale
# Initialisierung eines generischen Anbieters für die englische Sprache
g = Generic(locale=Locale.EN, seed=101)
# Generierung statischer Metadaten für unser Mock-IoT-Gerät
device_profile = {
 'device_id': g.cryptographic.uuid(),
 'location': g.address.city(),
 'firmware_version': g.development.version(),
 'ip_address': g.internet.ip_v4()
}
print(f"Tracking Device: {device_profile['device_id']} located in {device_profile['location']}")

Das device_profile ist ein Dictionary, das die Metadaten unseres fiktiven Sensors enthält: Identifikator, Standort, Firmware-Version und IP-Adresse. Es wird folgendermaßen aussehen:

Tracking Device: e88b7591-31db-4e32-98dc-b35f94c662cd located in Paragould

Bevor wir die Zeitreihe generieren, definieren wir eine Gleichung, um das saisonale Muster zu emulieren, das erforderlich ist, um Temperaturmessungen über ein Jahr hinweg widerzuspiegeln. Wie Sie vielleicht erraten haben, sind trigonometrische Funktionen wie der Sinus perfekt geeignet, um ein solches jahreszeitliches Muster darzustellen, das wie eine Sinuswelle aussieht. Daher wird unsere Gleichung auf einer solchen basieren:

T(t) = T_{base} + A \cdot \sin\\left(\\frac{2\\pi (t - \\phi)}{365}\\right) + \\epsilon

Hier steht T(t) für die Temperaturmessung am Tag t des Jahres, der von 1 bis 365 reicht. Die restlichen Variablen sind Komponenten einer Sinuswelle, und wichtig ist, dass \\epsilon das zufällige Rauschen ist, das durch die Verwendung von Mimesis eingeführt wird: Ohne Letzteres hätten wir eine perfekte, glatte Sinuswelle, was nicht realistisch wäre, da die reale Temperatur natürlich kurzfristige Schwankungen aufweist!

Als Nächstes iterieren wir über das gesamte Jahr, Tag für Tag, um die täglichen Zeitstempel zu generieren. Pandas wird den Datenprozess steuern, während mimesis.numeric verwendet wird, um nicht nur das oben genannte Umgebungsrauschen, sondern auch einige realistische Netzwerkverzögerungen einzufügen: ein häufiges Merkmal von IoT-Geräten. All dies geschieht auf der Grundlage der zuvor definierten mathematischen Grundgleichung. Die Rolle von NumPy besteht darin, die Sinusfunktion als Teil des Generierungsprozesses anzuwenden.

1. Festlegung mathematischer Konstanten zur Emulation der täglichen Temperatur

T_base = 15.0 # Basis Temperatur in Celsius
A = 12.0 # Schwankungen um 12 Grad nach oben/unten im Jahresverlauf
phase_shift = 80 # Verschiebung der Sinuswelle, damit der Höhepunkt im Sommer liegt

2. Erstellung der 365-tägigen Zeitreihe ab dem 1. Januar 2026

dates = pd.date_range(start='2026-01-01', periods=365, freq='D')
readings = []

3. Durchlaufen jedes Tages und Berechnung der Messungen

for day_index, current_date in enumerate(dates):
 # Berechnung der saisonalen Kurvenbasis für diesen spezifischen Tag
 seasonal_temp = T_base + A * np.sin(2 * np.pi * (day_index - phase_shift) / 365)
 # Verwendung von Mimesis zur Einspeisung zufälliger Hardwarevariationen/Rauschen (z.B. -2.0 bis 2.0 Grad)
 sensor_noise = g.numeric.float_number(start=-2.0, end=2.0, precision=2)
 # Berechnung der endgültigen aufgezeichneten Temperatur
 final_temp = round(seasonal_temp + sensor_noise, 2)
 # Zusammenstellung des täglichen Protokolls, Mischung statischer Metadaten mit dynamischer Mimesis-Generierung
 readings.append({
 'timestamp': current_date,
 'device_id': device_profile['device_id'],
 'location': device_profile['location'],
 'temperature_c': final_temp,
 'latency_ms': g.numeric.integer_number(start=12, end=145) # Simulation von Netzwerkverbindungsstärke/Verzögerungsschwankungen pro Tag
 })

Die Daten werden dann in ein DataFrame zur Analyse umgewandelt:

df = pd.DataFrame(readings)

Wie Sie sehen können, verwenden wir Mimesis zweimal im Prozess der Zeitreihengenerierung für jede tägliche Instanz der Zeitreihe: einmal für das Sensorausrauschen und einmal für die Latenz, die letzteres simuliert, um tägliche Schwankungen der Netzwerkverbindung nachzuahmen.

Nun ist es an der Zeit, zu sehen, wie die generierte IoT-Zeitreihe aussieht und das saisonale Muster zu überprüfen, das wir nachahmen wollten:

print("--- Januar (Winter) Messungen ---")
print(df[['timestamp', 'temperature_c', 'latency_ms']].head(3))
print("\
--- Juli (Sommer) Messungen ---")
print(df[['timestamp', 'temperature_c', 'latency_ms']].iloc[180:183])

— Januar (Winter) Messungen —
timestamp temperature_c latency_ms
0 2026-01-01 3.54 61
1 2026-01-02 4.90 103
2 2026-01-03 3.18 140
— Juli (Sommer) Messungen —
timestamp temperature_c latency_ms
180 2026-06-30 28.84 116
181 2026-07-01 25.81 62
182 2026-07-02 26.08 97

Für ein visuelles Ergebnis können Sie Folgendes ausprobieren:

import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
plt.plot(df['timestamp'], df['temperature_c'])
plt.xlabel('Datum')
plt.ylabel('Temperatur (°C)')
plt.title('Tägliche Temperatur im Jahresverlauf')
plt.grid(True)
plt.tight_layout()
plt.show()

Gut gemacht, wenn Sie bis hierher gekommen sind!

Abschließende Bemerkungen

In diesem Artikel haben wir gezeigt, wie man Mimesis in Kombination mit Pandas und NumPy nutzt, um die Generierung von gefälschten, aber überzeugenden IoT-Zeitreihendaten zu veranschaulichen. Insbesondere haben wir den Prozess der Erstellung eines jahresübergreifenden Datensatzes mit täglichen Temperaturmessungen, die von einem IoT-Sensor erfasst wurden, einschließlich gerätebezogener Metadaten, zufälligem Rauschen zur Nachahmung realistischer Temperaturänderungen und Geräteschlatency, veranschaulicht. Diese Daten können von nachgelagerten Prognosemodellen oder sogar Dashboard-Lösungen verwendet werden: Sie werden sicherlich verarbeitet und helfen, Aspekte wie saisonale Spitzen, häufige Sensorfluktuationen und mehr zu interpretieren.

Iván Palomares Carrascosa ist ein führender Experte, Autor, Redner und Berater in den Bereichen KI, maschinelles Lernen, tiefes Lernen und LLMs. Er schult und berät andere darin, KI in der realen Welt zu nutzen.

„`


Quellen: kdnuggets

Bildquelle: KI generiert

KI Snack