MODBUS with HVAC Pluggit

No, you just have to get the configuration right.
A float32 (or float32_swap) is two registers to fetch across Modbus, and then the binding transforms and presents as a single number to an Item.

modbus.cfg

// register 40089
...
tcp.value01.start=88
tcp.value01.length=2
tcp.value01.valuetype=float32_swap

xxx.items

Number TemperatureValue01 "Outdoor T1 Temp [%.1f]" (hvac) {modbus="value01:0"}

There is no value01:1 at all in this simple case

hi rossko57, thanks for your help. I did it as you suggested, but I see no the correct Tempertures, What did i wrong?

Output sitemap:

extract from config.cfg: (for register 400133 and 400135)
tcp.value01.connection=192.168.6.181:502
tcp.value01.id=1
tcp.value01.start=132
tcp.value01.length=2
tcp.value01.type=holding
tcp.value01.valuetype=float32_swap
tcp.value02.connection=192.168.6.181:502
tcp.value02.id=1
tcp.value02.start=134
tcp.value02.length=2
tcp.value02.type=holding
tcp.value02.valuetype=float32_swap

xxx.item
Number TemperatureValue01 “Outdoor T1 Temp [%.1f]” (hvac) {modbus=“value01:0”}
Number TemperatureValue02 “Supply T2 Temp [%.1f]” (hvac) {modbus=“value02:0”}

Have you tried as float (no swap)?
The manual isn’t very clear about addressing offset; worth trying start=133

I expect you realise you can reduce the config (which needs to go into modbus.cfg not config,cfg)

tcp.value01.connection=192.168.6.181:502
tcp.value01.id=1
tcp.value01.start=132
tcp.value01.length=4
tcp.value01.type=holding
tcp.value01.valuetype=float32_swap



xxx.items   ( not xxx.item)

Number TemperatureValue01 "Outdoor T1 Temp [%.1f]" (hvac) {modbus="value01:0"}
Number TemperatureValue02 "Supply T2 Temp [%.1f]" (hvac) {modbus="value01:1"}

finally it works, maybe someone is interested. Working setup:


modbus:poll=2000
modbus:tcp.pluggittemp1.connection=192.168.1.11:502
modbus:tcp.pluggittemp1.id=1
modbus:tcp.pluggittemp1.start=133
modbus:tcp.pluggittemp1.length=2
modbus:tcp.pluggittemp1.type=holding
modbus:tcp.pluggittemp1.valuetype=float32

modbus:tcp.pluggittemp2.connection=192.168.1.11:502
modbus:tcp.pluggittemp2.id=1
modbus:tcp.pluggittemp2.start=135
modbus:tcp.pluggittemp2.length=2
modbus:tcp.pluggittemp2.type=holding
modbus:tcp.pluggittemp2.valuetype=float32

modbus:tcp.pluggittemp3.connection=192.168.1.11:502
modbus:tcp.pluggittemp3.id=1
modbus:tcp.pluggittemp3.start=137
modbus:tcp.pluggittemp3.length=2
modbus:tcp.pluggittemp3.type=holding
modbus:tcp.pluggittemp3.valuetype=float32

modbus:tcp.pluggittemp4.connection=192.168.1.11:502
modbus:tcp.pluggittemp4.id=1
modbus:tcp.pluggittemp4.start=139
modbus:tcp.pluggittemp4.length=2
modbus:tcp.pluggittemp4.type=holding
modbus:tcp.pluggittemp4.valuetype=float32

modbus:writemultipleregisters=true
modbus:tcp.pluggitfanspeed.connection=192.168.1.11:502
modbus:tcp.pluggitfanspeed.id=1
modbus:tcp.pluggitfanspeed.start=324
modbus:tcp.pluggitfanspeed.length=2
modbus:tcp.pluggitfanspeed.type=holding
modbus:tcp.pluggitfanspeed.valuetype=uint16



Number PluggitTemperature01 "PLUGGIT Outdoor T1 Temp [%.1f]" (hvac, TEMP_Chart) {modbus="pluggittemp1:0"}
Number PluggitTemperature02 "PLUGGIT Supply T2 Temp [%.1f]" (hvac, TEMP_Chart) {modbus="pluggittemp2:0"}
Number PluggitTemperature03 "PLUGGIT Extract T3 Temp [%.1f]" (hvac, TEMP_Chart) {modbus="pluggittemp3:0"}
Number PluggitTemperature04 "PLUGGIT Exhaust T4 Temp [%.1f]" (hvac, TEMP_Chart) {modbus="pluggittemp4:0"}
Number PluggitFanSpeed "Stufe [%d]"  {modbus="pluggitfanspeed:0"}

Group   item=hvac      label="PLUGGIT" {
Switch item=PluggitFanSpeed mappings=[0 = "off", 1 = "1", 2 = "2", 3 = "3", 4 = "4" ]
Text item=PluggitTemperature01
Text item=PluggitTemperature02	
Text item=PluggitTemperature03	
Text item=PluggitTemperature04	}
			

Hello Christian,

I just tried your setup regarding the fanspeed: I does update the register (although it is not quite the correct offset as it should be 325) and the changes are also shown in the Pluggit-App. But the device does not switch the fan speed. I think it’s necessary to update the 32bits in the correct sequence, which is not the case with the openhab modbus binding. But thats just a guess.
Does your device actually switch the fan speed?
By the way: All other values read correct - including current fan speed, temperatures and mode.

You are correct @mf_bib – as mentioned in the documentation, the float32 writing is not working with the openhab1 addon

Note: The way Decimal commands are handled currently means that it is probably not useful to try to use Decimal commands with non-16bit valuetypes.

If you feel lucky, you can try out the experimental/new openhab2 modbus binding. The new version should handle float32 writes correctly.

thanks for the reply. I have in fact the described issue with fan speed. Reading is no issue, but writing. The value is updated, even the PLUGGIT Android App shows the new value, but the physical machine is ignoring it.

I updated to OH2 to solve that issue, but with no luck. I recognised that it is not a float32 writing issue, because the value ist UINT according documentation … :-/

modbus:writemultipleregisters=true
modbus:tcp.pluggitfanspeed.connection=192.168.1.11:502
modbus:tcp.pluggitfanspeed.id=1
modbus:tcp.pluggitfanspeed.start=324
modbus:tcp.pluggitfanspeed.length=2
modbus:tcp.pluggitfanspeed.type=holding
modbus:tcp.pluggitfanspeed.valuetype=uint16

Any ideas? I learned from the FHEM guys, that they have a binding for Pluggit, so there it is working.

Thanks for any help.

try this settings:

writemultipleregisters=true
tcp.pluggitfanspeed.connection=192.168.1.11:502
tcp.pluggitfanspeed.id=1
tcp.pluggitfanspeed.start=324
tcp.pluggitfanspeed.length=1
tcp.pluggitfanspeed.type=holding
tcp.pluggitfanspeed.valuetype=uint16

According to documentation:

3.3.1 All parameters of the ventilation unit have a 32-bits dimension.

However, reading a 16 Bit value at address 624 is ok, so long I do not write on it.

Since I have a working PHP solution, I’m surprised that it does not work on the Modbus binding

After some experimenting here my working configuration.

The Unix times still having a small problem, the lower digits are not right (Up to 12h, in my case)

Changes to the cfg file have the effect that no more data points can be written. It seems that the main config file are not build correctly. If I delete the main config files
/var/lib/openhab2/config/org/openhab/m%0023 odbus.config
/var/lib/openhab2/config/org/openhab/modbus.config

and do a restart, all is working fine.

Item

Number Pluggit_SpeedFan01               "Speed Fan 1 [%.0f rpm]"                                                        (gPluggit)      {modbus="pluggit_prmHALTaho1:0"}
Number Pluggit_SpeedFan02               "Speed Fan 2 [%.0f rpm]"                                                        (gPluggit)      {modbus="pluggit_prmHALTaho2:0"}
Number Pluggit_OutdoorTemperature01     "Outdoor temperature T1 [%.1f °C]"                              <temperature>   (gPluggit)      {modbus="pluggit_prmRamIdxT1:0"}
Number Pluggit_SupplyTemperature02      "Supply  temperature T2 [%.1f °C]"                              <temperature>   (gPluggit)      {modbus="pluggit_prmRamIdxT2:0"}
Number Pluggit_ExtractTemperature03     "Extract temperature T3 [%.1f °C]"                              <temperature>   (gPluggit)      {modbus="pluggit_prmRamIdxT3:0"}
Number Pluggit_ExhaustTemperature04     "Exhaust temperature T4 [%.1f °C]"                              <temperature>   (gPluggit)      {modbus="pluggit_prmRamIdxT4:0"}
Number Pluggit_PowerOfPreheater         "Power Of Preheater [%d %%]"                                    <energy>        (gPluggit)      {modbus="pluggit_prmPreheaterDutyCycle:0"}
Number Pluggit_SpeedLevelOfFans         "Speed level of Fans [MAP(Pluggit.map):SpeedLevelOfFans_%d]"    <settings>      (gPluggit)      {modbus="pluggit_prmRomIdxSpeedLevel:0"}
Number Pluggit_ActiveUnitMode           "Active Unit Mode [MAP(Pluggit.map):ActiveUnitMode_%d]"         <settings>      (gPluggit)      {modbus="pluggit_prmRamIdxUnitMode:0"}
Number Pluggit_CurentUnitMode           "Curent Unit Mode [MAP(Pluggit.map):CurrentUnitMode_%d]"                        (gPluggit)      {modbus="pluggit_prmCurrentBLState:0"}
Number Pluggit_CurrentUnixTime          "Current Unix time [%d]"                                        <time>          (gPluggit)      {modbus="pluggit_prmDateTime:0"}
Number Pluggit_StartExploitationUnixTime"Date Stamp of the system start [%d]"                           <time>          (gPluggit)      {modbus="pluggit_prmStartExploitationDateStamp:0"}
Number Pluggit_WorkTimeOfSystem         "Work time of system [%d h]"                                    <time>          (gPluggit)      {modbus="pluggit_prmWorkTime:0"}
Number Pluggit_RemainingFilerLivetime   "Remaining time of the Filter Lifetime [%d days]"               <time>          (gPluggit)      {modbus="pluggit_prmFilterRemainingTime:0"}
Number Pluggit_BypassTemperatureMin     "Min temperature for outdoor air (T1) [%.1f °C]"                <temperature>   (gPluggit)      {modbus="pluggit_prmBypassTmin:0"}
Number Pluggit_BypassTemperatureMax     "Max temperature for extract air (T3) [%.1f °C]"                <temperature>   (gPluggit)      {modbus="pluggit_prmBypassTmax:0"}
Number Pluggit_BypassState              "Bypass state [MAP(Pluggit.map):CurrentUnitMode_%d]"                            (gPluggit)      {modbus="pluggit_prmRamIdxBypassActualState:0"}

map

#================================================================================
SpeedLevelOfFans_0=Off
SpeedLevelOfFans_1=1
SpeedLevelOfFans_2=2
SpeedLevelOfFans_3=3
SpeedLevelOfFans_4=4

#================================================================================
# Active Unit mode:                         
ActiveUnitMode_2=Demand Mode    
ActiveUnitMode_4=Manual Mode    
ActiveUnitMode_8=WeekProgram Mode
ActiveUnitMode_16=Away Mode
ActiveUnitMode_64=Fireplace Mode
ActiveUnitMode_2048=Summer Mode 

#================================================================================
# Current unit mode:           
CurrentUnitMode_0=Standby              
CurrentUnitMode_1=Manual               
CurrentUnitMode_2=Demand               
CurrentUnitMode_3=Week program         
CurrentUnitMode_4=Servo-flow           
CurrentUnitMode_5=Away                 
CurrentUnitMode_6=Summer               
CurrentUnitMode_7=DI Override          
CurrentUnitMode_8=Hygrostat override   
CurrentUnitMode_9=Fireplace            
CurrentUnitMode_10=Installer            
CurrentUnitMode_11=Fail Safe 1          
CurrentUnitMode_12=Fail Safe 2          
CurrentUnitMode_13=Fail Off             
CurrentUnitMode_14=Defrost Off          
CurrentUnitMode_15=Defrost              
CurrentUnitMode_16=Night     


#================================================================================
# Bypass state:                        
BypassState_0=Closed            
BypassState_1=In process             
BypassState_32=Closing         
BypassState_64=Opening               
BypassState_255=Opened                

CFG

modbus:poll=10000


#       http://www.pluggit.com/fileserver/files/1413/609560454939420/21_10_2013_modbus_addresses.pdf




#================================================================================
#        40133 | prmRamIdxT1                                    | Float | Read  |  Outdoor temperature T1, °C 
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmRamIdxT1.connection=<IP>:502
modbus:tcp.pluggit_prmRamIdxT1.id=1
modbus:tcp.pluggit_prmRamIdxT1.start=133
modbus:tcp.pluggit_prmRamIdxT1.length=2
modbus:tcp.pluggit_prmRamIdxT1.type=holding
modbus:tcp.pluggit_prmRamIdxT1.valuetype=float32

#================================================================================
#       40135 | prmRamIdxT2                                     | Float | Read  |  Supply  temperature T2, °C 
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmRamIdxT2.connection=<IP>:502
modbus:tcp.pluggit_prmRamIdxT2.id=1
modbus:tcp.pluggit_prmRamIdxT2.start=135
modbus:tcp.pluggit_prmRamIdxT2.length=2
modbus:tcp.pluggit_prmRamIdxT2.type=holding
modbus:tcp.pluggit_prmRamIdxT2.valuetype=float32

#================================================================================
#       40137 | prmRamIdxT3                                     | Float | Read  |  Extract temperature T3, °C 
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmRamIdxT3.connection=<IP>:502
modbus:tcp.pluggit_prmRamIdxT3.id=1
modbus:tcp.pluggit_prmRamIdxT3.start=137
modbus:tcp.pluggit_prmRamIdxT3.length=2
modbus:tcp.pluggit_prmRamIdxT3.type=holding
modbus:tcp.pluggit_prmRamIdxT3.valuetype=float32

#================================================================================
#       40139 | prmRamIdxT4                                     | Float | Read  |  Exhaust temperature T4, °C 
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmRamIdxT4.connection=<IP>:502
modbus:tcp.pluggit_prmRamIdxT4.id=1
modbus:tcp.pluggit_prmRamIdxT4.start=139
modbus:tcp.pluggit_prmRamIdxT4.length=2
modbus:tcp.pluggit_prmRamIdxT4.type=holding
modbus:tcp.pluggit_prmRamIdxT4.valuetype=float32

#================================================================================
# 40161 | prmPreheaterDutyCycle                         | UINT  | Read  |  Power of Preheater in % 
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmPreheaterDutyCycle.connection=<IP>:502
modbus:tcp.pluggit_prmPreheaterDutyCycle.id=1
modbus:tcp.pluggit_prmPreheaterDutyCycle.start=161
modbus:tcp.pluggit_prmPreheaterDutyCycle.length=1
modbus:tcp.pluggit_prmPreheaterDutyCycle.type=holding
modbus:tcp.pluggit_prmPreheaterDutyCycle.valuetype=uint16


#================================================================================
# 40473 | prmCurrentBLState                             | UINT  | Read  |       Current unit mode:           
#                                                                                                                               0       Standby              
#                                                                                                                               1       Manual               
#                                                                                                                               2       Demand               
#                                                                                                                               3       Week program         
#                                                                                                                               4       Servo-flow           
#                                                                                                                               5       Away                 
#                                                                                                                               6       Summer               
#                                                                                                                               7       DI Override          
#                                                                                                                               8       Hygrostat override   
#                                                                                                                               9       Fireplace            
#                                                                                                                               10      Installer            
#                                                                                                                               11      Fail Safe 1          
#                                                                                                                               12      Fail Safe 2          
#                                                                                                                               13      Fail Off             
#                                                                                                                               14      Defrost Off          
#                                                                                                                               15      Defrost              
#                                                                                                                               16      Night                
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmCurrentBLState.connection=<IP>:502
modbus:tcp.pluggit_prmCurrentBLState.id=1
modbus:tcp.pluggit_prmCurrentBLState.start=472
modbus:tcp.pluggit_prmCurrentBLState.length=1
modbus:tcp.pluggit_prmCurrentBLState.type=holding
modbus:tcp.pluggit_prmCurrentBLState.valuetype=uint16

#================================================================================
#@bug           32Bit Access is buggy, 30min are missing
# 40109 | prmDateTime                                           | UINT  | Read  |       Current Date/time in Unix time (amount of seconds from 1.1.1970) 
# 40109 | prmDateTimeSet                                        | UINT  | Write |       New date/time in Unix time 
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmDateTime.connection=<IP>:502
modbus:tcp.pluggit_prmDateTime.id=1
modbus:tcp.pluggit_prmDateTime.start=109
modbus:tcp.pluggit_prmDateTime.length=2
modbus:tcp.pluggit_prmDateTime.type=holding
modbus:tcp.pluggit_prmDateTime.valuetype=uint32

#================================================================================
# 40625 | prmWorkTime                                           | UINT  | Read  |       Work time of system, in hours 
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmWorkTime.connection=<IP>:502
modbus:tcp.pluggit_prmWorkTime.id=1
modbus:tcp.pluggit_prmWorkTime.start=624
modbus:tcp.pluggit_prmWorkTime.length=1
modbus:tcp.pluggit_prmWorkTime.type=holding
modbus:tcp.pluggit_prmWorkTime.valuetype=uint16


#================================================================================
#@bug           32Bit Access is buggy, 12h are missing
# 40669 | prmStartExploitationDateStamp         | UINT  | Read  |       Date Stamp of the system start time in Unix time 
#modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmStartExploitationDateStamp.connection=<IP>:502
modbus:tcp.pluggit_prmStartExploitationDateStamp.id=1
modbus:tcp.pluggit_prmStartExploitationDateStamp.start=669
modbus:tcp.pluggit_prmStartExploitationDateStamp.length=2
modbus:tcp.pluggit_prmStartExploitationDateStamp.type=holding
modbus:tcp.pluggit_prmStartExploitationDateStamp.valuetype=uint32

#================================================================================
##40555 | prmFilterRemainingTime                        | UINT  | Read  |       Remaining time of the Filter Lifetime (Days) 
m# odbus:writemultipleregisters=false
modbus:tcp.pluggit_prmFilterRemainingTime.connection=<IP>:502
modbus:tcp.pluggit_prmFilterRemainingTime.id=1
modbus:tcp.pluggit_prmFilterRemainingTime.start=554
modbus:tcp.pluggit_prmFilterRemainingTime.length=1
modbus:tcp.pluggit_prmFilterRemainingTime.type=holding
modbus:tcp.pluggit_prmFilterRemainingTime.valuetype=uint16

#================================================================================
# 40101 | prmHALTaho1                                           | Float | Read  |   Fan1 rpm 
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmHALTaho1.connection=<IP>:502
modbus:tcp.pluggit_prmHALTaho1.id=1
modbus:tcp.pluggit_prmHALTaho1.start=101
modbus:tcp.pluggit_prmHALTaho1.length=2
modbus:tcp.pluggit_prmHALTaho1.type=holding
modbus:tcp.pluggit_prmHALTaho1.valuetype=float32

#================================================================================
# 40103 | prmHALTaho2                                           | Float | Read  |       Fan2 rpm 
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmHALTaho2.connection=<IP>:502
modbus:tcp.pluggit_prmHALTaho2.id=1
modbus:tcp.pluggit_prmHALTaho2.start=103
modbus:tcp.pluggit_prmHALTaho2.length=2
modbus:tcp.pluggit_prmHALTaho2.type=holding
modbus:tcp.pluggit_prmHALTaho2.valuetype=float32


#================================================================================
# 40445 | prmBypassTmin                                         | Float | Read  |       Min temperature for outdoor air (T1) 
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmBypassTmin.connection=<IP>:502
modbus:tcp.pluggit_prmBypassTmin.id=1
modbus:tcp.pluggit_prmBypassTmin.start=445
modbus:tcp.pluggit_prmBypassTmin.length=2
modbus:tcp.pluggit_prmBypassTmin.type=holding
modbus:tcp.pluggit_prmBypassTmin.valuetype=float32

#================================================================================
# 40447 | prmBypassTmax                                         | Float | Read  |       Max temperature for extract air (T3) 
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmBypassTmax.connection=<IP>:502
modbus:tcp.pluggit_prmBypassTmax.id=1
modbus:tcp.pluggit_prmBypassTmax.start=447
modbus:tcp.pluggit_prmBypassTmax.length=2
modbus:tcp.pluggit_prmBypassTmax.type=holding
modbus:tcp.pluggit_prmBypassTmax.valuetype=float32

#================================================================================
# 40199 | prmRamIdxBypassActualState            | UINT  | Read  |       Bypass state:                        
#                                                                                                                               0       Closed 0x0000                
#                                                                                                                               1       In process 0x0001            
#                                                                                                                               32      Closing 0x0020               
#                                                                                                                               64      Opening 0x0040               
#                                                                                                                               255     Opened 0x00                  
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmRamIdxBypassActualState.connection=<IP>:502
modbus:tcp.pluggit_prmRamIdxBypassActualState.id=1
modbus:tcp.pluggit_prmRamIdxBypassActualState.start=198
modbus:tcp.pluggit_prmRamIdxBypassActualState.length=1
modbus:tcp.pluggit_prmRamIdxBypassActualState.type=holding
modbus:tcp.pluggit_prmRamIdxBypassActualState.valuetype=uint16                                                                                                






#================================================================================
# 40325 | prmRomIdxSpeedLevel                           | UINT  | Write |       Speed level of Fans ->  Manual mode: Fan step can be set 
# 40325 | prmRomIdxSpeedLevel                           | UINT  | Read  |       Speed level of Fans ->  Other modes: Fan step can be read. 
modbus:writemultipleregisters=true
modbus:tcp.pluggit_prmRomIdxSpeedLevel.connection=<IP>:502
modbus:tcp.pluggit_prmRomIdxSpeedLevel.id=1
modbus:tcp.pluggit_prmRomIdxSpeedLevel.start=324
modbus:tcp.pluggit_prmRomIdxSpeedLevel.length=1
modbus:tcp.pluggit_prmRomIdxSpeedLevel.type=holding
modbus:tcp.pluggit_prmRomIdxSpeedLevel.valuetype=uint16

#================================================================================
# 40169 | prmRamIdxUnitMode                             | UINT  | Write |       Active Unit mode:                         
#                                                                                                                               Demand Mode                     0x0002          2     
#                                                                                                                               Manual Mode                     0x0004          4     
#                                                                                                                               WeekProgram Mode        0x0008          8     
#                                                                                                                               Away Mode                       0x0010          16    
#                                                                                                                               Fireplace Mode          0x0040          64    
#                                                                                                                               Summer Mode                     0x0800          2048  
modbus:writemultipleregisters=true
modbus:tcp.pluggit_prmRamIdxUnitMode.connection=<IP>:502
modbus:tcp.pluggit_prmRamIdxUnitMode.id=1
modbus:tcp.pluggit_prmRamIdxUnitMode.start=168
modbus:tcp.pluggit_prmRamIdxUnitMode.length=1
modbus:tcp.pluggit_prmRamIdxUnitMode.type=holding
modbus:tcp.pluggit_prmRamIdxUnitMode.valuetype=uint16

Sitemap

sitemap w66a label="W66a openHAB Installation" {
    Frame  Text item=gPluggit  icon="fan" label="Lüftung" 
    {

        Frame label="Time" 
        {
            Text item=Pluggit_CurrentUnixTime          
            Text item=Pluggit_WorkTimeOfSystem       
            Text item=Pluggit_StartExploitationUnixTime 
            Text item=Pluggit_RemainingFilerLivetime

        }

        Frame label="General" 
        {
            Text item=Pluggit_CurentUnitMode                              
            //Text item=Pluggit_ActiveUnitMode                            
            Text item=Pluggit_PowerOfPreheater                    
          
            Selection item=Pluggit_SpeedLevelOfFans     mappings=[ 
                                                                0 = "off", 
                                                                1 = "1", 
                                                                2 = "2", 
                                                                3 = "3", 
                                                                4 = "4" 
                                                            ]

            Selection item=Pluggit_ActiveUnitMode mappings=[     
                                                                2       = "Demand Mode", 
                                                                4       = "Manual Mode", 
                                                                8       = "WeekProgram Mode", 
                                                                16      = "Away Mode", 
                                                                64      = "Fireplace Mode", 
                                                                2048    = "Summer Mode"
                                                            ]

        }

        Frame label="Temperature" 
        {
            Text item=Pluggit_OutdoorTemperature01
            Text item=Pluggit_SupplyTemperature02
            Text item=Pluggit_ExtractTemperature03      
            Text item=Pluggit_ExhaustTemperature04
        }


        Frame label="Fans" 
        {
            Text item=Pluggit_SpeedFan01        
            Text item=Pluggit_SpeedFan02 
        }

        Frame label="Bypass" 
        {
            Text item=Pluggit_BypassTemperatureMin
            Text item=Pluggit_BypassTemperatureMax
            Text item=Pluggit_BypassState            
        }
    }
}

Hello Helge!

wow, tnat helped a lot, thank you for the great work!

Writing the values to the device doesn’t work: fan speed and active unit mode. I don’t know if the Pluggut 310 doesn’t accept these values, or if I have to configure something… I’m running OH snapshot 2.3 with the 1.12.0.SNAPSHOT modbus binding. Do you have any idea?

Thanks a lot!

Best regards
Robert

Hi Robert,
have you considered the following

Hi Helge,

yes, I know this issue. The config file is built correctly, and my OH is reading all values correctly (fan speed values, …). But writing doesn’t work, but I cannot set the active unit mode. I was wondering if I have to configure something special, or maybe there is a bug in the binding?

Hello Robert,
I compared the Modbus solution with my PHP solution and noticed that both variants have a different behavior
It seems that the “Active Unit Mode” only works halfway. Although the changes are recognized by the Pluggit App but they are not transferred to the current unit mode register.
It is a bit strange indeed

Thank you for testing!
What might be the reason? Maybe convert to hex before sending?

Something strange: if I plug my laptop via USB, iFlow shows 2052 for summer mode, not 2048…

Best regards
Robert

Hi Robert;

I’ve found one understanding mistake
According register description, register 40169 (prmRamIdxUnitMode) includes two control behaviors

  • Selection of the main program
    o Demand Mode 0x0002
    o Manual Mode 0x0004
    o WeekProgram Mode 0x0008
  • Enable/Disable Options
    o Away Mode ( enable = 0x0010, disable=0x8010
    o Fireplace Mode ( enable = 0x0040, disable =0x8040,
    o Summer Mode ( enable = 0x0800, disable =0x8800
    o Bypass Manual ( enable = 0x0080, disable =0x8080

So, the register Value 2052 means
Manual Mode (0x0004) with enables Option Summer mode (0x0800)

But that does not change the write behavior

1 Like

For me also everything is working fine, except writing. The ventilation unit shows up the right values (for example changing the fan speed from 1 to 4), but the rpms remain the same.

I have the same behaviour with different php/python scripts.

Using e.g. ModbussPoll for Windows (http://www.modbustools.com/download.html) works well.
Everything works as expected. Writing the values changes the behaviour of my pluggit Avent P310.

Does anybody have a working (php/python) script for Linux and is willing to share it with us? Maybe I can build a working script for OpenHab2 !

I could verify the same behaviour on my P310 using the new modbus2 binding. What was constantly bothering me was the fact that the documentation clearly states

All parameters of the ventilation unit have a 32-bits dimension.

The binding uses the jamod library for the modbus communication, so I wrote the following code to check the register 325:

TCPMasterConnection con = null; //the connection
ModbusTCPTransaction trans = null; //the transaction
ReadMultipleRegistersRequest req = null; //the request

/* Variables for storing the parameters */
InetAddress addr = null; //the slave's address
int port = Modbus.DEFAULT_PORT;
int ref = 325; // according to the documentation 325 should be prmRomIdxSpeedLevel
int count = 2; //the number of registers to read

addr = InetAddress.getByName("192.168.XXX.YYY");
//2. Open the connection
con = new TCPMasterConnection(addr);
con.setPort(port);
con.connect();

//3. Prepare the request
req = new ReadMultipleRegistersRequest(ref, count);
System.out.println("Hex request: "+req.getHexMessage());

//4. Prepare the transaction
trans = new ModbusTCPTransaction(con);
trans.setRequest(req);

trans.execute();

ModbusResponse response = trans.getResponse();
System.out.println("Hex result: "+response.getHexMessage());
ReadMultipleRegistersResponse resMulti = (ReadMultipleRegistersResponse) response;
System.out.println("Register 0 "+resMulti.getRegisterValue(0));
System.out.println("Register 1 "+resMulti.getRegisterValue(1));

The result is:

Hex request: 00 00 00 00 00 06 00 03 01 45 00 02 
Hex result: 00 01 00 00 00 07 00 03 04 00 00 00 00 
Register 0 0
Register 1 0

Somewhere I read that you have to subtract 1 as the starting point (offset?) is 40001. So I tried it with register 324 and the output now is:

Hex request: 00 00 00 00 00 06 00 03 01 44 00 02 
Hex result: 00 01 00 00 00 07 00 03 04 00 01 00 00 
Register 0 1
Register 1 0

The confusing part for me was that for other registers (e.g. 133, prmRamIdxT1) it worked without subtracting one. But apparently this was just coincidence. The key factor seems to be the swapping of the blocks. So in essence, the following configuration works for me (using the paperUI):

prmRamIdxT1:
Read Address: 132
Read value type: 32bit floating point, 16bits word swapped (float32_swap)

prmRomIdxSpeedLevel:
Read Address: 324
Read value type: 32bit unsigned integer, 16bits word swapped (uint32_swap)
Write Address: 324
Write type: Holding register
Write value type: 32bit signed integer, as two's complement but with 16bit words swapped (int32_swap)
Write multiple even with single register or coil: true

prmRamIdxUnitMode:
Write Address: 168
Write type: Holding register
Write value type: 32bit signed integer, as two's complement but with 16bit words swapped (int32_swap)
Write multiple even with single register or coil: true

When I write the value ‘16’ to prmRamIdxUnitMode, the device goes in “away” mode and the fan speed drops correctly.

1 Like

Well done exploring. Modbus docs can be very confusing, regarding MB “register number” = “address +1”. There’s no consistency about this usage. And none about two-register 32 bit values, which half is ‘first’.

I followed your guide and it seems to work pretty good but I’m having some issues.
Running openHAB 2.4.0 right now (on a pi 3b+)

Here are my files:

item

Number Pluggit_SpeedFan01               "Speed Fan 1 [%.0f rpm]"                                                        (gPluggit)      {modbus="pluggit_prmHALTaho1:0"}
Number Pluggit_SpeedFan02               "Speed Fan 2 [%.0f rpm]"                                                        (gPluggit)      {modbus="pluggit_prmHALTaho2:0"}
Number Pluggit_OutdoorTemperature01     "Außenluft [%.1f °C]"                                           <temperature>   (gPluggit)      {modbus="pluggit_prmRamIdxT1:0"}
Number Pluggit_SupplyTemperature02      "Eingangsluft [%.1f °C]"                                        <temperature>   (gPluggit)      {modbus="pluggit_prmRamIdxT2:0"}
Number Pluggit_ExtractTemperature03     "Abgangsluft [%.1f °C]"                                         <temperature>   (gPluggit)      {modbus="pluggit_prmRamIdxT3:0"}
Number Pluggit_ExhaustTemperature04     "Ausgangsluft [%.1f °C]"                                        <temperature>   (gPluggit)      {modbus="pluggit_prmRamIdxT4:0"}
Number Pluggit_PowerOfPreheater         "Power Of Preheater [%d %%]"                                    <energy>        (gPluggit)      {modbus="pluggit_prmPreheaterDutyCycle:0"}
Number Pluggit_SpeedLevelOfFans         "Lüfterstufe [MAP(Pluggit.map):SpeedLevelOfFans_%d]"            <settings>      (gPluggit)      {modbus="pluggit_prmRomIdxSpeedLevel:0"}
Number Pluggit_ActiveUnitMode           "Modus [MAP(Pluggit.map):ActiveUnitMode_%d]"                    <settings>      (gPluggit)      {modbus="pluggit_prmRamIdxUnitMode:0"}
Number Pluggit_CurentUnitMode           "aktueller Modus [MAP(Pluggit.map):CurrentUnitMode_%d]"                         (gPluggit)      {modbus="pluggit_prmCurrentBLState:0"}
Number Pluggit_CurrentUnixTime          "Current Unix time [%d]"                                        <time>          (gPluggit)      {modbus="pluggit_prmDateTime:0"}
Number Pluggit_StartExploitationUnixTime"Date Stamp of the system start [%d]"                           <time>          (gPluggit)      {modbus="pluggit_prmStartExploitationDateStamp:0"}
Number Pluggit_WorkTimeOfSystem         "Work time of system [%d h]"                                    <time>          (gPluggit)      {modbus="pluggit_prmWorkTime:0"}
Number Pluggit_RemainingFilerLivetime   "Filterrestzeit [%d days]"                                      <time>          (gPluggit)      {modbus="pluggit_prmFilterRemainingTime:0"}
Number Pluggit_BypassTemperatureMin     "Min. für Außenluft [%.1f °C]"                                  <temperature>   (gPluggit)      {modbus="pluggit_prmBypassTmin:0"}
Number Pluggit_BypassTemperatureMax     "Max. für Abgangsluft [%.1f °C]"                                <temperature>   (gPluggit)      {modbus="pluggit_prmBypassTmax:0"}
Number Pluggit_BypassState              "Bypass [MAP(Pluggit.map):BypassState_%d]"                                  (gPluggit)      {modbus="pluggit_prmRamIdxBypassActualState:0"}

map

#================================================================================
SpeedLevelOfFans_0=Aus
SpeedLevelOfFans_1=1
SpeedLevelOfFans_2=2
SpeedLevelOfFans_3=3
SpeedLevelOfFans_4=4

#================================================================================
# Active Unit mode:

# relevante Modi
ActiveUnitMode_4=Manuell
ActiveUnitMode_132=Bypass-Auto
ActiveUnitMode_2052=Bypass-Manuell
####
ActiveUnitMode_2=Demand Mode
ActiveUnitMode_4=Manuell
ActiveUnitMode_8=WeekProgram Mode
ActiveUnitMode_16=Away Mode
ActiveUnitMode_64=Fireplace Mode
ActiveUnitMode_2048=Sommer

#================================================================================
# Current unit mode:

# relevante Modi
CurrentUnitMode_1=Bypass
CurrentUnitMode_6=Sommer
####
CurrentUnitMode_0=Standby
CurrentUnitMode_2=Demand
CurrentUnitMode_3=Week program
CurrentUnitMode_5=Away
CurrentUnitMode_9=Fireplace
CurrentUnitMode_4=Servo-flow
CurrentUnitMode_7=DI Override
CurrentUnitMode_8=Hygrostat override
CurrentUnitMode_9=Fireplace
CurrentUnitMode_10=Installer
CurrentUnitMode_11=Fail Safe 1
CurrentUnitMode_12=Fail Safe 2
CurrentUnitMode_13=Fail Off
CurrentUnitMode_14=Defrost Off
CurrentUnitMode_15=Defrost
CurrentUnitMode_16=Night
CurrentUnitMode_255=KeinPlan

#================================================================================
# Bypass state:
BypassState_0=Geschlossen
BypassState_1=In Bearbeitung
BypassState_32=Schließt
BypassState_64=Öffnet
BypassState_255=Offen

# END ===========================================================================

modbus.cfg

modbus:poll=10000


#       http://www.pluggit.com/fileserver/files/1413/609560454939420/21_10_2013_modbus_addresses.pdf

#================================================================================
#        40133 | prmRamIdxT1                                    | Float | Read  |  Outdoor temperature T1, °C
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmRamIdxT1.connection=192.168.143.4:502
modbus:tcp.pluggit_prmRamIdxT1.id=1
modbus:tcp.pluggit_prmRamIdxT1.start=133
modbus:tcp.pluggit_prmRamIdxT1.length=2
modbus:tcp.pluggit_prmRamIdxT1.type=holding
modbus:tcp.pluggit_prmRamIdxT1.valuetype=float32

#================================================================================
#       40135 | prmRamIdxT2                                     | Float | Read  |  Supply  temperature T2, °C
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmRamIdxT2.connection=192.168.143.4:502
modbus:tcp.pluggit_prmRamIdxT2.id=1
modbus:tcp.pluggit_prmRamIdxT2.start=135
modbus:tcp.pluggit_prmRamIdxT2.length=2
modbus:tcp.pluggit_prmRamIdxT2.type=holding
modbus:tcp.pluggit_prmRamIdxT2.valuetype=float32

#================================================================================
#       40137 | prmRamIdxT3                                     | Float | Read  |  Extract temperature T3, °C
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmRamIdxT3.connection=192.168.143.4:502
modbus:tcp.pluggit_prmRamIdxT3.id=1
modbus:tcp.pluggit_prmRamIdxT3.start=137
modbus:tcp.pluggit_prmRamIdxT3.length=2
modbus:tcp.pluggit_prmRamIdxT3.type=holding
modbus:tcp.pluggit_prmRamIdxT3.valuetype=float32

#================================================================================
#       40139 | prmRamIdxT4                                     | Float | Read  |  Exhaust temperature T4, °C
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmRamIdxT4.connection=192.168.143.4:502
modbus:tcp.pluggit_prmRamIdxT4.id=1
modbus:tcp.pluggit_prmRamIdxT4.start=139
modbus:tcp.pluggit_prmRamIdxT4.length=2
modbus:tcp.pluggit_prmRamIdxT4.type=holding
modbus:tcp.pluggit_prmRamIdxT4.valuetype=float32

#================================================================================
# 40161 | prmPreheaterDutyCycle                         | UINT  | Read  |  Power of Preheater in %
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmPreheaterDutyCycle.connection=192.168.143.4:502
modbus:tcp.pluggit_prmPreheaterDutyCycle.id=1
modbus:tcp.pluggit_prmPreheaterDutyCycle.start=161
modbus:tcp.pluggit_prmPreheaterDutyCycle.length=1
modbus:tcp.pluggit_prmPreheaterDutyCycle.type=holding
modbus:tcp.pluggit_prmPreheaterDutyCycle.valuetype=uint16

#================================================================================
# 40473 | prmCurrentBLState                             | UINT  | Read  |       Current unit mode:
#                                                                                                                               0       Standby
#                                                                                                                               1       Manual
#                                                                                                                               2       Demand
#                                                                                                                               3       Week program
#                                                                                                                               4       Servo-flow
#                                                                                                                               5       Away
#                                                                                                                               6       Summer
#                                                                                                                               7       DI Override
#                                                                                                                               8       Hygrostat override
#                                                                                                                               9       Fireplace
#                                                                                                                               10      Installer
#                                                                                                                               11      Fail Safe 1
#                                                                                                                               12      Fail Safe 2
#                                                                                                                               13      Fail Off
#                                                                                                                               14      Defrost
#                                                                                                                               16      Night
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmCurrentBLState.connection=192.168.143.4:502
modbus:tcp.pluggit_prmCurrentBLState.id=1
modbus:tcp.pluggit_prmCurrentBLState.start=472
modbus:tcp.pluggit_prmCurrentBLState.length=1
modbus:tcp.pluggit_prmCurrentBLState.type=holding
modbus:tcp.pluggit_prmCurrentBLState.valuetype=uint16

#================================================================================
#@bug           32Bit Access is buggy, 30min are missing
# 40109 | prmDateTime                                           | UINT  | Read  |       Current Date/time in Unix time (amount of seconds from 1.1.1970)
# 40109 | prmDateTimeSet                                        | UINT  | Write |       New date/time in Unix time
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmDateTime.connection=192.168.143.4:502
modbus:tcp.pluggit_prmDateTime.id=1
modbus:tcp.pluggit_prmDateTime.start=109
modbus:tcp.pluggit_prmDateTime.length=2
modbus:tcp.pluggit_prmDateTime.type=holding
modbus:tcp.pluggit_prmDateTime.valuetype=uint32

#================================================================================
# 40625 | prmWorkTime                                           | UINT  | Read  |       Work time of system, in hours
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmWorkTime.connection=192.168.143.4:502
modbus:tcp.pluggit_prmWorkTime.id=1
modbus:tcp.pluggit_prmWorkTime.start=624
modbus:tcp.pluggit_prmWorkTime.length=1
modbus:tcp.pluggit_prmWorkTime.type=holding
modbus:tcp.pluggit_prmWorkTime.valuetype=uint16

#================================================================================
#@bug           32Bit Access is buggy, 12h are missing
# 40669 | prmStartExploitationDateStamp         | UINT  | Read  |       Date Stamp of the system start time in Unix time
#modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmStartExploitationDateStamp.connection=192.168.143.4:502
modbus:tcp.pluggit_prmStartExploitationDateStamp.id=1
modbus:tcp.pluggit_prmStartExploitationDateStamp.start=669
modbus:tcp.pluggit_prmStartExploitationDateStamp.length=2
modbus:tcp.pluggit_prmStartExploitationDateStamp.type=holding
modbus:tcp.pluggit_prmStartExploitationDateStamp.valuetype=uint32

#================================================================================
##40555 | prmFilterRemainingTime                        | UINT  | Read  |       Remaining time of the Filter Lifetime (Days)
m# odbus:writemultipleregisters=false
modbus:tcp.pluggit_prmFilterRemainingTime.connection=192.168.143.4:502
modbus:tcp.pluggit_prmFilterRemainingTime.id=1
modbus:tcp.pluggit_prmFilterRemainingTime.start=554
modbus:tcp.pluggit_prmFilterRemainingTime.length=1
modbus:tcp.pluggit_prmFilterRemainingTime.type=holding
modbus:tcp.pluggit_prmFilterRemainingTime.valuetype=uint16

#================================================================================
# 40101 | prmHALTaho1                                           | Float | Read  |   Fan1 rpm
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmHALTaho1.connection=192.168.143.4:502
modbus:tcp.pluggit_prmHALTaho1.id=1
modbus:tcp.pluggit_prmHALTaho1.start=101
modbus:tcp.pluggit_prmHALTaho1.length=2
modbus:tcp.pluggit_prmHALTaho1.type=holding
modbus:tcp.pluggit_prmHALTaho1.valuetype=float32

#================================================================================
# 40103 | prmHALTaho2                                           | Float | Read  |       Fan2 rpm
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmHALTaho2.connection=192.168.143.4:502
modbus:tcp.pluggit_prmHALTaho2.id=1
modbus:tcp.pluggit_prmHALTaho2.start=103
modbus:tcp.pluggit_prmHALTaho2.length=2
modbus:tcp.pluggit_prmHALTaho2.type=holding
modbus:tcp.pluggit_prmHALTaho2.valuetype=float332

#================================================================================
# 40445 | prmBypassTmin                                         | Float | Read  |       Min temperature for outdoor air (T1)
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmBypassTmin.connection=192.168.143.4:502
modbus:tcp.pluggit_prmBypassTmin.id=1
modbus:tcp.pluggit_prmBypassTmin.start=445
modbus:tcp.pluggit_prmBypassTmin.length=2
modbus:tcp.pluggit_prmBypassTmin.type=holding
modbus:tcp.pluggit_prmBypassTmin.valuetype=float32

#================================================================================
# 40447 | prmBypassTmax                                         | Float | Read  |       Max temperature for extract air (T3)
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmBypassTmax.connection=192.168.143.4:502
modbus:tcp.pluggit_prmBypassTmax.id=1
modbus:tcp.pluggit_prmBypassTmax.start=447
modbus:tcp.pluggit_prmBypassTmax.length=2
modbus:tcp.pluggit_prmBypassTmax.type=holding
modbus:tcp.pluggit_prmBypassTmax.valuetype=float32

#================================================================================
# 40199 | prmRamIdxBypassActualState            | UINT  | Read  |       Bypass state:
#                                                                                                                               0       Closed 0x0000
#                                                                                                                               1       In process 0x0001
#                                                                                                                               32      Closing 0x0020
#                                                                                                                               64      Opening 0x0040
#                                                                                                                               255     Opened 0x00
# modbus:writemultipleregisters=false
modbus:tcp.pluggit_prmRamIdxBypassActualState.connection=192.168.143.4:502
modbus:tcp.pluggit_prmRamIdxBypassActualState.id=1
modbus:tcp.pluggit_prmRamIdxBypassActualState.start=198
modbus:tcp.pluggit_prmRamIdxBypassActualState.length=1
modbus:tcp.pluggit_prmRamIdxBypassActualState.type=holding
modbus:tcp.pluggit_prmRamIdxBypassActualState.valuetype=uint16

#================================================================================
# 40325 | prmRomIdxSpeedLevel                           | UINT  | Write |       Speed level of Fans ->  Manual mode: Fan step can be set
# 40325 | prmRomIdxSpeedLevel                           | UINT  | Read  |       Speed level of Fans ->  Other modes: Fan step can be read.
modbus:writemultipleregisters=true
modbus:tcp.pluggit_prmRomIdxSpeedLevel.connection=192.168.143.4:502
modbus:tcp.pluggit_prmRomIdxSpeedLevel.id=1
modbus:tcp.pluggit_prmRomIdxSpeedLevel.start=324
modbus:tcp.pluggit_prmRomIdxSpeedLevel.length=1
modbus:tcp.pluggit_prmRomIdxSpeedLevel.type=holding
modbus:tcp.pluggit_prmRomIdxSpeedLevel.valuetype=uint16

#================================================================================
# 40169 | prmRamIdxUnitMode                             | UINT  | Write |       Active Unit mode:
#                                                                                                                               Demand Mode                     0x0002          2
#                                                                                                                               Manual Mode                     0x0004          4
#                                                                                                                               WeekProgram Mode        0x0008          8
#                                                                                                                               Away Mode                       0x0010          16
#                                                                                                                               Fireplace Mode          0x0040          64
#                                                                                                                               Summer Mode                     0x0800          2048
modbus:writemultipleregisters=true
modbus:tcp.pluggit_prmRamIdxUnitMode.connection=192.168.143.4:502
modbus:tcp.pluggit_prmRamIdxUnitMode.id=1
modbus:tcp.pluggit_prmRamIdxUnitMode.start=168
modbus:tcp.pluggit_prmRamIdxUnitMode.length=1
modbus:tcp.pluggit_prmRamIdxUnitMode.type=holding
modbus:tcp.pluggit_prmRamIdxUnitMode.valuetype=uint16

# END ===========================================================================

sitemap

sitemap home label="Home" {
                Frame Text icon="fan" label="Lüftung2.0"
                {
                        Frame label="Allgemein"
                        {
                                Text item=Pluggit_CurentUnitMode
                                Selection item=Pluggit_ActiveUnitMode mappings=[
                                                4       = "Bypass-Auto",
                                                132     = "Bypass-Manuell",
                                                2052    = "Sommer"
                                ]
                                //Switch item=Pluggit_SpeedLevelOfFans mappings=[0 = "off", 1 = "1", 2 = "2", 3 = "3", 4 = "4"]
                                Selection item=Pluggit_SpeedLevelOfFans mappings=[0 = "off", 1 = "1", 2 = "2", 3 = "3", 4 = "4"]
                        }

                        Frame label="Temperaturen"
                        {
                                        Text item=Pluggit_OutdoorTemperature01
                                        Text item=Pluggit_SupplyTemperature02
                                        Text item=Pluggit_ExtractTemperature03
                                        Text item=Pluggit_ExhaustTemperature04
                        }

                        Frame label="Bypass"
                        {
                                        Text item=Pluggit_BypassState
                                        Text item=Pluggit_BypassTemperatureMin
                                        Text item=Pluggit_BypassTemperatureMax
                        }

                        Frame label="Filter"
                        {
                                        Text item=Pluggit_RemainingFilerLivetime
                                        Switch item=Pluggit_FilterTimerReset mappings=[1 = "Reset"]
                        }
                }

        Frame Text icon="poweroutlet" label="Strom"
        {
                Frame label="Wohnzimmer"
                {
                                Switch item=TVwSound label="TV + Soundsystem"
                                Switch item=01_1 label="TV"
                                Switch item=01_2 label="Sound-System"
                                Switch item=02_2 label="Lichterkette"
                                //Switch item=01_3 label="C"
                                //Switch item=01_4 label="D"
                }

                Frame label="Flur"
                {
                                Switch item=02_1 label="Blume EG"
                                //Switch item=02_3 label="C"
                                //Switch item=02_4 label="D"
                }
        }
}

I changed some wording to german but otherwise its exactly your config.

Issues I have:
When I load the sitemap from the openHAB Android App on my phone I get those lines in the log viewer:

2019-08-05 22:51:16.050 [WARN ] [rest.core.item.EnrichedItemDTOMapper] - Failed transforming the state '1' on item 'Pluggit_CurentUnitMode' with pattern 'MAP(Pluggit.map):CurrentUnitMode_%d': Cannot format state '1' to format 'CurrentUnitMode_%d'

2019-08-05 22:51:16.082 [WARN ] [rest.core.item.EnrichedItemDTOMapper] - Failed transforming the state '132' on item 'Pluggit_ActiveUnitMode' with pattern 'MAP(Pluggit.map):ActiveUnitMode_%d': Cannot format state '132' to format 'ActiveUnitMode_%d'

2019-08-05 22:51:16.095 [WARN ] [rest.core.item.EnrichedItemDTOMapper] - Failed transforming the state '4' on item 'Pluggit_SpeedLevelOfFans' with pattern 'MAP(Pluggit.map):SpeedLevelOfFans_%d': Cannot format state '4' to format 'SpeedLevelOfFans_%d'

2019-08-05 22:51:16.110 [WARN ] [rest.core.item.EnrichedItemDTOMapper] - Failed transforming the state '0' on item 'Pluggit_BypassState' with pattern 'MAP(Pluggit.map):CurrentUnitMode_%d': Cannot format state '0' to format 'CurrentUnitMode_%d'

2019-08-05 22:51:16.127 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'Pluggit_FilterTimerReset' for widget org.eclipse.smarthome.model.sitemap.Switch

2019-08-05 22:51:16.133 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'Pluggit_FilterTimerReset' for widget org.eclipse.smarthome.model.sitemap.Switch

2019-08-05 22:51:16.138 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item for widget org.eclipse.smarthome.model.sitemap.Switch

When I open that sitemap in the Basic UI from my PC I get those lines:

2019-08-05 22:53:30.325 [WARN ] [basic.internal.render.SwitchRenderer] - Cannot determine item type of 'Pluggit_FilterTimerReset'

org.eclipse.smarthome.core.items.ItemNotFoundException: Item 'Pluggit_FilterTimerReset' could not be found in the item registry

	at org.eclipse.smarthome.core.internal.items.ItemRegistryImpl.getItem(ItemRegistryImpl.java:79) ~[?:?]

	at org.eclipse.smarthome.ui.internal.items.ItemUIRegistryImpl.getItem(ItemUIRegistryImpl.java:802) ~[?:?]

	at org.eclipse.smarthome.ui.basic.internal.render.SwitchRenderer.renderWidget(SwitchRenderer.java:84) [192:org.eclipse.smarthome.ui.basic:0.10.0.oh240]

	at org.eclipse.smarthome.ui.basic.internal.render.PageRenderer.renderWidget(PageRenderer.java:194) [192:org.eclipse.smarthome.ui.basic:0.10.0.oh240]

	at org.eclipse.smarthome.ui.basic.internal.render.PageRenderer.processChildren(PageRenderer.java:160) [192:org.eclipse.smarthome.ui.basic:0.10.0.oh240]

	at org.eclipse.smarthome.ui.basic.internal.render.PageRenderer.processChildren(PageRenderer.java:181) [192:org.eclipse.smarthome.ui.basic:0.10.0.oh240]

	at org.eclipse.smarthome.ui.basic.internal.render.PageRenderer.processPage(PageRenderer.java:124) [192:org.eclipse.smarthome.ui.basic:0.10.0.oh240]

	at org.eclipse.smarthome.ui.basic.internal.servlet.WebAppServlet.service(WebAppServlet.java:209) [192:org.eclipse.smarthome.ui.basic:0.10.0.oh240]

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [29:javax.servlet-api:3.1.0]

	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) [85:org.eclipse.jetty.servlet:9.4.11.v20180605]

	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535) [85:org.eclipse.jetty.servlet:9.4.11.v20180605]

	at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) [186:org.ops4j.pax.web.pax-web-jetty:7.2.3]

	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [82:org.eclipse.jetty.security:9.4.11.v20180605]

	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:293) [186:org.ops4j.pax.web.pax-web-jetty:7.2.3]

	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) [85:org.eclipse.jetty.servlet:9.4.11.v20180605]

	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) [186:org.ops4j.pax.web.pax-web-jetty:7.2.3]

	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.Server.handle(Server.java:531) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) [75:org.eclipse.jetty.io:9.4.11.v20180605]

	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) [75:org.eclipse.jetty.io:9.4.11.v20180605]

	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) [75:org.eclipse.jetty.io:9.4.11.v20180605]

	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) [87:org.eclipse.jetty.util:9.4.11.v20180605]

	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) [87:org.eclipse.jetty.util:9.4.11.v20180605]

	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) [87:org.eclipse.jetty.util:9.4.11.v20180605]

	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) [87:org.eclipse.jetty.util:9.4.11.v20180605]

	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) [87:org.eclipse.jetty.util:9.4.11.v20180605]

	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762) [87:org.eclipse.jetty.util:9.4.11.v20180605]

	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680) [87:org.eclipse.jetty.util:9.4.11.v20180605]

	at java.lang.Thread.run(Thread.java:748) [?:?]

2019-08-05 22:53:30.362 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'Pluggit_FilterTimerReset' for widget org.eclipse.smarthome.model.sitemap.Switch

2019-08-05 22:53:30.366 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item for widget org.eclipse.smarthome.model.sitemap.Switch

2019-08-05 22:53:30.370 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'Pluggit_FilterTimerReset' for widget org.eclipse.smarthome.model.sitemap.Switch

2019-08-05 22:53:30.374 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'Pluggit_FilterTimerReset' for widget org.eclipse.smarthome.model.sitemap.Switch

2019-08-05 22:53:30.378 [ERROR] [ui.internal.items.ItemUIRegistryImpl] - Cannot retrieve item 'Pluggit_FilterTimerReset' for widget org.eclipse.smarthome.model.sitemap.Switch

Can anyone help me figure out how to fix this so I dont see any errors?

Another thing I noticed is that I can switch between Bypass manual and Bypass auto but cannot get the Summer Mode in (only exhausting air).
I got the option in the sitemap and thought I had the right status number set but guess not…

Also the item “Text item=Pluggit_BypassState” in sitemap shows the word “Standby” all the time instead of Open when I know for a fact the Bypass is open (or closed doesnt matter)

greetings
Alkahna