From f83d021c7bd8057c3819ac724eb04875d4d23834 Mon Sep 17 00:00:00 2001 From: Aaro Varis Date: Thu, 5 Feb 2026 08:48:24 +0200 Subject: [PATCH] asd --- init.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/init.py b/init.py index 00d8660..55df399 100644 --- a/init.py +++ b/init.py @@ -3,10 +3,41 @@ from astral import LocationInfo from astral.sun import sun from datetime import date, datetime from zoneinfo import ZoneInfo +import requests from grove.gpio import GPIO from grove.display.jhd1802 import JHD1802 +shelly_server = "https://shelly-237-eu.shelly.cloud" +shelly_token = "M2M5YTYxdWlkEFD82A2301693D62637E530B4CDDC0DC6E2CDD8F01BE5E5102000B92638A2DA74019E6A81E6D17E0" + +shelly_deviceId = "8cbfea9fd6d0" + +def setShellyPlugState(deviceId: str, state: bool) -> dict: + """ + Set the state of a Shelly plug/switch device. + + Args: + deviceId: The Shelly device id + state: True to turn on, False to turn off + + Returns: + Response from the API as a dictionary + """ + url = f"{shelly_server}/v2/devices/api/set/switch" + params = {"auth_key": shelly_token} + payload = { + "id": deviceId, + "on": state + } + + response = requests.post(url, params=params, json=payload) + + if response.status_code == 200: + return {"success": True} + else: + return response.json() + city = LocationInfo("Seinäjoki", "Finland", "Europe/Helsinki", 62.7900, 22.8400) s = sun(city.observer, date=date.today()) print(f"City: {city.name}, {city.region}") @@ -94,6 +125,7 @@ class AlarmClock: if self.configMode == "normal": # Normal mode: toggle relay self.setRelayState(not self.relayGpio.read()) + setShellyPlugState(shelly_deviceId, self.relayGpio.read() == 1) elif self.configMode == "set_hour": # Increment hour self.alarmHour = (self.alarmHour + 1) % 24