import random
import math
import time
def solar_irradiance(hour):
# crude sunlight model
return max(0, math.sin((hour - 6) * math.pi / 12))
def battery_update(battery, irradiance, load=0.03):
charge_rate = irradiance * 0.05
battery = max(0.0, min(1.0, battery + charge_rate - load))
return battery
def read_sensors():
return {
"temperature": 20 + random.uniform(-2, 2),
"humidity": 0.55 + random.uniform(-0.1, 0.1),
"vibration": random.random() * 0.02,
}
battery = 0.5
for hour in range(0, 24):
irr = solar_irradiance(hour)
battery = battery_update(battery, irr)
data = read_sensors()
data["battery_lvl"] = battery
data["hour"] = hour
print(data)
time.sleep(0.05)
Leave a Reply