MODBUS with HVAC Pluggit

I am running OH1 for a while, thanks for this great project and work which is done here. Now I’m facing a new challange to implement my ventilation unit PLUGGIT AP310 to the OH system. The unit is connected with LAN to the network. I try to do this with the modbus binding, unfortunatly i’m very new to this.

What I plan to do:
read temperatures from the unit
set fan speed (later connected with rules: depending on humidity/presence/etc).

Here is my try:

Dokumentation of Pluggit Modbus Register address
http://www.pluggit.com/fileserver/files/1413/609560454939420/21_10_2013_modbus_addresses.pdf

##my modbus binding / .cfg
poll=10000

// read register, Doku pluggit page 29/52 address 40133
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.slave1.valuetype=uint32

// read register, Doku pluggit page 29/52 address 40135
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.slave1.valuetype=uint32

//write register, Doku pluggit page 28/52 address 40325
// needed? modbus:writemultipleregisters=true
tcp.value03.connection=192.168.6.181:502
tcp.value03.id=1
tcp.value03.start=324
tcp.value03.length=2
tcp.value03.type=holding
tcp.slave1.valuetype=float32

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

//Set Fan speed
Number FanSpeedValue03 “Stufe [%d]” (hvac) {modbus=“value03:0”}

/////////////////Sitemap
Switch item=FanSpeedValue03 mappings=[0 = “off”, 1 = “1”, 2 = “2”, 3 = “3”, 4 = “4” ]

Can any of the modbus geeks please give me feedback if I can try this approach without damage the device and if this works :slight_smile:
Thanks.

Try to test a single register read outside of OH using any modbus master simulation tool.

In OH1 try this simple config:

modbus:poll=1000

modbus:tcp.value01.connection=192.168.6.181:502
modbus:tcp.value01.id=1
modbus:tcp.value01.start=132
modbus:tcp.value01.length=2
modbus:tcp.value01.type=holding
modbus:tcp.value01.valuetype=float32

then check the log.

Note that you will not be able to write (update) 32-bit values in the device over OpenHAB Modbus for the time being. Reading should present no special problem.

thanks for the feedback.
It went well with the above setup (except that I mixed uint and float values - so the issue with writing float values is not a issue for me, because it’s uint).

But this leads to further question regarding Float-Transformation. The Temperature Values I got are Float32, with CDAB sequence. So for example for Temp T1 I read:
{modbus=“value01:0”} it’s 0
{modbus=“value01:1”} it’s 16768
Is there a trick, without a complex rule to tranform that in a decimal temperture in Degree ?

Thanks.

wouldn’t CDAB just need valuetype=float32_swap:in your .cfg file?

Be careful of the 0/1 address offset between “modbus register numbers” and “modbus protocol address” conventions.

1 Like

hi rossko, thanks for reply.

I tried “swap” but with no success. Values are still pretty high, and not tranformed to decimal.
tcp.value01.start=132
tcp.value01.length=2

{modbus=“value01:0”} = 60762 (fast changing)
{modbus=“value01:1”} = 16825 (stable)
Do I have to tranform that float values by myself with a complex rule inclduing CDAB?

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