Brnfnk Posted May 19 Share Posted May 19 (edited) I made a script that checks if it is raining or will rain in the coming 20 minutes. If so, it should close my sunshade using a Shelly Plus 2PM. However, I can't seem to find how to fix this and can't find any examples of how its done. I want to run my script in some cloud service provider like Google Cloud and let it check every 5 minutes. It should send a call to my Shelly device to close when rain returns True. Can someone explain me what I'm doing wrong here? And point in me in the right direction?  import requests import statistics  lat = 50.0 lon = 5.0 url = f"https://gadgets.buienradar.nl/data/raintext/?lat={lat}&lon={lon}" response = requests.get(url) raindata = response.text  rain_dict = {} for line in raindata.splitlines()[:5]: value, time = line.split("|") rain_dict[str(time.strip())] = int(value.strip())  rain_values = list(rain_dict.values()) median_value = statistics.median(rain_values[1:5])  if rain_values[0] > 5: rain = True elif median_value > 15: rain = True else: rain = False  print(rain)  # Shelly Cloud API-gegevens shelly_cloud_url = < my url > shelly_device_id = < my id > shelly_username = < my username > shelly_password = < my password >  def close_sunshade(): headers = { "Content-Type": "application/json" } payload = { "jsonrpc": "2.0", "id": 1, "method": "Switch.Set", "params": { "id": shelly_device_id, # "auth_key": f"{shelly_username}:{shelly_password}", # Greyed out because auth is turned off "on": True } } response = requests.post(shelly_cloud_url, json=payload, headers=headers, verify=False) if response.status_code == 200: print("Sunshade closed successfully via Shelly Cloud") else: print("Failed to close sunshade via Shelly Cloud")  rain=True # Overwrite rain to True, for testing purposes  if rain: close_sunshade() Edited May 19 by Brnfnk Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish Link to comment Share on other sites More sharing options...
Martin G Posted September 30 Share Posted September 30 Just wondering, why trying to do it via Shelly Cloud ? If Cloud-to-Cloud API doesn't work or if Internet connection drops at home, you cannot send command to close your sunshade. On my side, I do the same with a script running locally on the 2PM and it works fine. If Internet connection drops, and so I can't get weather forecast, I can decide by security to close the sunshade Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.