-
Notifications
You must be signed in to change notification settings - Fork 0
/
shelly.py
44 lines (31 loc) · 1.22 KB
/
shelly.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import logging
import requests
class ShellySwitch:
SWITCHCOMMAND ='/rpc/Switch.set?id=0&on=%s'
STATUSCOMMAND ='/rpc/Switch.GetStatus?id=0'
BASECOMMAND = '/Shelly'
def __init__(self,name):
self.name = name
def _getShellyData(self, isBase):
URL = self._getShellyStatusUrl() if not isBase else self._getShellyBaseUrl()
meter_r = requests.get(url = URL)
# check for response
if not meter_r:
raise ConnectionError("No response from Shelly 1PM - %s" % (URL))
meter_data = meter_r.json()
# check for Json
if not meter_data:
raise ValueError("Converting response to JSON failed")
return meter_data
def switchRelay(self,on):
command = self.SWITCHCOMMAND % ('true' if on else 'false')
URL = "http://%s%s" % (self.name,command)
answer = requests.get(url = URL)
if not answer:
raise ConnectionError("No response from Shelly 1PM - %s" % (URL))
def _getStatusUrl(self):
URL = "http://%s%s" % (self.name,self.STATUSCOMMAND)
return URL
def _getBaseUrl(self):
URL = "http://%s%s" % (self.name,self.BASECOMMAND)
return URL