[SOLVED] Warnings in logs about mapping n.0 vs n?

I am still trying to get this CT100 thermostat working. I’m obviously missing some core concepts. So, one at a time:

  1. If I edit ct100.items, it generates the following warnings. Can someone point me to what I’m not understanding about ‘n.0’ (presumably a float) vs ‘n’ (presumably in this context a string, or maybe an integer?)

  2. I assume that the ?F in the state change messages simply mean that the little small-circle degree symbol isn’t in the character set being used?

Thanks in advance!

==> /var/log/openhab2/openhab.log <==
2019-10-21 20:17:36.714 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'ct100.items'

==> /var/log/openhab2/events.log <==
2019-10-21 20:17:37.098 [vent.ItemStateChangedEvent] - HVAC_HeatSetPoint changed from NULL to 70.0 ?F
2019-10-21 20:17:37.126 [vent.ItemStateChangedEvent] - HVAC_Cooling_SetPoint changed from NULL to 78.0 ?F
2019-10-21 20:17:37.179 [vent.ItemStateChangedEvent] - Temperature_HVAC changed from NULL to 70.5 ?F
2019-10-21 20:17:37.212 [vent.ItemStateChangedEvent] - HVAC_Operating_Mode changed from NULL to 1.0
2019-10-21 20:17:37.230 [vent.ItemStateChangedEvent] - HVAC_Operating_State changed from NULL to 0.0
2019-10-21 20:17:37.249 [vent.ItemStateChangedEvent] - HVAC_Fan_Mode changed from NULL to 0.0
2019-10-21 20:17:37.269 [vent.ItemStateChangedEvent] - HVAC_Fan_State changed from NULL to 0.0
2019-10-21 20:17:37.290 [vent.ItemStateChangedEvent] - HVAC_Battery changed from NULL to 98.0
2019-10-21 20:17:37.296 [.ItemChannelLinkAddedEvent] - Link 'HVAC_HeatSetPoint-zwave:device:8601bb4d:node14:thermostat_setpoint_heating' has been added.
2019-10-21 20:17:37.300 [.ItemChannelLinkAddedEvent] - Link 'HVAC_Cooling_SetPoint-zwave:device:8601bb4d:node14:thermostat_setpoint_cooling' has been added.
2019-10-21 20:17:37.304 [.ItemChannelLinkAddedEvent] - Link 'Temperature_HVAC-zwave:device:8601bb4d:node14:sensor_temperature' has been added.
2019-10-21 20:17:37.307 [.ItemChannelLinkAddedEvent] - Link 'Humidity_HVAC-zwave:device:8601bb4d:node14:sensor_relhumidity2' has been added.
2019-10-21 20:17:37.311 [.ItemChannelLinkAddedEvent] - Link 'HVAC_Operating_Mode-zwave:device:8601bb4d:node14:thermostat_mode' has been added.
2019-10-21 20:17:37.315 [.ItemChannelLinkAddedEvent] - Link 'HVAC_Operating_State-zwave:device:8601bb4d:node14:thermostat_state' has been added.
2019-10-21 20:17:37.320 [.ItemChannelLinkAddedEvent] - Link 'HVAC_Fan_Mode-zwave:device:8601bb4d:node14:thermostat_fanmode' has been added.
2019-10-21 20:17:37.323 [.ItemChannelLinkAddedEvent] - Link 'HVAC_Fan_State-zwave:device:8601bb4d:node14:thermostat_fanstate' has been added.
2019-10-21 20:17:37.326 [.ItemChannelLinkAddedEvent] - Link 'HVAC_Battery-zwave:device:8601bb4d:node14:battery-level' has been added.

==> /var/log/openhab2/openhab.log <==
2019-10-21 20:17:37.482 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:37.499 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:37.485 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:37.517 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:37.507 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:37.601 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '1.0' with the file 'thermostatOpMode.map' : Target value not found in map for '1.0'
2019-10-21 20:17:37.635 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanMode.map' : Target value not found in map for '0.0'
2019-10-21 20:17:37.656 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '1.0' with the file 'thermostatOpMode.map' : Target value not found in map for '1.0'
2019-10-21 20:17:37.662 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '1.0' with the file 'thermostatOpMode.map' : Target value not found in map for '1.0'
2019-10-21 20:17:37.665 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatOpState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:37.681 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanMode.map' : Target value not found in map for '0.0'
2019-10-21 20:17:37.703 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '1.0' with the file 'thermostatOpMode.map' : Target value not found in map for '1.0'
2019-10-21 20:17:37.703 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanMode.map' : Target value not found in map for '0.0'
2019-10-21 20:17:37.715 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatOpState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:37.718 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '1.0' with the file 'thermostatOpMode.map' : Target value not found in map for '1.0'
2019-10-21 20:17:37.745 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatOpState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:37.755 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanMode.map' : Target value not found in map for '0.0'
2019-10-21 20:17:37.782 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanMode.map' : Target value not found in map for '0.0'
2019-10-21 20:17:37.798 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatOpState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:37.827 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatOpState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.025 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.066 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.105 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.141 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.151 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '1.0' with the file 'thermostatOpMode.map' : Target value not found in map for '1.0'
2019-10-21 20:17:38.151 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.171 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanMode.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.171 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '1.0' with the file 'thermostatOpMode.map' : Target value not found in map for '1.0'
2019-10-21 20:17:38.217 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '1.0' with the file 'thermostatOpMode.map' : Target value not found in map for '1.0'
2019-10-21 20:17:38.229 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '1.0' with the file 'thermostatOpMode.map' : Target value not found in map for '1.0'
2019-10-21 20:17:38.229 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatOpState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.232 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanMode.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.250 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '1.0' with the file 'thermostatOpMode.map' : Target value not found in map for '1.0'
2019-10-21 20:17:38.258 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanMode.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.263 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanMode.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.274 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatOpState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.276 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatFanMode.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.303 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatOpState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.304 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatOpState.map' : Target value not found in map for '0.0'
2019-10-21 20:17:38.326 [WARN ] [rm.AbstractFileTransformationService] - Could not transform '0.0' with the file 'thermostatOpState.map' : Target value not found in map for '0.0'

why is it trying to transform a floating ‘0.0’ or ‘1.0’ rather than a string ‘0’ or ‘1’

Here are the relevant files:


/* Thermostat CT100*/
Group  gHVAC
Number:Temperature HVAC_HeatSetPoint "Set House Heating [%.0f %unit%]" (gHVAC) {channel="zwave:device:8601bb4d:node14:thermostat_setpoint_heating", autoupdate="false"  }
Number:Temperature HVAC_Cooling_SetPoint "Set House Cooling [%.0f %unit%]" (gHVAC) {channel="zwave:device:8601bb4d:node14:thermostat_setpoint_cooling", autoupdate="false" }
Number:Temperature Temperature_HVAC "Temperature [%.1f %unit%]" <temperature> (gHVAC,Temp_Chart) {channel="zwave:device:8601bb4d:node14:sensor_temperature"}
Number Humidity_HVAC "Humidity [%.1f %%]" <humidity> (gHVAC,Hum_Chart) {channel="zwave:device:8601bb4d:node14:sensor_relhumidity2"}
Group gHVACStatus
Number HVAC_Operating_Mode "Tstat Mode [MAP(thermostatOpMode.map):%s]" <flow> (gHVACStatus) {channel="zwave:device:8601bb4d:node14:thermostat_mode" }
Number HVAC_Operating_State "Op State [MAP(thermostatOpState.map):%s]" <flow> (gHVACStatus) {channel="zwave:device:8601bb4d:node14:thermostat_state"}
Number HVAC_Fan_Mode "Fan Mode [MAP(thermostatFanMode.map):%s]" <fan> (gHVACStatus) {channel="zwave:device:8601bb4d:node14:thermostat_fanmode" }
Number HVAC_Fan_State "Fan State [MAP(thermostatFanState.map):%s]" <fan> (gHVACStatus) {channel="zwave:device:8601bb4d:node14:thermostat_fanstate"}
Number HVAC_Battery "Battery State [%d %%]" <battery> (gHVACStatus) {channel="zwave:device:8601bb4d:node14:battery-level"}

I understand (I think) that ‘Number’ casts as a float, but did I misunderstand that the MAP(yada):%s converts to string?

ThermostatOpState.map


0=Idle
1=Heating
2=Cooling
3=Fan Only
4=Pending Heat
5=Pending Cool
6=Vent / Economizer

ThermostatOpMode.map

0=Off
1=Heat
2=Cool
3=Auto
4=Aux Heat
5=Resume
6=Fan Only
7=Furnace
8=Dry Air
9=Moist Air
10=Auto Changeover
11=Heat Econ
12=Cool Econ
13=Away

ThermostatFanState.map

0=Idle
1=Running
2=Running High

ThermostatFanMode.map

0=Auto Low
1=On Low
2=Auto High
3=On High
4=Unknown
5=Unknown
6=Circulate

These were all cribbed from:

This is the sitemap I’m using. Crude, yes, but good enough to learn with:

sitemap mobile label="23 Mobile Display"
{
    Text item=Door_Garage label="Garage Door"
    Text item=Presence_Sue_Phone label="Sue's Mobile"
    Text item=Door_Garage label="Garage Door" labelcolor=["red"] icon="error" visibility=[Door_Garage=="OPEN"]

    Text item=Temperature_HVAC label="Room Temp"
    Text item=HVAC_Operating_State label="Operating State"
    Selection item=HVAC_Operating_Mode label="Tstat Mode" mappings=[0="OFF", 1="HEAT"]
    Setpoint item=HVAC_HeatSetPoint label="Furnace Setpoint" minValue=55 maxValue=80 step=1
}

Other relevant info:

2019-10-21 21:46:25,289: FireMotD: Info: Action "theme"
###############################################################################
###############  openhab  #####################################################
###############################################################################
##        Ip = 192.168.22.15
##   Release = Raspbian GNU/Linux 10 (buster)
##    Kernel = Linux 4.19.75-v7+
##  Platform = Raspberry Pi 3 Model B Rev 1.2
##    Uptime = 0 day(s). 22:50:52
## CPU Usage = 2.78% avg over 4 cpu(s) (4 core(s) x 1 socket(s))
##  CPU Load = 1m: 0.37, 5m: 0.25, 15m: 0.20
##    Memory = Free: 0.04GB (4%), Used: 0.91GB (96%), Total: 0.95GB
##      Swap = Free: 0.03GB (41%), Used: 0.05GB (59%), Total: 0.09GB
##      Root = Free: 24.78GB (89%), Used: 2.99GB (11%), Total: 28.99GB
##   Updates = 0 apt updates available.
##  Sessions = 0 session(s)
## Processes = 127 running processes of 32768 maximum processes
###############################################################################

              Welcome to            __  _____    ____  _
            ____  ____  ___  ____  / / / /   |  / __ )(_)___ _____
           / __ \/ __ \/ _ \/ __ \/ /_/ / /| | / __  / / __ `/ __ \
          / /_/ / /_/ /  __/ / / / __  / ___ |/ /_/ / / /_/ / / / /
          \____/ .___/\___/_/ /_/_/ /_/_/  |_/_____/_/\__,_/_/ /_/
              /_/
                  openHAB 2.4.0-1 (Release Build)


Looking for a place to get started? Check out 'sudo openhabian-config' and the
documentation at https://www.openhab.org/docs/installation/openhabian.html
The openHAB dashboard can be reached at http://openhab:8080
To interact with openHAB on the command line, execute: 'openhab-cli --help'

[21:46:29] openhabian@openhab:~$ uname -an
Linux openhab 4.19.75-v7+ #1270 SMP Tue Sep 24 18:45:11 BST 2019 armv7l GNU/Linux

and an aeotec z-stick Gen5

Did you try to complement the map file? Of course the number should be an integer (and thus changed to a string without decimals), but just to get rid of the error…

Map tansforms always deal with strings, and the unavoidable fact is that “0.0” is different to “0”.

You can enhance your MAP to deal with that.
You could use a SCALE transform, which works on numeric values.

The underlying issue is that is the way the data comes from the binding. You might be able to transform there to extract integers. But that would be a sticking plaster - there are also other ways for Number types to mess about with integer/float suprises (like persostence) so it is better to deal with both cases at the point of use.

Interesting. No I haven’t. Is that like 2’s complement? (which I haven’t actually thought about since…ummm…university) :grinning:

Can you point me to how I’d actually do that in/to the map file?

thanks!

So, before I plunge down yet another rabbit hole, is the SCALE transform the proper way to deal with this?

thx

There’s always more than one way to skin a cat.

SCALE transform bases its decoding of the “input” on numerical value, so that to SCALE “1.0” and “1” will have the same effect.

[0..0.99]=fred
[1..1.99]=nelly
...

I’ve no idea if that is more or less efficient than a simple string matching MAP with duplicate entries

0 = fred
0.0 = fred
1 = nelly
1.0 = nelly

Ohhhhh. I like that. And it got rid of the warnings. No idea what the collateral damage is going to be, but going with that for now.

Moving on!

Thanks!

to complement: to complete something… (LEO german - english)

So, instead of writing

0=some text

write

0.0=some text