first commit
This commit is contained in:
54
data_simulator.py
Normal file
54
data_simulator.py
Normal file
@@ -0,0 +1,54 @@
|
||||
|
||||
import redis
|
||||
import time
|
||||
import random
|
||||
import json
|
||||
|
||||
# Connect to Redis
|
||||
# This assumes Redis is running on localhost:6379
|
||||
try:
|
||||
r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
|
||||
r.ping()
|
||||
print("Successfully connected to Redis.")
|
||||
except redis.exceptions.ConnectionError as e:
|
||||
print(f"Could not connect to Redis: {e}")
|
||||
exit(1)
|
||||
|
||||
# The channel to publish data to
|
||||
REDIS_CHANNEL = "energy_data"
|
||||
|
||||
def generate_mock_data():
|
||||
"""Generates a single mock data point for a random sensor."""
|
||||
sensor_id = f"sensor_{random.randint(1, 10)}"
|
||||
# Simulate energy consumption in kWh
|
||||
energy_value = round(random.uniform(0.5, 5.0) + (random.random() * 5 * (1 if random.random() > 0.9 else 0)), 4)
|
||||
|
||||
return {
|
||||
"sensorId": sensor_id,
|
||||
"timestamp": int(time.time()),
|
||||
"value": energy_value,
|
||||
"unit": "kWh"
|
||||
}
|
||||
|
||||
def main():
|
||||
"""Main loop to generate and publish data."""
|
||||
print(f"Starting data simulation. Publishing to Redis channel: '{REDIS_CHANNEL}'")
|
||||
while True:
|
||||
try:
|
||||
data = generate_mock_data()
|
||||
payload = json.dumps(data)
|
||||
|
||||
r.publish(REDIS_CHANNEL, payload)
|
||||
print(f"Published: {payload}")
|
||||
|
||||
# Wait for a random interval before sending the next data point
|
||||
time.sleep(random.uniform(1, 3))
|
||||
except KeyboardInterrupt:
|
||||
print("Stopping data simulation.")
|
||||
break
|
||||
except Exception as e:
|
||||
print(f"An error occurred: {e}")
|
||||
time.sleep(5)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user