- Platform information:
- System Information:
- Hardware: i3/ 12GB RAM/ 2TB Raid
- OS: Linux 6.1.0-0.deb11.21
- Java Runtime Environment: Docker Container
- openHAB version: 4.0.4
- Issue of the topic:
I’m trying to create a thing for a Janiza UMG96PA with the corresponding channels.
With attempt 1 in the things file I get a separate thing for each thing date (very cumbersome even when inserting it into the model as equipment), especially since I might want to add another one.
With attempt 2 I only get one thing but no channels.
Attempt 1 modbus.thimgs
Bridge modbus:tcp:UMG96PA [ host="192.168.178.24", port=502, id=1, enableDiscovery=true ] {
// Poller für Spannungen (Voltage)
Bridge poller voltage [ start=19000, length=12, refresh=5000, type="input" ] {
Thing data voltage_L1_N [ readStart="19000", readValueType="float32" ]
Thing data voltage_L2_N [ readStart="19002", readValueType="float32" ]
Thing data voltage_L3_N [ readStart="19004", readValueType="float32" ]
Thing data voltage_L1_L2 [ readStart="19006", readValueType="float32" ]
Thing data voltage_L2_L3 [ readStart="19008", readValueType="float32" ]
Thing data voltage_L3_L1 [ readStart="19010", readValueType="float32" ]
}
// Poller für Ströme (Current)
Bridge poller current [ start=19012, length=8, refresh=5000, type="input" ] {
Thing data current_L1 [ readStart="19012", readValueType="float32" ]
Thing data current_L2 [ readStart="19014", readValueType="float32" ]
Thing data current_L3 [ readStart="19016", readValueType="float32" ]
Thing data vector_sum_current [ readStart="19018", readValueType="float32" ]
}
// Poller für Wirkleistung (Real Power)
Bridge poller real_power [ start=19020, length=8, refresh=5000, type="input" ] {
Thing data real_power_L1 [ readStart="19020", readValueType="float32" ]
Thing data real_power_L2 [ readStart="19022", readValueType="float32" ]
Thing data real_power_L3 [ readStart="19024", readValueType="float32" ]
Thing data sum_real_power [ readStart="19026", readValueType="float32" ]
}
// Poller für Scheinleistung (Apparent Power)
Bridge poller apparent_power [ start=19028, length=8, refresh=5000, type="input" ] {
Thing data apparent_power_L1 [ readStart="19028", readValueType="float32" ]
Thing data apparent_power_L2 [ readStart="19030", readValueType="float32" ]
Thing data apparent_power_L3 [ readStart="19032", readValueType="float32" ]
Thing data sum_apparent_power [ readStart="19034", readValueType="float32" ]
}
// Poller für Blindleistung (Reactive Power)
Bridge poller reactive_power [ start=19036, length=8, refresh=5000, type="input" ] {
Thing data reactive_power_L1 [ readStart="19036", readValueType="float32" ]
Thing data reactive_power_L2 [ readStart="19038", readValueType="float32" ]
Thing data reactive_power_L3 [ readStart="19040", readValueType="float32" ]
Thing data sum_reactive_power [ readStart="19042", readValueType="float32" ]
}
// Poller für Power Factor und Frequenz
Bridge poller power_factor [ start=19044, length=10, refresh=5000, type="input" ] {
Thing data power_factor_L1 [ readStart="19044", readValueType="float32" ]
Thing data power_factor_L2 [ readStart="19046", readValueType="float32" ]
Thing data power_factor_L3 [ readStart="19048", readValueType="float32" ]
Thing data measured_frequency [ readStart="19050", readValueType="float32" ]
Thing data rotation_field [ readStart="19052", readValueType="int16" ]
}
// Poller für Digitale Eingänge und Ausgänge
Bridge poller digital_io [ start=30400, length=12, refresh=2000, type="holding" ] {
Thing data digital_input_1 [ readStart="30400", readValueType="uint16" ]
Thing data digital_input_2 [ readStart="30401", readValueType="uint16" ]
Thing data digital_input_3 [ readStart="30402", readValueType="uint16" ]
Thing data digital_output_1 [ readStart="30406", readValueType="uint16" ]
Thing data digital_output_2 [ readStart="30407", readValueType="uint16" ]
Thing data digital_output_3 [ readStart="30408", readValueType="uint16" ]
// Steuerbare digitale Ausgänge (Write-Funktionalität ergänzt)
Thing data set_digital_output_1 [ readStart="30409", readValueType="uint16", writeStart="30409", writeValueType="uint16", writeType="holding" ]
Thing data set_digital_output_2 [ readStart="30410", readValueType="uint16", writeStart="30410", writeValueType="uint16", writeType="holding" ]
Thing data set_digital_output_3 [ readStart="30411", readValueType="uint16", writeStart="30411", writeValueType="uint16", writeType="holding" ]
}
// Poller für Externe Ereignisse
Bridge poller external_events [ start=30046, length=4, refresh=5000, type="holding" ] {
Thing data event_digital_input_1 [ readStart="30046", readValueType="uint16" ]
Thing data event_digital_input_2 [ readStart="30047", readValueType="uint16" ]
Thing data event_digital_input_3 [ readStart="30048", readValueType="uint16" ]
}
// Poller für Systeminformationen
Bridge poller system_info [ start=100, length=12, refresh=10000, type="holding" ] {
Thing data timestamp_utc [ readStart="100", readValueType="uint32" ]
Thing data serial_number [ readStart="911", readValueType="uint32" ]
Thing data production_number [ readStart="20012", readValueType="uint32" ]
Thing data article_number [ readStart="20016", readValueType="uint32" ]
Thing data device_type_id [ readStart="20047", readValueType="uint16" ]
Thing data firmware_version [ readStart="26160", readValueType="string", length=16 ]
Thing data ext_temperature [ readStart="20061", readValueType="float32" ]
}
// Poller für Zeitsynchronisation
Bridge poller time_sync [ start=31498, length=8, refresh=10000, type="holding" ] {
Thing data clock_sync_interval [ readStart="31498", readValueType="uint16" ]
Thing data validation_result [ readStart="31499", readValueType="uint16" ]
Thing data en60870_millisecond [ readStart="31500", readValueType="uint16" ]
Thing data en60870_min_hour [ readStart="31501", readValueType="uint16" ]
Thing data en60870_day_month [ readStart="31502", readValueType="uint16" ]
Thing data en60870_year [ readStart="31503", readValueType="uint16" ]
Thing data averaging_interval [ readStart="31504", readValueType="uint16" ]
}
// Poller für Modbus Broadcast Einstellungen
Bridge poller modbus_settings [ start=32604, length=1, refresh=10000, type="holding" ] {
Thing data enable_modbus_broadcast [ readStart="32604", readValueType="uint16" ]
}
}
Attempt 2 modbus.things
Bridge modbus:tcp:UMG96PA [ host="192.168.178.24", port=502, id=1, enableDiscovery=true ] {
Thing device UMG96PA "UMG96PA Energy Meter" @ "Modbus" [ ] {
Channels:
Type number : voltage_L1_N [ readStart="19000", readValueType="float32" ]
Type number : voltage_L2_N [ readStart="19002", readValueType="float32" ]
Type number : voltage_L3_N [ readStart="19004", readValueType="float32" ]
Type number : voltage_L1_L2 [ readStart="19006", readValueType="float32" ]
Type number : voltage_L2_L3 [ readStart="19008", readValueType="float32" ]
Type number : voltage_L3_L1 [ readStart="19010", readValueType="float32" ]
Type number : current_L1 [ readStart="19012", readValueType="float32" ]
Type number : current_L2 [ readStart="19014", readValueType="float32" ]
Type number : current_L3 [ readStart="19016", readValueType="float32" ]
Type number : vector_sum_current [ readStart="19018", readValueType="float32" ]
Type number : real_power_L1 [ readStart="19020", readValueType="float32" ]
Type number : real_power_L2 [ readStart="19022", readValueType="float32" ]
Type number : real_power_L3 [ readStart="19024", readValueType="float32" ]
Type number : sum_real_power [ readStart="19026", readValueType="float32" ]
Type number : apparent_power_L1 [ readStart="19028", readValueType="float32" ]
Type number : apparent_power_L2 [ readStart="19030", readValueType="float32" ]
Type number : apparent_power_L3 [ readStart="19032", readValueType="float32" ]
Type number : sum_apparent_power [ readStart="19034", readValueType="float32" ]
Type number : reactive_power_L1 [ readStart="19036", readValueType="float32" ]
Type number : reactive_power_L2 [ readStart="19038", readValueType="float32" ]
Type number : reactive_power_L3 [ readStart="19040", readValueType="float32" ]
Type number : sum_reactive_power [ readStart="19042", readValueType="float32" ]
Type number : power_factor_L1 [ readStart="19044", readValueType="float32" ]
Type number : power_factor_L2 [ readStart="19046", readValueType="float32" ]
Type number : power_factor_L3 [ readStart="19048", readValueType="float32" ]
Type number : measured_frequency [ readStart="19050", readValueType="float32" ]
Type number : rotation_field [ readStart="19052", readValueType="int16" ]
Type number : digital_input_1 [ readStart="30400", readValueType="uint16" ]
Type number : digital_input_2 [ readStart="30401", readValueType="uint16" ]
Type number : digital_input_3 [ readStart="30402", readValueType="uint16" ]
Type number : digital_output_1 [ readStart="30406", readValueType="uint16" ]
Type number : digital_output_2 [ readStart="30407", readValueType="uint16" ]
Type number : digital_output_3 [ readStart="30408", readValueType="uint16" ]
Type number : set_digital_output_1 [ readStart="30409", readValueType="uint16", writeStart="30409", writeValueType="uint16", writeType="holding" ]
Type number : set_digital_output_2 [ readStart="30410", readValueType="uint16", writeStart="30410", writeValueType="uint16", writeType="holding" ]
Type number : set_digital_output_3 [ readStart="30411", readValueType="uint16", writeStart="30411", writeValueType="uint16", writeType="holding" ]
Type number : event_digital_input_1 [ readStart="30046", readValueType="uint16" ]
Type number : event_digital_input_2 [ readStart="30047", readValueType="uint16" ]
Type number : event_digital_input_3 [ readStart="30048", readValueType="uint16" ]
Type number : timestamp_utc [ readStart="100", readValueType="uint32" ]
Type number : serial_number [ readStart="911", readValueType="uint32" ]
Type number : production_number [ readStart="20012", readValueType="uint32" ]
Type number : article_number [ readStart="20016", readValueType="uint32" ]
Type number : device_type_id [ readStart="20047", readValueType="uint16" ]
Type string : firmware_version [ readStart="26160", readValueType="string", length=16 ]
Type number : ext_temperature [ readStart="20061", readValueType="float32" ]
Type number : clock_sync_interval [ readStart="31498", readValueType="uint16" ]
Type number : validation_result [ readStart="31499", readValueType="uint16" ]
Type number : en60870_millisecond [ readStart="31500", readValueType="uint16" ]
Type number : en60870_min_hour [ readStart="31501", readValueType="uint16" ]
Type number : en60870_day_month [ readStart="31502", readValueType="uint16" ]
Type number : en60870_year [ readStart="31503", readValueType="uint16" ]
Type number : averaging_interval [ readStart="31504", readValueType="uint16" ]
Type number : enable_modbus_broadcast [ readStart="32604", readValueType="uint16" ]
}
}
For all i use the same items
//
// Janiza UMG96PA
//
// Spannungen (Voltage)
Number Voltage_L1_N "Spannung L1-N [%.2f V]" { channel="modbus:data:UMG96PA:voltage:voltage_L1_N:number" }
Number Voltage_L2_N "Spannung L2-N [%.2f V]" { channel="modbus:data:UMG96PA:voltage:voltage_L2_N:number" }
Number Voltage_L3_N "Spannung L3-N [%.2f V]" { channel="modbus:data:UMG96PA:voltage:voltage_L3_N:number" }
Number Voltage_L1_L2 "Spannung L1-L2 [%.2f V]" { channel="modbus:data:UMG96PA:voltage:voltage_L1_L2:number" }
Number Voltage_L2_L3 "Spannung L2-L3 [%.2f V]" { channel="modbus:data:UMG96PA:voltage:voltage_L2_L3:number" }
Number Voltage_L3_L1 "Spannung L3-L1 [%.2f V]" { channel="modbus:data:UMG96PA:voltage:voltage_L3_L1:number" }
// Ströme (Current)
Number Current_L1 "Strom L1 [%.2f A]" { channel="modbus:data:UMG96PA:current:current_L1:number" }
Number Current_L2 "Strom L2 [%.2f A]" { channel="modbus:data:UMG96PA:current:current_L2:number" }
Number Current_L3 "Strom L3 [%.2f A]" { channel="modbus:data:UMG96PA:current:current_L3:number" }
Number Vector_Sum_Current "Vektorstromsumme [%.2f A]" { channel="modbus:data:UMG96PA:current:vector_sum_current:number" }
// Wirkleistung (Real Power)
Number Real_Power_L1 "Wirkleistung L1 [%.2f W]" { channel="modbus:data:UMG96PA:real_power:real_power_L1:number" }
Number Real_Power_L2 "Wirkleistung L2 [%.2f W]" { channel="modbus:data:UMG96PA:real_power:real_power_L2:number" }
Number Real_Power_L3 "Wirkleistung L3 [%.2f W]" { channel="modbus:data:UMG96PA:real_power:real_power_L3:number" }
Number Sum_Real_Power "Gesamtwirkleistung [%.2f W]" { channel="modbus:data:UMG96PA:real_power:sum_real_power:number" }
// Scheinleistung (Apparent Power)
Number Apparent_Power_L1 "Scheinleistung L1 [%.2f VA]" { channel="modbus:data:UMG96PA:apparent_power:apparent_power_L1:number" }
Number Apparent_Power_L2 "Scheinleistung L2 [%.2f VA]" { channel="modbus:data:UMG96PA:apparent_power:apparent_power_L2:number" }
Number Apparent_Power_L3 "Scheinleistung L3 [%.2f VA]" { channel="modbus:data:UMG96PA:apparent_power:apparent_power_L3:number" }
Number Sum_Apparent_Power "Gesamtscheinleistung [%.2f VA]" { channel="modbus:data:UMG96PA:apparent_power:sum_apparent_power:number" }
// Blindleistung (Reactive Power)
Number Reactive_Power_L1 "Blindleistung L1 [%.2f var]" { channel="modbus:data:UMG96PA:reactive_power:reactive_power_L1:number" }
Number Reactive_Power_L2 "Blindleistung L2 [%.2f var]" { channel="modbus:data:UMG96PA:reactive_power:reactive_power_L2:number" }
Number Reactive_Power_L3 "Blindleistung L3 [%.2f var]" { channel="modbus:data:UMG96PA:reactive_power:reactive_power_L3:number" }
Number Sum_Reactive_Power "Gesamtblindleistung [%.2f var]" { channel="modbus:data:UMG96PA:reactive_power:sum_reactive_power:number" }
// Power Factor und Frequenz
Number Power_Factor_L1 "Leistungsfaktor L1 [%.2f]" { channel="modbus:data:UMG96PA:power_factor:power_factor_L1:number" }
Number Power_Factor_L2 "Leistungsfaktor L2 [%.2f]" { channel="modbus:data:UMG96PA:power_factor:power_factor_L2:number" }
Number Power_Factor_L3 "Leistungsfaktor L3 [%.2f]" { channel="modbus:data:UMG96PA:power_factor:power_factor_L3:number" }
Number Measured_Frequency "Netzfrequenz [%.2f Hz]" { channel="modbus:data:UMG96PA:power_factor:measured_frequency:number" }
Number Rotation_Field "Drehfeldrichtung [%d]" { channel="modbus:data:UMG96PA:power_factor:rotation_field:number" }
// Digitale Eingänge & Ausgänge
Switch Digital_Input_1 "Digitaler Eingang 1" { channel="modbus:data:UMG96PA:digital_io:digital_input_1:number" }
Switch Digital_Input_2 "Digitaler Eingang 2" { channel="modbus:data:UMG96PA:digital_io:digital_input_2:number" }
Switch Digital_Input_3 "Digitaler Eingang 3" { channel="modbus:data:UMG96PA:digital_io:digital_input_3:number" }
Switch Digital_Output_1 "Digitaler Ausgang 1" { channel="modbus:data:UMG96PA:digital_io:digital_output_1:number" }
Switch Digital_Output_2 "Digitaler Ausgang 2" { channel="modbus:data:UMG96PA:digital_io:digital_output_2:number" }
Switch Digital_Output_3 "Digitaler Ausgang 3" { channel="modbus:data:UMG96PA:digital_io:digital_output_3:number" }
// Steuerbare Digitale Ausgänge
Switch Set_Digital_Output_1 "Digital Ausgang 1 (Steuerung)" { channel="modbus:data:UMG96PA:digital_io:set_digital_output_1:switch" }
Switch Set_Digital_Output_2 "Digital Ausgang 2 (Steuerung)" { channel="modbus:data:UMG96PA:digital_io:set_digital_output_2:switch" }
Switch Set_Digital_Output_3 "Digital Ausgang 3 (Steuerung)" { channel="modbus:data:UMG96PA:digital_io:set_digital_output_3:switch" }
// Externe Ereignisse
Number Event_Digital_Input_1 "Externer Ereignisstatus DI1 [%d]" { channel="modbus:data:UMG96PA:external_events:event_digital_input_1:number" }
Number Event_Digital_Input_2 "Externer Ereignisstatus DI2 [%d]" { channel="modbus:data:UMG96PA:external_events:event_digital_input_2:number" }
Number Event_Digital_Input_3 "Externer Ereignisstatus DI3 [%d]" { channel="modbus:data:UMG96PA:external_events:event_digital_input_3:number" }
// Systeminformationen
Number Timestamp_UTC "UTC-Zeitstempel [%d]" { channel="modbus:data:UMG96PA:system_info:timestamp_utc:number" }
Number Serial_Number "Seriennummer [%d]" { channel="modbus:data:UMG96PA:system_info:serial_number:number" }
Number Production_Number "Produktionsnummer [%d]" { channel="modbus:data:UMG96PA:system_info:production_number:number" }
Number Article_Number "Artikelnummer [%d]" { channel="modbus:data:UMG96PA:system_info:article_number:number" }
Number Device_Type_ID "Gerätetyp-ID [%d]" { channel="modbus:data:UMG96PA:system_info:device_type_id:number" }
String Firmware_Version "Firmware-Version [%s]" { channel="modbus:data:UMG96PA:system_info:firmware_version:string" }
Number Ext_Temperature "Externe Temperatur [%.1f °C]" { channel="modbus:data:UMG96PA:system_info:ext_temperature:number" }
// Modbus Broadcast Einstellungen
Switch Enable_Modbus_Broadcast "Modbus Broadcast [%d]" { channel="modbus:data:UMG96PA:modbus_settings:enable_modbus_broadcast:number" }