EnvisionSCADA is een product interessant genoeg om te onderzoeken.
Zelf ben ik aan de slag gegaan om mijn HomeAssistant te dupliceren naar Envision,
met verrassende resultaten tot gevolg.
Oplossing
Met de demo van envision kom je al een heel eind. Voor een laatste versie zie: https://www.envisionscada.com/
Ik jump gelijk naar de geschreven scripts die je laat uitvoeren elke 2 sec:
#
# https://www.homewizard.nl/energy
#
# API HomeWizard WiFi P1 Meter
# https://homewizard-energy-api.readthedocs.io/
#
# The /api/v1/data endpoint always returns the most recent measurement.
# The update frequency depends on the device and, in case of the HWE-P1,
# the smart meter that it is connected to.
# With a SMR 5.0 meter, this is every second for power and every 5 minutes for gas.
#
import requests
import json
debug = 0
# The API endpoint - REPLACE WITH YOUR IP ADDRESS
url = "http://xxx.xxx.xxx.xxx/api/v1/data"
# A GET request to the API
response = requests.get(url , timeout=10 )
packages_json = response.json()
list0 = packages_json['wifi_ssid']
list1 = packages_json['wifi_strength']
list2 = packages_json['smr_version']
list3 = packages_json['meter_model']
list4 = packages_json['unique_id']
list5 = packages_json['active_tariff']
list6 = packages_json['total_power_import_kwh']
list7 = packages_json['total_power_import_t1_kwh']
list8 = packages_json['total_power_import_t2_kwh']
list9 = packages_json['total_power_export_kwh']
list10 = packages_json['total_power_export_t1_kwh']
list11 = packages_json['total_power_export_t2_kwh']
list12 = packages_json['active_power_w']
list13 = packages_json['active_power_l1_w']
list14 = packages_json['active_power_l2_w']
list15 = packages_json['active_power_l3_w']
list16 = packages_json['active_voltage_l1_v']
list17 = packages_json['active_voltage_l2_v']
list18 = packages_json['active_voltage_l3_v']
list19 = packages_json['active_current_l1_a']
list20 = packages_json['active_current_l2_a']
list21 = packages_json['active_current_l3_a']
list22 = packages_json['active_power_average_w']
list23 = packages_json['montly_power_peak_w']
list24 = packages_json['montly_power_peak_timestamp']
list25 = packages_json['external']
# Find watermeter
water_meter_value = None
for external_device in packages_json.get("external", []):
if external_device.get("type") == "water_meter":
water_meter_value = external_device.get("value")
break
# Parse into Variables
[[Local.TUT0]] = list5
[[Local.TUT1]] = list23
[[Local.TUT2]] = list13
[[Local.TUT3]] = list8
[[Local.TUT4]] = list20
[[Local.TUT5]] = list19
[[Local.TUT6]] = list21
[[Local.TUT7]] = list17
[[Local.TUT8]] = list18
[[Local.TUT9]] = list9
[[Local.TUT10]] = list15
[[Local.TUT11]] = list11
[[Local.TUT12]] = list14
[[Local.TUT13]] = list22
[[Local.TUT14]] = list10
[[Local.TUT15]] = list7
[[Local.TUT16]] = list6
[[Local.TUT17]] = list12
[[Local.TUT18]] = list16
[[Local.TUT19]] = water_meter_value
# Naaldmeter voor Actueel Vermogen
[[Local.TUT20]] = list12 + 3000
***************************************************************************************************
Voor het uitsluitend nachttarief ziet het script er zo uit:
***************************************************************************************************
#!/usr/bin/python3
#
# https://www.homewizard.nl/energy
#
# API HomeWizard WiFi P1 Meter
# https://homewizard-energy-api.readthedocs.io/
#
# The /api/v1/data endpoint always returns the most recent measurement.
# The update frequency depends on the device and, in case of the HWE-P1,
# the smart meter that it is connected to.
# With a SMR 5.0 meter, this is every second for power and every 5 minutes for gas.
#
import requests
import json
debug = 0
# The API endpoint - REPLACE WITH YOUR IP ADDRESS
url = "http://xxx.xxx.xxx.xxx/api/v1/data"
# A GET request to the API
response = requests.get(url , timeout=10 )
packages_json = response.json()
list0 = packages_json['wifi_ssid']
list1 = packages_json['wifi_strength']
list2 = packages_json['smr_version']
list3 = packages_json['meter_model']
list4 = packages_json['unique_id']
list5 = packages_json['active_tariff']
list6 = packages_json['total_power_import_kwh']
list7 = packages_json['total_power_import_t1_kwh']
list8 = packages_json['total_power_import_t2_kwh']
list9 = packages_json['total_power_export_kwh']
list10 = packages_json['total_power_export_t1_kwh']
list11 = packages_json['total_power_export_t2_kwh']
list12 = packages_json['active_power_w']
list13 = packages_json['active_power_l1_w']
list14 = packages_json['active_power_l2_w']
list15 = packages_json['active_power_l3_w']
list16 = packages_json['active_voltage_l1_v']
list17 = packages_json['active_voltage_l2_v']
list18 = packages_json['active_voltage_l3_v']
list19 = packages_json['active_current_l1_a']
list20 = packages_json['active_current_l2_a']
list21 = packages_json['active_current_l3_a']
list22 = packages_json['active_power_average_w']
list23 = packages_json['montly_power_peak_w']
list24 = packages_json['montly_power_peak_timestamp']
# Parse into Variables
[[Local.UNT0]] = list5
[[Local.UNT1]] = list23
[[Local.UNT2]] = list13
[[Local.UNT3]] = list8
[[Local.UNT4]] = list20
[[Local.UNT5]] = list19
[[Local.UNT6]] = list21
[[Local.UNT7]] = list17
[[Local.UNT8]] = list18
[[Local.UNT9]] = list9
[[Local.UNT10]] = list15
[[Local.UNT11]] = list11
[[Local.UNT12]] = list14
[[Local.UNT13]] = list22
[[Local.UNT14]] = list10
[[Local.UNT15]] = list7
[[Local.UNT16]] = list6
[[Local.UNT17]] = list12
[[Local.UNT18]] = list16
************************************************************************************
Daarna scherm opbouwen naar wens :
TUT meter UNT meter Watermeter
Nog wat local variables declareren :
Have fun with your scripting and coding !
Peter Van Belle