Hello,
I try to adapt the code of the Pond service found at
https://github.com/weewx/weewx/wiki/add-sensor to access xml data from a known url and record these data in my sqlite weewx database. Sure I am not a Python guy and I did my best to write the following code :
import syslog
import weewx
from weewx.wxengine import StdService
import urllib2
import xml.etree.ElementTree as ET
class ElectronService(StdService):
def __init__(self, engine, config_dict):
try:
super(ElectronService, self).__init__(engine, config_dict)
self.dashdata_url = '
http://192.168.1.111/api/DashData.xml?T=0&D=0&M=1'
xmlurl = urllib2.urlopen(self.dashdata_url)
xmldata = xmlurl.read()
tree = ET.parse(xmldata)
root = tree.getroot()
syslog.syslog(syslog.LOG_INFO, "TED Pro: probing %s" % self.dashdata_url)
self.bind(weewx.NEW_ARCHIVE_RECORD, self.read_xml)
except Exception as e:
syslog.syslog(syslog.LOG_ERR, "TED Pro: cannot reach TED url: %s" % e)
def read_xml(self, event):
try:
event.record['networkVoltage'] = float(root.find('Voltage').text)
event.record['powerConsumption'] = float(root.find('TDY').text)
except Exception as e:
syslog.syslog(syslog.LOG_ERR, "TED Pro: cannot read value: %s" % e)
Could you give some advises on this code ?
For example I do not understand the line : self.bind(weewx.NEW_ARCHIVE_RECORD, self.read_xml)
read_xml is defined with two parameters but in this line this function is not even called with parameters ...
Thank you.