Mijn vraag
Ik probeer een reeks (wisselende) waarden uit een solar omvormer te lezen met behulp van Python.
Deze waarden lees ik af van een webpage met behulp van een Python script, en deze waarden komen overeen met een set vaste velden (dus de inhoud van de velden wisselt weliswaar, maar de volgorde van de velden blijft hetzelfde).
Wat ik graag wil bereiken is dat ik de wisselende waarden koppel aan globale (integer) variabelen waar ik verder mee kan werken. Mijn uiteindelijke doel is om deze waarden terug te koppelen aan Domoticz en in Domoticz af te lezen hoeveel de PV installatie produceert zonder afhankelijk te zijn van externe monitoringportals. De variabelen in de exacte volgorde waarin de waarden worden aangeleverd zijn als volgt;
Statistics
Total_Generated
Total_Running Time
Today_Generated
Today_Running Time
PV1_Voltage
PV1_Current
PV2_Voltage
PV2_Current
PV3_Voltage
PV3_Current
PV1_StrCurr1
PV1_StrCurr2
PV1_StrCurr3
PV1_StrCurr4
PV2_StrCurr1
PV2_StrCurr2
PV2_StrCurr3
PV2_StrCurr4
PV3_StrCurr1
PV3_StrCurr2
PV3_StrCurr3
PV3_StrCurr4
Grid-connected_Power
Grid-connected_Frequency
Line1_Voltage
Line1_Current
Line2_Voltage
Line2_Current
Line3_Voltage
Line3_Current
Bus_Voltage
Device_Temperature
CO2emission_Reduction
Other_Status
Een voorbeeld van hoe de waarden worden aangeleverd is als volgt;
['1', '4378', '998', '668', '69', '1842', '328', '1226', '336', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '992', '4999', '2364', '421', '65535', '65535', '65535', '65535', '3663', '348', '343', '2']
Relevante software en hardware die ik gebruik
De omgeving waarin het werkt is een Python 2.7 omgeving op een Raspbian (gebaseerd op Debian 9.1) omgeving en het draait op een RaspberryPi 3. (de RPi heeft het IP adres 192.168.1.4 die je in het script tegenkomt).
Wat ik al gevonden of geprobeerd heb
Ik ben vooralsnog zover gekomen, maar jammer genoeg weet ik niet hoe ik hier verder moet.
#!/usr/bin/python
# This script reads the output of SAJ Solar Inverters and parses it so that it can be used in a meaningful way
# Import libraries
import csv
import urllib2
import base64
def main():
global username,password
username = 'gebruikersnaam'
password = 'wachtwoord'
request = urllib2.Request("http://192.168.1.4/status/status.php")
base64string = base64.b64encode('%s:%s' % (username, password))
request.add_header("Authorization", "Basic %s" % base64string)
response = urllib2.urlopen(request)
status = csv.reader(response, delimiter=",")
for row in status:
print(row)
Ik probeer een reeks (wisselende) waarden uit een solar omvormer te lezen met behulp van Python.
Deze waarden lees ik af van een webpage met behulp van een Python script, en deze waarden komen overeen met een set vaste velden (dus de inhoud van de velden wisselt weliswaar, maar de volgorde van de velden blijft hetzelfde).
Wat ik graag wil bereiken is dat ik de wisselende waarden koppel aan globale (integer) variabelen waar ik verder mee kan werken. Mijn uiteindelijke doel is om deze waarden terug te koppelen aan Domoticz en in Domoticz af te lezen hoeveel de PV installatie produceert zonder afhankelijk te zijn van externe monitoringportals. De variabelen in de exacte volgorde waarin de waarden worden aangeleverd zijn als volgt;
Statistics
Total_Generated
Total_Running Time
Today_Generated
Today_Running Time
PV1_Voltage
PV1_Current
PV2_Voltage
PV2_Current
PV3_Voltage
PV3_Current
PV1_StrCurr1
PV1_StrCurr2
PV1_StrCurr3
PV1_StrCurr4
PV2_StrCurr1
PV2_StrCurr2
PV2_StrCurr3
PV2_StrCurr4
PV3_StrCurr1
PV3_StrCurr2
PV3_StrCurr3
PV3_StrCurr4
Grid-connected_Power
Grid-connected_Frequency
Line1_Voltage
Line1_Current
Line2_Voltage
Line2_Current
Line3_Voltage
Line3_Current
Bus_Voltage
Device_Temperature
CO2emission_Reduction
Other_Status
Een voorbeeld van hoe de waarden worden aangeleverd is als volgt;
['1', '4378', '998', '668', '69', '1842', '328', '1226', '336', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '65535', '992', '4999', '2364', '421', '65535', '65535', '65535', '65535', '3663', '348', '343', '2']
Relevante software en hardware die ik gebruik
De omgeving waarin het werkt is een Python 2.7 omgeving op een Raspbian (gebaseerd op Debian 9.1) omgeving en het draait op een RaspberryPi 3. (de RPi heeft het IP adres 192.168.1.4 die je in het script tegenkomt).
Wat ik al gevonden of geprobeerd heb
Ik ben vooralsnog zover gekomen, maar jammer genoeg weet ik niet hoe ik hier verder moet.
#!/usr/bin/python
# This script reads the output of SAJ Solar Inverters and parses it so that it can be used in a meaningful way
# Import libraries
import csv
import urllib2
import base64
def main():
global username,password
username = 'gebruikersnaam'
password = 'wachtwoord'
request = urllib2.Request("http://192.168.1.4/status/status.php")
base64string = base64.b64encode('%s:%s' % (username, password))
request.add_header("Authorization", "Basic %s" % base64string)
response = urllib2.urlopen(request)
status = csv.reader(response, delimiter=",")
for row in status:
print(row)