-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdevice_plugin.py
33 lines (31 loc) · 1.36 KB
/
device_plugin.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
import datetime
import requests
def setup(plugins):
@plugins.register("powerfox:poweropti")
def handler(settings):
device_name = settings["device_name"]
request_url = "https://backend.powerfox.energy/api/2.0/my/" + settings["ip"] + "/current" # IP ist die device-ID (standart ist "main")
try:
data = requests.get(request_url, auth="username:password", timeout=30).json() # KA wie die auth genau geht, auf jeden fall mit username + passwort (nicht tokens) aber glaube es muss base64 sein...
return {
"measurement": "census",
"tags": {"device": device_name},
"time": data["Timestamp"],
"fields": {
"power": data["Watt"],
"energy_wh": data["Watt"] * settings["update_time"] / 3600,
"is_valid": data["Outdated"],
"fetch_success": True,
"current_value_usage": data["A_Plus"],
"current_value_feed": data["A_Minus"]
}
}
except requests.RequestException:
return {
"measurement": "census",
"tags": {"device": device_name},
"time": datetime.datetime.utcnow(),
"fields": {
"fetch_success": False
}
}