Dear all,
System setup:
Clean Debian 11 minimal and only openHAB, initially OH3.2 upgraded to 3.3.
P1 to ethernet connection, server is in another building.
One binding DSMR (4.2), all 4 Things and items for all channels.
Serial: rfc2217://x.x.x.x:23
Telnet session: telegrams arrive complete and at intervals of 10 seconds.
All P1 variables are imported in openHAB correctly and updated every 10 seconds, except the logs.
It’s not a “life-threatening” situation, but merely annoying.
The part of the P1 telegram with the logs:
1-0:99.97.0(10)(0-0:96.7.19)(210707130951S)(0000002930*s)(190813010343S)(0000003459*s)(190331143203S)(0000000620*s)(160907122752S)(0000000717*s)(160513140148S)(0000001030*s)(160513095721S)(0000001119*s)(160503143305S)(0000000646*s)(160503121845S)(0000000686*s)(160503120522S)(0000000182*s)(160502094435S)(0000242041*s)
TRACE logging:
2022-07-01 00:05:07.681 [TRACE] [rnal.device.cosem.CosemObjectFactory] - Received obisIdString 1-0:99.97.0, obisId: 1-0:99.97.0, values: (10)(0-0:96.7.19)(210707130951S)(0000002930*s)(190813010343S)(0000003459*s)(190331143203S)(0000000620*s)(160907122752S)(0000000717*s)(160513140148S)(0000001030*s)(160513095721S)(0000001119*s)(160503143305S)(0000000646*s)(160503121845S)(0000000686*s)(160503120522S)(0000000182*s)(160502094435S)(0000242041*s)
The OBIS ID is recognized, but parsing seems to skip assigning the 10 to EMETER_POWER_FAILURE_LOG_ENTRIES (the value of the item remains NULL):
2022-07-01 00:05:07.681 [TRACE] [rnal.device.cosem.CosemObjectFactory] - Found obisId 1-99.97.0 in the fixed lookup table
2022-07-01 00:05:07.682 [TRACE] [rnal.device.cosem.CosemObjectFactory] - Parse values for Cosem Object type: EMETER_POWER_FAILURE_LOG
2022-07-01 00:05:07.682 [TRACE] [mr.internal.device.cosem.CosemObject] - Parsing CosemValue string (10)(0-0:96.7.19)(210707130951S)(0000002930*s)(190813010343S)(0000003459*s)(190331143203S)(0000000620*s)(160907122752S)(0000000717*s)(160513140148S)(0000001030*s)(160513095721S)(0000001119*s)(160503143305S)(0000000646*s)(160503121845S)(0000000686*s)(160503120522S)(0000000182*s)(160502094435S)(0000242041*s)
2022-07-01 00:05:07.682 [TRACE] [mr.internal.device.cosem.CosemObject] - Received items: 22 is supported
2022-07-01 00:05:07.689 [TRACE] [l.device.p1telegram.P1TelegramParser] - Adding Cosem Object(type:EMETER_POWER_FAILURE_LOG, cosemValues:{timestamp1=2019-08-13T01:03:43.000+0200, duration9=242041 s, timestamp0=2021-07-07T13:09:51.000+0200, duration8=182 s, timestamp5=2016-05-13T09:57:21.000+0200, duration5=1119 s, timestamp4=2016-05-13T14:01:48.000+0200, duration4=1030 s, timestamp3=2016-09-07T12:27:52.000+0200, duration7=686 s, timestamp2=2019-03-31T14:32:03.000+0200, duration6=646 s, entries=10, obisId=0-0:96.7.19, duration1=3459 s, timestamp9=2016-05-02T09:44:35.000+0200, duration0=2930 s, timestamp8=2016-05-03T12:05:22.000+0200, duration3=717 s, timestamp7=2016-05-03T12:18:45.000+0200, duration2=620 s, timestamp6=2016-05-03T14:33:05.000+0200}) to list of Cosem Objects
In updating entries are assigned to unexisting concatenated variables:
2022-07-01 00:05:11.176 [DEBUG] [mr.internal.handler.DSMRMeterHandler] - Updating state for channel emeter_power_failure_log_timestamp1 to value 2019-08-13T01:03:43.000+0200
2022-07-01 00:05:11.177 [DEBUG] [mr.internal.handler.DSMRMeterHandler] - Updating state for channel emeter_power_failure_log_timestamp1_duration9 to value 242041 s
2022-07-01 00:05:11.177 [DEBUG] [mr.internal.handler.DSMRMeterHandler] - Updating state for channel emeter_power_failure_log_timestamp1_duration9_timestamp0 to value 2021-07-07T13:09:51.000+0200
Maybe in this statement?:
DSMRMeterHandler.java:
if (!entry.getKey().isEmpty()) {
/* CosemObject has a specific sub channel */
channel += "_" + entry.getKey();
}
However, it is not a subchannel, but an array of values.
This is where my knowledge of openHAB / java ends. How can we proceed?