Error message "Translator couldn't parse data for datapoint type '9.001'" while trying to configure a thermostat control

(Samuel Parmentier) #1

Dear all,

I am back (ashamed) with my (stupid) questions …

First of all, once again all my thanks for your assistance with the temperature issue I had in my previous post; unfortunately I did not take the time to test but will of course keep you posted.

I am trying to “configure” openhab (2.4.0-1 installed on a raspberry pi3) to control my thermostats but really do not manage to do it correctly.

The knx thermostat is configured as follows :

Setpoint shift (1 Byte) : 5 / 0 / 57
Setpoint shift feedback (1 Byte) : 5 / 0 /59
Display temperature (2 Byte) : 5 / 0 / 58
Actual Temperature (2 Byte) : 5 /0 / 54

The “actual” temperature displays correctly (despite there is a lag) but the “lines” I wrote to control it do not work properly.

Things line :

Type number : C_Bureau_Temp_Cible "Temperature" [ ga="9.001:5/0/57+<5/0/59" ] 

Items line :

Number Bureau_Temp_Cible "Temperature Cible [%.1f °C]" {channel="knx:device:bridge:generic:C_Bureau_Temp_Cible"}

Sitemap line :

Setpoint item=Bureau_Temp_Cible minValue=4.5 maxValue=30.5 step=1.0 icon="temperature"

When I push the corresopnding “up” button in openhab, the KNX slider is moving right to the end but nothings happen when I push the “down” button (the slider does not move).
When I move the KNX slider to the left or to the right, the log shows the following errors :

2019-05-11 14:20:56.730 [INFO ] [g.knx.internal.dpt.KNXCoreTypeMapper] - Translator couldn't parse data for datapoint type '9.001' (KNXIllegalArgumentException).

2019-05-11 14:20:56.733 [WARN ] [.internal.handler.DeviceThingHandler] - Ignoring KNX bus data: couldn't transform to any Type (destination='5/0/57', datapoint='command DP 5/0/57 'knx:device:bridge:generic', DPT id 9.001, low priority', data='0xFF')

I of course did some searchs (in the forum as well as on the web), changed the dpt 9.001 to 8.001 or 7.001, removed the " [%.1f °C]", changed it to “[%.1f %unit%]” but nothing seems to work.

May I (once again) ask for your assistance ?

Thanks a lot and have a nice week-end.

Sam.

Edit :

I add a knx log and this is what it says while decreasing the temperature through JUNG remote (knx) :

2019-05-12 09:43:31.311 [TRACE] [nx.internal.client.AbstractKNXClient] - Received a Group Write telegram from '15.15.14' to '5/0/57' with value '[0]'

2019-05-12 09:43:31.313 [DEBUG] [.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:bridge:generic' received a GroupValueWrite telegram from '15.15.14' for destination '5/0/57'

2019-05-12 09:43:31.324 [TRACE] [.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:bridge:generic' processes a GroupValueWrite telegram for destination '5/0/57' for channel 'knx:device:bridge:generic:C_Bureau_Temp_Cible'

2019-05-12 09:43:31.326 [INFO ] [g.knx.internal.dpt.KNXCoreTypeMapper] - Translator couldn't parse data for datapoint type '9.001' (KNXIllegalArgumentException).

2019-05-12 09:43:31.328 [WARN ] [.internal.handler.DeviceThingHandler] - Ignoring KNX bus data: couldn't transform to any Type (destination='5/0/57', datapoint='command DP 5/0/57 'knx:device:bridge:generic', DPT id 9.001, low priority', data='0x00')

2019-05-12 09:43:31.381 [TRACE] [nx.internal.client.AbstractKNXClient] - Received a Group Write telegram from '1.1.26' to '5/0/59' with value '[0]'

2019-05-12 09:43:31.387 [DEBUG] [.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:bridge:generic' received a GroupValueWrite telegram from '1.1.26' for destination '5/0/59'

2019-05-12 09:43:31.412 [TRACE] [.internal.handler.DeviceThingHandler] - onGroupWrite Thing 'knx:device:bridge:generic' processes a GroupValueWrite telegram for destination '5/0/59' for channel 'knx:device:bridge:generic:C_Bureau_Temp_Cible'

2019-05-12 09:43:31.416 [INFO ] [g.knx.internal.dpt.KNXCoreTypeMapper] - Translator couldn't parse data for datapoint type '9.001' (KNXIllegalArgumentException).

2019-05-12 09:43:31.418 [TRACE] [nx.internal.client.AbstractKNXClient] - Received a Group Write telegram from '1.1.26' to '5/0/58' with value '[12, 26]'

2019-05-12 09:43:31.422 [WARN ] [.internal.handler.DeviceThingHandler] - Ignoring KNX bus data: couldn't transform to any Type (destination='5/0/59', datapoint='command DP 5/0/59 'knx:device:bridge:generic', DPT id 9.001, low priority', data='0x00')

And the following lines when trying to decrease the temp through openhab :

2019-05-12 09:49:57.904 [ome.event.ItemCommandEvent] - Item 'Bureau_Temp_Cible' received command 20.5

2019-05-12 09:49:57.912 [nt.ItemStatePredictedEvent] - Bureau_Temp_Cible predicted to become 20.5

==> /var/log/openhab2/openhab.log <==

2019-05-12 09:49:57.918 [TRACE] [.internal.handler.DeviceThingHandler] - Handling command '20.5' for channel 'knx:device:bridge:generic:C_Bureau_Temp_Cible'

2019-05-12 09:49:57.925 [TRACE] [.knx.internal.channel.KNXChannelType] - getCommandSpec testing Keys '[ga]' for command '20.5'

==> /var/log/openhab2/events.log <==

2019-05-12 09:49:57.925 [vent.ItemStateChangedEvent] - Bureau_Temp_Cible changed from 21.5 to 20.5

==> /var/log/openhab2/openhab.log <==

2019-05-12 09:49:57.930 [TRACE] [.knx.internal.channel.KNXChannelType] - getCommandSpec key 'ga' uses expectedTypeClass 'class org.eclipse.smarthome.core.library.types.DecimalType' witch isInstance for command '20.5' and dpt '9.001'

2019-05-12 09:49:57.935 [TRACE] [nx.internal.client.AbstractKNXClient] - writeToKNX groupAddress '5/0/57', commandSpec 'org.openhab.binding.knx.internal.channel.WriteSpecImpl@b94212'

2019-05-12 09:49:57.940 [TRACE] [nx.internal.client.AbstractKNXClient] - sendToKNX mappedValue: '20.5' groupAddress: '5/0/57'

2019-05-12 09:49:57.967 [DEBUG] [nx.internal.client.AbstractKNXClient] - Wrote value '20.5' to datapoint 'command DP 5/0/57 'knx:ip:bridge', DPT id 9.001, low priority' (0. attempt).
0 Likes

(Samuel Parmentier) #2

I found part of the solution; in fact, the thermostat setpoint is using DPT 6.010 which value is considered as a temperature increase or decrease (positive (integer, as it does not accept floating) number = increase; negative = decrease and 0 return to “display” temperature which seems to reflect the target temperature)
I know, this is not clear … sorry.
I managed to increase/decrease the target temperature with a setpoint element but the result is not clean at all; when I push the up button, it displays 1 (or more) but increases the target temperature by 0.5
I tried writing a rule but … oops, it was keeping multiplying the number by 2 and refused to stop until I deleted the rule.
I will try something else …
Have a nice evening.

0 Likes

Displaying the real temperature while sending temperature shift through a setpoint
(Samuel Parmentier) #3

Ok, I am definitely stupid and a real nuisance !

My problem is the following:

I have 4 addresses for the thermostat in a specific room

Setpoint shift (1 Byte) : 5 / 0 / 57
Setpoint shift feedback (1 Byte) : 5 / 0 /59
Display temperature (2 Byte) : 5 / 0 / 58
Actual Temperature (2 Byte) : 5 /0 / 54

If I want to change the temperature, the only way I found is through the 5/0/57 (dpt 6.010); this address only accepts +x, 0 or -x where x is (an integer) the difference between the target temperature and the new target temperature I want to reach.
Even if adding or subtracting the “setpoint shift” is working, I would like to display the real target temperature instead of a difference.
I can of course use the js transform and add 21 (which is the present target temperature) but if I change it through the “JUNG Remote” it will no longer be correct.
I tried with a rule but with a rule (and I am perhaps wrong) I can only post something and I do not want to post anything else than the temperature shift;
I do not know if I am “clear” or totally incomprehensible …

May I kindly ask you if you would have the “quick fix” to my issue ?

Thanks a lot !!

Have a nice evening.

Sam.

0 Likes

(Rossko57) #4

I am unfamiliar with KNX.
Is it possible to set up an Item that is read-only? i.e. openHAB commands don’t get sent to KNX.
If so. I’d do that and use it for the temperature display.
Put that on your sitemap as a setpoint.
When you use the setpoint, the new value will get commanded to your Item (but not go on KNX).
Instead, you have a rule triggered on command that can work out the increment up/down and command to a different Item that you set up for that purpose.

1 Like

(Samuel Parmentier) #5

Thanks a lot for your answer.
I am not sure of it but will search in this way …

Have a nice day.

Sam.

0 Likes

(Samuel Parmentier) #6

I finally found a solution.

I created an item without any link (or binding) and wrote this rule; not really clean but it is working.

rule "temperatureshift"
when
   Item Bureau_Thermostat received update
then

	logInfo("Temperature cible(avant changement) : ", Bureau_Temp_Cible.state.toString())
	logInfo("Thermostat :", Bureau_Thermostat.state.toString())
	val vcible = Bureau_Temp_Cible.state as Number
	val vthermo= Bureau_Thermostat.state as Number
	val vshift= Bureau_Temp_Shift.state as Number
	var valdiff=(vshift+(vthermo-vcible)*2) as Number
	sendCommand(Bureau_Temp_Shift, valdiff)
	
 end

Thanks once again for your kind assistance.

Have a nice week-end.

Sam.

0 Likes