Solar Sensor Node (Energy Forecast + Sensor Fusion Mockup)

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

Your email address will not be published. Required fields are marked *