Open jens-maus opened 8 years ago
Probably related to this I get a similar "PMException" error message when suing the "print_temperature_updates.py" script:
Waiting for changes...
2016-03-25 23:52:02,770 [ERROR] Exception in XML-RPC call event('pmatic-0', 'LEQ0079579:2', 'ACTUAL_TEMPERATURE', 19.2):
Traceback (most recent call last):
File "build/bdist.linux-x86_64/egg/pmatic/events.py", line 377, in _dispatch
return func(*params)
File "build/bdist.linux-x86_64/egg/pmatic/events.py", line 401, in event
value_changed = obj.values[value_key].set_from_api(value)
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 216, in values
self._fetch_values()
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 288, in _fetch_values
address=self.address,paramsetKey="VALUES")
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 178, in <lambda>
return lambda **kwargs: self.call(method_name_int, **kwargs)
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 493, in call
return self._parse_api_response(method_name_int, response_txt)
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 150, in _parse_api_response
msg["error"]["code"]))
PMException: [interface_get_paramset] JSONRPCError: TCL error (601)
Please add this to the scripts after the "import pmatic" line and run the script again.
pmatic.logging(pmatic.DEBUG)
From this output we should see which device is causing this issue. Maybe it's the same as in the second trace.
Maybe /var/log/syslog contains a useful message.
Thanks for the hint. Here is the output of the device resulting in the error mentioned above (list_room_states.py):
2016-03-26 08:08:40,245 [DEBUG] CALL: Interface.getParamsetDescription ARGS: {'interface': u'BidCos-RF', 'paramsetType': u'VALUES', u'_session_id_': u'4ROQwDebdl', 'address': u'LEQ0079034:0'}
2016-03-26 08:08:40,246 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetType": "VALUES", "_session_id_": "4ROQwDebdl", "address": "LEQ0079034:0"}, "method": "Interface.getParamsetDescription"}
2016-03-26 08:08:40,365 [DEBUG] HTTP-STATUS: 200
2016-03-26 08:08:40,365 [DEBUG] RESPONSE: {"version": "1.1","result": [{"NAME":"STICKY_UNREACH","DEFAULT":"0","FLAGS":"25","ID":"STICKY_UNREACH","MAX":"1","MIN":"0","OPERATIONS":"7","TAB_ORDER":"1","TYPE":"BOOL","UNIT":""},{"NAME":"RSSI_PEER","DEFAULT":"0","FLAGS":"1","ID":"RSSI_PEER","MAX":"2147483647","MIN":"-2147483648","OPERATIONS":"5","TAB_ORDER":"5","TYPE":"INTEGER","UNIT":""},{"NAME":"RSSI_DEVICE","DEFAULT":"0","FLAGS":"1","ID":"RSSI_DEVICE","MAX":"2147483647","MIN":"-2147483648","OPERATIONS":"5","TAB_ORDER":"4","TYPE":"INTEGER","UNIT":""},{"NAME":"DEVICE_IN_BOOTLOADER","DEFAULT":"0","FLAGS":"9","ID":"DEVICE_IN_BOOTLOADER","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"7","TYPE":"BOOL","UNIT":""},{"NAME":"LOWBAT","DEFAULT":"0","FLAGS":"9","ID":"LOWBAT","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"3","TYPE":"BOOL","UNIT":""},{"NAME":"AES_KEY","DEFAULT":"0","FLAGS":"0","ID":"AES_KEY","MAX":"127","MIN":"0","OPERATIONS":"1","TAB_ORDER":"9","TYPE":"INTEGER","UNIT":""},{"NAME":"UNREACH","DEFAULT":"0","FLAGS":"9","ID":"UNREACH","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"0","TYPE":"BOOL","UNIT":""},{"NAME":"CONFIG_PENDING","DEFAULT":"0","FLAGS":"9","ID":"CONFIG_PENDING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"2","TYPE":"BOOL","UNIT":""},{"NAME":"UPDATE_PENDING","DEFAULT":"0","FLAGS":"9","ID":"UPDATE_PENDING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"8","TYPE":"BOOL","UNIT":""},{"NAME":"INHIBIT","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"INHIBIT","MAX":"1","MIN":"0","OPERATIONS":"7","TAB_ORDER":"6","TYPE":"BOOL","UNIT":""}],"error": null}
2016-03-26 08:08:40,366 [DEBUG] CALL: Interface.getParamset ARGS: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'4ROQwDebdl', 'address': u'LEQ0079034:0'}
2016-03-26 08:08:40,366 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetKey": "VALUES", "_session_id_": "4ROQwDebdl", "address": "LEQ0079034:0"}, "method": "Interface.getParamset"}
2016-03-26 08:08:40,449 [DEBUG] HTTP-STATUS: 200
2016-03-26 08:08:40,449 [DEBUG] RESPONSE: {"version": "1.1","result": {"AES_KEY":"0","CONFIG_PENDING":"0","DEVICE_IN_BOOTLOADER":"0","INHIBIT":"0","LOWBAT":"0","RSSI_DEVICE":"-55","RSSI_PEER":"-57","STICKY_UNREACH":"0","UNREACH":"0","UPDATE_PENDING":"0"},"error": null}
2016-03-26 08:08:40,450 [DEBUG] CALL: Interface.getParamsetDescription ARGS: {'interface': u'BidCos-RF', 'paramsetType': u'VALUES', u'_session_id_': u'4ROQwDebdl', 'address': u'LEQ0079034:1'}
2016-03-26 08:08:40,450 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetType": "VALUES", "_session_id_": "4ROQwDebdl", "address": "LEQ0079034:1"}, "method": "Interface.getParamsetDescription"}
2016-03-26 08:08:40,538 [DEBUG] HTTP-STATUS: 200
2016-03-26 08:08:40,539 [DEBUG] RESPONSE: {"version": "1.1","result": [{"NAME":"HUMIDITY","AutoconfRoles":"WEATHER","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"HUMIDITY","MAX":"99","MIN":"0","OPERATIONS":"5","TAB_ORDER":"1","TYPE":"INTEGER","UNIT":"%"},{"NAME":"TEMPERATURE","AutoconfRoles":"WEATHER","CONTROL":"NONE","DEFAULT":"0.000000","FLAGS":"1","ID":"TEMPERATURE","MAX":"50.000000","MIN":"-10.000000","OPERATIONS":"5","TAB_ORDER":"0","TYPE":"FLOAT","UNIT":"°C"}],"error": null}
2016-03-26 08:08:40,539 [DEBUG] CALL: Interface.getParamset ARGS: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'4ROQwDebdl', 'address': u'LEQ0079034:1'}
2016-03-26 08:08:40,539 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetKey": "VALUES", "_session_id_": "4ROQwDebdl", "address": "LEQ0079034:1"}, "method": "Interface.getParamset"}
2016-03-26 08:08:40,622 [DEBUG] HTTP-STATUS: 200
2016-03-26 08:08:40,622 [DEBUG] RESPONSE: {"version": "1.1","result": {"HUMIDITY":"44","TEMPERATURE":"17.100000"},"error": null}
2016-03-26 08:08:40,622 [DEBUG] CALL: Interface.getParamsetDescription ARGS: {'interface': u'BidCos-RF', 'paramsetType': u'VALUES', u'_session_id_': u'4ROQwDebdl', 'address': u'LEQ0079034:2'}
2016-03-26 08:08:40,622 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetType": "VALUES", "_session_id_": "4ROQwDebdl", "address": "LEQ0079034:2"}, "method": "Interface.getParamsetDescription"}
2016-03-26 08:08:40,723 [DEBUG] HTTP-STATUS: 200
2016-03-26 08:08:40,724 [DEBUG] RESPONSE: {"version": "1.1","result": [{"NAME":"SET_TEMPERATURE","CONTROL":"HEATING_CONTROL.SETPOINT","DEFAULT":"20.000000","FLAGS":"1","ID":"SET_TEMPERATURE","MAX":"30.500000","MIN":"4.500000","OPERATIONS":"7","TAB_ORDER":"8","TYPE":"FLOAT","UNIT":"°C"},{"NAME":"PARTY_STOP_MONTH","CONTROL":"HEATING_CONTROL.PARTY_STOP_MONTH","DEFAULT":"1","FLAGS":"1","ID":"PARTY_STOP_MONTH","MAX":"12","MIN":"1","OPERATIONS":"3","TAB_ORDER":"22","TYPE":"INTEGER","UNIT":"month"},{"NAME":"PARTY_START_MONTH","CONTROL":"HEATING_CONTROL.PARTY_START_MONTH","DEFAULT":"1","FLAGS":"1","ID":"PARTY_START_MONTH","MAX":"12","MIN":"1","OPERATIONS":"3","TAB_ORDER":"18","TYPE":"INTEGER","UNIT":"month"},{"NAME":"LOWERING_MODE","CONTROL":"HEATING_CONTROL.LOWERING","DEFAULT":"0","FLAGS":"1","ID":"LOWERING_MODE","MAX":"1","MIN":"0","OPERATIONS":"2","TAB_ORDER":"13","TYPE":"ACTION","UNIT":""},{"NAME":"PARTY_TEMPERATURE","CONTROL":"HEATING_CONTROL.PARTY_TEMP","DEFAULT":"20.000000","FLAGS":"1","ID":"PARTY_TEMPERATURE","MAX":"30.000000","MIN":"5.000000","OPERATIONS":"3","TAB_ORDER":"15","TYPE":"FLOAT","UNIT":"°C"},{"NAME":"PARTY_STOP_YEAR","CONTROL":"HEATING_CONTROL.PARTY_STOP_YEAR","DEFAULT":"12","FLAGS":"1","ID":"PARTY_STOP_YEAR","MAX":"99","MIN":"0","OPERATIONS":"3","TAB_ORDER":"23","TYPE":"INTEGER","UNIT":"year"},{"NAME":"PARTY_START_YEAR","CONTROL":"HEATING_CONTROL.PARTY_START_YEAR","DEFAULT":"12","FLAGS":"1","ID":"PARTY_START_YEAR","MAX":"99","MIN":"0","OPERATIONS":"3","TAB_ORDER":"19","TYPE":"INTEGER","UNIT":"year"},{"NAME":"AUTO_MODE","CONTROL":"HEATING_CONTROL.AUTO","DEFAULT":"0","FLAGS":"1","ID":"AUTO_MODE","MAX":"1","MIN":"0","OPERATIONS":"2","TAB_ORDER":"9","TYPE":"ACTION","UNIT":""},{"NAME":"CONTROL_MODE","CONTROL":"HEATING_CONTROL.CONTROL_MODE","DEFAULT":"0","FLAGS":"1","ID":"CONTROL_MODE","MAX":"3","MIN":"0","OPERATIONS":"5","TAB_ORDER":"0","TYPE":"ENUM","UNIT":"","VALUE_LIST":"AUTO-MODE MANU-MODE PARTY-MODE BOOST-MODE"},{"NAME":"PARTY_MODE_SUBMIT","CONTROL":"NONE","DEFAULT":"","FLAGS":"1","ID":"PARTY_MODE_SUBMIT","MAX":"","MIN":"","OPERATIONS":"3","TAB_ORDER":"14","TYPE":"STRING","UNIT":""},{"NAME":"ACTUAL_TEMPERATURE","CONTROL":"HEATING_CONTROL.TEMPERATURE","DEFAULT":"0.000000","FLAGS":"1","ID":"ACTUAL_TEMPERATURE","MAX":"50.000000","MIN":"-10.000000","OPERATIONS":"5","TAB_ORDER":"6","TYPE":"FLOAT","UNIT":"°C"},{"NAME":"COMMUNICATION_REPORTING","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"COMMUNICATION_REPORTING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"2","TYPE":"BOOL","UNIT":""},{"NAME":"WINDOW_OPEN_REPORTING","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"WINDOW_OPEN_REPORTING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"3","TYPE":"BOOL","UNIT":""},{"NAME":"PARTY_STOP_DAY","CONTROL":"HEATING_CONTROL.PARTY_STOP_DAY","DEFAULT":"1","FLAGS":"1","ID":"PARTY_STOP_DAY","MAX":"31","MIN":"1","OPERATIONS":"3","TAB_ORDER":"21","TYPE":"INTEGER","UNIT":"day"},{"NAME":"PARTY_START_DAY","CONTROL":"HEATING_CONTROL.PARTY_START_DAY","DEFAULT":"1","FLAGS":"1","ID":"PARTY_START_DAY","MAX":"31","MIN":"1","OPERATIONS":"3","TAB_ORDER":"17","TYPE":"INTEGER","UNIT":"day"},{"NAME":"LOWBAT_REPORTING","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"LOWBAT_REPORTING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"1","TYPE":"BOOL","UNIT":""},{"NAME":"PARTY_STOP_TIME","CONTROL":"HEATING_CONTROL.PARTY_STOP_TIME","DEFAULT":"0","FLAGS":"1","ID":"PARTY_STOP_TIME","MAX":"1410","MIN":"0","OPERATIONS":"3","TAB_ORDER":"20","TYPE":"INTEGER","UNIT":"minutes"},{"NAME":"PARTY_START_TIME","CONTROL":"HEATING_CONTROL.PARTY_START_TIME","DEFAULT":"0","FLAGS":"1","ID":"PARTY_START_TIME","MAX":"1410","MIN":"0","OPERATIONS":"3","TAB_ORDER":"16","TYPE":"INTEGER","UNIT":"minutes"},{"NAME":"BATTERY_STATE","CONTROL":"NONE","DEFAULT":"0.000000","FLAGS":"1","ID":"BATTERY_STATE","MAX":"4.600000","MIN":"1.500000","OPERATIONS":"5","TAB_ORDER":"4","TYPE":"FLOAT","UNIT":"V"},{"NAME":"BOOST_MODE","CONTROL":"HEATING_CONTROL.BOOST","DEFAULT":"0","FLAGS":"1","ID":"BOOST_MODE","MAX":"1","MIN":"0","OPERATIONS":"2","TAB_ORDER":"11","TYPE":"ACTION","UNIT":""},{"NAME":"MANU_MODE","CONTROL":"HEATING_CONTROL.MANU","DEFAULT":"20.000000","FLAGS":"1","ID":"MANU_MODE","MAX":"30.500000","MIN":"4.500000","OPERATIONS":"2","TAB_ORDER":"10","TYPE":"FLOAT","UNIT":"°C"},{"NAME":"ACTUAL_HUMIDITY","CONTROL":"THERMAL_CONTROL.HUMIDITY","DEFAULT":"0.000000","FLAGS":"1","ID":"ACTUAL_HUMIDITY","MAX":"99.000000","MIN":"0.000000","OPERATIONS":"5","TAB_ORDER":"7","TYPE":"FLOAT","UNIT":"%"},{"NAME":"COMFORT_MODE","CONTROL":"HEATING_CONTROL.COMFORT","DEFAULT":"0","FLAGS":"1","ID":"COMFORT_MODE","MAX":"1","MIN":"0","OPERATIONS":"2","TAB_ORDER":"12","TYPE":"ACTION","UNIT":""},{"NAME":"BOOST_STATE","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"BOOST_STATE","MAX":"30","MIN":"0","OPERATIONS":"5","TAB_ORDER":"5","TYPE":"INTEGER","UNIT":"min"}],"error": null}
2016-03-26 08:08:40,726 [DEBUG] CALL: Interface.getParamset ARGS: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'4ROQwDebdl', 'address': u'LEQ0079034:2'}
2016-03-26 08:08:40,726 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetKey": "VALUES", "_session_id_": "4ROQwDebdl", "address": "LEQ0079034:2"}, "method": "Interface.getParamset"}
2016-03-26 08:08:40,810 [DEBUG] HTTP-STATUS: 200
2016-03-26 08:08:40,810 [DEBUG] RESPONSE: {
"version": "1.1",
"result": null,
"error": {
"name": "JSONRPCError",
"code": 601,
"message": "TCL error"
}
}
Traceback (most recent call last):
File "./list_room_states.py", line 30, in <module>
print(" %s: %s" % (device.name, device.summary_state))
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 911, in summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 937, in _get_summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 310, in summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 216, in values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 288, in _fetch_values
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 178, in <lambda>
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 493, in call
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 150, in _parse_api_response
pmatic.exceptions.PMException: [interface_get_paramset] JSONRPCError: TCL error (601)
2016-03-26 08:08:40,811 [DEBUG] CALL: Session.logout ARGS: {'_session_id_': u'4ROQwDebdl'}
2016-03-26 08:08:40,811 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"_session_id_": "4ROQwDebdl"}, "method": "Session.logout"}
2016-03-26 08:08:40,891 [DEBUG] HTTP-STATUS: 200
2016-03-26 08:08:40,892 [DEBUG] RESPONSE: {"version": "1.1","result": true,"error": null}
Here is a message I receive in /var/log/syslog from the CCU because I connected the syslog output of the CCU to my linux system where I am currently testing pmatic:
Mar 26 08:15:13 ccupi.fritz.box rfd: HSSParameter::GetValue() id=PARTY_MODE_SUBMIT failed getting physical value.
The device in question (LEQ0079034) is a HM-TC-IT-WM-W-EU device, btw.
Hm, for my HM-CC-RT-DN PARTY_MODE_SUBMIT has a OPERATIONS value of 2 which means that it is only writable and can not be read. So pmatic does not try to read it.
For the HM-TC-IT-WM-W-EU operations is set to 3 which means it is read- and writable. This seems to be correct according to the docs (http://www.eq-3.de/Downloads/eq3/download%20bereich/hm_web_ui_doku/hm_devices_Endkunden.pdf). Maybe this is a general error with this parameter on such devices.
I am thinking about either add a generic error handler for dealing with such issues on all kind of devices and channels. For example when a paramset can not be fetched with the 601 error simply set an error internal flag for this paramset and deal with it within pmatic. The other option would be to explicitly ignore the PARTY_MODE_SUBMIT paramset (if only this parameter is bugged).
Thanks for analyzing the issue. I actually think a generic approach would be definitely the better approach since on other devices similar things could happen, thus catching these cases and dealing with these situations in pmatic rather than risking to throw a generic python error would be best.
Having quickly studies the eq3 documentation on the HM-TC-IT-WM-W-EU channels I think PART_MODE_SUBMIT should actually only be writable as well for the HM-TC-IT-WM-W-EU like it is for the HM-CC-RT-DN because this is the only thing that makes sense. The name of the parameter (...._SUBMIT) already implies that the parameter might just be used for actually writing/sending/submitting data and not reading something. Thus I think that the documentation is wrong, which actually this bug is also somehow proofs because otherwise it would be readable as well and wouldn't throw such a JSONRPCError. I would therefore vote to also flag this parameter to write-only together with introducing such a generic exception handler for these situations.
Well, then the documentation and the response of the CCU is wrong. Because the API call is telling that it's read- and writable. This is the communication:
2016-03-26 08:08:40,622 [DEBUG] CALL: Interface.getParamsetDescription ARGS: {'interface': u'BidCos-RF', 'paramsetType': u'VALUES', u'_session_id_': u'4ROQwDebdl', 'address': u'LEQ0079034:2'}
2016-03-26 08:08:40,622 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetType": "VALUES", "_session_id_": "4ROQwDebdl", "address": "LEQ0079034:2"}, "method": "Interface.getParamsetDescription"}
2016-03-26 08:08:40,723 [DEBUG] HTTP-STATUS: 200
2016-03-26 08:08:40,724 [DEBUG] RESPONSE: {"version": "1.1","result": [{"NAME":"SET_TEMPERATURE","CONTROL":"HEATING_CONTROL.SETPOINT","DEFAULT":"20.000000","FLAGS":"1","ID":"SET_TEMPERATURE","MAX":"30.500000","MIN":"4.500000","OPERATIONS":"7","TAB_ORDER":"8","TYPE":"FLOAT","UNIT":"°C"},{"NAME":"PARTY_STOP_MONTH","CONTROL":"HEATING_CONTROL.PARTY_STOP_MONTH","DEFAULT":"1","FLAGS":"1","ID":"PARTY_STOP_MONTH","MAX":"12","MIN":"1","OPERATIONS":"3","TAB_ORDER":"22","TYPE":"INTEGER","UNIT":"month"},{"NAME":"PARTY_START_MONTH","CONTROL":"HEATING_CONTROL.PARTY_START_MONTH","DEFAULT":"1","FLAGS":"1","ID":"PARTY_START_MONTH","MAX":"12","MIN":"1","OPERATIONS":"3","TAB_ORDER":"18","TYPE":"INTEGER","UNIT":"month"},{"NAME":"LOWERING_MODE","CONTROL":"HEATING_CONTROL.LOWERING","DEFAULT":"0","FLAGS":"1","ID":"LOWERING_MODE","MAX":"1","MIN":"0","OPERATIONS":"2","TAB_ORDER":"13","TYPE":"ACTION","UNIT":""},{"NAME":"PARTY_TEMPERATURE","CONTROL":"HEATING_CONTROL.PARTY_TEMP","DEFAULT":"20.000000","FLAGS":"1","ID":"PARTY_TEMPERATURE","MAX":"30.000000","MIN":"5.000000","OPERATIONS":"3","TAB_ORDER":"15","TYPE":"FLOAT","UNIT":"°C"},{"NAME":"PARTY_STOP_YEAR","CONTROL":"HEATING_CONTROL.PARTY_STOP_YEAR","DEFAULT":"12","FLAGS":"1","ID":"PARTY_STOP_YEAR","MAX":"99","MIN":"0","OPERATIONS":"3","TAB_ORDER":"23","TYPE":"INTEGER","UNIT":"year"},{"NAME":"PARTY_START_YEAR","CONTROL":"HEATING_CONTROL.PARTY_START_YEAR","DEFAULT":"12","FLAGS":"1","ID":"PARTY_START_YEAR","MAX":"99","MIN":"0","OPERATIONS":"3","TAB_ORDER":"19","TYPE":"INTEGER","UNIT":"year"},{"NAME":"AUTO_MODE","CONTROL":"HEATING_CONTROL.AUTO","DEFAULT":"0","FLAGS":"1","ID":"AUTO_MODE","MAX":"1","MIN":"0","OPERATIONS":"2","TAB_ORDER":"9","TYPE":"ACTION","UNIT":""},{"NAME":"CONTROL_MODE","CONTROL":"HEATING_CONTROL.CONTROL_MODE","DEFAULT":"0","FLAGS":"1","ID":"CONTROL_MODE","MAX":"3","MIN":"0","OPERATIONS":"5","TAB_ORDER":"0","TYPE":"ENUM","UNIT":"","VALUE_LIST":"AUTO-MODE MANU-MODE PARTY-MODE BOOST-MODE"},{"NAME":"PARTY_MODE_SUBMIT","CONTROL":"NONE","DEFAULT":"","FLAGS":"1","ID":"PARTY_MODE_SUBMIT","MAX":"","MIN":"","OPERATIONS":"3","TAB_ORDER":"14","TYPE":"STRING","UNIT":""},{"NAME":"ACTUAL_TEMPERATURE","CONTROL":"HEATING_CONTROL.TEMPERATURE","DEFAULT":"0.000000","FLAGS":"1","ID":"ACTUAL_TEMPERATURE","MAX":"50.000000","MIN":"-10.000000","OPERATIONS":"5","TAB_ORDER":"6","TYPE":"FLOAT","UNIT":"°C"},{"NAME":"COMMUNICATION_REPORTING","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"COMMUNICATION_REPORTING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"2","TYPE":"BOOL","UNIT":""},{"NAME":"WINDOW_OPEN_REPORTING","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"WINDOW_OPEN_REPORTING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"3","TYPE":"BOOL","UNIT":""},{"NAME":"PARTY_STOP_DAY","CONTROL":"HEATING_CONTROL.PARTY_STOP_DAY","DEFAULT":"1","FLAGS":"1","ID":"PARTY_STOP_DAY","MAX":"31","MIN":"1","OPERATIONS":"3","TAB_ORDER":"21","TYPE":"INTEGER","UNIT":"day"},{"NAME":"PARTY_START_DAY","CONTROL":"HEATING_CONTROL.PARTY_START_DAY","DEFAULT":"1","FLAGS":"1","ID":"PARTY_START_DAY","MAX":"31","MIN":"1","OPERATIONS":"3","TAB_ORDER":"17","TYPE":"INTEGER","UNIT":"day"},{"NAME":"LOWBAT_REPORTING","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"LOWBAT_REPORTING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"1","TYPE":"BOOL","UNIT":""},{"NAME":"PARTY_STOP_TIME","CONTROL":"HEATING_CONTROL.PARTY_STOP_TIME","DEFAULT":"0","FLAGS":"1","ID":"PARTY_STOP_TIME","MAX":"1410","MIN":"0","OPERATIONS":"3","TAB_ORDER":"20","TYPE":"INTEGER","UNIT":"minutes"},{"NAME":"PARTY_START_TIME","CONTROL":"HEATING_CONTROL.PARTY_START_TIME","DEFAULT":"0","FLAGS":"1","ID":"PARTY_START_TIME","MAX":"1410","MIN":"0","OPERATIONS":"3","TAB_ORDER":"16","TYPE":"INTEGER","UNIT":"minutes"},{"NAME":"BATTERY_STATE","CONTROL":"NONE","DEFAULT":"0.000000","FLAGS":"1","ID":"BATTERY_STATE","MAX":"4.600000","MIN":"1.500000","OPERATIONS":"5","TAB_ORDER":"4","TYPE":"FLOAT","UNIT":"V"},{"NAME":"BOOST_MODE","CONTROL":"HEATING_CONTROL.BOOST","DEFAULT":"0","FLAGS":"1","ID":"BOOST_MODE","MAX":"1","MIN":"0","OPERATIONS":"2","TAB_ORDER":"11","TYPE":"ACTION","UNIT":""},{"NAME":"MANU_MODE","CONTROL":"HEATING_CONTROL.MANU","DEFAULT":"20.000000","FLAGS":"1","ID":"MANU_MODE","MAX":"30.500000","MIN":"4.500000","OPERATIONS":"2","TAB_ORDER":"10","TYPE":"FLOAT","UNIT":"°C"},{"NAME":"ACTUAL_HUMIDITY","CONTROL":"THERMAL_CONTROL.HUMIDITY","DEFAULT":"0.000000","FLAGS":"1","ID":"ACTUAL_HUMIDITY","MAX":"99.000000","MIN":"0.000000","OPERATIONS":"5","TAB_ORDER":"7","TYPE":"FLOAT","UNIT":"%"},{"NAME":"COMFORT_MODE","CONTROL":"HEATING_CONTROL.COMFORT","DEFAULT":"0","FLAGS":"1","ID":"COMFORT_MODE","MAX":"1","MIN":"0","OPERATIONS":"2","TAB_ORDER":"12","TYPE":"ACTION","UNIT":""},{"NAME":"BOOST_STATE","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"BOOST_STATE","MAX":"30","MIN":"0","OPERATIONS":"5","TAB_ORDER":"5","TYPE":"INTEGER","UNIT":"min"}],"error": null}
It contains this information:
{"NAME":"PARTY_MODE_SUBMIT","CONTROL":"NONE","DEFAULT":"","FLAGS":"1","ID":"PARTY_MODE_SUBMIT","MAX":"","MIN":"","OPERATIONS":"3","TAB_ORDER":"14","TYPE":"STRING","UNIT":""},
The value 3 of OPERATIONS means that it should be read- and writable.
But I agree to rely on the facts. I'll try to make pmatic deal with it.
Perfect. And if it works the we can the report a bug to the occu project (https://github.com/eq-3/occu) so that eq3 can correct for it.
I can also confirm this issue for HM-TC-IT-WM-W-EU. With neweset 2.17.15 CCU Firmware Interface.getParamset fails with error code 501 instead of 601.
I implemented a fallback to query each parameter one by one with Interface.getValue after the Interface.getParamset call failed to know exactly which parameters are failing.
These are the failing parameters for HM-TC-IT-WM-W-EU: Channel THERMALCONTROL_TRANSMIT:
Channel SWITCH_TRANSMIT, parameter DECISION_VALUE
Failing parameters for HM-ES-PMSw1-Pl: Channel POWERMETER, parameter BOOT. Sometimes it's also parameter CURRENT, FREQUENCY or POWER which is weird.
This is the corresponding log output of the CCU when the calls fail:
Mar 26 15:55:12 192.168.178.10 local0 err ReGaHss Error: IseESP::ExecError= Execution failed: [-1] 0 0x00 [0] 97 0x61 [1] 0 0x00 [2] 99 0x63 [3] 0 0x00 [4] 100 0x64 [../Platform/DOM/iseESPexec.cpp (11622)]
Mar 26 15:55:23 192.168.178.10 user err rfd HSSParameter::GetValue() id=PARTY_MODE_SUBMIT failed getting physical value.
Mar 26 15:55:38 192.168.178.10 user err rfd HSSParameter::GetValue() id=PARTY_MODE_SUBMIT failed getting physical value.
Mar 26 15:55:42 192.168.178.10 user err rfd HSSParameter::GetValue() id=DECISION_VALUE failed getting physical value.
Mar 26 15:55:44 192.168.178.10 user err rfd HSSParameter::GetValue() id=DECISION_VALUE failed getting physical value.
Mar 26 15:55:50 192.168.178.10 user err rfd HSSParameter::GetValue() id=BOOT failed getting physical value.
Mar 26 15:55:54 192.168.178.10 user err rfd HSSParameter::GetValue() id=BOOT failed getting physical value.
Mar 26 15:55:57 192.168.178.10 user err rfd HSSParameter::GetValue() id=CURRENT failed getting physical value.
Mar 26 15:56:06 192.168.178.10 user err rfd HSSParameter::GetValue() id=PARTY_MODE_SUBMIT failed getting physical value.
Mar 26 15:56:24 192.168.178.10 user err rfd HSSParameter::GetValue() id=PARTY_MODE_SUBMIT failed getting physical value.
Mar 26 15:56:29 192.168.178.10 user err rfd HSSParameter::GetValue() id=DECISION_VALUE failed getting physical value.
Mar 26 15:56:30 192.168.178.10 user err rfd HSSParameter::GetValue() id=DECISION_VALUE failed getting physical value.
Mar 26 15:56:39 192.168.178.10 user err rfd HSSParameter::GetValue() id=PARTY_MODE_SUBMIT failed getting physical value.
Mar 26 15:56:56 192.168.178.10 user err rfd HSSParameter::GetValue() id=PARTY_MODE_SUBMIT failed getting physical value.
Mar 26 15:57:01 192.168.178.10 user err rfd HSSParameter::GetValue() id=DECISION_VALUE failed getting physical value.
Mar 26 15:57:02 192.168.178.10 user err rfd HSSParameter::GetValue() id=DECISION_VALUE failed getting physical value.
The HM-CC-RT-DN device supports something that is called "Wake-On-Radio" in the CCU GUI and, if I remember correctly, burst mode internally. When this is enabled the CCU can wake up the device to make it able to communicate immediately with the CCU. Otherwise the device would only wake up in fixed intervals and initiate the communication with the CCU on it's own.
Could you please check whether or not your devices also have such a setting? If so, is it enabled or disabled? Does the behavior change if your change the setting?
Not sure where to look for but I couldn't find anything like "Wake-On-Radio" even for HM-CC-RT-DN.
In the CCU GUI I can find it as follows:
Einstellungen > Geräte > Button "Einstellen" beim Gerät > Geräteparameter > Wake-On-Radio
User needs to be in "Expert Mode" to see this setting. Anyway, I can see "Wake on Radio" on both HM-CC-RT-DN and HM-TC-IT-WM-W-EU but the behaviour doesn't change when I uncheck this setting.
Any chance of having this fixed in some short time frame? Or do you still require some more information?
It's finished when it's finished ;-).
But yes, I am working on a solution and I think I got a good way to handle the specific issue. One thing to create a test for this case is that I need is the specification of this device and it's logic attributes.
Please put this snippet in a .py file, adapt your address and credentials, execute it and either send me the whole resulting files device-specs and device-logic files from your current working directory or extract the information about the single device in question.
#!/usr/bin/env python
import pmatic, pprint
ccu = pmatic.CCU(address="http://192.168.1.26", credentials=("Admin", "EPIC-SECRET-PW"))
open("device-specs", "w").write(pprint.pformat(ccu.devices._device_specs.items()))
open("device-logic", "w").write(pprint.pformat(ccu.devices._device_logic.items()))
Ok, here it comes for the device in question:
Sorry, but after having updated my git checkout and doing a fresh "python setup.py install" I am still getting the same error:
[...]
Gästezimmer
Fenster-GZ-Rechts: closed
Traceback (most recent call last):
File "./list_room_states.py", line 30, in <module>
print(" %s: %s" % (device.name, device.summary_state))
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 931, in summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 957, in _get_summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 315, in summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 216, in values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 293, in _fetch_values
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 178, in <lambda>
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 493, in call
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 150, in _parse_api_response
pmatic.exceptions.PMException: [interface_get_paramset] JSONRPCError: TCL error (601)
Here is the output after having enabled debug mode:
[...]
2016-03-29 21:32:32,128 [DEBUG] CALL: Interface.getParamset ARGS: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'IyhD0pNNTY', 'address': u'LEQ0079034:2'}
2016-03-29 21:32:32,129 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetKey": "VALUES", "_session_id_": "IyhD0pNNTY", "address": "LEQ0079034:2"}, "method": "Interface.getParamset"}
2016-03-29 21:32:32,211 [DEBUG] HTTP-STATUS: 200
2016-03-29 21:32:32,211 [DEBUG] RESPONSE: {
"version": "1.1",
"result": null,
"error": {
"name": "JSONRPCError",
"code": 601,
"message": "TCL error"
}
}
Traceback (most recent call last):
File "./list_room_states.py", line 30, in <module>
print(" %s: %s" % (device.name, device.summary_state))
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 931, in summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 957, in _get_summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 315, in summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 216, in values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 293, in _fetch_values
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 178, in <lambda>
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 493, in call
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 150, in _parse_api_response
pmatic.exceptions.PMException: [interface_get_paramset] JSONRPCError: TCL error (601)
2016-03-29 21:32:32,212 [DEBUG] CALL: Session.logout ARGS: {'_session_id_': u'IyhD0pNNTY'}
2016-03-29 21:32:32,213 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"_session_id_": "IyhD0pNNTY"}, "method": "Session.logout"}
2016-03-29 21:32:32,293 [DEBUG] HTTP-STATUS: 200
2016-03-29 21:32:32,294 [DEBUG] RESPONSE: {"version": "1.1","result": true,"error": null}
Seems the new customized channel class (pmatic.entities.ChannelThermalControlTransmit) is not used yet.
Please execute the following on this device and send me the outpu:
for channel in device.channels:
print(channel.address, type(channel), channel.type)
for key, value in channel._values.items():
print(" ", key, type(value), value.name, value.operations)
Here it is:
(u'LEQ0079034:0', <class 'pmatic.entities.ChannelMaintenance'>, u'MAINTENANCE')
(u'LEQ0079034:1', <class 'pmatic.entities.Channel'>, u'WEATHER_TRANSMIT')
(u'LEQ0079034:2', <class 'pmatic.entities.ChannelThermalControlTransmit'>, u'THERMALCONTROL_TRANSMIT')
(u'LEQ0079034:3', <class 'pmatic.entities.ChannelWindowSwitchReceiver'>, u'WINDOW_SWITCH_RECEIVER')
(u'LEQ0079034:6', <class 'pmatic.entities.ChannelRemoteControlReceiver'>, u'REMOTECONTROL_RECEIVER')
(u'LEQ0079034:7', <class 'pmatic.entities.Channel'>, u'SWITCH_TRANSMIT')
Ah, damn. I totally missed the point that it is not possible to call the generic API call Interface_getParamset on the VALUES paramset because the CCU itself is trying to read the non readable value. So pmatic needs to fetch the values one by one as @jschmer suggested.
Will try to fix this this evening.
Sorry, but still no success. Exactly the same error and stack trace here.
Are you sure that it is exactly the same? If so, something might have gone wrong with your installation.
You say you executed "python setup.py install" but the traceback contains paths to pmatic like this: "build/bdist.linux-x86_64/egg/pmatic/entities.py". This is no system path where setup.py normally installs the packages to.
This is the path where the pmatic egg files are being installed when I do sudo python setup.py install
:
$ ls /usr/local/lib/python2.7/dist-packages/pmatic*
/usr/local/lib/python2.7/dist-packages/pmatic-0.2-py2.7.egg
As soon as I delete these egg files an import pmatic
already fails. Then I can do a setup.py install
again and it starts working again. However, the list_room_states.py
still returns the same traceback:
Traceback (most recent call last):
File "./list_room_states.py", line 35, in <module>
print(" %s: %s" % (device.name, device.summary_state))
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 961, in summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 987, in _get_summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 339, in summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 216, in values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 292, in _fetch_values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 307, in _get_values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 314, in _get_values_bulk
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 178, in <lambda>
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 493, in call
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 150, in _parse_api_response
pmatic.exceptions.PMException: [interface_get_paramset] JSONRPCError: TCL error (601)
Thus, the build/bdist.....
seems to be normal when creating/installing egg files like this. Even doing a sudo python setup.py clean
before installing it again doesn't solve the issue.
Hm, okay, then this seems to be fine.
And I see, the traceback is not exactly the same. I see the call to "_get_values_bulk" which is in fact a new method I just created. The strange thing is that it should not be called for pmatic.entities.ChannelThermalControlTransmit channels anymore. Instead of this the get_values_single
method is called.
I'm a bit confused, because some previous debug output said that this class is really used. But maybe another channel/value is also buggy.
Could you please
a) run the script again in debug mode and send me the output? b) send me the related messages from the CCU syslog?
It actually really seems to be another channel/value now. See here:
(a)
2016-03-30 21:38:37,997 [DEBUG] CALL: Interface.getParamsetDescription ARGS: {'interface': u'BidCos-RF', 'paramsetType': u'VALUES', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:0'}
2016-03-30 21:38:37,998 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetType": "VALUES", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:0"}, "method": "Interface.getParamsetDescription"}
2016-03-30 21:38:38,090 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:38,091 [DEBUG] RESPONSE: {"version": "1.1","result": [{"NAME":"STICKY_UNREACH","DEFAULT":"0","FLAGS":"25","ID":"STICKY_UNREACH","MAX":"1","MIN":"0","OPERATIONS":"7","TAB_ORDER":"1","TYPE":"BOOL","UNIT":""},{"NAME":"RSSI_PEER","DEFAULT":"0","FLAGS":"1","ID":"RSSI_PEER","MAX":"2147483647","MIN":"-2147483648","OPERATIONS":"5","TAB_ORDER":"5","TYPE":"INTEGER","UNIT":""},{"NAME":"RSSI_DEVICE","DEFAULT":"0","FLAGS":"1","ID":"RSSI_DEVICE","MAX":"2147483647","MIN":"-2147483648","OPERATIONS":"5","TAB_ORDER":"4","TYPE":"INTEGER","UNIT":""},{"NAME":"DEVICE_IN_BOOTLOADER","DEFAULT":"0","FLAGS":"9","ID":"DEVICE_IN_BOOTLOADER","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"7","TYPE":"BOOL","UNIT":""},{"NAME":"LOWBAT","DEFAULT":"0","FLAGS":"9","ID":"LOWBAT","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"3","TYPE":"BOOL","UNIT":""},{"NAME":"AES_KEY","DEFAULT":"0","FLAGS":"0","ID":"AES_KEY","MAX":"127","MIN":"0","OPERATIONS":"1","TAB_ORDER":"9","TYPE":"INTEGER","UNIT":""},{"NAME":"UNREACH","DEFAULT":"0","FLAGS":"9","ID":"UNREACH","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"0","TYPE":"BOOL","UNIT":""},{"NAME":"CONFIG_PENDING","DEFAULT":"0","FLAGS":"9","ID":"CONFIG_PENDING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"2","TYPE":"BOOL","UNIT":""},{"NAME":"UPDATE_PENDING","DEFAULT":"0","FLAGS":"9","ID":"UPDATE_PENDING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"8","TYPE":"BOOL","UNIT":""},{"NAME":"INHIBIT","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"INHIBIT","MAX":"1","MIN":"0","OPERATIONS":"7","TAB_ORDER":"6","TYPE":"BOOL","UNIT":""}],"error": null}
2016-03-30 21:38:38,091 [DEBUG] CALL: Interface.getParamset ARGS: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:0'}
2016-03-30 21:38:38,091 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetKey": "VALUES", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:0"}, "method": "Interface.getParamset"}
2016-03-30 21:38:38,174 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:38,174 [DEBUG] RESPONSE: {"version": "1.1","result": {"AES_KEY":"0","CONFIG_PENDING":"0","DEVICE_IN_BOOTLOADER":"0","INHIBIT":"0","LOWBAT":"0","RSSI_DEVICE":"-55","RSSI_PEER":"-56","STICKY_UNREACH":"0","UNREACH":"0","UPDATE_PENDING":"0"},"error": null}
2016-03-30 21:38:38,175 [DEBUG] CALL: Interface.getParamsetDescription ARGS: {'interface': u'BidCos-RF', 'paramsetType': u'VALUES', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:1'}
2016-03-30 21:38:38,175 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetType": "VALUES", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:1"}, "method": "Interface.getParamsetDescription"}
2016-03-30 21:38:38,259 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:38,259 [DEBUG] RESPONSE: {"version": "1.1","result": [{"NAME":"HUMIDITY","AutoconfRoles":"WEATHER","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"HUMIDITY","MAX":"99","MIN":"0","OPERATIONS":"5","TAB_ORDER":"1","TYPE":"INTEGER","UNIT":"%"},{"NAME":"TEMPERATURE","AutoconfRoles":"WEATHER","CONTROL":"NONE","DEFAULT":"0.000000","FLAGS":"1","ID":"TEMPERATURE","MAX":"50.000000","MIN":"-10.000000","OPERATIONS":"5","TAB_ORDER":"0","TYPE":"FLOAT","UNIT":"°C"}],"error": null}
2016-03-30 21:38:38,260 [DEBUG] CALL: Interface.getParamset ARGS: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:1'}
2016-03-30 21:38:38,260 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetKey": "VALUES", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:1"}, "method": "Interface.getParamset"}
2016-03-30 21:38:38,342 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:38,343 [DEBUG] RESPONSE: {"version": "1.1","result": {"HUMIDITY":"47","TEMPERATURE":"14.800000"},"error": null}
2016-03-30 21:38:38,343 [DEBUG] CALL: Interface.getParamsetDescription ARGS: {'interface': u'BidCos-RF', 'paramsetType': u'VALUES', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:38,343 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetType": "VALUES", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getParamsetDescription"}
2016-03-30 21:38:38,446 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:38,446 [DEBUG] RESPONSE: {"version": "1.1","result": [{"NAME":"SET_TEMPERATURE","CONTROL":"HEATING_CONTROL.SETPOINT","DEFAULT":"20.000000","FLAGS":"1","ID":"SET_TEMPERATURE","MAX":"30.500000","MIN":"4.500000","OPERATIONS":"7","TAB_ORDER":"8","TYPE":"FLOAT","UNIT":"°C"},{"NAME":"PARTY_STOP_MONTH","CONTROL":"HEATING_CONTROL.PARTY_STOP_MONTH","DEFAULT":"1","FLAGS":"1","ID":"PARTY_STOP_MONTH","MAX":"12","MIN":"1","OPERATIONS":"3","TAB_ORDER":"22","TYPE":"INTEGER","UNIT":"month"},{"NAME":"PARTY_START_MONTH","CONTROL":"HEATING_CONTROL.PARTY_START_MONTH","DEFAULT":"1","FLAGS":"1","ID":"PARTY_START_MONTH","MAX":"12","MIN":"1","OPERATIONS":"3","TAB_ORDER":"18","TYPE":"INTEGER","UNIT":"month"},{"NAME":"LOWERING_MODE","CONTROL":"HEATING_CONTROL.LOWERING","DEFAULT":"0","FLAGS":"1","ID":"LOWERING_MODE","MAX":"1","MIN":"0","OPERATIONS":"2","TAB_ORDER":"13","TYPE":"ACTION","UNIT":""},{"NAME":"PARTY_TEMPERATURE","CONTROL":"HEATING_CONTROL.PARTY_TEMP","DEFAULT":"20.000000","FLAGS":"1","ID":"PARTY_TEMPERATURE","MAX":"30.000000","MIN":"5.000000","OPERATIONS":"3","TAB_ORDER":"15","TYPE":"FLOAT","UNIT":"°C"},{"NAME":"PARTY_STOP_YEAR","CONTROL":"HEATING_CONTROL.PARTY_STOP_YEAR","DEFAULT":"12","FLAGS":"1","ID":"PARTY_STOP_YEAR","MAX":"99","MIN":"0","OPERATIONS":"3","TAB_ORDER":"23","TYPE":"INTEGER","UNIT":"year"},{"NAME":"PARTY_START_YEAR","CONTROL":"HEATING_CONTROL.PARTY_START_YEAR","DEFAULT":"12","FLAGS":"1","ID":"PARTY_START_YEAR","MAX":"99","MIN":"0","OPERATIONS":"3","TAB_ORDER":"19","TYPE":"INTEGER","UNIT":"year"},{"NAME":"AUTO_MODE","CONTROL":"HEATING_CONTROL.AUTO","DEFAULT":"0","FLAGS":"1","ID":"AUTO_MODE","MAX":"1","MIN":"0","OPERATIONS":"2","TAB_ORDER":"9","TYPE":"ACTION","UNIT":""},{"NAME":"CONTROL_MODE","CONTROL":"HEATING_CONTROL.CONTROL_MODE","DEFAULT":"0","FLAGS":"1","ID":"CONTROL_MODE","MAX":"3","MIN":"0","OPERATIONS":"5","TAB_ORDER":"0","TYPE":"ENUM","UNIT":"","VALUE_LIST":"AUTO-MODE MANU-MODE PARTY-MODE BOOST-MODE"},{"NAME":"PARTY_MODE_SUBMIT","CONTROL":"NONE","DEFAULT":"","FLAGS":"1","ID":"PARTY_MODE_SUBMIT","MAX":"","MIN":"","OPERATIONS":"3","TAB_ORDER":"14","TYPE":"STRING","UNIT":""},{"NAME":"ACTUAL_TEMPERATURE","CONTROL":"HEATING_CONTROL.TEMPERATURE","DEFAULT":"0.000000","FLAGS":"1","ID":"ACTUAL_TEMPERATURE","MAX":"50.000000","MIN":"-10.000000","OPERATIONS":"5","TAB_ORDER":"6","TYPE":"FLOAT","UNIT":"°C"},{"NAME":"COMMUNICATION_REPORTING","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"COMMUNICATION_REPORTING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"2","TYPE":"BOOL","UNIT":""},{"NAME":"WINDOW_OPEN_REPORTING","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"WINDOW_OPEN_REPORTING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"3","TYPE":"BOOL","UNIT":""},{"NAME":"PARTY_STOP_DAY","CONTROL":"HEATING_CONTROL.PARTY_STOP_DAY","DEFAULT":"1","FLAGS":"1","ID":"PARTY_STOP_DAY","MAX":"31","MIN":"1","OPERATIONS":"3","TAB_ORDER":"21","TYPE":"INTEGER","UNIT":"day"},{"NAME":"PARTY_START_DAY","CONTROL":"HEATING_CONTROL.PARTY_START_DAY","DEFAULT":"1","FLAGS":"1","ID":"PARTY_START_DAY","MAX":"31","MIN":"1","OPERATIONS":"3","TAB_ORDER":"17","TYPE":"INTEGER","UNIT":"day"},{"NAME":"LOWBAT_REPORTING","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"LOWBAT_REPORTING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"1","TYPE":"BOOL","UNIT":""},{"NAME":"PARTY_STOP_TIME","CONTROL":"HEATING_CONTROL.PARTY_STOP_TIME","DEFAULT":"0","FLAGS":"1","ID":"PARTY_STOP_TIME","MAX":"1410","MIN":"0","OPERATIONS":"3","TAB_ORDER":"20","TYPE":"INTEGER","UNIT":"minutes"},{"NAME":"PARTY_START_TIME","CONTROL":"HEATING_CONTROL.PARTY_START_TIME","DEFAULT":"0","FLAGS":"1","ID":"PARTY_START_TIME","MAX":"1410","MIN":"0","OPERATIONS":"3","TAB_ORDER":"16","TYPE":"INTEGER","UNIT":"minutes"},{"NAME":"BATTERY_STATE","CONTROL":"NONE","DEFAULT":"0.000000","FLAGS":"1","ID":"BATTERY_STATE","MAX":"4.600000","MIN":"1.500000","OPERATIONS":"5","TAB_ORDER":"4","TYPE":"FLOAT","UNIT":"V"},{"NAME":"BOOST_MODE","CONTROL":"HEATING_CONTROL.BOOST","DEFAULT":"0","FLAGS":"1","ID":"BOOST_MODE","MAX":"1","MIN":"0","OPERATIONS":"2","TAB_ORDER":"11","TYPE":"ACTION","UNIT":""},{"NAME":"MANU_MODE","CONTROL":"HEATING_CONTROL.MANU","DEFAULT":"20.000000","FLAGS":"1","ID":"MANU_MODE","MAX":"30.500000","MIN":"4.500000","OPERATIONS":"2","TAB_ORDER":"10","TYPE":"FLOAT","UNIT":"°C"},{"NAME":"ACTUAL_HUMIDITY","CONTROL":"THERMAL_CONTROL.HUMIDITY","DEFAULT":"0.000000","FLAGS":"1","ID":"ACTUAL_HUMIDITY","MAX":"99.000000","MIN":"0.000000","OPERATIONS":"5","TAB_ORDER":"7","TYPE":"FLOAT","UNIT":"%"},{"NAME":"COMFORT_MODE","CONTROL":"HEATING_CONTROL.COMFORT","DEFAULT":"0","FLAGS":"1","ID":"COMFORT_MODE","MAX":"1","MIN":"0","OPERATIONS":"2","TAB_ORDER":"12","TYPE":"ACTION","UNIT":""},{"NAME":"BOOST_STATE","CONTROL":"NONE","DEFAULT":"0","FLAGS":"1","ID":"BOOST_STATE","MAX":"30","MIN":"0","OPERATIONS":"5","TAB_ORDER":"5","TYPE":"INTEGER","UNIT":"min"}],"error": null}
2016-03-30 21:38:38,447 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'SET_TEMPERATURE', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:38,447 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "SET_TEMPERATURE", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:38,546 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:38,546 [DEBUG] RESPONSE: {"version": "1.1","result": "12.000000","error": null}
2016-03-30 21:38:38,546 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'LOWBAT_REPORTING', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:38,547 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "LOWBAT_REPORTING", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:38,630 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:38,630 [DEBUG] RESPONSE: {"version": "1.1","result": "0","error": null}
2016-03-30 21:38:38,631 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'PARTY_START_DAY', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:38,631 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "PARTY_START_DAY", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:38,714 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:38,714 [DEBUG] RESPONSE: {"version": "1.1","result": "1","error": null}
2016-03-30 21:38:38,714 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'PARTY_STOP_TIME', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:38,715 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "PARTY_STOP_TIME", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:38,797 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:38,798 [DEBUG] RESPONSE: {"version": "1.1","result": "0","error": null}
2016-03-30 21:38:38,798 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'BOOST_STATE', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:38,798 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "BOOST_STATE", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:38,881 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:38,881 [DEBUG] RESPONSE: {"version": "1.1","result": "0","error": null}
2016-03-30 21:38:38,881 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'PARTY_STOP_YEAR', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:38,881 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "PARTY_STOP_YEAR", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:38,964 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:38,964 [DEBUG] RESPONSE: {"version": "1.1","result": "0","error": null}
2016-03-30 21:38:38,965 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'PARTY_STOP_MONTH', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:38,965 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "PARTY_STOP_MONTH", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:39,048 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:39,048 [DEBUG] RESPONSE: {"version": "1.1","result": "1","error": null}
2016-03-30 21:38:39,048 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'PARTY_START_TIME', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:39,049 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "PARTY_START_TIME", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:39,132 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:39,132 [DEBUG] RESPONSE: {"version": "1.1","result": "0","error": null}
2016-03-30 21:38:39,132 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'CONTROL_MODE', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:39,132 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "CONTROL_MODE", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:39,215 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:39,215 [DEBUG] RESPONSE: {"version": "1.1","result": "1","error": null}
2016-03-30 21:38:39,215 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'ACTUAL_HUMIDITY', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:39,215 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "ACTUAL_HUMIDITY", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:39,298 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:39,299 [DEBUG] RESPONSE: {"version": "1.1","result": "47.000000","error": null}
2016-03-30 21:38:39,299 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'WINDOW_OPEN_REPORTING', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:39,299 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "WINDOW_OPEN_REPORTING", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:39,382 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:39,382 [DEBUG] RESPONSE: {"version": "1.1","result": "0","error": null}
2016-03-30 21:38:39,382 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'PARTY_START_YEAR', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:39,382 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "PARTY_START_YEAR", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:39,465 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:39,465 [DEBUG] RESPONSE: {"version": "1.1","result": "0","error": null}
2016-03-30 21:38:39,466 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'BATTERY_STATE', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:39,466 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "BATTERY_STATE", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:39,549 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:39,549 [DEBUG] RESPONSE: {"version": "1.1","result": "2.900000","error": null}
2016-03-30 21:38:39,549 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'COMMUNICATION_REPORTING', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:39,550 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "COMMUNICATION_REPORTING", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:39,633 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:39,633 [DEBUG] RESPONSE: {"version": "1.1","result": "0","error": null}
2016-03-30 21:38:39,634 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'ACTUAL_TEMPERATURE', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:39,634 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "ACTUAL_TEMPERATURE", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:39,717 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:39,717 [DEBUG] RESPONSE: {"version": "1.1","result": "14.800000","error": null}
2016-03-30 21:38:39,717 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'PARTY_TEMPERATURE', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:39,718 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "PARTY_TEMPERATURE", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:39,800 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:39,800 [DEBUG] RESPONSE: {"version": "1.1","result": "5.000000","error": null}
2016-03-30 21:38:39,801 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'PARTY_STOP_DAY', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:39,801 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "PARTY_STOP_DAY", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:39,886 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:39,886 [DEBUG] RESPONSE: {"version": "1.1","result": "1","error": null}
2016-03-30 21:38:39,886 [DEBUG] CALL: Interface.getValue ARGS: {'interface': u'BidCos-RF', 'valueKey': u'PARTY_START_MONTH', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:2'}
2016-03-30 21:38:39,887 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "valueKey": "PARTY_START_MONTH", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:2"}, "method": "Interface.getValue"}
2016-03-30 21:38:39,969 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:39,969 [DEBUG] RESPONSE: {"version": "1.1","result": "1","error": null}
2016-03-30 21:38:39,970 [DEBUG] CALL: Interface.getParamsetDescription ARGS: {'interface': u'BidCos-RF', 'paramsetType': u'VALUES', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:7'}
2016-03-30 21:38:39,970 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetType": "VALUES", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:7"}, "method": "Interface.getParamsetDescription"}
2016-03-30 21:38:40,062 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:40,062 [DEBUG] RESPONSE: {"version": "1.1","result": [{"NAME":"DECISION_VALUE","DEFAULT":"0","FLAGS":"1","ID":"DECISION_VALUE","MAX":"255","MIN":"0","OPERATIONS":"5","TAB_ORDER":"0","TYPE":"INTEGER","UNIT":""}],"error": null}
2016-03-30 21:38:40,063 [DEBUG] CALL: Interface.getParamset ARGS: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'tEZ3Cm1d5O', 'address': u'LEQ0079034:7'}
2016-03-30 21:38:40,063 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetKey": "VALUES", "_session_id_": "tEZ3Cm1d5O", "address": "LEQ0079034:7"}, "method": "Interface.getParamset"}
2016-03-30 21:38:40,148 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:40,148 [DEBUG] RESPONSE: {
"version": "1.1",
"result": null,
"error": {
"name": "JSONRPCError",
"code": 601,
"message": "TCL error"
}
}
Traceback (most recent call last):
File "./list_room_states.py", line 35, in <module>
print(" %s: %s" % (device.name, device.summary_state))
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 961, in summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 987, in _get_summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 339, in summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 216, in values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 292, in _fetch_values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 307, in _get_values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 314, in _get_values_bulk
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 178, in <lambda>
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 493, in call
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 150, in _parse_api_response
pmatic.exceptions.PMException: [interface_get_paramset] JSONRPCError: TCL error (601)
2016-03-30 21:38:40,149 [DEBUG] CALL: Session.logout ARGS: {'_session_id_': u'tEZ3Cm1d5O'}
2016-03-30 21:38:40,149 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"_session_id_": "tEZ3Cm1d5O"}, "method": "Session.logout"}
2016-03-30 21:38:40,230 [DEBUG] HTTP-STATUS: 200
2016-03-30 21:38:40,230 [DEBUG] RESPONSE: {"version": "1.1","result": true,"error": null}
(b)
Mar 30 21:38:40 ccupi.fritz.box rfd: HSSParameter::GetValue() id=DECISION_VALUE failed getting physical value.
Just pushed a fix for this value. I also tried to improve the error message to be a little more helpful on the API call which produced the error.
Hope that was the last broken value. Otherwise I'll try to implement a generic handler for this kind of bug.
Yes, you need a generic handler approach because now it fails for another device:
Keller
CCU2: Device reports no operational state
Gassensor-Keller: Device reports no operational state
Traceback (most recent call last):
File "./list_room_states.py", line 35, in <module>
print(" %s: %s" % (device.name, device.summary_state))
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 982, in summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 1008, in _get_summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 339, in summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 216, in values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 292, in _fetch_values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 307, in _get_values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 314, in _get_values_bulk
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 179, in <lambda>
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 494, in call
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 151, in _parse_api_response
pmatic.exceptions.PMException: [interface_get_paramset] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'7mJwTVNUAg', 'address': u'MEQ0380794:1'})
Mar 30 22:11:20 ccupi.fritz.box rfd: HSSParameter::GetValue() id=ENERGY_COUNTER failed getting physical value.
This device is a HM-ES-TX-WM
Seems so, but a value like the energy counter which is only available to be read should really be readable.
There is another value for this device named IEC_ENERGY_COUNTER which seems to also provide same values but scaled to kwh instead of kw and with a wider data range.
A possible theory: Maybe the ENERGY_COUNTER is a legacy value for the device in your version and can not be read anymore. But to make the whole API call fail seems a bit odd in such a situation.
Found another post talking about this issue: http://homematic-forum.de/forum/viewtopic.php?f=27&t=23104&start=200#p254891 the 2nd post might be interesting (resetting/readding the device).
Some others on the forum say a reboot of the CCU might help.
While I was searching the forum it seemed that this kind of error can occur for a lot of devices with a lot of different values. I am not sure if it's best to just skip fetching those values and leave them at the default None
value. Need to think about this.
Please try the attached script. It will produce a lot of output on the devices, channels, parameters and values. It should automatically fallback to the single value fetching and output the parameter names which can not be fetched.
See the output of your script:
[...]
Gassensor-Keller
Maintenance (MEQ0656539:0)
UNREACH: False
DEVICE_IN_BOOTLOADER: False
UPDATE_PENDING: False
RSSI_PEER: -65535
LOWBAT: False
STICKY_UNREACH: False
AES_KEY: 0
CONFIG_PENDING: False
RSSI_DEVICE: -65535
Gassensor-Keller (MEQ0656539:1)
PRESS_CONT: Not readable
INSTALL_TEST: Not readable
PRESS_SHORT: Not readable
Hausanschluss-Wasser
Maintenance (MEQ0380794:0)
UNREACH: False
DEVICE_IN_BOOTLOADER: False
UPDATE_PENDING: False
RSSI_PEER: -24
LOWBAT: False
STICKY_UNREACH: False
AES_KEY: 0
CONFIG_PENDING: False
RSSI_DEVICE: -65535
Hausanschluss-Wasser (MEQ0380794:1)
Exception: [interface_get_paramset] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'LaRMamqqrP', 'address': u'MEQ0380794:1'})
Traceback (most recent call last):
File "./list_room_states2.py", line 49, in <module>
for value in channel.values.values():
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 216, in values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 292, in _fetch_values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 325, in _get_values_single
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 179, in <lambda>
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 494, in call
File "build/bdist.linux-x86_64/egg/pmatic/api.py", line 151, in _parse_api_response
pmatic.exceptions.PMException: [interface_get_value] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'valueKey': u'ENERGY_COUNTER', u'_session_id_': u'LaRMamqqrP', 'address': u'MEQ0380794:1'})
I really dunno why this device creates an exception again. However, it works fine and doesn't show any error on the CCU or any related function.
Wir bekommen das schon noch hin ;-). Versuchs mal hiermit. list_room_states_fallback_to_single.txt
Na das will ich doch hoffen, denn ich setze viel Hoffnung in pmatic in Zukunft meine komplette Programmierung der CCU zu ersetzen denn HMS Skripte zu betrieben geht einfach mit einer CCU ab einer gewissen Anzahl von Programmen nicht mehr. Die Stabilität geht da einfach in die Knie wie du sicher weisst.
So, nun bricht das script zumindest nicht mehr ab und macht entsprechend weiter. Allerdings wirst du in der Debugdatei die ich hier hochlade auch erkennen können das es schon für eine recht große Menge von Devices es zu den besagten "JSONRPCError: TCL error" Exceptions kommt.
Wäre schön wenn du klären könntest ob man diese beseitigen könnte oder rausbekommt warum diese Exceptions so häufig auftreten und wie man bzw. du damit umzugehen hast.
Noch ein paar Fragen:
Auch muss man sagen treten die Exceptions immer für die selbe Art von Devices auf wie du aus dem Log heraus erkennen kannst. D.h. ich habe z.B. drei HM-ES-TX-WM Devices und alle bringen die selbe Exception. Das spricht meiner Meinung nach gegen ein speichergeartetes bzw. zufälliges Problem.
Was ich aber wahrnehmen kann ist das während der Ausführung des skriptes die CPU Auslastung gerade beim ReGaHSS Prozess doch schon merklich hochgeht. Wie genau setzt denn in dem Fall du die Abfrage der CCU aus pmatic heraus um? Durch XML-RPC calls oder wie bezieht pmatic die Daten von der CCU?
Du könntest vielleicht noch mal probieren pmatic direkt auf der CCU auszuführen. Aber ich verspreche mir wenig davon, da, wie du schon feststellst, gleichartige Geräte betroffen sind.
Dann mache ich mich mal ran da was einzubauen.
Pmatic kann sowohl aktiv Daten von der CCU holen, das geht aktuell über die JSON-API, als auch Events der XML-RPC empfangen, dafür muss man aber den Event-Listener nutzen. Das macht man entweder mit dem pmatic Manager oder selber über ccu.events
(Siehe examples/wait_for_window_events.py für ein Beispiel).
FYI: Ich hatte bei den HM-TC-IT-WM-W-EU mal direkt mit XML-RPC versucht die Values der betroffenen Parameter abzuholen, das funktioniert aber genauso nicht. Hört sich irgendwie nach Firmware-Bug oder sowas an. Wobei dann unklar ist wie die CCU die aktuellen Werte dann bekommt.
Das hatte ich auch schon irgendwo gelesen. Man kann schon - glaube ich - noch weiter runter in der Architektur ansetzen, allerdings bin ich bisher noch nicht so weit vorgedrungen.
Habe nun gerade diesen generellen Fallback-Mechanismus eingebaut. Pmatic versucht nun, wenn es einen Parmetersatz nicht laden kann die einzelnen Werte zu holen und überspringt dann die fehlerhaften stillschweigend. Man kann sich die Fehler mit dem Loglevel INFO so ausgeben lassen:
pmatic.logging(pmatic.INFO)
Bin neugierig, ob es tut.
Ehrlich gesagt wundert das mich das das nicht funktionieren soll. Ich betreibe hier ja noch CCU.io zusammen mit Dash.UI und CCU.io Highcharts und CCU.io kann die Werte der betroffenen Devices ja auch problemlos abholen und auch anzeigen... Oder übersehe ich da etwas?
Hm, interessant wäre, wie die kommunizieren, also welche APIs bzw. Calls die benutzen.
Werde mir mal den Code angucken.
Hier die Ausgabe nach deinen Änderungen:
[...]
Keller
CCU2: Device reports no operational state
Gassensor-Keller: Device reports no operational state
2016-03-31 21:28:07,997 [INFO] MEQ0380794:1 (Hausanschluss-Wasser - Hausanschluss-Wasser): [interface_get_paramset] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'1o9yYszkGx', 'address': u'MEQ0380794:1'}). Falling back to single value fetching.
2016-03-31 21:28:08,162 [INFO] MEQ0380794:1 (Hausanschluss-Wasser - Hausanschluss-Wasser - ENERGY_COUNTER): [interface_get_value] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'valueKey': u'ENERGY_COUNTER', u'_session_id_': u'1o9yYszkGx', 'address': u'MEQ0380794:1'})
2016-03-31 21:28:08,410 [INFO] MEQ0380794:1 (Hausanschluss-Wasser - Hausanschluss-Wasser - POWER): [interface_get_value] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'valueKey': u'POWER', u'_session_id_': u'1o9yYszkGx', 'address': u'MEQ0380794:1'})
Hausanschluss-Wasser: Boot: False, Energy Counter: 0.00 Wh, Gas Energy Counter: 97.18 m3, Gas Power: 0.38 m3, Power: 0.00 W
HZ-ZirkPumpe: State: off, Boot: True, Current: 0.00 mA, Energy Counter: 338.50 Wh, Frequency: 50.02 Hz, Power: 0.00 W, Voltage: 229.60 V
Rauchmelder-Keller: State: False
Stromzufuhr-Keller: State: on, Boot: True, Current: 734.00 mA, Energy Counter: 327902.00 Wh, Frequency: 50.02 Hz, Power: 99.31 W, Voltage: 229.70 V, Decision Value: 0, Decision Value: 0, Decision Value: 0, Decision Value: 0
Feuchtesensor-Keller-WW: Lowbat: False, State: DRY
TempSensor-Keller: Humidity: 52%, Temperature: 17.50 °C
Tür-Keller: closed
Licht-Keller: State: off
2016-03-31 21:28:14,298 [INFO] MEQ0204064:5 (HZ-WW-Tempsensor - HM-WDS30-OT2-SM MEQ0204064:5): [interface_get_paramset] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'1o9yYszkGx', 'address': u'MEQ0204064:5'}). Falling back to single value fetching.
2016-03-31 21:28:14,464 [INFO] MEQ0204064:5 (HZ-WW-Tempsensor - HM-WDS30-OT2-SM MEQ0204064:5 - TEMPERATURE): [interface_get_value] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'valueKey': u'TEMPERATURE', u'_session_id_': u'1o9yYszkGx', 'address': u'MEQ0204064:5'})
HZ-WW-Tempsensor: Lowbat: False, Temperature: 17.60 °C, Lowbat: False, Temperature: 17.20 °C, Lowbat: False, Temperature: 0.40 °C, Lowbat: False, Temperature: -0.40 °C, Lowbat: False, Temperature: 0.00 °C
[...]
Wie du aus dem Log sehen kannst kommen nun deine [INFO] ausgaben. Interessant daran ist aber, das er trotzdem am Schluss brauchbare werte z.B. für das "Hausanschluss-Wasser" Gerät ausgibt. Hierbei sei einmal darauf hingewiesen das man den HM-ES-TX-WM ja in zwei Modis betreiben kann (Gas/m3 und Strom/kW) und dabei jeweils nur entweder die GAS_ENERGY_COUNTER bzw. ENERGY_COUNTER angebe verwendet werden kann bzw. valide sind. Kann es also gewolltes verhalten sein das hier dann in dem jeweiligen Modi eben das andere Valuepaar einen Fehler zurückgibt?
Auch würde mich interessieren warum der HZ-WW-Tempsensor hier zwar bei der Abfrage von Kanal 5/TEMPERATURE einen Fehler zurück gibt aber die Temperaturwerte die dort dann angezeigt werden alle stimmen – bis auf den letzten – der ist 0.00C? Auch hier kann es sein das das wieder gewollt ist?
Es kommt hier übrigens am Schluss doch noch zu einer weiteren fatalen exception :(
2016-03-31 21:38:28,538 [DEBUG] CALL: Interface.getParamsetDescription ARGS: {'interface': u'BidCos-RF', 'paramsetType': u'VALUES', u'_session_id_': u'Hd9MPbPVbq', 'address': u'MEQ0821706:0'}
2016-03-31 21:38:28,538 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetType": "VALUES", "_session_id_": "Hd9MPbPVbq", "address": "MEQ0821706:0"}, "method": "Interface.getParamsetDescription"}
2016-03-31 21:38:28,642 [DEBUG] HTTP-STATUS: 200
2016-03-31 21:38:28,642 [DEBUG] RESPONSE: {"version": "1.1","result": [{"NAME":"STICKY_UNREACH","DEFAULT":"0","FLAGS":"25","ID":"STICKY_UNREACH","MAX":"1","MIN":"0","OPERATIONS":"7","TAB_ORDER":"1","TYPE":"BOOL","UNIT":""},{"NAME":"RSSI_PEER","DEFAULT":"0","FLAGS":"1","ID":"RSSI_PEER","MAX":"2147483647","MIN":"-2147483648","OPERATIONS":"5","TAB_ORDER":"5","TYPE":"INTEGER","UNIT":""},{"NAME":"RSSI_DEVICE","DEFAULT":"0","FLAGS":"1","ID":"RSSI_DEVICE","MAX":"2147483647","MIN":"-2147483648","OPERATIONS":"5","TAB_ORDER":"4","TYPE":"INTEGER","UNIT":""},{"NAME":"ENTER_BOOTLOADER","DEFAULT":"0","FLAGS":"3","ID":"ENTER_BOOTLOADER","MAX":"1","MIN":"0","OPERATIONS":"2","TAB_ORDER":"9","TYPE":"ACTION","UNIT":""},{"NAME":"DEVICE_IN_BOOTLOADER","DEFAULT":"0","FLAGS":"9","ID":"DEVICE_IN_BOOTLOADER","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"6","TYPE":"BOOL","UNIT":""},{"NAME":"LOWBAT","DEFAULT":"0","FLAGS":"9","ID":"LOWBAT","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"3","TYPE":"BOOL","UNIT":""},{"NAME":"AES_KEY","DEFAULT":"0","FLAGS":"0","ID":"AES_KEY","MAX":"127","MIN":"0","OPERATIONS":"1","TAB_ORDER":"8","TYPE":"INTEGER","UNIT":""},{"NAME":"UNREACH","DEFAULT":"0","FLAGS":"9","ID":"UNREACH","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"0","TYPE":"BOOL","UNIT":""},{"NAME":"CONFIG_PENDING","DEFAULT":"0","FLAGS":"9","ID":"CONFIG_PENDING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"2","TYPE":"BOOL","UNIT":""},{"NAME":"UPDATE_PENDING","DEFAULT":"0","FLAGS":"9","ID":"UPDATE_PENDING","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"7","TYPE":"BOOL","UNIT":""}],"error": null}
2016-03-31 21:38:28,643 [DEBUG] CALL: Interface.getParamset ARGS: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'Hd9MPbPVbq', 'address': u'MEQ0821706:0'}
2016-03-31 21:38:28,643 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetKey": "VALUES", "_session_id_": "Hd9MPbPVbq", "address": "MEQ0821706:0"}, "method": "Interface.getParamset"}
2016-03-31 21:38:28,738 [DEBUG] HTTP-STATUS: 200
2016-03-31 21:38:28,738 [DEBUG] RESPONSE: {"version": "1.1","result": {"AES_KEY":"0","CONFIG_PENDING":"0","DEVICE_IN_BOOTLOADER":"0","LOWBAT":"0","RSSI_DEVICE":"-65535","RSSI_PEER":"-51","STICKY_UNREACH":"0","UNREACH":"0","UPDATE_PENDING":"0"},"error": null}
2016-03-31 21:38:28,739 [DEBUG] CALL: Interface.getParamsetDescription ARGS: {'interface': u'BidCos-RF', 'paramsetType': u'VALUES', u'_session_id_': u'Hd9MPbPVbq', 'address': u'MEQ0821706:1'}
2016-03-31 21:38:28,739 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetType": "VALUES", "_session_id_": "Hd9MPbPVbq", "address": "MEQ0821706:1"}, "method": "Interface.getParamsetDescription"}
2016-03-31 21:38:28,825 [DEBUG] HTTP-STATUS: 200
2016-03-31 21:38:28,825 [DEBUG] RESPONSE: {"version": "1.1","result": [{"NAME":"BRIGHTNESS","DEFAULT":"0","FLAGS":"1","ID":"BRIGHTNESS","MAX":"255","MIN":"0","OPERATIONS":"5","TAB_ORDER":"0","TYPE":"INTEGER","UNIT":""},{"NAME":"MOTION","DEFAULT":"0","FLAGS":"1","ID":"MOTION","MAX":"1","MIN":"0","OPERATIONS":"5","TAB_ORDER":"2","TYPE":"BOOL","UNIT":""},{"NAME":"INSTALL_TEST","DEFAULT":"0","FLAGS":"3","ID":"INSTALL_TEST","MAX":"1","MIN":"0","OPERATIONS":"4","TAB_ORDER":"4","TYPE":"ACTION","UNIT":""},{"NAME":"ERROR","CONTROL":"NONE","DEFAULT":"0","FLAGS":"9","ID":"ERROR","MAX":"7","MIN":"0","OPERATIONS":"5","TAB_ORDER":"3","TYPE":"ENUM","UNIT":"","VALUE_LIST":"NO_ERROR \{} \{} \{} \{} \{} \{} SABOTAGE"}],"error": null}
2016-03-31 21:38:28,826 [DEBUG] CALL: Interface.getParamset ARGS: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'Hd9MPbPVbq', 'address': u'MEQ0821706:1'}
2016-03-31 21:38:28,826 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"interface": "BidCos-RF", "paramsetKey": "VALUES", "_session_id_": "Hd9MPbPVbq", "address": "MEQ0821706:1"}, "method": "Interface.getParamset"}
2016-03-31 21:38:28,909 [DEBUG] HTTP-STATUS: 200
2016-03-31 21:38:28,909 [DEBUG] RESPONSE: {"version": "1.1","result": {"BRIGHTNESS":"34","ERROR":"0","MOTION":"0","NEXT_TRANSMISSION":"281"},"error": null}
Traceback (most recent call last):
File "./list_room_states.py", line 29, in <module>
print(" %s: %s" % (device.name, device.summary_state))
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 1021, in summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 1047, in _get_summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 378, in summary_state
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 216, in values
File "build/bdist.linux-x86_64/egg/pmatic/entities.py", line 301, in _fetch_values
KeyError: u'NEXT_TRANSMISSION'
2016-03-31 21:38:28,910 [DEBUG] CALL: Session.logout ARGS: {'_session_id_': u'Hd9MPbPVbq'}
2016-03-31 21:38:28,910 [DEBUG] URL: http://192.168.5.46/api/homematic.cgi DATA: {"params": {"_session_id_": "Hd9MPbPVbq"}, "method": "Session.logout"}
2016-03-31 21:38:28,991 [DEBUG] HTTP-STATUS: 200
2016-03-31 21:38:28,991 [DEBUG] RESPONSE: {"version": "1.1","result": true,"error": null}
Interessant daran ist aber, das er trotzdem am Schluss brauchbare werte z.B. für das "Hausanschluss-Wasser" Gerät ausgibt.
Ja klar, es kommen halt keine echten Werte für die fehlgeschlagenen Parameter raus. Da werden dann Default-Werte angezeigt. Wohingegen die Werte, die geholt werden konnte angezeigt werden.
Hierbei sei einmal darauf hingewiesen das man den HM-ES-TX-WM ja in zwei Modis betreiben kann (Gas/m3 und Strom/kW) und dabei jeweils nur entweder die GAS_ENERGY_COUNTER bzw. ENERGY_COUNTER angebe verwendet werden kann bzw. valide sind.
Ja siehe da. Hätte mir das gleich jemand gesagt... ;-). Dann bleibt nun die Frage, ob man diesen Betriebsmodus auslesen kann und damit kann man dann das Device vernünftig implementieren.
Auch würde mich interessieren warum der HZ-WW-Tempsensor hier zwar bei der Abfrage von Kanal 5/TEMPERATURE einen Fehler zurück gibt aber die Temperaturwerte die dort dann angezeigt werden alle stimmen – bis auf den letzten – der ist 0.00C? Auch hier kann es sein das das wieder gewollt ist?
Hier das gleiche. Die ersten 4 Werte kommen, werden daher verarbeitet. Nur beim 5ten Kanal gibt es einen Fehler, daher der Fallback auf den Default-Wert. Könnte es auch dafür eine logische Erklärung geben, wie für den HM-ES-TX-WM, z.b. dass kein Sensor angeschlossen ist oder etwas dergleichen?
NEXT_TRANSMISSION
Das ist auch wieder seltsam, allerdings ein anderes Problem. Hier liefert vorher Interface.getParamsetDescription() für den Kanal eine Beschreibung der möglichen Werte, da ist NEXT_TRANSMISSION nicht dabei. Beim darauffolgenden Abfragen der Werte mit Interface.getParamset() kommt dann aber ein solcher Wert mit.
Und nun, den einfach ignorieren? Muss ich fast, da ich dafür keine Description habe, die mir ein Parameter-Objekt erzeugen kann.
Der letzte Fehler sollte inzwischen übrigens ebenfalls behoben sein.
Ja, er macht jetzt weiter. Aber "behoben" würde ich das noch nicht nennen denn jetzt motzt er ja über das NEXT_TRANSMISSION ;)
2016-04-02 12:11:11,048 [INFO] MEQ0821706:1 (Bewegungsmelder-FlurOG - Bewegungsmelder-FlurOG): Skipping received value of unknown parameter NEXT_TRANSMISSION.
Bewegungsmelder-FlurOG: Brightness: 176, Error: NO_ERROR, Motion: False
Die Frage ist wie willst du jetzt mit den restlichen "Fehlern" (wenn man die überhaupt als Fehler bezeichnen kann) umgehen? Ich kann ja hier mal kurz zusammenfassen:
(1) HM-ES-TX-WM: Je nach ausgewähltem Modi ist entweder "ENERGY_COUNTER" und "POWER" abfragbar ODER "GAS_ENERGY_COUNTER" und "GAS_POWER":
2016-04-02 12:10:54,183 [INFO] MEQ0380794:1 (Hausanschluss-Wasser - Hausanschluss-Wasser): [interface_get_paramset] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'U70F6bwvZi', 'address': u'MEQ0380794:1'}). Falling back to single value fetching.
2016-04-02 12:10:54,348 [INFO] MEQ0380794:1 (Hausanschluss-Wasser - Hausanschluss-Wasser - ENERGY_COUNTER): [interface_get_value] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'valueKey': u'ENERGY_COUNTER', u'_session_id_': u'U70F6bwvZi', 'address': u'MEQ0380794:1'})
2016-04-02 12:10:54,594 [INFO] MEQ0380794:1 (Hausanschluss-Wasser - Hausanschluss-Wasser - POWER): [interface_get_value] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'valueKey': u'POWER', u'_session_id_': u'U70F6bwvZi', 'address': u'MEQ0380794:1'})
Hausanschluss-Wasser: Boot: False, Energy Counter: 0.00 Wh, Gas Energy Counter: 97.18 m3, Gas Power: 0.38 m3, Power: 0.00 W
[...]
2016-04-02 12:11:18,861 [INFO] MEQ0381033:1 (Hausanschluss-Strom - Hausanschluss-Strom): [interface_get_paramset] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'U70F6bwvZi', 'address': u'MEQ0381033:1'}). Falling back to single value fetching.
2016-04-02 12:11:18,942 [INFO] MEQ0381033:1 (Hausanschluss-Strom - Hausanschluss-Strom - GAS_POWER): [interface_get_value] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'valueKey': u'GAS_POWER', u'_session_id_': u'U70F6bwvZi', 'address': u'MEQ0381033:1'})
2016-04-02 12:11:19,188 [INFO] MEQ0381033:1 (Hausanschluss-Strom - Hausanschluss-Strom - GAS_ENERGY_COUNTER): [interface_get_value] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'valueKey': u'GAS_ENERGY_COUNTER', u'_session_id_': u'U70F6bwvZi', 'address': u'MEQ0381033:1'})
Hausanschluss-Strom: Boot: False, Energy Counter: 148548.80 Wh, Gas Energy Counter: 0.00 m3, Gas Power: 0.00 m3, Power: 247.00 W
(2) HM-WDS30-OT2-SM: Kanal 5 scheint nur zur Verbindung mit einer HomeMatic-Wetterstation abfragbar zu sein (siehe http://homematic-forum.de/forum/viewtopic.php?f=27&t=18842#p155683 bzw. http://www.fhemwiki.de/wiki/HM-WDS30-OT2-SM_Differenz-Temperatur-Sensor)
2016-04-02 12:11:00,486 [INFO] MEQ0204064:5 (HZ-WW-Tempsensor - HM-WDS30-OT2-SM MEQ0204064:5): [interface_get_paramset] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'paramsetKey': u'VALUES', u'_session_id_': u'U70F6bwvZi', 'address': u'MEQ0204064:5'}). Falling back to single value fetching.
2016-04-02 12:11:00,651 [INFO] MEQ0204064:5 (HZ-WW-Tempsensor - HM-WDS30-OT2-SM MEQ0204064:5 - TEMPERATURE): [interface_get_value] JSONRPCError: TCL error (Code: 601, Request: {'interface': u'BidCos-RF', 'valueKey': u'TEMPERATURE', u'_session_id_': u'U70F6bwvZi', 'address': u'MEQ0204064:5'})
HZ-WW-Tempsensor: Lowbat: False, Temperature: 26.00 °C, Lowbat: False, Temperature: 21.80 °C, Lowbat: False, Temperature: 4.20 °C, Lowbat: False, Temperature: -4.20 °C, Lowbat: False, Temperature: 0.00 °C
(3) HM-Sen-MDIR-O-2/HM-Sec-MDIR-2/HM-Sen-MDIR-WM55 (Bewegungsmelder generell): NEXT_TRANSMISSION (siehe http://diy-lab.de/hausautomation/hardware/homematic/hm-sen-mdir-o-2)
2016-04-02 12:11:11,048 [INFO] MEQ0821706:1 (Bewegungsmelder-FlurOG - Bewegungsmelder-FlurOG): Skipping received value of unknown parameter NEXT_TRANSMISSION.
Bewegungsmelder-FlurOG: Brightness: 176, Error: NO_ERROR, Motion: False
So die Frage ist wie du nun damit umgehen willst?
(1) HM-ES-TX-WM: Je nach ausgewähltem Modi ist entweder "ENERGY_COUNTER" und "POWER" abfragbar ODER "GAS_ENERGY_COUNTER" und "GAS_POWER":
Am Liebsten wäre es, wenn man den Betriebsmodus ermitteln und dann nur die jeweils relevanten Werte abfragen kann. Allerdings habe ich bisher keinen Wert erkennen können, der darüber Auskunft gibt. Vielleicht findest du ja etwas.
(2) HM-WDS30-OT2-SM: Kanal 5 scheint nur zur Verbindung mit einer HomeMatic-Wetterstation abfragbar zu sein (siehe http://homematic-forum.de/forum/viewtopic.php?f=27&t=18842#p155683 bzw. http://www.fhemwiki.de/wiki/HM-WDS30-OT2-SM_Differenz-Temperatur-Sensor)
Ah ja, interessant. Auch hier wieder: Wenn man das ermitteln kann, z.b. durch Auslesen ob eine Direktverbindung vorhanden ist, dann könnte pmatic das ordentlich behandeln.
(3) HM-Sen-MDIR-O-2/HM-Sec-MDIR-2/HM-Sen-MDIR-WM55 (Bewegungsmelder generell): NEXT_TRANSMISSION (siehe http://diy-lab.de/hausautomation/hardware/homematic/hm-sen-mdir-o-2)
Naja, seit dem Commit (https://github.com/LarsMichelsen/pmatic/commit/898448b73e21417702c0c35a51a53faa74332595) schmiert er bei solchen Fehlern nicht mehr ab. Der Wert wird nun einfach ignoriert bzw. wenn man das Loglevel auf INFO stellt eine Logmeldung erzeugt. Wofür der Wert steht weiß ich bisher nicht.
Ich würde den Wert erst einmal weglassen und wenn der doch benötigt wird die Spezifikation des Wertes für den Gerätetyp hart codieren, so dass pmatic nicht auf die Spezifikation von der CCU angewiesen ist, die die CCU ja nicht schickt.
Kurzes Update: OPERATIONS für den Parameter PARTY_MODE_SUBMIT im Kanal 2 für das Gerät HM-TC-IT-WM-W-EU liefert mit der neuesten Firmware den Wert 2, also nur noch schreibend. Damit sollte jetzt auch getParamset mit Kanal 2 funktionieren. Die Dokumentation "HomeMatic-Script Dokumentation Teil 4: Datenpunkte" wurde dahingehend auch abgeändert, auch wenn die Version auf v1.0 geblieben ist und sich nicht geändert hat... Bei DECISON_VALUE im Kanal 7 hat sich allerdings nichts geändert und OPERATIONS steht noch auf 5. Da wird getParamset also immernoch fehlschlagen.
Es gibt neue Erkentnisse: Falls ein Wert noch nie gesetzt wurde, also undefined ist, wird der getValue und getParamset call fehlschlagen. In der XML-RPC API gibt es eine zweite Funktion um einen Modus auszuwählen:
Paramset getParamset(String address, String paramsetkey, Integer mode) /(2) nur BidcosRF_/
mode=1 liefert die zusätzliche Information ob ein Wert undefined ist oder nicht mode=0 ist der default und verhält sich wie der Aufruf ohne 'mode' Parameter
Die JSON-API bietet den Parameter 'mode' nicht, d.h. beim Versuch einen undefined Parameter zu lesen wird der call immer fehlschlagen. Das ist bei mir der Fall mit dem Funk-Wandthermostat und Kanal 7, Parameter DECISON_VALUE.
Das könnte natürlich auch bei den anderen hier diskutierten Fällen/Geräten der Fall sein.
When using the latest git master sources I get the following error message when trying the
list_room_stats.py
example script:My CCU is a RaspberryMatic 2.15.5