Skip to content

Commit 275808b

Browse files
committed
One more little addition : decoding of field ADCO/ADSC
rename Compteur/CompteurType to Meter/MeterType Signed-off-by: Laurent ARNAL <[email protected]>
1 parent 80472c4 commit 275808b

File tree

9 files changed

+624
-353
lines changed

9 files changed

+624
-353
lines changed

bundles/org.openhab.binding.linky/src/main/java/org/openhab/binding/linky/internal/constants/LinkyBindingConstants.java

+10
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ public class LinkyBindingConstants {
6767
public static final String LINKY_TEMPO_CALENDAR_GROUP = "linky-tempo-calendar";
6868
public static final String LINKY_REMOTE_LOAD_CURVE_GROUP = "linky-remote-load-curve";
6969

70+
public static final String LINKY_LOCAL_METER_BASE_GROUP = "linky-local-meter-base";
71+
7072
public static final String LINKY_LOCAL_STANDARD_3PHASE_GROUP = "linky-local-standard-3phase";
7173
public static final String LINKY_LOCAL_STANDARD_BASE_GROUP = "linky-local-standard-base";
7274
public static final String LINKY_LOCAL_STANDARD_PRODUCER_GROUP = "linky-local-standard-producer";
@@ -392,6 +394,14 @@ public class LinkyBindingConstants {
392394
public static final String CHANNEL_BLUE_HP_HT = "blue-hp-ht";
393395
public static final String CHANNEL_BLUE_HP_TTC = "blue-hp-ttc";
394396

397+
//
398+
399+
public static final String CHANNEL_METER_MANUFACTURER = "meter-manufacturer";
400+
public static final String CHANNEL_METER_TYPE = "meter-type";
401+
public static final String CHANNEL_METER_CATEGORY = "meter-category";
402+
public static final String CHANNEL_METER_MATRICULE = "meter-matricule";
403+
public static final String CHANNEL_METER_MANUFACTURE_YEAR = "meter-manufacture-year";
404+
395405
public static final Currency CURRENCY_EUR = Currency.getInstance("EUR");
396406

397407
public static final String NOT_A_CHANNEL = "";

bundles/org.openhab.binding.linky/src/main/java/org/openhab/binding/linky/internal/handler/ThingLinkyLocalHandler.java

+26-5
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.openhab.binding.linky.internal.types.InvalidFrameException;
3434
import org.openhab.binding.linky.internal.types.LinkyChannel;
3535
import org.openhab.binding.linky.internal.types.LinkyTicMode;
36+
import org.openhab.binding.linky.internal.types.Meter;
3637
import org.openhab.binding.linky.internal.types.Phase;
3738
import org.openhab.binding.linky.internal.types.ValueType;
3839
import org.openhab.core.config.core.Configuration;
@@ -285,6 +286,31 @@ protected void handleFrame(LinkyFrame frame) {
285286

286287
if (channel == LinkyChannel.STGE) {
287288
handleStgePayload(value);
289+
}
290+
if (channel == LinkyChannel.ADSC || channel == LinkyChannel.ADCO) {
291+
String adco = frame.get(LinkyChannel.ADCO) != null ? frame.get(LinkyChannel.ADCO)
292+
: frame.get(LinkyChannel.ADSC);
293+
294+
if (adco.length() != 12) {
295+
296+
} else {
297+
String manufacturer = adco.substring(0, 2);
298+
String year = adco.substring(2, 4);
299+
String type = adco.substring(4, 6);
300+
String matricule = adco.substring(6, 12);
301+
302+
Meter cpt = Meter.getCompteurForId(Integer.parseInt(type));
303+
304+
updateState(LINKY_LOCAL_METER_BASE_GROUP, CHANNEL_METER_MANUFACTURER,
305+
new DecimalType(manufacturer));
306+
updateState(LINKY_LOCAL_METER_BASE_GROUP, CHANNEL_METER_TYPE, new DecimalType(type));
307+
updateState(LINKY_LOCAL_METER_BASE_GROUP, CHANNEL_METER_MATRICULE,
308+
new StringType(matricule));
309+
updateState(LINKY_LOCAL_METER_BASE_GROUP, CHANNEL_METER_CATEGORY,
310+
new DecimalType(cpt.getCompteurType().getId()));
311+
updateState(LINKY_LOCAL_METER_BASE_GROUP, CHANNEL_METER_MANUFACTURE_YEAR,
312+
new StringType("" + (Integer.parseInt(year) + 2000)));
313+
}
288314
} else if (channel == LinkyChannel.RELAIS) {
289315
handleRelaisPayload(value);
290316
} else if (channel == LinkyChannel.PJOURF_PLUS_1) {
@@ -319,11 +345,6 @@ protected void handleFrame(LinkyFrame frame) {
319345
}
320346

321347
updateCalcVars(urms, sinst);
322-
323-
// updateState(LINKY_DIRECT_MAIN_GROUP, "_ID_D2L", new StringType(payLoad.get("_ID_D2L")));
324-
// updateState(LINKY_DIRECT_MAIN_GROUP, "SINSTS", new StringType(payLoad.get("SINSTS")));
325-
// updateState(LINKY_DIRECT_MAIN_GROUP, "DATE", new StringType(payLoad.get("DATE")));
326-
// updateState(LINKY_DIRECT_MAIN_GROUP, "IRMS1", new StringType(payLoad.get("IRMS1")));
327348
}
328349

329350
private void updateCalcVars(double urms, double sinst) {

bundles/org.openhab.binding.linky/src/main/java/org/openhab/binding/linky/internal/types/Compteur.java

-339
This file was deleted.

bundles/org.openhab.binding.linky/src/main/java/org/openhab/binding/linky/internal/types/Constructor.java bundles/org.openhab.binding.linky/src/main/java/org/openhab/binding/linky/internal/types/Manufacturer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
*
2222
*/
2323
@NonNullByDefault
24-
public enum Constructor {
24+
public enum Manufacturer {
2525

2626
NotAttrib000(0x00, "Non attribué"),
2727

@@ -137,7 +137,7 @@ public enum Constructor {
137137
private final int id;
138138
private final String label;
139139

140-
Constructor(int id, String label) {
140+
Manufacturer(int id, String label) {
141141
this.id = id;
142142
this.label = label;
143143
}

0 commit comments

Comments
 (0)