LarsMichelsen / pmatic

Python API for Homematic. Easy to use.

Home Page:https://larsmichelsen.github.io/pmatic/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

list_room_states.py: pmatic.exceptions.PMException

jens-maus opened this issue · comments

When using the latest git master sources I get the following error message when trying the list_room_stats.py example script:

HWR
  Rauchmelder-Alarmaktor: State: off
  Fenster-HWR: closed
  Heizkörper-HWR: Temperature: 17.40 °C (Target: 15.00 °C, Valve: 0%)
  Rauchmelder-HWR: State: False
  Stromzufuhr-Ladegerät: State: off, Boot: True, Current: 0.00 mA, Energy Counter: 13132.70 Wh, Frequency: 49.99 Hz, Power: 0.00 W, Voltage: 233.40 V
Gästezimmer
  Fenster-GZ-Rechts: closed
Traceback (most recent call last):
  File "./list_room_states.py", line 28, 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)

My CCU is a RaspberryMatic 2.15.5

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)
commented

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.

commented

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.

commented

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:

  • LOWERING_MODE
  • MANU_MODE
  • BOOST_MODE
  • PARTY_MODE_SUBMIT
  • COMFORT_MODE
  • AUTO_MODE

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. 
commented

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.

commented

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?

commented

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:

device-specs.txt
device-logic.txt

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}
commented

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')
commented

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.

commented

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.

commented

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.
commented

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

commented

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.

list_room_states_fallback_to_single.txt

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.

commented

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.

debug-out.txt

commented

Noch ein paar Fragen:

  • Läuft bei dir eine echte CCU2, lxccu o.ä?
  • Rufst du pmatic direkt auf der CCU oder von einem anderen System aus auf?
  • Kannst du während der Abfragen mal die Speicherauslastung im Auge behalten (free -m)?
  • Du könntest mal einen Reboot der CCU probieren und dann noch einmal das Script laufen lassen. Vielleicht sogar mehrfach. Mich würde interessieren, ob es immer die gleichen Geräte betrifft, oder unterschiedliche.
  1. Es ist ein RaspberryMatic 2.15.5 auf einem RaspberryPi3 das ich nutze
  2. Ich führe pmatic auf einem Linux System (x86_64, Ubuntu/Linux, 16GB RAM) aus und nutze daher pmatic mit verbindung zur CCU.
  3. An der Speicherauslastung scheint es nicht zu liegen. Ich habe hier während der Ausführung des pmatic skriptes immer recht konstant die gleiche menge von Speicher frei. Auch das beenden einer Applikation um auf einen schlag mehr Speicher frei zu haben bringt keine Verbesserung/Änderung.
  4. Mehrfache reboots kann ich erst nächste Woche testen, was ich aber sagen kann ist das mehrfache aufrufe des skriptes hintereinander immer die gleichen Exceptions bei den gleichen Devices bringen.

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?

commented

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.

commented

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.

commented

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?

commented

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}
commented

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.

commented

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?

commented

(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 (898448b) 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 paramset_key, 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.