Request Value via MODBUS from KOSTAL KSEM

Hello everyone,

I would like to share my settings for a Modbus TCP query for a KOSTAL KSEM with you.

The config file is very general and with the current Modbus 2.X binding it is also super indexable.

First of all you have to make sure that the Modbus TCP Slave is active in your KSEM so you can read the data from KSEM.

Then copy the following script into your Modbus.things file and adjust your name and IP address.

    Bridge modbus:tcp:KSEM [ host="<IP-Adress>", port=502, id=1 ] 
{
    Bridge poller Strom_Summe [ start=0, length=28, refresh=2500, type="holding" ] 
    {
    Thing data AC_Bezug         [ readStart="0",  readValueType="uint32" ]
    Thing data AC_feedin        [ readStart="2",  readValueType="uint32" ]
    Thing data Reactive_p       [ readStart="4",  readValueType="uint32" ]
    Thing data Reactive_n       [ readStart="6",  readValueType="uint32" ]
    Thing data Apparent_p       [ readStart="16", readValueType="uint32" ]
    Thing data Apparent_n       [ readStart="18", readValueType="uint32" ]
    Thing data Power_factor     [ readStart="24", readValueType="int32"  ]
    Thing data Grid_frequency   [ readStart="26", readValueType="uint32" ]
} 
Bridge poller L1 [ start=40, length=8, refresh=1000, type="holding" ] 
{
    Thing data Active_Power_p       [ readStart="40",  readValueType="uint32" ]
    Thing data Active_Power_n       [ readStart="42",  readValueType="uint32" ]
    Thing data Reactive_Power_p     [ readStart="44",  readValueType="uint32" ]
    Thing data Reactive_Power_n     [ readStart="46",  readValueType="uint32" ]
    Thing data Apparent_Power_p     [ readStart="56",  readValueType="uint32" ]
    Thing data Apparent_Power_n     [ readStart="58",  readValueType="uint32" ]
    Thing data Current              [ readStart="60",  readValueType="uint32" ]
    Thing data Voltage              [ readStart="62",  readValueType="uint32" ]
    Thing data Power_factor         [ readStart="64",  readValueType="int32"  ]
}
Bridge poller L2 [ start=80, length=8, refresh=1000, type="holding" ] 
{
    Thing data Active_Power_p       [ readStart="80",  readValueType="uint32" ]
    Thing data Active_Power_n       [ readStart="82",  readValueType="uint32" ]
    Thing data Reactive_Power_p     [ readStart="84",  readValueType="uint32" ]
    Thing data Reactive_Power_n     [ readStart="86",  readValueType="uint32" ]
    Thing data Apparent_Power_p     [ readStart="96",  readValueType="uint32" ]
    Thing data Apparent_Power_n     [ readStart="98",  readValueType="uint32" ]
    Thing data Current              [ readStart="100",  readValueType="uint32"]
    Thing data Voltage              [ readStart="102",  readValueType="uint32"]
    Thing data Power_factor         [ readStart="104",  readValueType="int32" ]
}
Bridge poller L3 [ start=120, length=8, refresh=1000, type="holding" ] 
{
    Thing data Active_Power_p       [ readStart="120",  readValueType="uint32" ]
    Thing data Active_Power_n       [ readStart="122",  readValueType="uint32" ]
    Thing data Reactive_Power_p     [ readStart="124",  readValueType="uint32" ]
    Thing data Reactive_Power_n     [ readStart="126",  readValueType="uint32" ]
    Thing data Apparent_Power_p     [ readStart="136",  readValueType="uint32" ]
    Thing data Apparent_Power_n     [ readStart="138",  readValueType="uint32" ]
    Thing data Current              [ readStart="140",  readValueType="uint32" ]
    Thing data Voltage              [ readStart="142",  readValueType="uint32" ]
    Thing data Power_factor         [ readStart="144",  readValueType="int32"  ]
}
Bridge poller Energy [ start=512, length=280, refresh=10000, type="holding" ] 
{
    Thing data Active_energy_p      [ readStart="512",  readValueType="uint64"  ]
    Thing data Active_energy_n      [ readStart="516",  readValueType="uint64"  ]
    Thing data Reactive_energy_p    [ readStart="520",  readValueType="uint64"  ]
    Thing data Reactive_energy_n    [ readStart="524",  readValueType="uint64"  ]
    Thing data Apparent_energy_p    [ readStart="544",  readValueType="uint64"  ]
    Thing data Apparent_energy_n    [ readStart="548",  readValueType="uint64"  ]
    Thing data Active_energy_L1_p   [ readStart="592",  readValueType="uint64"  ]
    Thing data Active_energy_L1_n   [ readStart="596",  readValueType="uint64"  ]
    Thing data Reactive_energy_L1_p [ readStart="600",  readValueType="uint64"  ]
    Thing data Reactive_energy_L1_n [ readStart="604",  readValueType="uint64"  ]
    Thing data Apparent_energy_L1_p [ readStart="624",  readValueType="uint64"  ]
    Thing data Apparent_energy_L1_n [ readStart="628",  readValueType="uint64"  ]
    Thing data Active_energy_L2_p   [ readStart="672",  readValueType="uint64"  ]
    Thing data Active_energy_L2_n   [ readStart="676",  readValueType="uint64"  ]
    Thing data Reactive_energy_L2_p [ readStart="680",  readValueType="uint64"  ]
    Thing data Reactive_energy_L2_n [ readStart="684",  readValueType="uint64"  ]
    Thing data Apparent_energy_L2_p [ readStart="704",  readValueType="uint64"  ]
    Thing data Apparent_energy_L2_n [ readStart="708",  readValueType="uint64"  ]
    Thing data Active_energy_L3_p   [ readStart="752",  readValueType="uint64"  ]
    Thing data Active_energy_L3_n   [ readStart="756",  readValueType="uint64"  ]
    Thing data Reactive_energy_L3_p [ readStart="760",  readValueType="uint64"  ]
    Thing data Reactive_energy_L3_n [ readStart="764",  readValueType="uint64"  ]
    Thing data Apparent_energy_L3_p [ readStart="784",  readValueType="uint64"  ]
    Thing data Apparent_energy_L3_n [ readStart="788",  readValueType="uint64"  ]
}}

After that you can create items and have them linked to your Modbus Config via the channels.

2 Likes

Welcome to the Community and thanks for posting your working config!

I moved this topic from “off topic” to “Tutorials & Examples”.

This topic was automatically closed 41 days after the last reply. New replies are no longer allowed.