diff --git a/CODEOWNERS b/CODEOWNERS
index d99f11fa727b5..dfc845318220c 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -214,6 +214,7 @@
/bundles/org.openhab.binding.tado/ @dfrommi
/bundles/org.openhab.binding.tankerkoenig/ @dolic @JueBag
/bundles/org.openhab.binding.telegram/ @ZzetT
+/bundles/org.openhab.binding.teleinfo/ @Nokyyz
/bundles/org.openhab.binding.tellstick/ @jarlebh
/bundles/org.openhab.binding.tesla/ @kgoderis
/bundles/org.openhab.binding.tibber/ @kjoglum
diff --git a/bom/openhab-addons/pom.xml b/bom/openhab-addons/pom.xml
index d6fad3c96e7c1..5dce67fda5986 100644
--- a/bom/openhab-addons/pom.xml
+++ b/bom/openhab-addons/pom.xml
@@ -1054,6 +1054,11 @@
org.openhab.binding.telegram
${project.version}
+
+ org.openhab.addons.bundles
+ org.openhab.binding.teleinfo
+ ${project.version}
+
org.openhab.addons.bundles
org.openhab.binding.tellstick
diff --git a/bundles/org.openhab.binding.teleinfo/NOTICE b/bundles/org.openhab.binding.teleinfo/NOTICE
new file mode 100644
index 0000000000000..4c20ef446c1e4
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/NOTICE
@@ -0,0 +1,13 @@
+This content is produced and maintained by the openHAB project.
+
+* Project home: https://www.openhab.org
+
+== Declared Project Licenses
+
+This program and the accompanying materials are made available under the terms
+of the Eclipse Public License 2.0 which is available at
+https://www.eclipse.org/legal/epl-2.0/.
+
+== Source Code
+
+https://github.com/openhab/openhab2-addons
diff --git a/bundles/org.openhab.binding.teleinfo/README.md b/bundles/org.openhab.binding.teleinfo/README.md
new file mode 100644
index 0000000000000..65387c4049755
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/README.md
@@ -0,0 +1,121 @@
+# Teleinfo Binding
+
+The Teleinfo binding supports an interface to ENEDIS/ERDF [Teleinfo protocol](http://www.linuxembarque.free.fr/electro/compt_energie/specifications_techniques_edf_teleinfo.pdf) for (French) Electricity Meter. This binding works with a Teleinfo modem plugged to the I1 and I2 terminals of your electricity meter. Teleinfo modems can be ordered (see the [list of tested hardware](#tested-hardware) below) or build by yourself (see [this example](http://bernard.lefrancois.free.fr)).
+
+Teleinfo is a protocol to read many electrical statistics of your electricity meter: instantaneous power consumption, current price period, meter reading...
+These values can be used to
+
+- send your meter reading to your electricity provider with a simple copy/paste,
+- improve your rules and minimize electricity costs,
+- check if your subscription is relevant for your needs,
+- monitor your electricity consumption,
+
+## Supported Things
+
+The Teleinfo binding provides support for both single phase and three phase connection, ICC evolution and the following pricing modes:
+
+- HCHP mode
+- Base mode
+- Tempo mode
+- EJP mode
+
+| Thing type | Connection | Pricing mode | ICC evolution |
+|--------------------------------------------|--------------|--------------|---------------|
+| cbemm_base_electricitymeter | single-phase | Base | |
+| cbemm_ejp_electricitymeter | single-phase | EJP | |
+| cbemm_hc_electricitymeter | single-phase | HCHP | |
+| cbemm_tempo_electricitymeter | single-phase | Tempo | |
+| cbemm_evolution_icc_base_electricitymeter | single-phase | Base | [x] |
+| cbemm_evolution_icc_ejp_electricitymeter | single-phase | EJP | [x] |
+| cbemm_evolution_icc_hc_electricitymeter | single-phase | HCHP | [x] |
+| cbemm_evolution_icc_tempo_electricitymeter | single-phase | Tempo | [x] |
+| cbetm_base_electricitymeter | three-phase | Base | |
+| cbetm_ejp_electricitymeter | three-phase | EJP | |
+| cbetm_hc_electricitymeter | three-phase | HCHP | |
+| cbetm_tempo_electricitymeter | three-phase | Tempo | |
+
+## Discovery
+
+Before the binding can be used, a serial controller must be added. This needs to be done manually. Select __Teleinfo Serial Controller__ and enter the serial port. Once the serial controller added, electricity meters will automatically appear when trying to add a new thing, with default label __Teleinfo ADCO #adco__ where __#adco__ is your electricity meter identifier.
+
+## Thing Configuration
+
+| Thing type | Parameter | Meaning | Possible values |
+|----------------------|--------------|---------------------------------------|------------------|
+| `serialcontroller` | `serialport` | Path to the serial controller | /dev/ttyXXXX |
+| `*_electricitymeter` | `adco` | Electricity meter identifier | 12 digits number |
+
+## Channels
+
+Channel availability depends on the electricity connection (single or three phase) and on the pricing mode (Base, HCHP, EJP or Tempo).
+
+| Channel | Type | Description | Phase | Mode |
+|----------|---------------------------|----------------------------------------------------------|--------|-------|
+| isousc | `Number:ElectricCurrent` | Subscribed electric current | All | All |
+| ptec | `String` | Current pricing period | All | All |
+| imax | `Number:ElectricCurrent` | Maximum consumed electric current | Single | All |
+| imax1 | `Number:ElectricCurrent` | Maximum consumed electric current on phase 1 | Three | All |
+| imax2 | `Number:ElectricCurrent` | Maximum consumed electric current on phase 2 | Three | All |
+| imax3 | `Number:ElectricCurrent` | Maximum consumed electric current on phase 3 | Three | All |
+| adps | `Number:ElectricCurrent` | Excess electric current warning | Single | All |
+| adir1 | `Number:ElectricCurrent` | Excess electric current on phase 1 warning | Three | All |
+| adir2 | `Number:ElectricCurrent` | Excess electric current on phase 2 warning | Three | All |
+| adir3 | `Number:ElectricCurrent` | Excess electric current on phase 3 warning | Three | All |
+| iinst | `Number:ElectricCurrent` | Instantaneous electric current | Single | All |
+| iinst1 | `Number:ElectricCurrent` | Instantaneous electric current on phase 1 | Three | All |
+| iinst2 | `Number:ElectricCurrent` | Instantaneous electric current on phase 2 | Three | All |
+| iinst3 | `Number:ElectricCurrent` | Instantaneous electric current on phase 3 | Three | All |
+| ppot | `String` | Electrical potential presence | Three | All |
+| pmax | `Number:Energy` | Maximum consumed electric power on all phases | Three | All |
+| papp | `Number` | Instantaneous apparent power (Unit: `VA`) | Three, single (ICC evolution only) | All |
+| hhphc | `String` | Pricing schedule group | All | HCHP |
+| hchc | `Number:Energy` | Total consumed energy at low rate pricing | All | HCHP |
+| hchp | `Number:Energy` | Total consumed energy at high rate pricing | All | HCHP |
+| base | `Number:Energy` | Total consumed energy | All | Base |
+| ejphn | `Number:Energy` | Total consumed energy at low rate pricing | All | EJP |
+| ejphpm | `Number:Energy` | Total consumed energy at high rate pricing | All | EJP |
+| bbrhcjb | `Number:Energy` | Total consumed energy at low rate pricing on blue days | All | Tempo |
+| bbrhpjb | `Number:Energy` | Total consumed energy at high rate pricing on blue days | All | Tempo |
+| bbrhcjw | `Number:Energy` | Total consumed energy at low rate pricing on white days | All | Tempo |
+| bbrhpjw | `Number:Energy` | Total consumed energy at high rate pricing on white days | All | Tempo |
+| bbrhcjr | `Number:Energy` | Total consumed energy at low rate pricing on red days | All | Tempo |
+| bbrhpjr | `Number:Energy` | Total consumed energy at high rate pricing on red days | All | Tempo |
+| pejp | `Number:Duration` | Prior notice to EJP start | All | EJP |
+| demain | `String` | Following day color | All | Tempo |
+
+## Full Example
+
+The following `things` file declare a serial USB controller on `/dev/ttyUSB0` for a Single-phase Electricity meter with HC/HP option - CBEMM Evolution ICC and adco `031528042289` :
+
+```
+Bridge teleinfo:serialcontroller:teleinfoUSB [ serialport="/dev/ttyUSB0" ]{
+ Thing cbemm_evolution_icc_hc_electricitymeter myElectricityMeter [ adco="031528042289"]
+}
+```
+
+`adco` is a 12 digit number writen on the electricity meter (There might be two additional digits on the electricity meter, in this case the two last digits must be omitted to obtain 12 digits). The first 6 digits of `adco` can also be retrieved by pushing 6 times the `selection` button of your electricity meter, and the last 6 digits by pushing the `defilement` button.
+
+This `items` file links some supported channels to items:
+
+```
+Number TLInfoEDF_PAPP "PAPP" {channel="teleinfo:cbemm_evolution_icc_hc_electricitymeter:teleinfoUSB:myElectricityMeter:papp"}
+Number:ElectricCurrent TLInfoEDF_ISOUSC "ISOUSC" {channel="teleinfo:cbemm_evolution_icc_hc_electricitymeter:teleinfoUSB:myElectricityMeter:isousc"}
+String TLInfoEDF_PTEC "PTEC" {channel="teleinfo:cbemm_evolution_icc_hc_electricitymeter:teleinfoUSB:myElectricityMeter:ptec"}
+Number:ElectricCurrent TLInfoEDF_IMAX "IMAX" {channel="teleinfo:cbemm_evolution_icc_hc_electricitymeter:teleinfoUSB:myElectricityMeter:imax"}
+Number:ElectricCurrent TLInfoEDF_ADPS "ADPS" {channel="teleinfo:cbemm_evolution_icc_hc_electricitymeter:teleinfoUSB:myElectricityMeter:adps"}
+Number:ElectricCurrent TLInfoEDF_IINST "IINST" {channel="teleinfo:cbemm_evolution_icc_hc_electricitymeter:teleinfoUSB:myElectricityMeter:iinst"}
+Number:Energy TLInfoEDF_HCHC "HCHC" {channel="teleinfo:cbemm_evolution_icc_hc_electricitymeter:teleinfoUSB:myElectricityMeter:hchc"}
+Number:Energy TLInfoEDF_HCHP "HCHP" {channel="teleinfo:cbemm_evolution_icc_hc_electricitymeter:teleinfoUSB:myElectricityMeter:hchp"}
+String TLInfoEDF_HHPHC "HHPHC" {channel="teleinfo:cbemm_evolution_icc_hc_electricitymeter:teleinfoUSB:myElectricityMeter:hhphc"}
+```
+
+## Tested hardwares
+
+The Teleinfo binding has been successfully validated with below hardware configuration:
+
+| Serial interface | Power Energy Meter model | Mode(s) |
+|----------|--------|------------------------------|
+| GCE Electronics USB Teleinfo module [(more details)](http://gce-electronics.com/fr/usb/655-module-teleinfo-usb.html) | Actaris A14C5 | - Single-phase HCHP & Base |
+| Cartelectronic USB Teleinfo modem [(more details)](https://www.cartelectronic.fr/teleinfo-compteur-enedis/17-teleinfo-1-compteur-usb-rail-din-3760313520028.html) | Sagem S10C4 | Single-phase HCHP |
+
+
diff --git a/bundles/org.openhab.binding.teleinfo/doc/datamodel.mdj b/bundles/org.openhab.binding.teleinfo/doc/datamodel.mdj
new file mode 100644
index 0000000000000..7a5c376423248
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/doc/datamodel.mdj
@@ -0,0 +1,14122 @@
+{
+ "_type": "Project",
+ "_id": "AAAAAAFF+h6SjaM2Hec=",
+ "name": "Untitled",
+ "ownedElements": [
+ {
+ "_type": "UMLModel",
+ "_id": "AAAAAAFF+qBWK6M3Z8Y=",
+ "_parent": {
+ "$ref": "AAAAAAFF+h6SjaM2Hec="
+ },
+ "name": "org.openhab.binding.teleinfo"
+ },
+ {
+ "_type": "UMLPackage",
+ "_id": "AAAAAAFtp3ClvmZujPI=",
+ "_parent": {
+ "$ref": "AAAAAAFF+h6SjaM2Hec="
+ },
+ "name": "org.openhab.binding.teleinfo",
+ "ownedElements": [
+ {
+ "_type": "UMLPackage",
+ "_id": "AAAAAAFtp3DRDGZySzc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "cbemm",
+ "ownedElements": [
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtp6oGZGbGOho=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3DRDGZySzc="
+ },
+ "name": "FrameCbemm",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtp6tvPGb7sm8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ },
+ "source": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ },
+ "target": {
+ "$ref": "AAAAAAFtq1VYFHJRoJM="
+ }
+ }
+ ],
+ "attributes": [
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp7GAXmcW2Jk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ },
+ "name": "ISOUSC",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqApZIWptjik=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ },
+ "name": "IINST",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp64xiGcN6SE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ },
+ "name": "IMAX",
+ "type": "Integer"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp6ozo2bwjAk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ },
+ "name": "ADPS",
+ "type": "Integer"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp7Y8/2eatiY=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ },
+ "name": "PTEC",
+ "type": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ }
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp7kxpmehaN4=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ },
+ "name": "MOTDETAT",
+ "type": "String",
+ "multiplicity": "6"
+ }
+ ],
+ "isAbstract": true
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtp7x5m2g+x24=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3DRDGZySzc="
+ },
+ "name": "FrameCbemmTempoOption",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtp7yl8Ghogg8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7x5m2g+x24="
+ },
+ "source": {
+ "$ref": "AAAAAAFtp7x5m2g+x24="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealization",
+ "_id": "AAAAAAFtqyztVmw0MDQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7x5m2g+x24="
+ },
+ "source": {
+ "$ref": "AAAAAAFtp7x5m2g+x24="
+ },
+ "target": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtp79zlmiDASE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3DRDGZySzc="
+ },
+ "name": "FrameCbemmBaseOption",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtp7/M5miubhM=",
+ "_parent": {
+ "$ref": "AAAAAAFtp79zlmiDASE="
+ },
+ "source": {
+ "$ref": "AAAAAAFtp79zlmiDASE="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealization",
+ "_id": "AAAAAAFtqB/862ss7ng=",
+ "_parent": {
+ "$ref": "AAAAAAFtp79zlmiDASE="
+ },
+ "source": {
+ "$ref": "AAAAAAFtp79zlmiDASE="
+ },
+ "target": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtp8D8ImjHu/g=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3DRDGZySzc="
+ },
+ "name": "FrameCbemmHcOption",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtp8SlLWk4uxA=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8D8ImjHu/g="
+ },
+ "source": {
+ "$ref": "AAAAAAFtp8D8ImjHu/g="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealization",
+ "_id": "AAAAAAFtqzQICm3S/W4=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8D8ImjHu/g="
+ },
+ "source": {
+ "$ref": "AAAAAAFtp8D8ImjHu/g="
+ },
+ "target": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtp8Nqs2kAoMU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3DRDGZySzc="
+ },
+ "name": "FrameCbemmEjpOption",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtp8SyxmlJz48=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8Nqs2kAoMU="
+ },
+ "source": {
+ "$ref": "AAAAAAFtp8Nqs2kAoMU="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealization",
+ "_id": "AAAAAAFtqzkrzW5/jz4=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8Nqs2kAoMU="
+ },
+ "source": {
+ "$ref": "AAAAAAFtp8Nqs2kAoMU="
+ },
+ "target": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLPackage",
+ "_id": "AAAAAAFtp9yD82nBPXM=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3DRDGZySzc="
+ },
+ "name": "evoicc",
+ "ownedElements": [
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtp9wl7WmXmZg=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9yD82nBPXM="
+ },
+ "name": "FrameCbemmEvolutionIcc",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtp99auWnRF3g=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9wl7WmXmZg="
+ },
+ "source": {
+ "$ref": "AAAAAAFtp9wl7WmXmZg="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ }
+ }
+ ],
+ "attributes": [
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp99xhGni5qA=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9wl7WmXmZg="
+ },
+ "name": "PAPP",
+ "type": "int"
+ }
+ ],
+ "isAbstract": true
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtq0Cc0m9JUzE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9yD82nBPXM="
+ },
+ "name": "FrameCbemmEvolutionIccBaseOption",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtq0GwjW94Dvs=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Cc0m9JUzE="
+ },
+ "source": {
+ "$ref": "AAAAAAFtq0Cc0m9JUzE="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp9wl7WmXmZg="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealization",
+ "_id": "AAAAAAFtq0WZUXCQVmI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Cc0m9JUzE="
+ },
+ "source": {
+ "$ref": "AAAAAAFtq0Cc0m9JUzE="
+ },
+ "target": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtq0HIFm+JROc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9yD82nBPXM="
+ },
+ "name": "FrameCbemmEvolutionIccHcOption",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtq0MNK3AJmU0=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0HIFm+JROc="
+ },
+ "source": {
+ "$ref": "AAAAAAFtq0HIFm+JROc="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp9wl7WmXmZg="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealization",
+ "_id": "AAAAAAFtq0X9SXDmr4k=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0HIFm+JROc="
+ },
+ "source": {
+ "$ref": "AAAAAAFtq0HIFm+JROc="
+ },
+ "target": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtq0IV0W+z8KU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9yD82nBPXM="
+ },
+ "name": "FrameCbemmEvolutionIccTempoOption",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtq0MgKHAajV0=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0IV0W+z8KU="
+ },
+ "source": {
+ "$ref": "AAAAAAFtq0IV0W+z8KU="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp9wl7WmXmZg="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealization",
+ "_id": "AAAAAAFtq0b3jnFQpvk=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0IV0W+z8KU="
+ },
+ "source": {
+ "$ref": "AAAAAAFtq0IV0W+z8KU="
+ },
+ "target": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtq0KI0W/dBqA=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9yD82nBPXM="
+ },
+ "name": "FrameCbemmEvolutionIccEjpOption",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtq0Mv7HAri14=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0KI0W/dBqA="
+ },
+ "source": {
+ "$ref": "AAAAAAFtq0KI0W/dBqA="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp9wl7WmXmZg="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealization",
+ "_id": "AAAAAAFtq0dEwnGl0J8=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0KI0W/dBqA="
+ },
+ "source": {
+ "$ref": "AAAAAAFtq0KI0W/dBqA="
+ },
+ "target": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_type": "UMLPackage",
+ "_id": "AAAAAAFtp3K/TWZ3hu8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "cbetm",
+ "ownedElements": [
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtp+NCw2nqotc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3K/TWZ3hu8="
+ },
+ "name": "FrameCbetmLong",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtqA4eXWqZro4=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "source": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "target": {
+ "$ref": "AAAAAAFtzDEIn8ozAoE="
+ }
+ }
+ ],
+ "attributes": [
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqCKoBGvN9HE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "name": "ISOUSC",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqBDt0WrC2Qs=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "name": "IMAX1",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqBEaZmrK9Kg=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "name": "IMAX2",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqBFIzWrS/nI=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "name": "IMAX3",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqzzgim81ZX8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "name": "PTEC",
+ "type": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ }
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqBGx82raZl8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "name": "PMAX",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqBIDemri93Q=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "name": "PAPP",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqCODYGvdh0s=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "name": "MOTDETAT",
+ "type": "String",
+ "multiplicity": "6"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp/F7IGoWeqA=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "name": "PPOT",
+ "type": ""
+ }
+ ],
+ "isAbstract": true
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtp/QlO2odCkA=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3K/TWZ3hu8="
+ },
+ "name": "FrameCbetmShort",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtp/TBB2pHROU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlO2odCkA="
+ },
+ "source": {
+ "$ref": "AAAAAAFtp/QlO2odCkA="
+ },
+ "target": {
+ "$ref": "AAAAAAFtzDEIn8ozAoE="
+ }
+ }
+ ],
+ "attributes": [
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqAgM5GpYyfU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlO2odCkA="
+ },
+ "name": "ADIR1",
+ "type": "int",
+ "multiplicity": "0..1"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqAggUGpfGwY=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlO2odCkA="
+ },
+ "name": "ADIR2",
+ "type": "int",
+ "multiplicity": "0..1"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqAy8l2qF/UU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlO2odCkA="
+ },
+ "name": "ADIR3",
+ "type": "int",
+ "multiplicity": "0..1"
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtqCBsnGtA03g=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3K/TWZ3hu8="
+ },
+ "name": "FrameCbetmLongBaseOption",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtqCDWDmtrbuA=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCBsnGtA03g="
+ },
+ "source": {
+ "$ref": "AAAAAAFtqCBsnGtA03g="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealization",
+ "_id": "AAAAAAFtqCE2/mu83eg=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCBsnGtA03g="
+ },
+ "source": {
+ "$ref": "AAAAAAFtqCBsnGtA03g="
+ },
+ "target": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtqy9s2G0Fuyg=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3K/TWZ3hu8="
+ },
+ "name": "FrameCbetmLongTempoOption",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtqy/fp20x8C8=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy9s2G0Fuyg="
+ },
+ "source": {
+ "$ref": "AAAAAAFtqy9s2G0Fuyg="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealization",
+ "_id": "AAAAAAFtqy/yMG1CIek=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy9s2G0Fuyg="
+ },
+ "source": {
+ "$ref": "AAAAAAFtqy9s2G0Fuyg="
+ },
+ "target": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtqzAvA21UVZ4=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3K/TWZ3hu8="
+ },
+ "name": "FrameCbetmLongHcOption",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtqzB7Wm1+3+Q=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzAvA21UVZ4="
+ },
+ "source": {
+ "$ref": "AAAAAAFtqzAvA21UVZ4="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealization",
+ "_id": "AAAAAAFtqzTdxG4nMWw=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzAvA21UVZ4="
+ },
+ "source": {
+ "$ref": "AAAAAAFtqzAvA21UVZ4="
+ },
+ "target": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtqzsTA26hhHc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3K/TWZ3hu8="
+ },
+ "name": "FrameCbetmLongEjpOption",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtqztjIW7M6Is=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzsTA26hhHc="
+ },
+ "source": {
+ "$ref": "AAAAAAFtqzsTA26hhHc="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealization",
+ "_id": "AAAAAAFtqzvwqG8jcDY=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzsTA26hhHc="
+ },
+ "source": {
+ "$ref": "AAAAAAFtqzsTA26hhHc="
+ },
+ "target": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtzDEIn8ozAoE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3K/TWZ3hu8="
+ },
+ "name": "FrameCbetm",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtzDPF78qDkU0=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIn8ozAoE="
+ },
+ "source": {
+ "$ref": "AAAAAAFtzDEIn8ozAoE="
+ },
+ "target": {
+ "$ref": "AAAAAAFtq1VYFHJRoJM="
+ }
+ }
+ ],
+ "attributes": [
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqBBJWWqqC6A=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIn8ozAoE="
+ },
+ "name": "IINST1",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqBB3XmqyFjQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIn8ozAoE="
+ },
+ "name": "IINST2",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqBCafGq6Q9U=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIn8ozAoE="
+ },
+ "name": "IINST3",
+ "type": "int"
+ }
+ ],
+ "isAbstract": true
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtp3MR3mZ74lY=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "Frame",
+ "attributes": [
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp3Uft2azga0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3MR3mZ74lY="
+ },
+ "name": "id",
+ "type": "UUID",
+ "isUnique": true,
+ "isID": true
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp3i0AWa8RUk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3MR3mZ74lY="
+ },
+ "name": "timestamp",
+ "type": "LocalDate"
+ }
+ ],
+ "isAbstract": true
+ },
+ {
+ "_type": "UMLInterface",
+ "_id": "AAAAAAFtqB1bAWrtUJo=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "FrameBaseOption",
+ "attributes": [
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtqB4R72sa0FM=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "name": "BASE",
+ "type": "int"
+ }
+ ],
+ "operations": [
+ {
+ "_type": "UMLOperation",
+ "_id": "AAAAAAFtqB4qqmsgfRI=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "name": "Operation1"
+ }
+ ]
+ },
+ {
+ "_type": "UMLInterface",
+ "_id": "AAAAAAFtqh5u/2vlTN0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "FrameTempoOption",
+ "attributes": [
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp8Zn9ml9lZc=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "name": "BBRHPJR",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp8ZBDml2QFc=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "name": "BBRHCJR",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp8YdImlvrg4=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "name": "BBRHPJW",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp8YAP2lonbE=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "name": "BBRHCJW",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp8WQR2lh/Nk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "name": "BBRHPJB",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp8VDZGlaj3w=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "name": "BBRHCJB",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp70IkWh5Yo0=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "name": "DEMAIN",
+ "type": {
+ "$ref": "AAAAAAFtp7uFnmf6GHc="
+ },
+ "multiplicity": "0..1"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtz5oD92a7tUA=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "name": "HHPHC",
+ "type": {
+ "$ref": "AAAAAAFtp7oM4GepYgc="
+ }
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtz2Vq62XzTKE=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "name": "programmeCircuit1",
+ "type": {
+ "$ref": "AAAAAAFtz2ZRuGYNVuw="
+ }
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtz2W+pGYA3Y4=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "name": "programmeCircuit2",
+ "type": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLClassDiagram",
+ "_id": "AAAAAAFF+qBtyKM79qY=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "Main",
+ "defaultDiagram": true,
+ "ownedViews": [
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtp3MR32Z9keU=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp3MR3mZ74lY="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtp3MR32Z+hvk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3MR32Z9keU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp3MR3mZ74lY="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp3MR4GZ/CCo=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3MR32Z+hvk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1248,
+ "top": -112,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp3MR4GaAzRY=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3MR32Z+hvk="
+ },
+ "font": "Arial;13;3",
+ "left": 909,
+ "top": 39,
+ "width": 159,
+ "height": 13,
+ "text": "Frame"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp3MR4GaBAzM=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3MR32Z+hvk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1248,
+ "top": -112,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp3MR4GaCKKI=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3MR32Z+hvk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1248,
+ "top": -112,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 904,
+ "top": 32,
+ "width": 169,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp3MR4GZ/CCo="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtp3MR4GaAzRY="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtp3MR4GaBAzM="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp3MR4GaCKKI="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtp3MR4GaDHiw=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3MR32Z9keU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp3MR3mZ74lY="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtp3UgCma2gnE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3MR4GaDHiw="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp3Uft2azga0="
+ },
+ "font": "Arial;13;0",
+ "left": 909,
+ "top": 62,
+ "width": 159,
+ "height": 13,
+ "text": "+id: UUID {id, unique}",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtp3i0Wma/if8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3MR4GaDHiw="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp3i0AWa8RUk="
+ },
+ "font": "Arial;13;0",
+ "left": 909,
+ "top": 77,
+ "width": 159,
+ "height": 13,
+ "text": "+timestamp: LocalDate",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 904,
+ "top": 57,
+ "width": 169,
+ "height": 38
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtp3MR4maE+HI=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3MR32Z9keU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp3MR3mZ74lY="
+ },
+ "font": "Arial;13;0",
+ "left": 904,
+ "top": 95,
+ "width": 169,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtp3MR4maFAG4=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3MR32Z9keU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp3MR3mZ74lY="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 624,
+ "top": -56,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtp3MR4maGLdI=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3MR32Z9keU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp3MR3mZ74lY="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 624,
+ "top": -56,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 904,
+ "top": 32,
+ "width": 169,
+ "height": 73,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtp3MR32Z+hvk="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtp3MR4GaDHiw="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtp3MR4maE+HI="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtp3MR4maFAG4="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtp3MR4maGLdI="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtp6oPzmbK3s8=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtp6oPz2bLO8A=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPzmbK3s8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp6oPz2bM4ak=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPz2bLO8A="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 20,
+ "top": -588,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp6oPz2bNjpA=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPz2bLO8A="
+ },
+ "font": "Arial;13;3",
+ "left": 237,
+ "top": 183,
+ "width": 179.35205078125,
+ "height": 13,
+ "text": "FrameCbemm"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp6oPz2bO1b8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPz2bLO8A="
+ },
+ "font": "Arial;13;0",
+ "left": 237,
+ "top": 198,
+ "width": 179.35205078125,
+ "height": 13,
+ "text": "(from cbemm)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp6oPz2bPyW4=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPz2bLO8A="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 20,
+ "top": -588,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 232,
+ "top": 176,
+ "width": 189.35205078125,
+ "height": 40,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp6oPz2bM4ak="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtp6oPz2bNjpA="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtp6oPz2bO1b8="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp6oPz2bPyW4="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtp6oPz2bQMRU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPzmbK3s8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtp7GAsGcZ3MI=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPz2bQMRU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7GAXmcW2Jk="
+ },
+ "font": "Arial;13;0",
+ "left": 237,
+ "top": 221,
+ "width": 179.35205078125,
+ "height": 13,
+ "text": "+ISOUSC: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqApZe2pwwWY=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPz2bQMRU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqApZIWptjik="
+ },
+ "font": "Arial;13;0",
+ "left": 237,
+ "top": 236,
+ "width": 179.35205078125,
+ "height": 13,
+ "text": "+IINST: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtp64x1GcQf38=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPz2bQMRU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp64xiGcN6SE="
+ },
+ "font": "Arial;13;0",
+ "left": 237,
+ "top": 251,
+ "width": 179.35205078125,
+ "height": 13,
+ "text": "+IMAX: Integer",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtp6oz9WbzgY8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPz2bQMRU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp6ozo2bwjAk="
+ },
+ "font": "Arial;13;0",
+ "left": 237,
+ "top": 266,
+ "width": 179.35205078125,
+ "height": 13,
+ "text": "+ADPS: Integer",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtp7Y9Umed4EI=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPz2bQMRU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7Y8/2eatiY="
+ },
+ "font": "Arial;13;0",
+ "left": 237,
+ "top": 281,
+ "width": 179.35205078125,
+ "height": 13,
+ "text": "+PTEC: PTEC",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtp7kx92ekxZM=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPz2bQMRU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7kxpmehaN4="
+ },
+ "font": "Arial;13;0",
+ "left": 237,
+ "top": 296,
+ "width": 179.35205078125,
+ "height": 13,
+ "text": "+MOTDETAT: String[6]",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 232,
+ "top": 216,
+ "width": 189.35205078125,
+ "height": 98
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtp6oPz2bRYxs=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPzmbK3s8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ },
+ "font": "Arial;13;0",
+ "left": 232,
+ "top": 314,
+ "width": 189.35205078125,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtp6oP0GbSj58=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPzmbK3s8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 10,
+ "top": -294,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtp6oP0GbTDwE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6oPzmbK3s8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp6oGZGbGOho="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 10,
+ "top": -294,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 232,
+ "top": 176,
+ "width": 189.35205078125,
+ "height": 148,
+ "showNamespace": true,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtp6oPz2bLO8A="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtp6oPz2bQMRU="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtp6oPz2bRYxs="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtp6oP0GbSj58="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtp6oP0GbTDwE="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtp6tvPWb9KWQ=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp6tvPGb7sm8="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp6tvPWb+Wic=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6tvPWb9KWQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp6tvPGb7sm8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 672,
+ "top": 191,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp6tvPWb9KWQ="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp6tvPmb/24w=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6tvPWb9KWQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp6tvPGb7sm8="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 670,
+ "top": 176,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp6tvPWb9KWQ="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp6tvPmcAqW4=",
+ "_parent": {
+ "$ref": "AAAAAAFtp6tvPWb9KWQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp6tvPGb7sm8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 675,
+ "top": 220,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp6tvPWb9KWQ="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtq1VYFHJTQuA="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtp6oPzmbK3s8="
+ },
+ "lineStyle": 1,
+ "points": "421:239;927:186",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtp6tvPWb+Wic="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp6tvPmb/24w="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp6tvPmcAqW4="
+ }
+ },
+ {
+ "_type": "UMLEnumerationView",
+ "_id": "AAAAAAFtp7OGKGcfU3w=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtp7OGKGcg8gk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKGcfU3w="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7OGKWchRUg=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKGcg8gk="
+ },
+ "font": "Arial;13;0",
+ "left": 277,
+ "top": 965,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "«enumeration»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7OGKWciur0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKGcg8gk="
+ },
+ "font": "Arial;13;1",
+ "left": 277,
+ "top": 980,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "PTEC"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7OGKWcjR0Y=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKGcg8gk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 544,
+ "top": 1920,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7OGKWckbkw=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKGcg8gk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 544,
+ "top": 1920,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 272,
+ "top": 960,
+ "width": 126.34619140625,
+ "height": 38,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp7OGKWchRUg="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtp7OGKWciur0="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtp7OGKWcjR0Y="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp7OGKWckbkw="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtp7OGKWcl3m8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKGcfU3w="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 272,
+ "top": 960,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtp7OGKWcmOuI=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKGcfU3w="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 272,
+ "top": 960,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtp7OGKmcnVNY=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKGcfU3w="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 272,
+ "top": 960,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtp7OGKmcoxcU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKGcfU3w="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 272,
+ "top": 960,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLEnumerationLiteralCompartmentView",
+ "_id": "AAAAAAFtp7OGKmcpuy4=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKGcfU3w="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "subViews": [
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7RskmdQywE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKmcpuy4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7RsRGdNsz8="
+ },
+ "font": "Arial;13;0",
+ "left": 277,
+ "top": 1003,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "TH..",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7Sk6mdXeU8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKmcpuy4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7Skm2dUGDs="
+ },
+ "font": "Arial;13;0",
+ "left": 277,
+ "top": 1018,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "HC..",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7S2q2dezj8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKmcpuy4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7S2U2dbePw="
+ },
+ "font": "Arial;13;0",
+ "left": 277,
+ "top": 1033,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "HP..",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7TeJ2dl7hg=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKmcpuy4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7Tdv2diKmU="
+ },
+ "font": "Arial;13;0",
+ "left": 277,
+ "top": 1048,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "HN..",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7UBTWdsZmc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKmcpuy4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7UA8mdpvPs="
+ },
+ "font": "Arial;13;0",
+ "left": 277,
+ "top": 1063,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "PM..",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7Ul+2dztFE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKmcpuy4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7Ulk2dwj3A="
+ },
+ "font": "Arial;13;0",
+ "left": 277,
+ "top": 1078,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "HCJB",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7VKwmd6VCo=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKmcpuy4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7VKaWd3THw="
+ },
+ "font": "Arial;13;0",
+ "left": 277,
+ "top": 1093,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "HCJW",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7VyJ2eB/Pw=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKmcpuy4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7VxyWd+IAc="
+ },
+ "font": "Arial;13;0",
+ "left": 277,
+ "top": 1108,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "HCJR",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7WToGeIuVI=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKmcpuy4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7WTQ2eFPQQ="
+ },
+ "font": "Arial;13;0",
+ "left": 277,
+ "top": 1123,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "HPJB",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7XY/2ePcOI=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKmcpuy4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7XYomeMoz8="
+ },
+ "font": "Arial;13;0",
+ "left": 277,
+ "top": 1138,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "HPJW",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7X68GeWaJk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGKmcpuy4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7X6mWeTtl8="
+ },
+ "font": "Arial;13;0",
+ "left": 277,
+ "top": 1153,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "HPJR",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 272,
+ "top": 998,
+ "width": 126.34619140625,
+ "height": 173
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 272,
+ "top": 960,
+ "width": 126.34619140625,
+ "height": 211,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtp7OGKGcg8gk="
+ },
+ "suppressAttributes": true,
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtp7OGKWcl3m8="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtp7OGKWcmOuI="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtp7OGKmcnVNY="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtp7OGKmcoxcU="
+ },
+ "enumerationLiteralCompartment": {
+ "$ref": "AAAAAAFtp7OGKmcpuy4="
+ }
+ },
+ {
+ "_type": "UMLEnumerationView",
+ "_id": "AAAAAAFtp7oM4GerRxQ=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7oM4GepYgc="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtp7oM4Ges20o=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4GerRxQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7oM4GepYgc="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7oM4GetIlo=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4Ges20o="
+ },
+ "font": "Arial;13;0",
+ "left": 581,
+ "top": 965,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "«enumeration»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7oM4GeuGqE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4Ges20o="
+ },
+ "font": "Arial;13;1",
+ "left": 581,
+ "top": 980,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "HHPHC"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7oM4GevoSw=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4Ges20o="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 816,
+ "top": 736,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7oM4Gew/d0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4Ges20o="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 816,
+ "top": 736,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 576,
+ "top": 960,
+ "width": 126.34619140625,
+ "height": 38,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp7oM4GetIlo="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtp7oM4GeuGqE="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtp7oM4GevoSw="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp7oM4Gew/d0="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtp7oM4Gexjzo=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4GerRxQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7oM4GepYgc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 408,
+ "top": 368,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtp7oM4Wey/qA=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4GerRxQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7oM4GepYgc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 408,
+ "top": 368,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtp7oM4Wez0vQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4GerRxQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7oM4GepYgc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 408,
+ "top": 368,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtp7oM4We0Tz4=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4GerRxQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7oM4GepYgc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 408,
+ "top": 368,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLEnumerationLiteralCompartmentView",
+ "_id": "AAAAAAFtp7oM4We1CKM=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4GerRxQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7oM4GepYgc="
+ },
+ "subViews": [
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7pzk2fapZ4=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4We1CKM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7pzP2fXP3U="
+ },
+ "font": "Arial;13;0",
+ "left": 581,
+ "top": 1003,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "A",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7qfi2fhKU0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4We1CKM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7qfK2feMrw="
+ },
+ "font": "Arial;13;0",
+ "left": 581,
+ "top": 1018,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "C",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7rAO2foj4o=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4We1CKM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7q/6mfl4Gs="
+ },
+ "font": "Arial;13;0",
+ "left": 581,
+ "top": 1033,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "D",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7rR32fvVKo=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4We1CKM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7rRgGfslyM="
+ },
+ "font": "Arial;13;0",
+ "left": 581,
+ "top": 1048,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "E",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7rcB2f2kow=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4We1CKM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7rbrGfz5TU="
+ },
+ "font": "Arial;13;0",
+ "left": 581,
+ "top": 1063,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "Y",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 576,
+ "top": 998,
+ "width": 126.34619140625,
+ "height": 83
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 576,
+ "top": 960,
+ "width": 126.34619140625,
+ "height": 121,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtp7oM4Ges20o="
+ },
+ "suppressAttributes": true,
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtp7oM4Gexjzo="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtp7oM4Wey/qA="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtp7oM4Wez0vQ="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtp7oM4We0Tz4="
+ },
+ "enumerationLiteralCompartment": {
+ "$ref": "AAAAAAFtp7oM4We1CKM="
+ }
+ },
+ {
+ "_type": "UMLEnumerationView",
+ "_id": "AAAAAAFtp7uFnmf8DpQ=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7uFnmf6GHc="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtp7uFnmf9lwU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFnmf8DpQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7uFnmf6GHc="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7uFnmf+KM0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFnmf9lwU="
+ },
+ "font": "Arial;13;0",
+ "left": 429,
+ "top": 965,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "«enumeration»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7uFn2f/42k=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFnmf9lwU="
+ },
+ "font": "Arial;13;1",
+ "left": 429,
+ "top": 980,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "CouleurDemain"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7uFn2gAyCM=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFnmf9lwU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 112,
+ "top": 608,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7uFn2gB7oc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFnmf9lwU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 112,
+ "top": 608,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 424,
+ "top": 960,
+ "width": 126.34619140625,
+ "height": 38,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp7uFnmf+KM0="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtp7uFn2f/42k="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtp7uFn2gAyCM="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp7uFn2gB7oc="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtp7uFn2gCKoA=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFnmf8DpQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7uFnmf6GHc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 56,
+ "top": 304,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtp7uFn2gDl4o=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFnmf8DpQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7uFnmf6GHc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 56,
+ "top": 304,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtp7uFn2gEyxY=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFnmf8DpQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7uFnmf6GHc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 56,
+ "top": 304,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtp7uFn2gFcBc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFnmf8DpQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7uFnmf6GHc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 56,
+ "top": 304,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLEnumerationLiteralCompartmentView",
+ "_id": "AAAAAAFtp7uFoGgGOOY=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFnmf8DpQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7uFnmf6GHc="
+ },
+ "subViews": [
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7v14GgrM+U=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFoGgGOOY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7v1imgovAQ="
+ },
+ "font": "Arial;13;0",
+ "left": 429,
+ "top": 1003,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "Bleu",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7wNF2gytYE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFoGgGOOY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7wMvmgvV6I="
+ },
+ "font": "Arial;13;0",
+ "left": 429,
+ "top": 1018,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "Blanc",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtp7wcI2g5tRE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFoGgGOOY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7wbxWg2WOE="
+ },
+ "font": "Arial;13;0",
+ "left": 429,
+ "top": 1033,
+ "width": 116.34619140625,
+ "height": 13,
+ "text": "Rouge",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 424,
+ "top": 998,
+ "width": 126.34619140625,
+ "height": 53
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 424,
+ "top": 960,
+ "width": 126.34619140625,
+ "height": 91,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtp7uFnmf9lwU="
+ },
+ "suppressAttributes": true,
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtp7uFn2gCKoA="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtp7uFn2gDl4o="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtp7uFn2gEyxY="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtp7uFn2gFcBc="
+ },
+ "enumerationLiteralCompartment": {
+ "$ref": "AAAAAAFtp7uFoGgGOOY="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtp7x5m2hAoJA=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7x5m2g+x24="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtp7x5m2hBJQ0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7x5m2hAoJA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7x5m2g+x24="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7x5m2hCZko=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7x5m2hBJQ0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 128,
+ "top": 176,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7x5m2hDZqg=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7x5m2hBJQ0="
+ },
+ "font": "Arial;13;1",
+ "left": 141,
+ "top": 615,
+ "width": 170.21875,
+ "height": 13,
+ "text": "FrameCbemmTempoOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7x5m2hE1g0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7x5m2hBJQ0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 128,
+ "top": 176,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from cbemm)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp7x5m2hFFSc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7x5m2hBJQ0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 128,
+ "top": 176,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 136,
+ "top": 608,
+ "width": 180.21875,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp7x5m2hCZko="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtp7x5m2hDZqg="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtp7x5m2hE1g0="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp7x5m2hFFSc="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtp7x5m2hGDJM=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7x5m2hAoJA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7x5m2g+x24="
+ },
+ "font": "Arial;13;0",
+ "left": 136,
+ "top": 633,
+ "width": 180.21875,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtp7x5nGhH7ww=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7x5m2hAoJA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7x5m2g+x24="
+ },
+ "font": "Arial;13;0",
+ "left": 136,
+ "top": 643,
+ "width": 180.21875,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtp7x5nGhIVB0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7x5m2hAoJA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7x5m2g+x24="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 64,
+ "top": 88,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtp7x5nGhJyKw=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7x5m2hAoJA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7x5m2g+x24="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 64,
+ "top": 88,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 136,
+ "top": 608,
+ "width": 180.21875,
+ "height": 49,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtp7x5m2hBJQ0="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtp7x5m2hGDJM="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtp7x5nGhH7ww="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtp7x5nGhIVB0="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtp7x5nGhJyKw="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtp7yl8WhqOXc=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7yl8Ghogg8="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp7yl8WhrqV4=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7yl8WhqOXc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7yl8Ghogg8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 254,
+ "top": 455,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp7yl8WhqOXc="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp7yl8WhsBE8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7yl8WhqOXc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7yl8Ghogg8="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 239,
+ "top": 451,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp7yl8WhqOXc="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp7yl8WhtXfo=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7yl8WhqOXc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7yl8Ghogg8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 283,
+ "top": 462,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp7yl8WhqOXc="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp6oPzmbK3s8="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtp7x5m2hAoJA="
+ },
+ "lineStyle": 1,
+ "points": "232:607;306:324",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtp7yl8WhrqV4="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp7yl8WhsBE8="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp7yl8WhtXfo="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtp79zmGiF7mo=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp79zlmiDASE="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtp79zmGiG8bU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp79zmGiF7mo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp79zlmiDASE="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp79zmGiH+ig=",
+ "_parent": {
+ "$ref": "AAAAAAFtp79zmGiG8bU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp79zmGiIAJk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp79zmGiG8bU="
+ },
+ "font": "Arial;13;1",
+ "left": 45,
+ "top": 439,
+ "width": 159.64990234375,
+ "height": 13,
+ "text": "FrameCbemmBaseOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp79zmGiJ8gY=",
+ "_parent": {
+ "$ref": "AAAAAAFtp79zmGiG8bU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from cbemm)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp79zmGiKaJw=",
+ "_parent": {
+ "$ref": "AAAAAAFtp79zmGiG8bU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 40,
+ "top": 432,
+ "width": 169.64990234375,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp79zmGiH+ig="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtp79zmGiIAJk="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtp79zmGiJ8gY="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp79zmGiKaJw="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtp79zmGiLLbo=",
+ "_parent": {
+ "$ref": "AAAAAAFtp79zmGiF7mo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp79zlmiDASE="
+ },
+ "font": "Arial;13;0",
+ "left": 40,
+ "top": 457,
+ "width": 169.64990234375,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtp79zmGiM1G4=",
+ "_parent": {
+ "$ref": "AAAAAAFtp79zmGiF7mo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp79zlmiDASE="
+ },
+ "font": "Arial;13;0",
+ "left": 40,
+ "top": 467,
+ "width": 169.64990234375,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtp79zmGiN5qQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtp79zmGiF7mo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp79zlmiDASE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtp79zmWiOgNE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp79zmGiF7mo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp79zlmiDASE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 40,
+ "top": 432,
+ "width": 169.64990234375,
+ "height": 49,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtp79zmGiG8bU="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtp79zmGiLLbo="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtp79zmGiM1G4="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtp79zmGiN5qQ="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtp79zmWiOgNE="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtp7/M5miwi6s=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7/M5miubhM="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp7/M5mix1CQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7/M5miwi6s="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7/M5miubhM="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 189,
+ "top": 360,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp7/M5miwi6s="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp7/M52iy9KY=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7/M5miwi6s="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7/M5miubhM="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 178,
+ "top": 349,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp7/M5miwi6s="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp7/M52izZEM=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7/M5miwi6s="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp7/M5miubhM="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 210,
+ "top": 381,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp7/M5miwi6s="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp6oPzmbK3s8="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtp79zmGiF7mo="
+ },
+ "lineStyle": 1,
+ "points": "148:431;253:324",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtp7/M5mix1CQ="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp7/M52iy9KY="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp7/M52izZEM="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtp8Nqs2kClKE=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8Nqs2kAoMU="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtp8Nqs2kD/5M=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8Nqs2kClKE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8Nqs2kAoMU="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp8Nqs2kEjm0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8Nqs2kD/5M="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -112,
+ "top": 432,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp8NqtGkF7po=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8Nqs2kD/5M="
+ },
+ "font": "Arial;13;1",
+ "left": 333,
+ "top": 615,
+ "width": 148.79541015625,
+ "height": 13,
+ "text": "FrameCbemmEjpOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp8NqtGkGgIQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8Nqs2kD/5M="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -112,
+ "top": 432,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from cbemm)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp8NqtGkHY+Q=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8Nqs2kD/5M="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -112,
+ "top": 432,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 328,
+ "top": 608,
+ "width": 158.79541015625,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp8Nqs2kEjm0="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtp8NqtGkF7po="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtp8NqtGkGgIQ="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp8NqtGkHY+Q="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtp8NqtGkIJzA=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8Nqs2kClKE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8Nqs2kAoMU="
+ },
+ "font": "Arial;13;0",
+ "left": 328,
+ "top": 633,
+ "width": 158.79541015625,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtp8NqtGkJ8ro=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8Nqs2kClKE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8Nqs2kAoMU="
+ },
+ "font": "Arial;13;0",
+ "left": 328,
+ "top": 643,
+ "width": 158.79541015625,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtp8NqtGkKg2k=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8Nqs2kClKE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8Nqs2kAoMU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -56,
+ "top": 216,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtp8NqtGkL1Mk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8Nqs2kClKE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8Nqs2kAoMU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -56,
+ "top": 216,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 328,
+ "top": 608,
+ "width": 158.79541015625,
+ "height": 49,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtp8Nqs2kD/5M="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtp8NqtGkIJzA="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtp8NqtGkJ8ro="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtp8NqtGkKg2k="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtp8NqtGkL1Mk="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtp8SlLmk6qmA=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8SlLWk4uxA="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp8SlLmk74Ts=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8SlLmk6qmA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8SlLWk4uxA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 305,
+ "top": 362,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp8SlLmk6qmA="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp8SlLmk8uAk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8SlLmk6qmA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8SlLWk4uxA="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 290,
+ "top": 361,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp8SlLmk6qmA="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp8SlLmk9sog=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8SlLmk6qmA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8SlLWk4uxA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 334,
+ "top": 363,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp8SlLmk6qmA="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp6oPzmbK3s8="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtp8D8I2jJ6F4="
+ },
+ "lineStyle": 1,
+ "points": "318:415;322:324",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtp8SlLmk74Ts="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp8SlLmk8uAk="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp8SlLmk9sog="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtp8SyxmlLU1s=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8SyxmlJz48="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp8SyxmlMfPI=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8SyxmlLU1s="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8SyxmlJz48="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 356,
+ "top": 462,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp8SyxmlLU1s="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp8SyxmlNiYo=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8SyxmlLU1s="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8SyxmlJz48="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 341,
+ "top": 465,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp8SyxmlLU1s="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp8SyxmlOqNc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8SyxmlLU1s="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8SyxmlJz48="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 385,
+ "top": 455,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp8SyxmlLU1s="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp6oPzmbK3s8="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtp8Nqs2kClKE="
+ },
+ "lineStyle": 1,
+ "points": "401:607;342:324",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtp8SyxmlMfPI="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp8SyxmlNiYo="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp8SyxmlOqNc="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtp9wl7WmZ7F0=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp9wl7WmXmZg="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtp9wl7mmav3Y=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9wl7WmZ7F0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp9wl7WmXmZg="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp9wl7mmbQk0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9wl7mmav3Y="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 528,
+ "top": 96,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp9wl7mmcwxY=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9wl7mmav3Y="
+ },
+ "font": "Arial;13;3",
+ "left": 677,
+ "top": 279,
+ "width": 168.3017578125,
+ "height": 13,
+ "text": "FrameCbemmEvolutionIcc"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp9wl7mmdXME=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9wl7mmav3Y="
+ },
+ "font": "Arial;13;0",
+ "left": 677,
+ "top": 294,
+ "width": 168.3017578125,
+ "height": 13,
+ "text": "(from evoicc)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp9wl7mmeym0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9wl7mmav3Y="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 528,
+ "top": 96,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 672,
+ "top": 272,
+ "width": 178.3017578125,
+ "height": 40,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp9wl7mmbQk0="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtp9wl7mmcwxY="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtp9wl7mmdXME="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp9wl7mmeym0="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtp9wl7mmffik=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9wl7WmZ7F0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp9wl7WmXmZg="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtp99x4WnliDs=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9wl7mmffik="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp99xhGni5qA="
+ },
+ "font": "Arial;13;0",
+ "left": 677,
+ "top": 317,
+ "width": 168.3017578125,
+ "height": 13,
+ "text": "+PAPP: int",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 672,
+ "top": 312,
+ "width": 178.3017578125,
+ "height": 23
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtp9wl7mmgfas=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9wl7WmZ7F0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp9wl7WmXmZg="
+ },
+ "font": "Arial;13;0",
+ "left": 672,
+ "top": 335,
+ "width": 178.3017578125,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtp9wl7mmhv3U=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9wl7WmZ7F0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp9wl7WmXmZg="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 264,
+ "top": 48,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtp9wl72mifHo=",
+ "_parent": {
+ "$ref": "AAAAAAFtp9wl7WmZ7F0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp9wl7WmXmZg="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 264,
+ "top": 48,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 672,
+ "top": 272,
+ "width": 178.3017578125,
+ "height": 73,
+ "showNamespace": true,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtp9wl7mmav3Y="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtp9wl7mmffik="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtp9wl7mmgfas="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtp9wl7mmhv3U="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtp9wl72mifHo="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtp99aumnTtPU=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp99auWnRF3g="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp99au2nUvRk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp99aumnTtPU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp99auWnRF3g="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 543,
+ "top": 287,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp99aumnTtPU="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp99au2nV9YU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp99aumnTtPU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp99auWnRF3g="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 541,
+ "top": 302,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp99aumnTtPU="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp99au2nW7OY=",
+ "_parent": {
+ "$ref": "AAAAAAFtp99aumnTtPU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp99auWnRF3g="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 548,
+ "top": 258,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp99aumnTtPU="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp6oPzmbK3s8="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtp9wl7WmZ7F0="
+ },
+ "lineStyle": 1,
+ "points": "671:296;421:262",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtp99au2nUvRk="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp99au2nV9YU="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp99au2nW7OY="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtp/TBB2pJyb0=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp/TBB2pHROU="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp/TBB2pKexk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/TBB2pJyb0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp/TBB2pHROU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1459,
+ "top": 355,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp/TBB2pJyb0="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp/TBCGpLhig=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/TBB2pJyb0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp/TBB2pHROU="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1449,
+ "top": 366,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp/TBB2pJyb0="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtp/TBCGpMR/o=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/TBB2pJyb0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp/TBB2pHROU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1480,
+ "top": 334,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtp/TBB2pJyb0="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtzDEIoso1kac="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtp/QlPGofspc="
+ },
+ "lineStyle": 1,
+ "points": "1487:367;1454:336",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtp/TBB2pKexk="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp/TBCGpLhig="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp/TBCGpMR/o="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtqA4eXWqbwjI=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqA4eXWqZro4="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqA4eXWqcysA=",
+ "_parent": {
+ "$ref": "AAAAAAFtqA4eXWqbwjI="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqA4eXWqZro4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1370,
+ "top": 339,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqA4eXWqbwjI="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqA4eXWqdkYk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqA4eXWqbwjI="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqA4eXWqZro4="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1356,
+ "top": 333,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqA4eXWqbwjI="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqA4eXWqeC1E=",
+ "_parent": {
+ "$ref": "AAAAAAFtqA4eXWqbwjI="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqA4eXWqZro4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1397,
+ "top": 350,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqA4eXWqbwjI="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtzDEIoso1kac="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtp+NCxGnsAN0="
+ },
+ "lineStyle": 1,
+ "points": "1378:367;1390:336",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtqA4eXWqcysA="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqA4eXWqdkYk="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqA4eXWqeC1E="
+ }
+ },
+ {
+ "_type": "UMLInterfaceView",
+ "_id": "AAAAAAFtqB1bAmrveTk=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtqB1bAmrwIbk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB1bAmrveTk="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqB1bA2rxVmE=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB1bAmrwIbk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -1280,
+ "top": -112,
+ "width": 64.32080078125,
+ "height": 13,
+ "text": "«interface»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqB1bA2ry0+8=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB1bAmrwIbk="
+ },
+ "font": "Arial;13;1",
+ "left": 69,
+ "top": 542,
+ "width": 111.97265625,
+ "height": 13,
+ "text": "FrameBaseOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqB1bA2rzf/s=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB1bAmrwIbk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -1280,
+ "top": -112,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqB1bA2r0raY=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB1bAmrwIbk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -1280,
+ "top": -112,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 64,
+ "top": 535,
+ "width": 121.97265625,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqB1bA2rxVmE="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtqB1bA2ry0+8="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtqB1bA2rzf/s="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqB1bA2r0raY="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtqB1bA2r1rRs=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB1bAmrveTk="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqB4SSGsdJfA=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB1bA2r1rRs="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB4R72sa0FM="
+ },
+ "font": "Arial;13;0",
+ "left": 69,
+ "top": 565,
+ "width": 111.97265625,
+ "height": 13,
+ "text": "+BASE: int",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 64,
+ "top": 560,
+ "width": 121.97265625,
+ "height": 23
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtqB1bA2r2R6M=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB1bAmrveTk="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "subViews": [
+ {
+ "_type": "UMLOperationView",
+ "_id": "AAAAAAFtqB4rAGsjPUk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB1bA2r2R6M="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB4qqmsgfRI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -1280,
+ "top": -112,
+ "width": 80.57080078125,
+ "height": 13,
+ "text": "+Operation1()",
+ "horizontalAlignment": 0
+ }
+ ],
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -640,
+ "top": -56,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtqB1bA2r3olQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB1bAmrveTk="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -640,
+ "top": -56,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtqB1bA2r4UAc=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB1bAmrveTk="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -640,
+ "top": -56,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 64,
+ "top": 512,
+ "width": 121.97265625,
+ "height": 72,
+ "stereotypeDisplay": "icon",
+ "nameCompartment": {
+ "$ref": "AAAAAAFtqB1bAmrwIbk="
+ },
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtqB1bA2r1rRs="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtqB1bA2r2R6M="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtqB1bA2r3olQ="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtqB1bA2r4UAc="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealizationView",
+ "_id": "AAAAAAFtqB/862stEs4=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB/862ss7ng="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqB/87GsuhOM=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB/862stEs4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB/862ss7ng="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 138,
+ "top": 489,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqB/862stEs4="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqB/87GsvOL0=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB/862stEs4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB/862ss7ng="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 153,
+ "top": 489,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqB/862stEs4="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqB/87GswDFA=",
+ "_parent": {
+ "$ref": "AAAAAAFtqB/862stEs4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB/862ss7ng="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 109,
+ "top": 490,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqB/862stEs4="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtqB1bAmrveTk="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtp79zmGiF7mo="
+ },
+ "lineStyle": 1,
+ "points": "124:481;124:512",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtqB/87GsuhOM="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqB/87GsvOL0="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqB/87GswDFA="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtqCBsnWtCP2g=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCBsnGtA03g="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtqCBsnWtDYns=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCBsnWtCP2g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCBsnGtA03g="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqCBsnWtEJgo=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCBsnWtDYns="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 688,
+ "top": 64,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqCBsnWtF7M8=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCBsnWtDYns="
+ },
+ "font": "Arial;13;1",
+ "left": 1093,
+ "top": 599,
+ "width": 184.18359375,
+ "height": 13,
+ "text": "FrameCbetmLongBaseOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqCBsnWtGWJg=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCBsnWtDYns="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 688,
+ "top": 64,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from cbetm)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqCBsnWtHz9A=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCBsnWtDYns="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 688,
+ "top": 64,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1088,
+ "top": 592,
+ "width": 194.18359375,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqCBsnWtEJgo="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtqCBsnWtF7M8="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtqCBsnWtGWJg="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqCBsnWtHz9A="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtqCBsnmtIdJ0=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCBsnWtCP2g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCBsnGtA03g="
+ },
+ "font": "Arial;13;0",
+ "left": 1088,
+ "top": 617,
+ "width": 194.18359375,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtqCBsnmtJzXM=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCBsnWtCP2g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCBsnGtA03g="
+ },
+ "font": "Arial;13;0",
+ "left": 1088,
+ "top": 627,
+ "width": 194.18359375,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtqCBsnmtKO44=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCBsnWtCP2g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCBsnGtA03g="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 344,
+ "top": 32,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtqCBsnmtLwug=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCBsnWtCP2g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCBsnGtA03g="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 344,
+ "top": 32,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 1088,
+ "top": 592,
+ "width": 194.18359375,
+ "height": 45,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtqCBsnWtDYns="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtqCBsnmtIdJ0="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtqCBsnmtJzXM="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtqCBsnmtKO44="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtqCBsnmtLwug="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtqCDWDmttRmM=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCDWDmtrbuA="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqCDWDmtuFBU=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCDWDmttRmM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCDWDmtrbuA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1228,
+ "top": 544,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqCDWDmttRmM="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqCDWD2tvPMw=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCDWDmttRmM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCDWDmtrbuA="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1218,
+ "top": 533,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqCDWDmttRmM="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqCDWD2twL78=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCDWDmttRmM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCDWDmtrbuA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1249,
+ "top": 565,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqCDWDmttRmM="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp+NCxGnsAN0="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtqCBsnWtCP2g="
+ },
+ "lineStyle": 1,
+ "points": "1208:591;1271:531",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtqCDWDmtuFBU="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqCDWD2tvPMw="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqCDWD2twL78="
+ }
+ },
+ {
+ "_type": "UMLInterfaceView",
+ "_id": "AAAAAAFtqCD2nWuVlJU=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtqCD2nWuWD3A=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCD2nWuVlJU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqCD2nWuXJWM=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCD2nWuWD3A="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 170,
+ "top": 137,
+ "width": 64.32080078125,
+ "height": 13,
+ "text": "«interface»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqCD2nWuYAgM=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCD2nWuWD3A="
+ },
+ "font": "Arial;13;1",
+ "left": 1125,
+ "top": 694,
+ "width": 111.97265625,
+ "height": 13,
+ "text": "FrameBaseOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqCD2nWuZh8E=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCD2nWuWD3A="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 170,
+ "top": 137,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqCD2nWuaE98=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCD2nWuWD3A="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 170,
+ "top": 137,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1120,
+ "top": 687,
+ "width": 121.97265625,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqCD2nWuXJWM="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtqCD2nWuYAgM="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtqCD2nWuZh8E="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqCD2nWuaE98="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtqCD2nWubaCk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCD2nWuVlJU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqCD2nWucIV4=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCD2nWubaCk="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB4R72sa0FM="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1125,
+ "top": 717,
+ "width": 111.97265625,
+ "height": 13,
+ "text": "+BASE: int",
+ "horizontalAlignment": 0
+ }
+ ],
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1120,
+ "top": 712,
+ "width": 121.97265625,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtqCD2nWudmkY=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCD2nWuVlJU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "subViews": [
+ {
+ "_type": "UMLOperationView",
+ "_id": "AAAAAAFtqCD2nWuexKs=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCD2nWudmkY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB4qqmsgfRI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 170,
+ "top": 137,
+ "width": 80.57080078125,
+ "height": 13,
+ "text": "+Operation1()",
+ "horizontalAlignment": 0
+ }
+ ],
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 416,
+ "top": 96,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtqCD2nWufMVk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCD2nWuVlJU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 416,
+ "top": 96,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtqCD2nWugLrc=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCD2nWuVlJU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 416,
+ "top": 96,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 1120,
+ "top": 664,
+ "width": 121.97265625,
+ "height": 49,
+ "stereotypeDisplay": "icon",
+ "nameCompartment": {
+ "$ref": "AAAAAAFtqCD2nWuWD3A="
+ },
+ "suppressAttributes": true,
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtqCD2nWubaCk="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtqCD2nWudmkY="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtqCD2nWufMVk="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtqCD2nWugLrc="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealizationView",
+ "_id": "AAAAAAFtqCE2/mu9nfY=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCE2/mu83eg="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqCE2/mu+dSQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCE2/mu9nfY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCE2/mu83eg="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1195,
+ "top": 644,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqCE2/mu9nfY="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqCE2/mu/he0=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCE2/mu9nfY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCE2/mu83eg="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1210,
+ "top": 644,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqCE2/mu9nfY="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqCE2/2vA9ho=",
+ "_parent": {
+ "$ref": "AAAAAAFtqCE2/mu9nfY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCE2/mu83eg="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1166,
+ "top": 643,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqCE2/mu9nfY="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtqCD2nWuVlJU="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtqCBsnWtCP2g="
+ },
+ "lineStyle": 1,
+ "points": "1183:637;1180.9166666666667:664",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtqCE2/mu+dSQ="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqCE2/mu/he0="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqCE2/2vA9ho="
+ }
+ },
+ {
+ "_type": "UMLInterfaceView",
+ "_id": "AAAAAAFtqh5vAGvnG4w=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtqh5vAGvoFc0=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAGvnG4w="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqh5vAGvp+a0=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAGvoFc0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -480,
+ "top": 288,
+ "width": 64.32080078125,
+ "height": 13,
+ "text": "«interface»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqh5vAGvqNO4=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAGvoFc0="
+ },
+ "font": "Arial;13;1",
+ "left": 101,
+ "top": 718,
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "FrameTempoOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqh5vAWvrzq4=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAGvoFc0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -480,
+ "top": 288,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqh5vAWvs+V4=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAGvoFc0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -480,
+ "top": 288,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 96,
+ "top": 711,
+ "width": 247.31982421875,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqh5vAGvp+a0="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtqh5vAGvqNO4="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtqh5vAWvrzq4="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqh5vAWvs+V4="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtqh5vAWvtEGo=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAGvnG4w="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqysCWmwUaus=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAWvtEGo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8Zn9ml9lZc="
+ },
+ "font": "Arial;13;0",
+ "left": 101,
+ "top": 741,
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "+BBRHPJR: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqysR9GwYvnk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAWvtEGo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8ZBDml2QFc="
+ },
+ "font": "Arial;13;0",
+ "left": 101,
+ "top": 756,
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "+BBRHCJR: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqysd02wcXWI=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAWvtEGo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8YdImlvrg4="
+ },
+ "font": "Arial;13;0",
+ "left": 101,
+ "top": 771,
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "+BBRHPJW: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqyst+mwg0SQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAWvtEGo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8YAP2lonbE="
+ },
+ "font": "Arial;13;0",
+ "left": 101,
+ "top": 786,
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "+BBRHCJW: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqytDl2wkEGg=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAWvtEGo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8WQR2lh/Nk="
+ },
+ "font": "Arial;13;0",
+ "left": 101,
+ "top": 801,
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "+BBRHPJB: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqytm4mwoivM=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAWvtEGo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8VDZGlaj3w="
+ },
+ "font": "Arial;13;0",
+ "left": 101,
+ "top": 816,
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "+BBRHCJB: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqyt3UWwsh0M=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAWvtEGo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp70IkWh5Yo0="
+ },
+ "font": "Arial;13;0",
+ "left": 101,
+ "top": 831,
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "+DEMAIN: CouleurDemain[0..1]",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtz5oEV2a+GhQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAWvtEGo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz5oD92a7tUA="
+ },
+ "font": "Arial;13;0",
+ "left": 101,
+ "top": 846,
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "+HHPHC: HHPHC",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtz2VrYmX2mp0=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAWvtEGo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2Vq62XzTKE="
+ },
+ "font": "Arial;13;0",
+ "left": 101,
+ "top": 861,
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "+programmeCircuit1: ProgrammeCircuit1",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtz2W/AGYDn5k=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAWvtEGo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2W+pGYA3Y4="
+ },
+ "font": "Arial;13;0",
+ "left": 101,
+ "top": 876,
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "+programmeCircuit2: ProgrammeCircuit2",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 96,
+ "top": 736,
+ "width": 247.31982421875,
+ "height": 158
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtqh5vAWvuzEQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAGvnG4w="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -240,
+ "top": 144,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtqh5vAWvv4dk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAGvnG4w="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -240,
+ "top": 144,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtqh5vAWvwp4Q=",
+ "_parent": {
+ "$ref": "AAAAAAFtqh5vAGvnG4w="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -240,
+ "top": 144,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 96,
+ "top": 688,
+ "width": 247.31982421875,
+ "height": 207,
+ "stereotypeDisplay": "icon",
+ "nameCompartment": {
+ "$ref": "AAAAAAFtqh5vAGvoFc0="
+ },
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtqh5vAWvtEGo="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtqh5vAWvuzEQ="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtqh5vAWvv4dk="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtqh5vAWvwp4Q="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealizationView",
+ "_id": "AAAAAAFtqyztVmw1ZXg=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqyztVmw0MDQ="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqyztV2w2Jko=",
+ "_parent": {
+ "$ref": "AAAAAAFtqyztVmw1ZXg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqyztVmw0MDQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 237,
+ "top": 666,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqyztVmw1ZXg="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqyztV2w3SkE=",
+ "_parent": {
+ "$ref": "AAAAAAFtqyztVmw1ZXg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqyztVmw0MDQ="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 252,
+ "top": 666,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqyztVmw1ZXg="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqyztV2w4puY=",
+ "_parent": {
+ "$ref": "AAAAAAFtqyztVmw1ZXg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqyztVmw0MDQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 208,
+ "top": 665,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqyztVmw1ZXg="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtqh5vAGvnG4w="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtp7x5m2hAoJA="
+ },
+ "lineStyle": 1,
+ "points": "224:657;222.66666666666666:688",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtqyztV2w2Jko="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqyztV2w3SkE="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqyztV2w4puY="
+ }
+ },
+ {
+ "_type": "UMLInterfaceView",
+ "_id": "AAAAAAFtqy4Y4GyhZVE=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtqy4Y4GyisBA=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4GyhZVE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqy4Y4GyjtaE=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4GyisBA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1604,
+ "top": 427,
+ "width": 64.32080078125,
+ "height": 13,
+ "text": "«interface»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqy4Y4Gykr34=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4GyisBA="
+ },
+ "font": "Arial;13;1",
+ "left": 1261,
+ "top": 742,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "FrameTempoOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqy4Y4GylXXg=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4GyisBA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1604,
+ "top": 427,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqy4Y4GymEsg=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4GyisBA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1604,
+ "top": 427,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1256,
+ "top": 735,
+ "width": 194.6025390625,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqy4Y4GyjtaE="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtqy4Y4Gykr34="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtqy4Y4GylXXg="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqy4Y4GymEsg="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtqy4Y4Gyni7g=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4GyhZVE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqy4Y4GyoWY4=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4Gyni7g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8Zn9ml9lZc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1269,
+ "top": 765,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "+BBRHPJR: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqy4Y4GypYKs=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4Gyni7g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8ZBDml2QFc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1269,
+ "top": 780,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "+BBRHCJR: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqy4Y4Gyq+Wg=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4Gyni7g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8YdImlvrg4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1269,
+ "top": 795,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "+BBRHPJW: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqy4Y4Gyry9o=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4Gyni7g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8YAP2lonbE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1269,
+ "top": 810,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "+BBRHCJW: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqy4Y4GysKNk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4Gyni7g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8WQR2lh/Nk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1269,
+ "top": 825,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "+BBRHPJB: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqy4Y4GytUdI=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4Gyni7g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8VDZGlaj3w="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1269,
+ "top": 840,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "+BBRHCJB: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqy4Y4Gyuk8Y=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4Gyni7g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp70IkWh5Yo0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1269,
+ "top": 855,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "+DEMAIN: CouleurDemain[0..1]",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtz5oEWmbBt4g=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4Gyni7g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz5oD92a7tUA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "width": 107.2626953125,
+ "height": 13,
+ "text": "+HHPHC: HHPHC",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtz2VrZWX5YFY=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4Gyni7g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2Vq62XzTKE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "+programmeCircuit1: ProgrammeCircuit1",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtz2W/BGYG+sQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4Gyni7g="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2W+pGYA3Y4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "+programmeCircuit2: ProgrammeCircuit2",
+ "horizontalAlignment": 0
+ }
+ ],
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1256,
+ "top": 760,
+ "width": 194.6025390625,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtqy4Y4GyvxDQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4GyhZVE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 920,
+ "top": 168,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtqy4Y4Gyw1nY=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4GyhZVE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 920,
+ "top": 168,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtqy4Y4Gyxp2U=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy4Y4GyhZVE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 920,
+ "top": 168,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 1256,
+ "top": 712,
+ "width": 194.6025390625,
+ "height": 49,
+ "stereotypeDisplay": "icon",
+ "nameCompartment": {
+ "$ref": "AAAAAAFtqy4Y4GyisBA="
+ },
+ "suppressAttributes": true,
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtqy4Y4Gyni7g="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtqy4Y4GyvxDQ="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtqy4Y4Gyw1nY="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtqy4Y4Gyxp2U="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtqy9s2W0H12U=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqy9s2G0Fuyg="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtqy9s2W0I/GU=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy9s2W0H12U="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqy9s2G0Fuyg="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqy9s2W0JUD0=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy9s2W0I/GU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 624,
+ "top": 112,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqy9s2W0K9X4=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy9s2W0I/GU="
+ },
+ "font": "Arial;13;1",
+ "left": 1261,
+ "top": 655,
+ "width": 194.75244140625,
+ "height": 13,
+ "text": "FrameCbetmLongTempoOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqy9s2W0LcGc=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy9s2W0I/GU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 624,
+ "top": 112,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from cbetm)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqy9s2W0Mxno=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy9s2W0I/GU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 624,
+ "top": 112,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1256,
+ "top": 648,
+ "width": 204.75244140625,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqy9s2W0JUD0="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtqy9s2W0K9X4="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtqy9s2W0LcGc="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqy9s2W0Mxno="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtqy9s2W0N3f8=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy9s2W0H12U="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqy9s2G0Fuyg="
+ },
+ "font": "Arial;13;0",
+ "left": 1256,
+ "top": 673,
+ "width": 204.75244140625,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtqy9s2W0OmCk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy9s2W0H12U="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqy9s2G0Fuyg="
+ },
+ "font": "Arial;13;0",
+ "left": 1256,
+ "top": 683,
+ "width": 204.75244140625,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtqy9s2W0PYtA=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy9s2W0H12U="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqy9s2G0Fuyg="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 312,
+ "top": 56,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtqy9s2W0Qi5o=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy9s2W0H12U="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqy9s2G0Fuyg="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 312,
+ "top": 56,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 1256,
+ "top": 648,
+ "width": 204.75244140625,
+ "height": 45,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtqy9s2W0I/GU="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtqy9s2W0N3f8="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtqy9s2W0OmCk="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtqy9s2W0PYtA="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtqy9s2W0Qi5o="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtqy/fp20znxc=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqy/fp20x8C8="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqy/fp2000Tg=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy/fp20znxc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqy/fp20x8C8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1337,
+ "top": 599,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqy/fp20znxc="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqy/fqG01xlQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy/fp20znxc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqy/fp20x8C8="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1322,
+ "top": 600,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqy/fp20znxc="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqy/fqG020qc=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy/fp20znxc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqy/fp20x8C8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1366,
+ "top": 596,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqy/fp20znxc="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp+NCxGnsAN0="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtqy9s2W0H12U="
+ },
+ "lineStyle": 1,
+ "points": "1355:647;1349:561",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtqy/fp2000Tg="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqy/fqG01xlQ="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqy/fqG020qc="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealizationView",
+ "_id": "AAAAAAFtqy/yMG1DvOc=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqy/yMG1CIek="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqy/yMG1EWuo=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy/yMG1DvOc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqy/yMG1CIek="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1368,
+ "top": 696,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqy/yMG1DvOc="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqy/yMG1FMP8=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy/yMG1DvOc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqy/yMG1CIek="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1383,
+ "top": 696,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqy/yMG1DvOc="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqy/yMG1Gxt0=",
+ "_parent": {
+ "$ref": "AAAAAAFtqy/yMG1DvOc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqy/yMG1CIek="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1339,
+ "top": 695,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqy/yMG1DvOc="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtqy4Y4GyhZVE="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtqy9s2W0H12U="
+ },
+ "lineStyle": 1,
+ "points": "1355:693;1353.8333333333333:712",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtqy/yMG1EWuo="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqy/yMG1FMP8="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqy/yMG1Gxt0="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtqzB7Wm2AlkE=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzB7Wm1+3+Q="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzB7Wm2Bp1Q=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzB7Wm2AlkE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzB7Wm1+3+Q="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1435,
+ "top": 565,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzB7Wm2AlkE="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzB7W22CH7I=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzB7Wm2AlkE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzB7Wm1+3+Q="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1425,
+ "top": 576,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzB7Wm2AlkE="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzB7W22DZ5c=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzB7Wm2AlkE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzB7Wm1+3+Q="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1456,
+ "top": 542,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzB7Wm2AlkE="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp+NCxGnsAN0="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtqzAvA21WNzQ="
+ },
+ "lineStyle": 1,
+ "points": "1480:591;1413:530",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtqzB7Wm2Bp1Q="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqzB7W22CH7I="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqzB7W22DZ5c="
+ }
+ },
+ {
+ "_type": "UMLInterfaceView",
+ "_id": "AAAAAAFtqzHSE22ZRSA=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtqzHSFG2aq6A=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSE22ZRSA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzHSFG2b2Cc=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSFG2aq6A="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -256,
+ "top": -144,
+ "width": 64.32080078125,
+ "height": 13,
+ "text": "«interface»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzHSFG2c1UE=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSFG2aq6A="
+ },
+ "font": "Arial;13;1",
+ "left": 269,
+ "top": 518,
+ "width": 107.2626953125,
+ "height": 13,
+ "text": "FrameHcOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzHSFG2drbU=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSFG2aq6A="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -256,
+ "top": -144,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzHSFG2eY+k=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSFG2aq6A="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -256,
+ "top": -144,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 264,
+ "top": 511,
+ "width": 117.2626953125,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqzHSFG2b2Cc="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtqzHSFG2c1UE="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtqzHSFG2drbU="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqzHSFG2eY+k="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtqzHSFG2fWmw=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSE22ZRSA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqzOKQW3FMhA=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSFG2fWmw="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8j9/GmLwLk="
+ },
+ "font": "Arial;13;0",
+ "left": 269,
+ "top": 541,
+ "width": 107.2626953125,
+ "height": 13,
+ "text": "+HHPHC: HHPHC",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqzOYHG3JPbQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSFG2fWmw="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8H2a2j51DU="
+ },
+ "font": "Arial;13;0",
+ "left": 269,
+ "top": 556,
+ "width": 107.2626953125,
+ "height": 13,
+ "text": "+HCHP: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqzOkzW3N544=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSFG2fWmw="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8GpK2jy/FI="
+ },
+ "font": "Arial;13;0",
+ "left": 269,
+ "top": 571,
+ "width": 107.2626953125,
+ "height": 13,
+ "text": "+HCHC: int",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 264,
+ "top": 536,
+ "width": 117.2626953125,
+ "height": 53
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtqzHSFG2gHRY=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSE22ZRSA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -128,
+ "top": -72,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtqzHSFG2hmcU=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSE22ZRSA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -128,
+ "top": -72,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtqzHSFG2iliw=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSE22ZRSA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -128,
+ "top": -72,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 264,
+ "top": 488,
+ "width": 117.2626953125,
+ "height": 102,
+ "stereotypeDisplay": "icon",
+ "nameCompartment": {
+ "$ref": "AAAAAAFtqzHSFG2aq6A="
+ },
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtqzHSFG2fWmw="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtqzHSFG2gHRY="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtqzHSFG2hmcU="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtqzHSFG2iliw="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealizationView",
+ "_id": "AAAAAAFtqzQICm3TtZo=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzQICm3S/W4="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzQICm3UHKU=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzQICm3TtZo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzQICm3S/W4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 332,
+ "top": 468,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzQICm3TtZo="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzQIC23VRo4=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzQICm3TtZo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzQICm3S/W4="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 347,
+ "top": 466,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzQICm3TtZo="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzQIC23W7xI=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzQICm3TtZo="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzQICm3S/W4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 303,
+ "top": 471,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzQICm3TtZo="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtqzHSE22ZRSA="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtp8D8I2jJ6F4="
+ },
+ "lineStyle": 1,
+ "points": "318:465;319.25:488",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtqzQICm3UHKU="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqzQIC23VRo4="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqzQIC23W7xI="
+ }
+ },
+ {
+ "_type": "UMLInterfaceView",
+ "_id": "AAAAAAFtqzTBIm3+IMg=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtqzTBIm3/f8w=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTBIm3+IMg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzTBIm4AEQE=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTBIm3/f8w="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1857,
+ "top": 325,
+ "width": 64.32080078125,
+ "height": 13,
+ "text": "«interface»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzTBIm4B2qI=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTBIm3/f8w="
+ },
+ "font": "Arial;13;1",
+ "left": 1453,
+ "top": 686,
+ "width": 107.2626953125,
+ "height": 13,
+ "text": "FrameHcOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzTBI24Cx04=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTBIm3/f8w="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1857,
+ "top": 325,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzTBI24D2us=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTBIm3/f8w="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1857,
+ "top": 325,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1448,
+ "top": 679,
+ "width": 117.2626953125,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqzTBIm4AEQE="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtqzTBIm4B2qI="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtqzTBI24Cx04="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqzTBI24D2us="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtqzTBI24EiKw=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTBIm3+IMg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqzTBI24FDAA=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTBI24EiKw="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8j9/GmLwLk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1469,
+ "top": 709,
+ "width": 107.2626953125,
+ "height": 13,
+ "text": "+HHPHC: HHPHC",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqzTBI24GYrU=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTBI24EiKw="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8H2a2j51DU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1469,
+ "top": 724,
+ "width": 107.2626953125,
+ "height": 13,
+ "text": "+HCHP: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqzTBI24H94I=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTBI24EiKw="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8GpK2jy/FI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1469,
+ "top": 739,
+ "width": 107.2626953125,
+ "height": 13,
+ "text": "+HCHC: int",
+ "horizontalAlignment": 0
+ }
+ ],
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1448,
+ "top": 704,
+ "width": 117.2626953125,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtqzTBI24Ir5I=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTBIm3+IMg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1056,
+ "top": 96,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtqzTBI24J1hE=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTBIm3+IMg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1056,
+ "top": 96,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtqzTBI24Kq98=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTBIm3+IMg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1056,
+ "top": 96,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 1448,
+ "top": 656,
+ "width": 117.2626953125,
+ "height": 49,
+ "stereotypeDisplay": "icon",
+ "nameCompartment": {
+ "$ref": "AAAAAAFtqzTBIm3/f8w="
+ },
+ "suppressAttributes": true,
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtqzTBI24EiKw="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtqzTBI24Ir5I="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtqzTBI24J1hE="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtqzTBI24Kq98="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealizationView",
+ "_id": "AAAAAAFtqzTdxG4o0yc=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzTdxG4nMWw="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzTdxG4pZOc=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTdxG4o0yc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzTdxG4nMWw="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1519,
+ "top": 638,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzTdxG4o0yc="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzTdxG4qC1Y=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTdxG4o0yc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzTdxG4nMWw="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1534,
+ "top": 637,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzTdxG4o0yc="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzTdxG4rvWk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzTdxG4o0yc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzTdxG4nMWw="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1490,
+ "top": 641,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzTdxG4o0yc="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtqzTBIm3+IMg="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtqzAvA21WNzQ="
+ },
+ "lineStyle": 1,
+ "points": "1505:637;1506:656",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtqzTdxG4pZOc="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqzTdxG4qC1Y="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqzTdxG4rvWk="
+ }
+ },
+ {
+ "_type": "UMLInterfaceView",
+ "_id": "AAAAAAFtqzY6D25IlJ4=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtqzY6D25J85Q=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6D25IlJ4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzY6D25K1JQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6D25J85Q="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -144,
+ "top": -64,
+ "width": 64.32080078125,
+ "height": 13,
+ "text": "«interface»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzY6D25LB+w=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6D25J85Q="
+ },
+ "font": "Arial;13;1",
+ "left": 349,
+ "top": 726,
+ "width": 116.7080078125,
+ "height": 13,
+ "text": "FrameEjpOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzY6D25Mb2g=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6D25J85Q="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -144,
+ "top": -64,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzY6D25NWZw=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6D25J85Q="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -144,
+ "top": -64,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 344,
+ "top": 719,
+ "width": 126.7080078125,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqzY6D25K1JQ="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtqzY6D25LB+w="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtqzY6D25Mb2g="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqzY6D25NWZw="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtqzY6D25ODwc=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6D25IlJ4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqzjrx250Nt4=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6D25ODwc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8cgsGmErVk="
+ },
+ "font": "Arial;13;0",
+ "left": 349,
+ "top": 749,
+ "width": 116.7080078125,
+ "height": 13,
+ "text": "+PEJP: Integer",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqzj70W546OY=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6D25ODwc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8REiGkx3/0="
+ },
+ "font": "Arial;13;0",
+ "left": 349,
+ "top": 764,
+ "width": 116.7080078125,
+ "height": 13,
+ "text": "+EJPHPM: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqzkKG258Fcs=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6D25ODwc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8QJJmkqix8="
+ },
+ "font": "Arial;13;0",
+ "left": 349,
+ "top": 779,
+ "width": 116.7080078125,
+ "height": 13,
+ "text": "+EJPHN: int",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 344,
+ "top": 744,
+ "width": 126.7080078125,
+ "height": 53
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtqzY6D25PFcE=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6D25IlJ4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -72,
+ "top": -32,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtqzY6EG5QRwA=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6D25IlJ4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -72,
+ "top": -32,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtqzY6EG5R5r0=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6D25IlJ4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -72,
+ "top": -32,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 344,
+ "top": 696,
+ "width": 126.7080078125,
+ "height": 102,
+ "stereotypeDisplay": "icon",
+ "nameCompartment": {
+ "$ref": "AAAAAAFtqzY6D25J85Q="
+ },
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtqzY6D25ODwc="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtqzY6D25PFcE="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtqzY6EG5QRwA="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtqzY6EG5R5r0="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealizationView",
+ "_id": "AAAAAAFtqzkrzW6AgUs=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzkrzW5/jz4="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzkrzW6BNcY=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzkrzW6AgUs="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzkrzW5/jz4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 420,
+ "top": 669,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzkrzW6AgUs="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzkrzW6CSLQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzkrzW6AgUs="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzkrzW5/jz4="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 435,
+ "top": 669,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzkrzW6AgUs="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzkrzW6DiIU=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzkrzW6AgUs="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzkrzW5/jz4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 391,
+ "top": 670,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzkrzW6AgUs="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtqzY6D25IlJ4="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtp8Nqs2kClKE="
+ },
+ "lineStyle": 1,
+ "points": "406:657;406:696",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtqzkrzW6BNcY="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqzkrzW6CSLQ="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqzkrzW6DiIU="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtp8D8I2jJ6F4=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8D8ImjHu/g="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtp8D8I2jKA3o=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8D8I2jJ6F4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8D8ImjHu/g="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp8D8I2jLRoQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8D8I2jKA3o="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp8D8I2jM3bI=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8D8I2jKA3o="
+ },
+ "font": "Arial;13;1",
+ "left": 245,
+ "top": 423,
+ "width": 145.18994140625,
+ "height": 13,
+ "text": "FrameCbemmHcOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp8D8I2jNCF0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8D8I2jKA3o="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from cbemm)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp8D8I2jOZww=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8D8I2jKA3o="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 240,
+ "top": 416,
+ "width": 155.18994140625,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp8D8I2jLRoQ="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtp8D8I2jM3bI="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtp8D8I2jNCF0="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp8D8I2jOZww="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtp8D8I2jPL9A=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8D8I2jJ6F4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8D8ImjHu/g="
+ },
+ "font": "Arial;13;0",
+ "left": 240,
+ "top": 441,
+ "width": 155.18994140625,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtp8D8I2jQ0ag=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8D8I2jJ6F4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8D8ImjHu/g="
+ },
+ "font": "Arial;13;0",
+ "left": 240,
+ "top": 451,
+ "width": 155.18994140625,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtp8D8I2jRz9E=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8D8I2jJ6F4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8D8ImjHu/g="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtp8D8JGjS7Sk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp8D8I2jJ6F4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8D8ImjHu/g="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 240,
+ "top": 416,
+ "width": 155.18994140625,
+ "height": 49,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtp8D8I2jKA3o="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtp8D8I2jPL9A="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtp8D8I2jQ0ag="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtp8D8I2jRz9E="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtp8D8JGjS7Sk="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtqzsTBG6jaZE=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzsTA26hhHc="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtqzsTBG6kkiw=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzsTBG6jaZE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzsTA26hhHc="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzsTBG6l7p4=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzsTBG6kkiw="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 832,
+ "top": 16,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzsTBG6mC+o=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzsTBG6kkiw="
+ },
+ "font": "Arial;13;1",
+ "left": 1597,
+ "top": 655,
+ "width": 173.3291015625,
+ "height": 13,
+ "text": "FrameCbetmLongEjpOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzsTBG6n0PY=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzsTBG6kkiw="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 832,
+ "top": 16,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from cbetm)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzsTBG6oDSg=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzsTBG6kkiw="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 832,
+ "top": 16,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1592,
+ "top": 648,
+ "width": 183.3291015625,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqzsTBG6l7p4="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtqzsTBG6mC+o="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtqzsTBG6n0PY="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqzsTBG6oDSg="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtqzsTBG6pTbk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzsTBG6jaZE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzsTA26hhHc="
+ },
+ "font": "Arial;13;0",
+ "left": 1592,
+ "top": 673,
+ "width": 183.3291015625,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtqzsTBG6qAdI=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzsTBG6jaZE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzsTA26hhHc="
+ },
+ "font": "Arial;13;0",
+ "left": 1592,
+ "top": 683,
+ "width": 183.3291015625,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtqzsTBW6rHZQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzsTBG6jaZE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzsTA26hhHc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 416,
+ "top": 8,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtqzsTBW6sMgk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzsTBG6jaZE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzsTA26hhHc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 416,
+ "top": 8,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 1592,
+ "top": 648,
+ "width": 183.3291015625,
+ "height": 45,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtqzsTBG6kkiw="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtqzsTBG6pTbk="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtqzsTBG6qAdI="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtqzsTBW6rHZQ="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtqzsTBW6sMgk="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtqztjIW7O/zs=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqztjIW7M6Is="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqztjIW7P4j0=",
+ "_parent": {
+ "$ref": "AAAAAAFtqztjIW7O/zs="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqztjIW7M6Is="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1521,
+ "top": 583,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqztjIW7O/zs="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqztjIW7Qo/0=",
+ "_parent": {
+ "$ref": "AAAAAAFtqztjIW7O/zs="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqztjIW7M6Is="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1513,
+ "top": 596,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqztjIW7O/zs="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqztjIW7RpdU=",
+ "_parent": {
+ "$ref": "AAAAAAFtqztjIW7O/zs="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqztjIW7M6Is="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1536,
+ "top": 558,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqztjIW7O/zs="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp+NCxGnsAN0="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtqzsTBG6jaZE="
+ },
+ "lineStyle": 1,
+ "points": "1645:647;1413:507",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtqztjIW7P4j0="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqztjIW7Qo/0="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqztjIW7RpdU="
+ }
+ },
+ {
+ "_type": "UMLInterfaceView",
+ "_id": "AAAAAAFtqzvMwG76lqM=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtqzvMwG77Vk4=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvMwG76lqM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzvMwG78+/s=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvMwG77Vk4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1755,
+ "top": 136,
+ "width": 64.32080078125,
+ "height": 13,
+ "text": "«interface»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzvMwG79uDk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvMwG77Vk4="
+ },
+ "font": "Arial;13;1",
+ "left": 1629,
+ "top": 758,
+ "width": 116.7080078125,
+ "height": 13,
+ "text": "FrameEjpOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzvMwG7+lm4=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvMwG77Vk4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1755,
+ "top": 136,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzvMwG7/Ock=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvMwG77Vk4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1755,
+ "top": 136,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1624,
+ "top": 751,
+ "width": 126.7080078125,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqzvMwG78+/s="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtqzvMwG79uDk="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtqzvMwG7+lm4="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqzvMwG7/Ock="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtqzvMwG8AGhE=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvMwG76lqM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqzvMwG8BPlY=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvMwG8AGhE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8cgsGmErVk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1645,
+ "top": 781,
+ "width": 116.7080078125,
+ "height": 13,
+ "text": "+PEJP: Integer",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqzvMwG8CPKs=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvMwG8AGhE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8REiGkx3/0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1645,
+ "top": 796,
+ "width": 116.7080078125,
+ "height": 13,
+ "text": "+EJPHPM: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqzvMwG8D7rM=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvMwG8AGhE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8QJJmkqix8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1645,
+ "top": 811,
+ "width": 116.7080078125,
+ "height": 13,
+ "text": "+EJPHN: int",
+ "horizontalAlignment": 0
+ }
+ ],
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1624,
+ "top": 776,
+ "width": 126.7080078125,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtqzvMwG8EX4M=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvMwG76lqM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1208,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtqzvMwW8FATc=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvMwG76lqM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1208,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtqzvMwW8G57Y=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvMwG76lqM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1208,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 1624,
+ "top": 728,
+ "width": 126.7080078125,
+ "height": 49,
+ "stereotypeDisplay": "icon",
+ "nameCompartment": {
+ "$ref": "AAAAAAFtqzvMwG77Vk4="
+ },
+ "suppressAttributes": true,
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtqzvMwG8AGhE="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtqzvMwG8EX4M="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtqzvMwW8FATc="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtqzvMwW8G57Y="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealizationView",
+ "_id": "AAAAAAFtqzvwqG8kjPY=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzvwqG8jcDY="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzvwqG8lHOc=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvwqG8kjPY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzvwqG8jcDY="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1698,
+ "top": 703,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzvwqG8kjPY="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzvwqG8mHlk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvwqG8kjPY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzvwqG8jcDY="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1713,
+ "top": 702,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzvwqG8kjPY="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtqzvwqG8nRc0=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzvwqG8kjPY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzvwqG8jcDY="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1669,
+ "top": 704,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtqzvwqG8kjPY="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtqzvMwG76lqM="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtqzsTBG6jaZE="
+ },
+ "lineStyle": 1,
+ "points": "1684:693;1685.0833333333333:728",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtqzvwqG8lHOc="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqzvwqG8mHlk="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqzvwqG8nRc0="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtq0Gwjm96G4M=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0GwjW94Dvs="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0Gwjm97XUI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Gwjm96G4M="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0GwjW94Dvs="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 674,
+ "top": 358,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0Gwjm96G4M="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0Gwjm98OXQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Gwjm96G4M="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0GwjW94Dvs="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 664,
+ "top": 347,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0Gwjm96G4M="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0Gwjm996j8=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Gwjm96G4M="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0GwjW94Dvs="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 695,
+ "top": 381,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0Gwjm96G4M="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp9wl7WmZ7F0="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtq0Cc029LwW4="
+ },
+ "lineStyle": 1,
+ "points": "651:407;719:345",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0Gwjm97XUI="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0Gwjm98OXQ="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0Gwjm996j8="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtq0MNK3AL75Y=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0MNK3AJmU0="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0MNK3AMDQg=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0MNK3AL75Y="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0MNK3AJmU0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 832,
+ "top": 381,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0MNK3AL75Y="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0MNK3AN+gY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0MNK3AL75Y="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0MNK3AJmU0="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 822,
+ "top": 392,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0MNK3AL75Y="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0MNK3AOLao=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0MNK3AL75Y="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0MNK3AJmU0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 851,
+ "top": 358,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0MNK3AL75Y="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp9wl7WmZ7F0="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtq0HIFm+LrpE="
+ },
+ "lineStyle": 1,
+ "points": "879:407;805:345",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0MNK3AMDQg="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0MNK3AN+gY="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0MNK3AOLao="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtq0MgKHAcBf8=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0MgKHAajV0="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0MgKHAdLQY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0MgKHAcBf8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0MgKHAajV0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 699,
+ "top": 437,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0MgKHAcBf8="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0MgKHAe4nQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0MgKHAcBf8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0MgKHAajV0="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 685,
+ "top": 432,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0MgKHAcBf8="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0MgKHAfYAE=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0MgKHAcBf8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0MgKHAajV0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 728,
+ "top": 446,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0MgKHAcBf8="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp9wl7WmZ7F0="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtq0IV0W+1xy0="
+ },
+ "lineStyle": 1,
+ "points": "680:551;748:345",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0MgKHAdLQY="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0MgKHAe4nQ="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0MgKHAfYAE="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtq0Mv7XAt5F8=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0Mv7HAri14="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0Mv7XAu/R0=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Mv7XAt5F8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0Mv7HAri14="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 824,
+ "top": 472,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0Mv7XAt5F8="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0Mv7XAvRjk=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Mv7XAt5F8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0Mv7HAri14="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 810,
+ "top": 478,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0Mv7XAt5F8="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0Mv7XAw2e0=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Mv7XAt5F8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0Mv7HAri14="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 851,
+ "top": 459,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0Mv7XAt5F8="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp9wl7WmZ7F0="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtq0KI0m/fMG8="
+ },
+ "lineStyle": 1,
+ "points": "898:599;778:345",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0Mv7XAu/R0="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0Mv7XAvRjk="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0Mv7XAw2e0="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtq0Cc029LwW4=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0Cc0m9JUzE="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtq0Cc029MkC4=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Cc029LwW4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0Cc0m9JUzE="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0Cc029NcfI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Cc029MkC4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -64,
+ "top": 48,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0Cc029Od7s=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Cc029MkC4="
+ },
+ "font": "Arial;13;1",
+ "left": 509,
+ "top": 415,
+ "width": 236.93896484375,
+ "height": 13,
+ "text": "FrameCbemmEvolutionIccBaseOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0Cc029PXks=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Cc029MkC4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -64,
+ "top": 48,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from evoicc)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0Cc029QGFI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Cc029MkC4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -64,
+ "top": 48,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 504,
+ "top": 408,
+ "width": 246.93896484375,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0Cc029NcfI="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0Cc029Od7s="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtq0Cc029PXks="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0Cc029QGFI="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtq0Cc029RkYM=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Cc029LwW4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0Cc0m9JUzE="
+ },
+ "font": "Arial;13;0",
+ "left": 504,
+ "top": 433,
+ "width": 246.93896484375,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtq0Cc1G9SovI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Cc029LwW4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0Cc0m9JUzE="
+ },
+ "font": "Arial;13;0",
+ "left": 504,
+ "top": 443,
+ "width": 246.93896484375,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtq0Cc1G9TwX4=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Cc029LwW4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0Cc0m9JUzE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -32,
+ "top": 24,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtq0Cc1G9Uitk=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0Cc029LwW4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0Cc0m9JUzE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -32,
+ "top": 24,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 504,
+ "top": 408,
+ "width": 246.93896484375,
+ "height": 45,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtq0Cc029MkC4="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtq0Cc029RkYM="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtq0Cc1G9SovI="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtq0Cc1G9TwX4="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtq0Cc1G9Uitk="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtq0IV0W+1xy0=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0IV0W+z8KU="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtq0IV0W+2k2Q=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0IV0W+1xy0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0IV0W+z8KU="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0IV0W+3/X4=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0IV0W+2k2Q="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "top": 32,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0IV0W+4XOA=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0IV0W+2k2Q="
+ },
+ "font": "Arial;13;1",
+ "left": 549,
+ "top": 559,
+ "width": 247.5078125,
+ "height": 13,
+ "text": "FrameCbemmEvolutionIccTempoOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0IV0W+5qrU=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0IV0W+2k2Q="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "top": 32,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from evoicc)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0IV0W+6uGw=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0IV0W+2k2Q="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "top": 32,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 544,
+ "top": 552,
+ "width": 257.5078125,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0IV0W+3/X4="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0IV0W+4XOA="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtq0IV0W+5qrU="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0IV0W+6uGw="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtq0IV0W+72BY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0IV0W+1xy0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0IV0W+z8KU="
+ },
+ "font": "Arial;13;0",
+ "left": 544,
+ "top": 577,
+ "width": 257.5078125,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtq0IV0W+81K4=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0IV0W+1xy0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0IV0W+z8KU="
+ },
+ "font": "Arial;13;0",
+ "left": 544,
+ "top": 587,
+ "width": 257.5078125,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtq0IV0W+9pbY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0IV0W+1xy0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0IV0W+z8KU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "top": 16,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtq0IV0W++0DQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0IV0W+1xy0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0IV0W+z8KU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "top": 16,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 544,
+ "top": 552,
+ "width": 257.5078125,
+ "height": 45,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtq0IV0W+2k2Q="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtq0IV0W+72BY="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtq0IV0W+81K4="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtq0IV0W+9pbY="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtq0IV0W++0DQ="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtq0KI0m/fMG8=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0KI0W/dBqA="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtq0KI0m/gtyY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0KI0m/fMG8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0KI0W/dBqA="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0KI02/h74w=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0KI0m/gtyY="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 160,
+ "top": 432,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0KI02/im5Y=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0KI0m/gtyY="
+ },
+ "font": "Arial;13;1",
+ "left": 797,
+ "top": 607,
+ "width": 226.08447265625,
+ "height": 13,
+ "text": "FrameCbemmEvolutionIccEjpOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0KI1G/juAI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0KI0m/gtyY="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 160,
+ "top": 432,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from evoicc)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0KI1G/k/LQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0KI0m/gtyY="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 160,
+ "top": 432,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 792,
+ "top": 600,
+ "width": 236.08447265625,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0KI02/h74w="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0KI02/im5Y="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtq0KI1G/juAI="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0KI1G/k/LQ="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtq0KI1G/lBfU=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0KI0m/fMG8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0KI0W/dBqA="
+ },
+ "font": "Arial;13;0",
+ "left": 792,
+ "top": 625,
+ "width": 236.08447265625,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtq0KI1G/ma6k=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0KI0m/fMG8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0KI0W/dBqA="
+ },
+ "font": "Arial;13;0",
+ "left": 792,
+ "top": 635,
+ "width": 236.08447265625,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtq0KI1G/n4iM=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0KI0m/fMG8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0KI0W/dBqA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 80,
+ "top": 216,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtq0KI1G/ovgY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0KI0m/fMG8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0KI0W/dBqA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 80,
+ "top": 216,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 792,
+ "top": 600,
+ "width": 236.08447265625,
+ "height": 45,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtq0KI0m/gtyY="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtq0KI1G/lBfU="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtq0KI1G/ma6k="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtq0KI1G/n4iM="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtq0KI1G/ovgY="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtq0HIFm+LrpE=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0HIFm+JROc="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtq0HIF2+My8w=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0HIFm+LrpE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0HIFm+JROc="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0HIF2+N6yA=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0HIF2+My8w="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 512,
+ "top": -144,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0HIF2+OJtg=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0HIF2+My8w="
+ },
+ "font": "Arial;13;1",
+ "left": 797,
+ "top": 415,
+ "width": 222.47900390625,
+ "height": 13,
+ "text": "FrameCbemmEvolutionIccHcOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0HIF2+Pjbo=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0HIF2+My8w="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 512,
+ "top": -144,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from evoicc)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0HIF2+QBsE=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0HIF2+My8w="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 512,
+ "top": -144,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 792,
+ "top": 408,
+ "width": 232.47900390625,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0HIF2+N6yA="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0HIF2+OJtg="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtq0HIF2+Pjbo="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0HIF2+QBsE="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtq0HIF2+RW9E=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0HIFm+LrpE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0HIFm+JROc="
+ },
+ "font": "Arial;13;0",
+ "left": 792,
+ "top": 433,
+ "width": 232.47900390625,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtq0HIF2+S5PQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0HIFm+LrpE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0HIFm+JROc="
+ },
+ "font": "Arial;13;0",
+ "left": 792,
+ "top": 443,
+ "width": 232.47900390625,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtq0HIF2+TTzM=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0HIFm+LrpE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0HIFm+JROc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 256,
+ "top": -72,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtq0HIF2+UTcc=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0HIFm+LrpE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0HIFm+JROc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 256,
+ "top": -72,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 792,
+ "top": 408,
+ "width": 232.47900390625,
+ "height": 45,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtq0HIF2+My8w="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtq0HIF2+RW9E="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtq0HIF2+S5PQ="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtq0HIF2+TTzM="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtq0HIF2+UTcc="
+ }
+ },
+ {
+ "_type": "UMLInterfaceView",
+ "_id": "AAAAAAFtq0V7qHBpgZc=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtq0V7qHBqeYY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0V7qHBpgZc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0V7qHBrYZU=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0V7qHBqeYY="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -771,
+ "top": -149,
+ "width": 64.32080078125,
+ "height": 13,
+ "text": "«interface»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0V7qHBswLs=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0V7qHBqeYY="
+ },
+ "font": "Arial;13;1",
+ "left": 565,
+ "top": 502,
+ "width": 111.97265625,
+ "height": 13,
+ "text": "FrameBaseOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0V7qHBtoS8=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0V7qHBqeYY="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -771,
+ "top": -149,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0V7qHBuo10=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0V7qHBqeYY="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -771,
+ "top": -149,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 560,
+ "top": 495,
+ "width": 121.97265625,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0V7qHBrYZU="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0V7qHBswLs="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtq0V7qHBtoS8="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0V7qHBuo10="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtq0V7qHBvUog=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0V7qHBpgZc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq0V7qHBw+V4=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0V7qHBvUog="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB4R72sa0FM="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 565,
+ "top": 525,
+ "width": 111.97265625,
+ "height": 13,
+ "text": "+BASE: int",
+ "horizontalAlignment": 0
+ }
+ ],
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 560,
+ "top": 520,
+ "width": 121.97265625,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtq0V7qHBxeuI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0V7qHBpgZc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "subViews": [
+ {
+ "_type": "UMLOperationView",
+ "_id": "AAAAAAFtq0V7qHByRDs=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0V7qHBxeuI="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB4qqmsgfRI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -771,
+ "top": -149,
+ "width": 80.57080078125,
+ "height": 13,
+ "text": "+Operation1()",
+ "horizontalAlignment": 0
+ }
+ ],
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -144,
+ "top": -96,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtq0V7qHBzwKY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0V7qHBpgZc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -144,
+ "top": -96,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtq0V7qHB07MY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0V7qHBpgZc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqB1bAWrtUJo="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -144,
+ "top": -96,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 560,
+ "top": 472,
+ "width": 121.97265625,
+ "height": 49,
+ "stereotypeDisplay": "icon",
+ "showProperty": false,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtq0V7qHBqeYY="
+ },
+ "suppressAttributes": true,
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtq0V7qHBvUog="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtq0V7qHBxeuI="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtq0V7qHBzwKY="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtq0V7qHB07MY="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealizationView",
+ "_id": "AAAAAAFtq0WZUXCRIJ0=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0WZUXCQVmI="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0WZUXCSDy0=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0WZUXCRIJ0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0WZUXCQVmI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 636,
+ "top": 456,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0WZUXCRIJ0="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0WZUnCTBik=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0WZUXCRIJ0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0WZUXCQVmI="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 651,
+ "top": 456,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0WZUXCRIJ0="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0WZUnCUH80=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0WZUXCRIJ0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0WZUXCQVmI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 607,
+ "top": 455,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0WZUXCRIJ0="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtq0V7qHBpgZc="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtq0Cc029LwW4="
+ },
+ "lineStyle": 1,
+ "points": "624:453;621.8333333333334:472",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0WZUXCSDy0="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0WZUnCTBik="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0WZUnCUH80="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealizationView",
+ "_id": "AAAAAAFtq0X9SnDnqhg=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0X9SXDmr4k="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0X9SnDoK3g=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0X9SnDnqhg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0X9SXDmr4k="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 920,
+ "top": 455,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0X9SnDnqhg="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0X9SnDpsBc=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0X9SnDnqhg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0X9SXDmr4k="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 935,
+ "top": 455,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0X9SnDnqhg="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0X9SnDq4yo=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0X9SnDnqhg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0X9SXDmr4k="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 891,
+ "top": 456,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0X9SnDnqhg="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtq0XeE3C9VVg="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtq0HIFm+LrpE="
+ },
+ "lineStyle": 1,
+ "points": "907:453;906:472",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0X9SnDoK3g="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0X9SnDpsBc="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0X9SnDq4yo="
+ }
+ },
+ {
+ "_type": "UMLInterfaceView",
+ "_id": "AAAAAAFtq0bZjnEf+OE=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtq0bZjnEg0DE=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZjnEf+OE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0bZjnEhqVc=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZjnEg0DE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 728,
+ "top": 466,
+ "width": 64.32080078125,
+ "height": 13,
+ "text": "«interface»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0bZj3Eibsc=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZjnEg0DE="
+ },
+ "font": "Arial;13;1",
+ "left": 581,
+ "top": 662,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "FrameTempoOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0bZj3EjKEw=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZjnEg0DE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 728,
+ "top": 466,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0bZj3EkiiI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZjnEg0DE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 728,
+ "top": 466,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 576,
+ "top": 655,
+ "width": 194.6025390625,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0bZjnEhqVc="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0bZj3Eibsc="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtq0bZj3EjKEw="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0bZj3EkiiI="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtq0bZj3El8wQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZjnEf+OE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq0bZj3EmZFY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZj3El8wQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8Zn9ml9lZc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 581,
+ "top": 685,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "+BBRHPJR: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq0bZj3EnMD4=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZj3El8wQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8ZBDml2QFc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 581,
+ "top": 700,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "+BBRHCJR: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq0bZj3EoY2I=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZj3El8wQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8YdImlvrg4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 581,
+ "top": 715,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "+BBRHPJW: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq0bZj3Ep1mE=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZj3El8wQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8YAP2lonbE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 581,
+ "top": 730,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "+BBRHCJW: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq0bZj3EqZ/E=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZj3El8wQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8WQR2lh/Nk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 581,
+ "top": 745,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "+BBRHPJB: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq0bZj3ErfVY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZj3El8wQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8VDZGlaj3w="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 581,
+ "top": 760,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "+BBRHCJB: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq0bZj3Es0Hc=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZj3El8wQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp70IkWh5Yo0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 581,
+ "top": 775,
+ "width": 184.6025390625,
+ "height": 13,
+ "text": "+DEMAIN: CouleurDemain[0..1]",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtz5oEYmbElhg=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZj3El8wQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz5oD92a7tUA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "width": 107.2626953125,
+ "height": 13,
+ "text": "+HHPHC: HHPHC",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtz2Vrb2X8fwI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZj3El8wQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2Vq62XzTKE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "+programmeCircuit1: ProgrammeCircuit1",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtz2W/DWYJhW8=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZj3El8wQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2W+pGYA3Y4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "width": 237.31982421875,
+ "height": 13,
+ "text": "+programmeCircuit2: ProgrammeCircuit2",
+ "horizontalAlignment": 0
+ }
+ ],
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 576,
+ "top": 680,
+ "width": 194.6025390625,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtq0bZj3Et/s4=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZjnEf+OE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 240,
+ "top": 88,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtq0bZj3Eu2Lo=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZjnEf+OE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 240,
+ "top": 88,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtq0bZj3EvhYQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0bZjnEf+OE="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqh5u/2vlTN0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 240,
+ "top": 88,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 576,
+ "top": 632,
+ "width": 194.6025390625,
+ "height": 49,
+ "stereotypeDisplay": "icon",
+ "nameCompartment": {
+ "$ref": "AAAAAAFtq0bZjnEg0DE="
+ },
+ "suppressAttributes": true,
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtq0bZj3El8wQ="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtq0bZj3Et/s4="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtq0bZj3Eu2Lo="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtq0bZj3EvhYQ="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealizationView",
+ "_id": "AAAAAAFtq0b3jnFRL1c=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0b3jnFQpvk="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0b3jnFStSw=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0b3jnFRL1c="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0b3jnFQpvk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 686,
+ "top": 607,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0b3jnFRL1c="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0b3jnFT9bw=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0b3jnFRL1c="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0b3jnFQpvk="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 701,
+ "top": 607,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0b3jnFRL1c="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0b3jnFU9sc=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0b3jnFRL1c="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0b3jnFQpvk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 657,
+ "top": 608,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0b3jnFRL1c="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtq0bZjnEf+OE="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtq0IV0W+1xy0="
+ },
+ "lineStyle": 1,
+ "points": "672:597;672:632",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0b3jnFStSw="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0b3jnFT9bw="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0b3jnFU9sc="
+ }
+ },
+ {
+ "_type": "UMLInterfaceView",
+ "_id": "AAAAAAFtq0cpZHF8gmw=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtq0cpZHF9ttE=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0cpZHF8gmw="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0cpZHF+6Ts=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0cpZHF9ttE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 901,
+ "top": 209,
+ "width": 64.32080078125,
+ "height": 13,
+ "text": "«interface»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0cpZHF/5pc=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0cpZHF9ttE="
+ },
+ "font": "Arial;13;1",
+ "left": 853,
+ "top": 702,
+ "width": 116.7080078125,
+ "height": 13,
+ "text": "FrameEjpOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0cpZHGAQ1E=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0cpZHF9ttE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 901,
+ "top": 209,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0cpZHGBylc=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0cpZHF9ttE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 901,
+ "top": 209,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 848,
+ "top": 695,
+ "width": 126.7080078125,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0cpZHF+6Ts="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0cpZHF/5pc="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtq0cpZHGAQ1E="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0cpZHGBylc="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtq0cpZHGCoQA=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0cpZHF8gmw="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq0cpZHGDUJs=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0cpZHGCoQA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8cgsGmErVk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 853,
+ "top": 725,
+ "width": 116.7080078125,
+ "height": 13,
+ "text": "+PEJP: Integer",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq0cpZHGEEto=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0cpZHGCoQA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8REiGkx3/0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 853,
+ "top": 740,
+ "width": 116.7080078125,
+ "height": 13,
+ "text": "+EJPHPM: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq0cpZHGFHdY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0cpZHGCoQA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8QJJmkqix8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 853,
+ "top": 755,
+ "width": 116.7080078125,
+ "height": 13,
+ "text": "+EJPHN: int",
+ "horizontalAlignment": 0
+ }
+ ],
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 848,
+ "top": 720,
+ "width": 126.7080078125,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtq0cpZHGGLqo=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0cpZHF8gmw="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 432,
+ "top": -56,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtq0cpZHGHcxs=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0cpZHF8gmw="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 432,
+ "top": -56,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtq0cpZHGIMyg=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0cpZHF8gmw="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 432,
+ "top": -56,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 848,
+ "top": 672,
+ "width": 126.7080078125,
+ "height": 49,
+ "stereotypeDisplay": "icon",
+ "nameCompartment": {
+ "$ref": "AAAAAAFtq0cpZHF9ttE="
+ },
+ "suppressAttributes": true,
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtq0cpZHGCoQA="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtq0cpZHGGLqo="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtq0cpZHGHcxs="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtq0cpZHGIMyg="
+ }
+ },
+ {
+ "_type": "UMLInterfaceRealizationView",
+ "_id": "AAAAAAFtq0dEwnGmIa0=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0dEwnGl0J8="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0dEwnGnE4I=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0dEwnGmIa0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0dEwnGl0J8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 923,
+ "top": 650,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0dEwnGmIa0="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0dEwnGoKms=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0dEwnGmIa0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0dEwnGl0J8="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 938,
+ "top": 649,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0dEwnGmIa0="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq0dEwnGp5gM=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0dEwnGmIa0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq0dEwnGl0J8="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 894,
+ "top": 653,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq0dEwnGmIa0="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtq0cpZHF8gmw="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtq0KI0m/fMG8="
+ },
+ "lineStyle": 1,
+ "points": "909:645;910:672",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0dEwnGnE4I="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0dEwnGoKms="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0dEwnGp5gM="
+ }
+ },
+ {
+ "_type": "UMLInterfaceView",
+ "_id": "AAAAAAFtq0XeE3C9VVg=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtq0XeE3C+Yds=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0XeE3C9VVg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0XeE3C/ZZQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0XeE3C+Yds="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 905,
+ "top": 70,
+ "width": 64.32080078125,
+ "height": 13,
+ "text": "«interface»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0XeE3DATY0=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0XeE3C+Yds="
+ },
+ "font": "Arial;13;1",
+ "left": 853,
+ "top": 502,
+ "width": 107.2626953125,
+ "height": 13,
+ "text": "FrameHcOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0XeE3DBgek=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0XeE3C+Yds="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 905,
+ "top": 70,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq0XeE3DCLO4=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0XeE3C+Yds="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 905,
+ "top": 70,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 848,
+ "top": 495,
+ "width": 117.2626953125,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq0XeE3C/ZZQ="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtq0XeE3DATY0="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtq0XeE3DBgek="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq0XeE3DCLO4="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtq0XeE3DDa0Y=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0XeE3C9VVg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq0XeE3DEEes=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0XeE3DDa0Y="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8j9/GmLwLk="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 853,
+ "top": 525,
+ "width": 107.2626953125,
+ "height": 13,
+ "text": "+HHPHC: HHPHC",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq0XeE3DFRVI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0XeE3DDa0Y="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8H2a2j51DU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 853,
+ "top": 540,
+ "width": 107.2626953125,
+ "height": 13,
+ "text": "+HCHP: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq0XeE3DGJX0=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0XeE3DDa0Y="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp8GpK2jy/FI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 853,
+ "top": 555,
+ "width": 107.2626953125,
+ "height": 13,
+ "text": "+HCHC: int",
+ "horizontalAlignment": 0
+ }
+ ],
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 848,
+ "top": 520,
+ "width": 117.2626953125,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtq0XeE3DHZ6U=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0XeE3C9VVg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 456,
+ "top": -88,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtq0XeE3DIHg8=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0XeE3C9VVg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 456,
+ "top": -88,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtq0XeE3DJWqI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq0XeE3C9VVg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 456,
+ "top": -88,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 848,
+ "top": 472,
+ "width": 117.2626953125,
+ "height": 49,
+ "stereotypeDisplay": "icon",
+ "nameCompartment": {
+ "$ref": "AAAAAAFtq0XeE3C+Yds="
+ },
+ "suppressAttributes": true,
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtq0XeE3DDa0Y="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtq0XeE3DHZ6U="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtq0XeE3DIHg8="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtq0XeE3DJWqI="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtp+NCxGnsAN0=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtp+NCxGnt0d0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxGnsAN0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp+NCxGnuoXY=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxGnt0d0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1056,
+ "top": 112,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp+NCxGnv8Iw=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxGnt0d0="
+ },
+ "font": "Arial;13;3",
+ "left": 1277,
+ "top": 375,
+ "width": 131.35205078125,
+ "height": 13,
+ "text": "FrameCbetmLong"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp+NCxWnwL98=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxGnt0d0="
+ },
+ "font": "Arial;13;0",
+ "left": 1277,
+ "top": 390,
+ "width": 131.35205078125,
+ "height": 13,
+ "text": "(from cbetm)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp+NCxWnxIXo=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxGnt0d0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1056,
+ "top": 112,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1272,
+ "top": 368,
+ "width": 141.35205078125,
+ "height": 40,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp+NCxGnuoXY="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtp+NCxGnv8Iw="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtp+NCxWnwL98="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp+NCxWnxIXo="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtp+NCxWnywuQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxGnsAN0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqCKoYmvQCX0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxWnywuQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCKoBGvN9HE="
+ },
+ "font": "Arial;13;0",
+ "left": 1277,
+ "top": 413,
+ "width": 131.35205078125,
+ "height": 13,
+ "text": "+ISOUSC: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqBDuJWrFfjk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxWnywuQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqBDt0WrC2Qs="
+ },
+ "font": "Arial;13;0",
+ "left": 1277,
+ "top": 428,
+ "width": 131.35205078125,
+ "height": 13,
+ "text": "+IMAX1: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqBEavmrN4QE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxWnywuQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqBEaZmrK9Kg="
+ },
+ "font": "Arial;13;0",
+ "left": 1277,
+ "top": 443,
+ "width": 131.35205078125,
+ "height": 13,
+ "text": "+IMAX2: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqBFJJGrV5X8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxWnywuQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqBFIzWrS/nI="
+ },
+ "font": "Arial;13;0",
+ "left": 1277,
+ "top": 458,
+ "width": 131.35205078125,
+ "height": 13,
+ "text": "+IMAX3: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqzzg5284OGA=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxWnywuQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzzgim81ZX8="
+ },
+ "font": "Arial;13;0",
+ "left": 1277,
+ "top": 473,
+ "width": 131.35205078125,
+ "height": 13,
+ "text": "+PTEC: PTEC",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqBGySmrdZC8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxWnywuQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqBGx82raZl8="
+ },
+ "font": "Arial;13;0",
+ "left": 1277,
+ "top": 488,
+ "width": 131.35205078125,
+ "height": 13,
+ "text": "+PMAX: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqBIDzmrlz8s=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxWnywuQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqBIDemri93Q="
+ },
+ "font": "Arial;13;0",
+ "left": 1277,
+ "top": 503,
+ "width": 131.35205078125,
+ "height": 13,
+ "text": "+PAPP: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqCODuWvg29M=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxWnywuQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqCODYGvdh0s="
+ },
+ "font": "Arial;13;0",
+ "left": 1277,
+ "top": 518,
+ "width": 131.35205078125,
+ "height": 13,
+ "text": "+MOTDETAT: String[6]",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtp/F7eGoZPQc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxWnywuQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp/F7IGoWeqA="
+ },
+ "font": "Arial;13;0",
+ "left": 1277,
+ "top": 533,
+ "width": 131.35205078125,
+ "height": 13,
+ "text": "+PPOT",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1272,
+ "top": 408,
+ "width": 141.35205078125,
+ "height": 143
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtp+NCxWnzlSI=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxGnsAN0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "font": "Arial;13;0",
+ "left": 1272,
+ "top": 551,
+ "width": 141.35205078125,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtp+NCxWn0gNU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxGnsAN0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 528,
+ "top": 56,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtp+NCxWn1gkk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp+NCxGnsAN0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp+NCw2nqotc="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 528,
+ "top": 56,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 1272,
+ "top": 368,
+ "width": 141.35205078125,
+ "height": 193,
+ "showNamespace": true,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtp+NCxGnt0d0="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtp+NCxWnywuQ="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtp+NCxWnzlSI="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtp+NCxWn0gNU="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtp+NCxWn1gkk="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtq1FQ3nHMwVg=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtq1FQ33HNx98=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3nHMwVg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq1FQ33HO3QU=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ33HNx98="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 224,
+ "top": 224,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq1FQ33HPgNo=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ33HNx98="
+ },
+ "font": "Arial;13;1",
+ "left": 1797,
+ "top": 287,
+ "width": 63.2353515625,
+ "height": 13,
+ "text": "FrameCje"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq1FQ33HQyBw=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ33HNx98="
+ },
+ "font": "Arial;13;0",
+ "left": 1797,
+ "top": 302,
+ "width": 63.2353515625,
+ "height": 13,
+ "text": "(from cje)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq1FQ33HRGpU=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ33HNx98="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 224,
+ "top": 224,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1792,
+ "top": 280,
+ "width": 73.2353515625,
+ "height": 40,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq1FQ33HO3QU="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtq1FQ33HPgNo="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtq1FQ33HQyBw="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq1FQ33HRGpU="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtq1FQ33HSam0=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3nHMwVg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq1N50nINYwM=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ33HSam0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1N5Z3IKpa8="
+ },
+ "font": "Arial;13;0",
+ "left": 1797,
+ "top": 325,
+ "width": 63.2353515625,
+ "height": 13,
+ "text": "+JAUNE",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq1O7rnIUo7M=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ33HSam0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1O7Q3IRd1s="
+ },
+ "font": "Arial;13;0",
+ "left": 1797,
+ "top": 340,
+ "width": 63.2353515625,
+ "height": 13,
+ "text": "+ENERG",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq1PU2nIbKSQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ33HSam0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1PUS3IYA8A="
+ },
+ "font": "Arial;13;0",
+ "left": 1797,
+ "top": 355,
+ "width": 63.2353515625,
+ "height": 13,
+ "text": "+PERCC",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq1P3hHIiv1I=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ33HSam0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1P2/XIfih4="
+ },
+ "font": "Arial;13;0",
+ "left": 1797,
+ "top": 370,
+ "width": 63.2353515625,
+ "height": 13,
+ "text": "+PMAXC",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq1QSe3IpxsY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ33HSam0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1QSBHIm0NM="
+ },
+ "font": "Arial;13;0",
+ "left": 1797,
+ "top": 385,
+ "width": 63.2353515625,
+ "height": 13,
+ "text": "+TDEPA",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq1QtJ3IwkPc=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ33HSam0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1QsnXItzZA="
+ },
+ "font": "Arial;13;0",
+ "left": 1797,
+ "top": 400,
+ "width": 63.2353515625,
+ "height": 13,
+ "text": "+PERCP",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq1RUs3I3kqU=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ33HSam0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1RUHXI0c2w="
+ },
+ "font": "Arial;13;0",
+ "left": 1797,
+ "top": 415,
+ "width": 63.2353515625,
+ "height": 13,
+ "text": "+PMAXP",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq1RwTXI+RCg=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ33HSam0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1RvpXI7TTM="
+ },
+ "font": "Arial;13;0",
+ "left": 1797,
+ "top": 430,
+ "width": 63.2353515625,
+ "height": 13,
+ "text": "+PSOUSC",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq1SKlHJFCKY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ33HSam0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1SKPXJCLQU="
+ },
+ "font": "Arial;13;0",
+ "left": 1797,
+ "top": 445,
+ "width": 63.2353515625,
+ "height": 13,
+ "text": "+PSOUSP",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq1Sm6HJMFBI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ33HSam0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1Smc3JJNpk="
+ },
+ "font": "Arial;13;0",
+ "left": 1797,
+ "top": 460,
+ "width": 63.2353515625,
+ "height": 13,
+ "text": "+FCOU",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1792,
+ "top": 320,
+ "width": 73.2353515625,
+ "height": 158
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtq1FQ33HTe9A=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3nHMwVg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "font": "Arial;13;0",
+ "left": 1792,
+ "top": 478,
+ "width": 73.2353515625,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtq1FQ33HUpxw=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3nHMwVg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 112,
+ "top": 112,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtq1FQ33HVoVw=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3nHMwVg="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 112,
+ "top": 112,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 1792,
+ "top": 280,
+ "width": 73.2353515625,
+ "height": 208,
+ "showNamespace": true,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtq1FQ33HNx98="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtq1FQ33HSam0="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtq1FQ33HTe9A="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtq1FQ33HUpxw="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtq1FQ33HVoVw="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtq1HaonH7e/c=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1HaonH5O3g="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq1HaonH8y2E=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1HaonH7e/c="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1HaonH5O3g="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1426,
+ "top": 242,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq1HaonH7e/c="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq1Hao3H9kHw=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1HaonH7e/c="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1HaonH5O3g="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1421,
+ "top": 256,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq1HaonH7e/c="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq1Hao3H+jaw=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1HaonH7e/c="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1HaonH5O3g="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1437,
+ "top": 213,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq1HaonH7e/c="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp3MR32Z9keU="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtq1FQ3nHMwVg="
+ },
+ "lineStyle": 1,
+ "points": "1791:369;1073:100",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtq1HaonH8y2E="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq1Hao3H9kHw="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq1Hao3H+jaw="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtq1VYFHJTQuA=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1VYFHJRoJM="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtq1VYFHJUqmI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1VYFHJTQuA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1VYFHJRoJM="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq1VYFHJVcnI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1VYFHJUqmI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 96,
+ "top": 16,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq1VYFHJWBzE=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1VYFHJUqmI="
+ },
+ "font": "Arial;13;3",
+ "left": 933,
+ "top": 159,
+ "width": 108.01806640625,
+ "height": 13,
+ "text": "FrameAdco"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq1VYFHJXl0o=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1VYFHJUqmI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 96,
+ "top": 16,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq1VYFHJY/JU=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1VYFHJUqmI="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 96,
+ "top": 16,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 928,
+ "top": 152,
+ "width": 118.01806640625,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq1VYFHJVcnI="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtq1VYFHJWBzE="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtq1VYFHJXl0o="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq1VYFHJY/JU="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtq1VYFHJZHK8=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1VYFHJTQuA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1VYFHJRoJM="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtq1WWAnJ8BAs=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1VYFHJZHK8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp3PC5Waq7Gs="
+ },
+ "font": "Arial;13;0",
+ "left": 933,
+ "top": 182,
+ "width": 108.01806640625,
+ "height": 13,
+ "text": "+ADCO: String[12]",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 928,
+ "top": 177,
+ "width": 118.01806640625,
+ "height": 23
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtq1VYFXJaP0c=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1VYFHJTQuA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1VYFHJRoJM="
+ },
+ "font": "Arial;13;0",
+ "left": 928,
+ "top": 200,
+ "width": 118.01806640625,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtq1VYFXJb5jM=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1VYFHJTQuA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1VYFHJRoJM="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 48,
+ "top": 8,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtq1VYFXJc/Gw=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1VYFHJTQuA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1VYFHJRoJM="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 48,
+ "top": 8,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 928,
+ "top": 152,
+ "width": 118.01806640625,
+ "height": 58,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtq1VYFHJUqmI="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtq1VYFHJZHK8="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtq1VYFXJaP0c="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtq1VYFXJb5jM="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtq1VYFXJc/Gw="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtq1W6LHKBx0Y=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1W6LHJ/P1U="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq1W6LHKCE0E=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1W6LHKBx0Y="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1W6LHJ/P1U="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 972,
+ "top": 121,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq1W6LHKBx0Y="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq1W6LHKDUbs=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1W6LHKBx0Y="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1W6LHJ/P1U="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 957,
+ "top": 121,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq1W6LHKBx0Y="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq1W6LXKE34Y=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1W6LHKBx0Y="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1W6LHJ/P1U="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1001,
+ "top": 122,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq1W6LHKBx0Y="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp3MR32Z9keU="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtq1VYFHJTQuA="
+ },
+ "lineStyle": 1,
+ "points": "987:151;987:105",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtq1W6LHKCE0E="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq1W6LHKDUbs="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq1W6LXKE34Y="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtp/QlPGofspc=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp/QlO2odCkA="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtp/QlPGogefE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlPGofspc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp/QlO2odCkA="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp/QlPGohDe0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlPGogefE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1136,
+ "top": 112,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp/QlPGoiwLc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlPGogefE="
+ },
+ "font": "Arial;13;1",
+ "left": 1485,
+ "top": 375,
+ "width": 113.4072265625,
+ "height": 13,
+ "text": "FrameCbetmShort"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp/QlPGojRRs=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlPGogefE="
+ },
+ "font": "Arial;13;0",
+ "left": 1485,
+ "top": 390,
+ "width": 113.4072265625,
+ "height": 13,
+ "text": "(from cbetm)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtp/QlPGok6mE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlPGogefE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1136,
+ "top": 112,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1480,
+ "top": 368,
+ "width": 123.4072265625,
+ "height": 40,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtp/QlPGohDe0="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtp/QlPGoiwLc="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtp/QlPGojRRs="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtp/QlPGok6mE="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtp/QlPGolcD0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlPGofspc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp/QlO2odCkA="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqAgNYWpbAkk=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlPGolcD0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqAgM5GpYyfU="
+ },
+ "font": "Arial;13;0",
+ "left": 1485,
+ "top": 413,
+ "width": 113.4072265625,
+ "height": 13,
+ "text": "+ADIR1: int[0..1]",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqAgg3mpi7VQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlPGolcD0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqAggUGpfGwY="
+ },
+ "font": "Arial;13;0",
+ "left": 1485,
+ "top": 428,
+ "width": 113.4072265625,
+ "height": 13,
+ "text": "+ADIR2: int[0..1]",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtqAy88mqIVlI=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlPGolcD0="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqAy8l2qF/UU="
+ },
+ "font": "Arial;13;0",
+ "left": 1485,
+ "top": 443,
+ "width": 113.4072265625,
+ "height": 13,
+ "text": "+ADIR3: int[0..1]",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1480,
+ "top": 408,
+ "width": 123.4072265625,
+ "height": 53
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtp/QlPGomuAA=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlPGofspc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp/QlO2odCkA="
+ },
+ "font": "Arial;13;0",
+ "left": 1480,
+ "top": 461,
+ "width": 123.4072265625,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtp/QlPWonc/0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlPGofspc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp/QlO2odCkA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 568,
+ "top": 56,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtp/QlPWoozjc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp/QlPGofspc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtp/QlO2odCkA="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 568,
+ "top": 56,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 1480,
+ "top": 368,
+ "width": 123.4072265625,
+ "height": 103,
+ "showNamespace": true,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtp/QlPGogefE="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtp/QlPGolcD0="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtp/QlPGomuAA="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtp/QlPWonc/0="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtp/QlPWoozjc="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtq1smX3LX0jM=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1smX3LVQwU="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq1smX3LYITw=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1smX3LX0jM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1smX3LVQwU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1512,
+ "top": 201,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq1smX3LX0jM="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq1smYHLZ/co=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1smX3LX0jM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1smX3LVQwU="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1509,
+ "top": 216,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq1smX3LX0jM="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq1smYHLaeB4=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1smX3LX0jM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1smX3LVQwU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1519,
+ "top": 172,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq1smX3LX0jM="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp3MR32Z9keU="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtq1l/HnKnp0k="
+ },
+ "lineStyle": 1,
+ "points": "1959:299;1073:88",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtq1smX3LYITw="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq1smYHLZ/co="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq1smYHLaeB4="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtq14WjnLvJ+Y=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq13JPHLqe08="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtq14WjnLwCao=",
+ "_parent": {
+ "$ref": "AAAAAAFtq14WjnLvJ+Y="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq13JPHLqe08="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq14WjnLxOQI=",
+ "_parent": {
+ "$ref": "AAAAAAFtq14WjnLwCao="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq14Wj3LyBm4=",
+ "_parent": {
+ "$ref": "AAAAAAFtq14WjnLwCao="
+ },
+ "font": "Arial;13;1",
+ "left": 2116,
+ "top": 287,
+ "width": 72.26171875,
+ "height": 13,
+ "text": "FrameIce4q"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq14Wj3LzxNM=",
+ "_parent": {
+ "$ref": "AAAAAAFtq14WjnLwCao="
+ },
+ "font": "Arial;13;0",
+ "left": 2116,
+ "top": 302,
+ "width": 72.26171875,
+ "height": 13,
+ "text": "(from ice4q)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq14Wj3L0jWw=",
+ "_parent": {
+ "$ref": "AAAAAAFtq14WjnLwCao="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 2111,
+ "top": 280,
+ "width": 82.26171875,
+ "height": 40,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq14WjnLxOQI="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtq14Wj3LyBm4="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtq14Wj3LzxNM="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq14Wj3L0jWw="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtq14Wj3L1SF8=",
+ "_parent": {
+ "$ref": "AAAAAAFtq14WjnLvJ+Y="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq13JPHLqe08="
+ },
+ "font": "Arial;13;0",
+ "left": 2111,
+ "top": 320,
+ "width": 82.26171875,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtq14Wj3L2qQY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq14WjnLvJ+Y="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq13JPHLqe08="
+ },
+ "font": "Arial;13;0",
+ "left": 2111,
+ "top": 330,
+ "width": 82.26171875,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtq14Wj3L3Xmw=",
+ "_parent": {
+ "$ref": "AAAAAAFtq14WjnLvJ+Y="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq13JPHLqe08="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtq14Wj3L4Av8=",
+ "_parent": {
+ "$ref": "AAAAAAFtq14WjnLvJ+Y="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq13JPHLqe08="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 2111,
+ "top": 280,
+ "width": 82.26171875,
+ "height": 60,
+ "showNamespace": true,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtq14WjnLwCao="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtq14Wj3L1SF8="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtq14Wj3L2qQY="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtq14Wj3L3Xmw="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtq14Wj3L4Av8="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtq15hIHMY1gM=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq15hIHMWsnY="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq15hIHMZpHk=",
+ "_parent": {
+ "$ref": "AAAAAAFtq15hIHMY1gM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq15hIHMWsnY="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1587,
+ "top": 201,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq15hIHMY1gM="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq15hIXMaapY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq15hIHMY1gM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq15hIHMWsnY="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1584,
+ "top": 216,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq15hIHMY1gM="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq15hIXMbjm4=",
+ "_parent": {
+ "$ref": "AAAAAAFtq15hIHMY1gM="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq15hIHMWsnY="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1594,
+ "top": 172,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq15hIHMY1gM="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp3MR32Z9keU="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtq14WjnLvJ+Y="
+ },
+ "lineStyle": 1,
+ "points": "2110:301;1073:86",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtq15hIHMZpHk="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq15hIXMaapY="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq15hIXMbjm4="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtq1l/HnKnp0k=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1l/HXKlq0o="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtq1l/HnKoiJg=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1l/HnKnp0k="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1l/HXKlq0o="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq1l/HnKpenM=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1l/HnKoiJg="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -80,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq1l/H3KqdyY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1l/HnKoiJg="
+ },
+ "font": "Arial;13;1",
+ "left": 1965,
+ "top": 287,
+ "width": 72.26171875,
+ "height": 13,
+ "text": "FrameIce2q"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq1l/H3Krc/8=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1l/HnKoiJg="
+ },
+ "font": "Arial;13;0",
+ "left": 1965,
+ "top": 302,
+ "width": 72.26171875,
+ "height": 13,
+ "text": "(from ice2q)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq1l/H3KsUac=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1l/HnKoiJg="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -80,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1960,
+ "top": 280,
+ "width": 82.26171875,
+ "height": 40,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq1l/HnKpenM="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtq1l/H3KqdyY="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtq1l/H3Krc/8="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq1l/H3KsUac="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtq1l/H3KtCzk=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1l/HnKnp0k="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1l/HXKlq0o="
+ },
+ "font": "Arial;13;0",
+ "left": 1960,
+ "top": 320,
+ "width": 82.26171875,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtq1l/IXKuo+k=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1l/HnKnp0k="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1l/HXKlq0o="
+ },
+ "font": "Arial;13;0",
+ "left": 1960,
+ "top": 330,
+ "width": 82.26171875,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtq1l/IXKvW1g=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1l/HnKnp0k="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1l/HXKlq0o="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -40,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtq1l/IXKwp+U=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1l/HnKnp0k="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq1l/HXKlq0o="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -40,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 1960,
+ "top": 280,
+ "width": 82.26171875,
+ "height": 60,
+ "showNamespace": true,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtq1l/HnKoiJg="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtq1l/H3KtCzk="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtq1l/IXKuo+k="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtq1l/IXKvW1g="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtq1l/IXKwp+U="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtq2FFxXM3mjQ=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq2Eck3MyGC0="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtq2FFxXM4pko=",
+ "_parent": {
+ "$ref": "AAAAAAFtq2FFxXM3mjQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq2Eck3MyGC0="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq2FFxXM5lc0=",
+ "_parent": {
+ "$ref": "AAAAAAFtq2FFxXM4pko="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -72,
+ "top": -74,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq2FFxXM60x8=",
+ "_parent": {
+ "$ref": "AAAAAAFtq2FFxXM4pko="
+ },
+ "font": "Arial;13;1",
+ "left": 2261,
+ "top": 287,
+ "width": 90.32080078125,
+ "height": 13,
+ "text": "FramePmePmi"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq2FFxXM7X2I=",
+ "_parent": {
+ "$ref": "AAAAAAFtq2FFxXM4pko="
+ },
+ "font": "Arial;13;0",
+ "left": 2261,
+ "top": 302,
+ "width": 90.32080078125,
+ "height": 13,
+ "text": "(from pmepmi)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtq2FFxXM87B4=",
+ "_parent": {
+ "$ref": "AAAAAAFtq2FFxXM4pko="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -72,
+ "top": -74,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 2256,
+ "top": 280,
+ "width": 100.32080078125,
+ "height": 40,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq2FFxXM5lc0="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtq2FFxXM60x8="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtq2FFxXM7X2I="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq2FFxXM87B4="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtq2FFxnM9+MA=",
+ "_parent": {
+ "$ref": "AAAAAAFtq2FFxXM3mjQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq2Eck3MyGC0="
+ },
+ "font": "Arial;13;0",
+ "left": 2256,
+ "top": 320,
+ "width": 100.32080078125,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtq2FFxnM+K1o=",
+ "_parent": {
+ "$ref": "AAAAAAFtq2FFxXM3mjQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq2Eck3MyGC0="
+ },
+ "font": "Arial;13;0",
+ "left": 2256,
+ "top": 330,
+ "width": 100.32080078125,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtq2FFx3M/mD4=",
+ "_parent": {
+ "$ref": "AAAAAAFtq2FFxXM3mjQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq2Eck3MyGC0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -36,
+ "top": -37,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtq2FFx3NAF1M=",
+ "_parent": {
+ "$ref": "AAAAAAFtq2FFxXM3mjQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq2Eck3MyGC0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -36,
+ "top": -37,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 2256,
+ "top": 280,
+ "width": 100.32080078125,
+ "height": 60,
+ "showNamespace": true,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtq2FFxXM4pko="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtq2FFxnM9+MA="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtq2FFxnM+K1o="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtq2FFx3M/mD4="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtq2FFx3NAF1M="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtq2GFZXNgtbU=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq2GFZHNeUH0="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq2GFZXNh95Y=",
+ "_parent": {
+ "$ref": "AAAAAAFtq2GFZXNgtbU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq2GFZHNeUH0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1661,
+ "top": 200,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq2GFZXNgtbU="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq2GFZXNiYDA=",
+ "_parent": {
+ "$ref": "AAAAAAFtq2GFZXNgtbU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq2GFZHNeUH0="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1658,
+ "top": 215,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq2GFZXNgtbU="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtq2GFZXNjKJk=",
+ "_parent": {
+ "$ref": "AAAAAAFtq2GFZXNgtbU="
+ },
+ "model": {
+ "$ref": "AAAAAAFtq2GFZHNeUH0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1666,
+ "top": 171,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtq2GFZXNgtbU="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtp3MR32Z9keU="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtq2FFxXM3mjQ="
+ },
+ "lineStyle": 1,
+ "points": "2255:300;1073:84",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtq2GFZXNh95Y="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtq2GFZXNiYDA="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtq2GFZXNjKJk="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtzDEIoso1kac=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtzDEIn8ozAoE="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtzDEIoso2330=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIoso1kac="
+ },
+ "model": {
+ "$ref": "AAAAAAFtzDEIn8ozAoE="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtzDEIoso3hlM=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIoso2330="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 224,
+ "top": -256,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtzDEIoso4TU4=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIoso2330="
+ },
+ "font": "Arial;13;3",
+ "left": 1365,
+ "top": 255,
+ "width": 86.6962890625,
+ "height": 13,
+ "text": "FrameCbetm"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtzDEIoso5RVE=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIoso2330="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 224,
+ "top": -256,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from cbetm)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtzDEIoso6iXM=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIoso2330="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 224,
+ "top": -256,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1360,
+ "top": 248,
+ "width": 96.6962890625,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtzDEIoso3hlM="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtzDEIoso4TU4="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtzDEIoso5RVE="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtzDEIoso6iXM="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtzDEIo8o7GkY=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIoso1kac="
+ },
+ "model": {
+ "$ref": "AAAAAAFtzDEIn8ozAoE="
+ },
+ "subViews": [
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtzDJg3spgw6I=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIo8o7GkY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqBBJWWqqC6A="
+ },
+ "font": "Arial;13;0",
+ "left": 1365,
+ "top": 278,
+ "width": 86.6962890625,
+ "height": 13,
+ "text": "+IINST1: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtzDKBgcpkDw4=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIo8o7GkY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqBB3XmqyFjQ="
+ },
+ "font": "Arial;13;0",
+ "left": 1365,
+ "top": 293,
+ "width": 86.6962890625,
+ "height": 13,
+ "text": "+IINST2: int",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLAttributeView",
+ "_id": "AAAAAAFtzDKd48po83w=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIo8o7GkY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqBCafGq6Q9U="
+ },
+ "font": "Arial;13;0",
+ "left": 1365,
+ "top": 308,
+ "width": 86.6962890625,
+ "height": 13,
+ "text": "+IINST3: int",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1360,
+ "top": 273,
+ "width": 96.6962890625,
+ "height": 53
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtzDEIo8o8itY=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIoso1kac="
+ },
+ "model": {
+ "$ref": "AAAAAAFtzDEIn8ozAoE="
+ },
+ "font": "Arial;13;0",
+ "left": 1360,
+ "top": 326,
+ "width": 96.6962890625,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtzDEIo8o9hNI=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIoso1kac="
+ },
+ "model": {
+ "$ref": "AAAAAAFtzDEIn8ozAoE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 112,
+ "top": -128,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtzDEIo8o+Fr8=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDEIoso1kac="
+ },
+ "model": {
+ "$ref": "AAAAAAFtzDEIn8ozAoE="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 112,
+ "top": -128,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 1360,
+ "top": 248,
+ "width": 96.6962890625,
+ "height": 88,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtzDEIoso2330="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtzDEIo8o7GkY="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtzDEIo8o8itY="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtzDEIo8o9hNI="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtzDEIo8o+Fr8="
+ }
+ },
+ {
+ "_type": "UMLGeneralizationView",
+ "_id": "AAAAAAFtzDPF78qFxu8=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtzDPF78qDkU0="
+ },
+ "subViews": [
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtzDPF8MqG2SA=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDPF78qFxu8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtzDPF78qDkU0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1198,
+ "top": 245,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtzDPF78qFxu8="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtzDPF8MqHd9c=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDPF78qFxu8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtzDPF78qDkU0="
+ },
+ "visible": null,
+ "font": "Arial;13;0",
+ "left": 1194,
+ "top": 260,
+ "height": 13,
+ "alpha": 1.5707963267948966,
+ "distance": 30,
+ "hostEdge": {
+ "$ref": "AAAAAAFtzDPF78qFxu8="
+ },
+ "edgePosition": 1
+ },
+ {
+ "_type": "EdgeLabelView",
+ "_id": "AAAAAAFtzDPF8MqI6MY=",
+ "_parent": {
+ "$ref": "AAAAAAFtzDPF78qFxu8="
+ },
+ "model": {
+ "$ref": "AAAAAAFtzDPF78qDkU0="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 1205,
+ "top": 216,
+ "height": 13,
+ "alpha": -1.5707963267948966,
+ "distance": 15,
+ "hostEdge": {
+ "$ref": "AAAAAAFtzDPF78qFxu8="
+ },
+ "edgePosition": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "head": {
+ "$ref": "AAAAAAFtq1VYFHJTQuA="
+ },
+ "tail": {
+ "$ref": "AAAAAAFtzDEIoso1kac="
+ },
+ "lineStyle": 1,
+ "points": "1359:278;1046:196",
+ "showVisibility": true,
+ "nameLabel": {
+ "$ref": "AAAAAAFtzDPF8MqG2SA="
+ },
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtzDPF8MqHd9c="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtzDPF8MqI6MY="
+ }
+ },
+ {
+ "_type": "UMLClassView",
+ "_id": "AAAAAAFtqzAvA21WNzQ=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzAvA21UVZ4="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtqzAvA21Xa14=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzAvA21WNzQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzAvA21UVZ4="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzAvA21YVQk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzAvA21Xa14="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 912,
+ "top": 16,
+ "height": 13
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzAvA21ZOpg=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzAvA21Xa14="
+ },
+ "font": "Arial;13;1",
+ "left": 1421,
+ "top": 599,
+ "width": 169.7236328125,
+ "height": 13,
+ "text": "FrameCbetmLongHcOption"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzAvBG1adkU=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzAvA21Xa14="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 912,
+ "top": 16,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from cbetm)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtqzAvBG1bxHM=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzAvA21Xa14="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 912,
+ "top": 16,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 1416,
+ "top": 592,
+ "width": 179.7236328125,
+ "height": 25,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtqzAvA21YVQk="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtqzAvA21ZOpg="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtqzAvBG1adkU="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtqzAvBG1bxHM="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtqzAvBG1c/lw=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzAvA21WNzQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzAvA21UVZ4="
+ },
+ "font": "Arial;13;0",
+ "left": 1416,
+ "top": 617,
+ "width": 179.7236328125,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtqzAvBG1d7zI=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzAvA21WNzQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzAvA21UVZ4="
+ },
+ "font": "Arial;13;0",
+ "left": 1416,
+ "top": 627,
+ "width": 179.7236328125,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtqzAvBG1e9h4=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzAvA21WNzQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzAvA21UVZ4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 456,
+ "top": 8,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtqzAvBG1fEsA=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzAvA21WNzQ="
+ },
+ "model": {
+ "$ref": "AAAAAAFtqzAvA21UVZ4="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": 456,
+ "top": 8,
+ "width": 10,
+ "height": 10
+ }
+ ],
+ "font": "Arial;13;0",
+ "showShadow": false,
+ "containerChangeable": true,
+ "left": 1416,
+ "top": 592,
+ "width": 179.7236328125,
+ "height": 45,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtqzAvA21Xa14="
+ },
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtqzAvBG1c/lw="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtqzAvBG1d7zI="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtqzAvBG1e9h4="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtqzAvBG1fEsA="
+ }
+ },
+ {
+ "_type": "UMLEnumerationView",
+ "_id": "AAAAAAFtz2ZRuGYP/SY=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2ZRuGYNVuw="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtz2ZRuGYQpPo=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRuGYP/SY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2ZRuGYNVuw="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtz2ZRuWYRPso=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRuGYQpPo="
+ },
+ "font": "Arial;13;0",
+ "left": 77,
+ "top": 965,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "«enumeration»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtz2ZRuWYSs5o=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRuGYQpPo="
+ },
+ "font": "Arial;13;1",
+ "left": 77,
+ "top": 980,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "ProgrammeCircuit1"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtz2ZRuWYTZUs=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRuGYQpPo="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -32,
+ "top": -32,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtz2ZRuWYUWyg=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRuGYQpPo="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -32,
+ "top": -32,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 72,
+ "top": 960,
+ "width": 130.64990234375,
+ "height": 38,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtz2ZRuWYRPso="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtz2ZRuWYSs5o="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtz2ZRuWYTZUs="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtz2ZRuWYUWyg="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtz2ZRuWYVYVo=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRuGYP/SY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2ZRuGYNVuw="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -16,
+ "top": -16,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtz2ZRuWYWG0U=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRuGYP/SY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2ZRuGYNVuw="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -16,
+ "top": -16,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtz2ZRuWYX2ok=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRuGYP/SY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2ZRuGYNVuw="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -16,
+ "top": -16,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtz2ZRuWYYAik=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRuGYP/SY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2ZRuGYNVuw="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -16,
+ "top": -16,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLEnumerationLiteralCompartmentView",
+ "_id": "AAAAAAFtz2ZRumYZZv4=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRuGYP/SY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2ZRuGYNVuw="
+ },
+ "subViews": [
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtz2arvWY+Mrs=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRumYZZv4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2arTmY7Q/w="
+ },
+ "font": "Arial;13;0",
+ "left": 77,
+ "top": 1003,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "A",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtz2a8gWZFxts=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRumYZZv4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2a7+WZC4RQ="
+ },
+ "font": "Arial;13;0",
+ "left": 77,
+ "top": 1018,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "B",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtz2bIymZM57Q=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRumYZZv4="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2bIXGZJi4o="
+ },
+ "font": "Arial;13;0",
+ "left": 77,
+ "top": 1033,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "C",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 72,
+ "top": 998,
+ "width": 130.64990234375,
+ "height": 53
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 72,
+ "top": 960,
+ "width": 130.64990234375,
+ "height": 91,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtz2ZRuGYQpPo="
+ },
+ "suppressAttributes": true,
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtz2ZRuWYVYVo="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtz2ZRuWYWG0U="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtz2ZRuWYX2ok="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtz2ZRuWYYAik="
+ },
+ "enumerationLiteralCompartment": {
+ "$ref": "AAAAAAFtz2ZRumYZZv4="
+ }
+ },
+ {
+ "_type": "UMLEnumerationView",
+ "_id": "AAAAAAFtz2cifGZU8Vc=",
+ "_parent": {
+ "$ref": "AAAAAAFF+qBtyKM79qY="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "subViews": [
+ {
+ "_type": "UMLNameCompartmentView",
+ "_id": "AAAAAAFtz2cifGZVwGo=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifGZU8Vc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "subViews": [
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtz2cifGZWMYU=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifGZVwGo="
+ },
+ "font": "Arial;13;0",
+ "left": 77,
+ "top": 1077,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "«enumeration»"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtz2cifGZXPaA=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifGZVwGo="
+ },
+ "font": "Arial;13;1",
+ "left": 77,
+ "top": 1092,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "ProgrammeCircuit2"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtz2cifGZYXaQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifGZVwGo="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -80,
+ "top": -16,
+ "width": 202.3505859375,
+ "height": 13,
+ "text": "(from org.openhab.binding.teleinfo)"
+ },
+ {
+ "_type": "LabelView",
+ "_id": "AAAAAAFtz2cifGZZWLI=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifGZVwGo="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -80,
+ "top": -16,
+ "height": 13,
+ "horizontalAlignment": 1
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 72,
+ "top": 1072,
+ "width": 130.64990234375,
+ "height": 38,
+ "stereotypeLabel": {
+ "$ref": "AAAAAAFtz2cifGZWMYU="
+ },
+ "nameLabel": {
+ "$ref": "AAAAAAFtz2cifGZXPaA="
+ },
+ "namespaceLabel": {
+ "$ref": "AAAAAAFtz2cifGZYXaQ="
+ },
+ "propertyLabel": {
+ "$ref": "AAAAAAFtz2cifGZZWLI="
+ }
+ },
+ {
+ "_type": "UMLAttributeCompartmentView",
+ "_id": "AAAAAAFtz2cifGZaWpI=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifGZU8Vc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -40,
+ "top": -8,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLOperationCompartmentView",
+ "_id": "AAAAAAFtz2cifGZbkhg=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifGZU8Vc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -40,
+ "top": -8,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLReceptionCompartmentView",
+ "_id": "AAAAAAFtz2cifWZcWHg=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifGZU8Vc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -40,
+ "top": -8,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLTemplateParameterCompartmentView",
+ "_id": "AAAAAAFtz2cifWZdXmI=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifGZU8Vc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "visible": false,
+ "font": "Arial;13;0",
+ "left": -40,
+ "top": -8,
+ "width": 10,
+ "height": 10
+ },
+ {
+ "_type": "UMLEnumerationLiteralCompartmentView",
+ "_id": "AAAAAAFtz2cifWZevrA=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifGZU8Vc="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "subViews": [
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtz2dwO2aEdHc=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifWZevrA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2dvyWaBn9o="
+ },
+ "font": "Arial;13;0",
+ "left": 77,
+ "top": 1115,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "P0",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtz2eH8WaLyc8=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifWZevrA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2eHhGaIg0M="
+ },
+ "font": "Arial;13;0",
+ "left": 77,
+ "top": 1130,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "P1",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtz2eTQmaS3eA=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifWZevrA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2eS1WaPwAQ="
+ },
+ "font": "Arial;13;0",
+ "left": 77,
+ "top": 1145,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "P2",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtz2ecxGaZOME=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifWZevrA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2ecTWaW+3k="
+ },
+ "font": "Arial;13;0",
+ "left": 77,
+ "top": 1160,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "P3",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtz2eoh2agB5Q=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifWZevrA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2eoFmad/7s="
+ },
+ "font": "Arial;13;0",
+ "left": 77,
+ "top": 1175,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "P4",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtz2e4iman5dE=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifWZevrA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2e4FWakjbc="
+ },
+ "font": "Arial;13;0",
+ "left": 77,
+ "top": 1190,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "P5",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtz2fF2mauxCM=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifWZevrA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2fFbWarFKo="
+ },
+ "font": "Arial;13;0",
+ "left": 77,
+ "top": 1205,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "P6",
+ "horizontalAlignment": 0
+ },
+ {
+ "_type": "UMLEnumerationLiteralView",
+ "_id": "AAAAAAFtz2fUv2a1gBI=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cifWZevrA="
+ },
+ "model": {
+ "$ref": "AAAAAAFtz2fUTmayOro="
+ },
+ "font": "Arial;13;0",
+ "left": 77,
+ "top": 1220,
+ "width": 120.64990234375,
+ "height": 13,
+ "text": "P7",
+ "horizontalAlignment": 0
+ }
+ ],
+ "font": "Arial;13;0",
+ "left": 72,
+ "top": 1110,
+ "width": 130.64990234375,
+ "height": 128
+ }
+ ],
+ "font": "Arial;13;0",
+ "containerChangeable": true,
+ "left": 72,
+ "top": 1072,
+ "width": 130.64990234375,
+ "height": 166,
+ "nameCompartment": {
+ "$ref": "AAAAAAFtz2cifGZVwGo="
+ },
+ "suppressAttributes": true,
+ "suppressOperations": true,
+ "attributeCompartment": {
+ "$ref": "AAAAAAFtz2cifGZaWpI="
+ },
+ "operationCompartment": {
+ "$ref": "AAAAAAFtz2cifGZbkhg="
+ },
+ "receptionCompartment": {
+ "$ref": "AAAAAAFtz2cifWZcWHg="
+ },
+ "templateParameterCompartment": {
+ "$ref": "AAAAAAFtz2cifWZdXmI="
+ },
+ "enumerationLiteralCompartment": {
+ "$ref": "AAAAAAFtz2cifWZevrA="
+ }
+ }
+ ]
+ },
+ {
+ "_type": "UMLInterface",
+ "_id": "AAAAAAFtqzHSE22XIHQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "FrameHcOption",
+ "attributes": [
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp8j9/GmLwLk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "name": "HHPHC",
+ "type": {
+ "$ref": "AAAAAAFtp7oM4GepYgc="
+ }
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp8H2a2j51DU=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "name": "HCHP",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp8GpK2jy/FI=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzHSE22XIHQ="
+ },
+ "name": "HCHC",
+ "type": "int"
+ }
+ ]
+ },
+ {
+ "_type": "UMLInterface",
+ "_id": "AAAAAAFtqzY6Dm5G9Sc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "FrameEjpOption",
+ "attributes": [
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp8cgsGmErVk=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "name": "PEJP",
+ "type": "Integer"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp8REiGkx3/0=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "name": "EJPHPM",
+ "type": "int"
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp8QJJmkqix8=",
+ "_parent": {
+ "$ref": "AAAAAAFtqzY6Dm5G9Sc="
+ },
+ "name": "EJPHN",
+ "type": "int"
+ }
+ ]
+ },
+ {
+ "_type": "UMLEnumeration",
+ "_id": "AAAAAAFtp7uFnmf6GHc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "CouleurDemain",
+ "literals": [
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7v1imgovAQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFnmf6GHc="
+ },
+ "name": "Bleu"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7wMvmgvV6I=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFnmf6GHc="
+ },
+ "name": "Blanc"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7wbxWg2WOE=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7uFnmf6GHc="
+ },
+ "name": "Rouge"
+ }
+ ]
+ },
+ {
+ "_type": "UMLEnumeration",
+ "_id": "AAAAAAFtp7oM4GepYgc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "HHPHC",
+ "literals": [
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7pzP2fXP3U=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4GepYgc="
+ },
+ "name": "A"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7qfK2feMrw=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4GepYgc="
+ },
+ "name": "C"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7q/6mfl4Gs=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4GepYgc="
+ },
+ "name": "D"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7rRgGfslyM=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4GepYgc="
+ },
+ "name": "E"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7rbrGfz5TU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7oM4GepYgc="
+ },
+ "name": "Y"
+ }
+ ]
+ },
+ {
+ "_type": "UMLEnumeration",
+ "_id": "AAAAAAFtp7OGJ2cdMPU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "PTEC",
+ "literals": [
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7RsRGdNsz8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "name": "TH.."
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7Skm2dUGDs=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "name": "HC.."
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7S2U2dbePw=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "name": "HP.."
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7Tdv2diKmU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "name": "HN.."
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7UA8mdpvPs=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "name": "PM.."
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7Ulk2dwj3A=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "name": "HCJB"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7VKaWd3THw=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "name": "HCJW"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7VxyWd+IAc=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "name": "HCJR"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7WTQ2eFPQQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "name": "HPJB"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7XYomeMoz8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "name": "HPJW"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtp7X6mWeTtl8=",
+ "_parent": {
+ "$ref": "AAAAAAFtp7OGJ2cdMPU="
+ },
+ "name": "HPJR"
+ }
+ ]
+ },
+ {
+ "_type": "UMLPackage",
+ "_id": "AAAAAAFtq1GNSnH09L4=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "cje",
+ "ownedElements": [
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtq1FQ3HHKoZA=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1GNSnH09L4="
+ },
+ "name": "FrameCje",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtq1HaonH5O3g=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "source": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp3MR3mZ74lY="
+ }
+ }
+ ],
+ "attributes": [
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtq1N5Z3IKpa8=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "name": "JAUNE",
+ "type": ""
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtq1O7Q3IRd1s=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "name": "ENERG",
+ "type": ""
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtq1PUS3IYA8A=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "name": "PERCC",
+ "type": ""
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtq1P2/XIfih4=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "name": "PMAXC",
+ "type": ""
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtq1QSBHIm0NM=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "name": "TDEPA",
+ "type": ""
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtq1QsnXItzZA=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "name": "PERCP",
+ "type": ""
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtq1RUHXI0c2w=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "name": "PMAXP",
+ "type": ""
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtq1RvpXI7TTM=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "name": "PSOUSC",
+ "type": ""
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtq1SKPXJCLQU=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "name": "PSOUSP",
+ "type": ""
+ },
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtq1Smc3JJNpk=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1FQ3HHKoZA="
+ },
+ "name": "FCOU",
+ "type": ""
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtq1VYFHJRoJM=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "FrameAdco",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtq1W6LHJ/P1U=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1VYFHJRoJM="
+ },
+ "source": {
+ "$ref": "AAAAAAFtq1VYFHJRoJM="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp3MR3mZ74lY="
+ }
+ }
+ ],
+ "attributes": [
+ {
+ "_type": "UMLAttribute",
+ "_id": "AAAAAAFtp3PC5Waq7Gs=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1VYFHJRoJM="
+ },
+ "name": "ADCO",
+ "type": "String",
+ "multiplicity": "12"
+ }
+ ],
+ "isAbstract": true
+ },
+ {
+ "_type": "UMLPackage",
+ "_id": "AAAAAAFtq1mxH3LP8Ps=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "ice2q",
+ "ownedElements": [
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtq1l/HXKlq0o=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1mxH3LP8Ps="
+ },
+ "name": "FrameIce2q",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtq1smX3LVQwU=",
+ "_parent": {
+ "$ref": "AAAAAAFtq1l/HXKlq0o="
+ },
+ "source": {
+ "$ref": "AAAAAAFtq1l/HXKlq0o="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp3MR3mZ74lY="
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_type": "UMLPackage",
+ "_id": "AAAAAAFtq11fnnLmuR0=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "ice4q",
+ "ownedElements": [
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtq13JPHLqe08=",
+ "_parent": {
+ "$ref": "AAAAAAFtq11fnnLmuR0="
+ },
+ "name": "FrameIce4q",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtq15hIHMWsnY=",
+ "_parent": {
+ "$ref": "AAAAAAFtq13JPHLqe08="
+ },
+ "source": {
+ "$ref": "AAAAAAFtq13JPHLqe08="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp3MR3mZ74lY="
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_type": "UMLPackage",
+ "_id": "AAAAAAFtq2DtGXMuZ0w=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "pmepmi",
+ "ownedElements": [
+ {
+ "_type": "UMLClass",
+ "_id": "AAAAAAFtq2Eck3MyGC0=",
+ "_parent": {
+ "$ref": "AAAAAAFtq2DtGXMuZ0w="
+ },
+ "name": "FramePmePmi",
+ "ownedElements": [
+ {
+ "_type": "UMLGeneralization",
+ "_id": "AAAAAAFtq2GFZHNeUH0=",
+ "_parent": {
+ "$ref": "AAAAAAFtq2Eck3MyGC0="
+ },
+ "source": {
+ "$ref": "AAAAAAFtq2Eck3MyGC0="
+ },
+ "target": {
+ "$ref": "AAAAAAFtp3MR3mZ74lY="
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "_type": "UMLEnumeration",
+ "_id": "AAAAAAFtz2ZRuGYNVuw=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "ProgrammeCircuit1",
+ "literals": [
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtz2arTmY7Q/w=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRuGYNVuw="
+ },
+ "name": "A"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtz2a7+WZC4RQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRuGYNVuw="
+ },
+ "name": "B"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtz2bIXGZJi4o=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2ZRuGYNVuw="
+ },
+ "name": "C"
+ }
+ ]
+ },
+ {
+ "_type": "UMLEnumeration",
+ "_id": "AAAAAAFtz2cie2ZS3vU=",
+ "_parent": {
+ "$ref": "AAAAAAFtp3ClvmZujPI="
+ },
+ "name": "ProgrammeCircuit2",
+ "literals": [
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtz2dvyWaBn9o=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "name": "P0"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtz2eHhGaIg0M=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "name": "P1"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtz2eS1WaPwAQ=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "name": "P2"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtz2ecTWaW+3k=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "name": "P3"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtz2eoFmad/7s=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "name": "P4"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtz2e4FWakjbc=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "name": "P5"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtz2fFbWarFKo=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "name": "P6"
+ },
+ {
+ "_type": "UMLEnumerationLiteral",
+ "_id": "AAAAAAFtz2fUTmayOro=",
+ "_parent": {
+ "$ref": "AAAAAAFtz2cie2ZS3vU="
+ },
+ "name": "P7"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/bundles/org.openhab.binding.teleinfo/pom.xml b/bundles/org.openhab.binding.teleinfo/pom.xml
new file mode 100644
index 0000000000000..e072118cdb95c
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/pom.xml
@@ -0,0 +1,17 @@
+
+
+
+ 4.0.0
+
+
+ org.openhab.addons.bundles
+ org.openhab.addons.reactor.bundles
+ 2.5.9-SNAPSHOT
+
+
+ org.openhab.binding.teleinfo
+
+ openHAB Add-ons :: Bundles :: Teleinfo Binding
+
+
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/feature/feature.xml b/bundles/org.openhab.binding.teleinfo/src/main/feature/feature.xml
new file mode 100644
index 0000000000000..d6a4865d16ca7
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/feature/feature.xml
@@ -0,0 +1,10 @@
+
+
+ mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features
+
+
+ openhab-runtime-base
+ openhab-transport-serial
+ mvn:org.openhab.addons.bundles/org.openhab.binding.teleinfo/${project.version}
+
+
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/TeleinfoBindingConstants.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/TeleinfoBindingConstants.java
new file mode 100644
index 0000000000000..8391ba5c718df
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/TeleinfoBindingConstants.java
@@ -0,0 +1,127 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.thing.ThingTypeUID;
+
+/**
+ * The {@link TeleinfoBindingConstants} class defines common constants, which are
+ * used across the whole binding.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+@NonNullByDefault
+public class TeleinfoBindingConstants {
+
+ private static final String BINDING_ID = "teleinfo";
+
+ // List of all Thing Type UIDs
+ public static final ThingTypeUID THING_TYPE_SERIAL_CONTROLLER = new ThingTypeUID(BINDING_ID, "serialcontroller");
+ public static final String THING_SERIAL_CONTROLLER_CHANNEL_INVALID_FRAME_COUNTER = "invalidFrameCounter";
+
+ // List of commons channel ids
+ public static final String CHANNEL_LAST_UPDATE = "lastUpdate";
+ // List of HC frames channel ids
+ public static final String CHANNEL_HC_FRAME_HCHC = "hchc";
+ public static final String CHANNEL_HC_FRAME_HCHP = "hchp";
+ public static final String CHANNEL_HC_FRAME_HHPHC = "hhphc";
+ // List of BASE frames channel ids
+ public static final String CHANNEL_BASE_FRAME_BASE = "base";
+ // List of TEMPO frames channel ids
+ public static final String CHANNEL_TEMPO_FRAME_BBRHPJR = "bbrhpjr";
+ public static final String CHANNEL_TEMPO_FRAME_BBRHCJR = "bbrhcjr";
+ public static final String CHANNEL_TEMPO_FRAME_BBRHPJW = "bbrhpjw";
+ public static final String CHANNEL_TEMPO_FRAME_BBRHCJW = "bbrhcjw";
+ public static final String CHANNEL_TEMPO_FRAME_BBRHPJB = "bbrhpjb";
+ public static final String CHANNEL_TEMPO_FRAME_BBRHCJB = "bbrhcjb";
+ public static final String CHANNEL_TEMPO_FRAME_DEMAIN = "demain";
+ public static final String CHANNEL_TEMPO_FRAME_HHPHC = "hhphc";
+ public static final String CHANNEL_TEMPO_FRAME_PROGRAMME_CIRCUIT_1 = "programmeCircuit1";
+ public static final String CHANNEL_TEMPO_FRAME_PROGRAMME_CIRCUIT_2 = "programmeCircuit2";
+ // List of EJP frames channel ids
+ public static final String CHANNEL_EJP_FRAME_PEJP = "pejp";
+ public static final String CHANNEL_EJP_FRAME_EJPHPM = "ejphpm";
+ public static final String CHANNEL_EJP_FRAME_EJPHN = "ejphn";
+ // List of CBEMM Channel ids
+ public static final String CHANNEL_CBEMM_ISOUSC = "isousc";
+ public static final String CHANNEL_CBEMM_PTEC = "ptec";
+ public static final String CHANNEL_CBEMM_IMAX = "imax";
+ public static final String CHANNEL_CBEMM_ADPS = "adps";
+ public static final String CHANNEL_CBEMM_IINST = "iinst";
+ public static final String CHANNEL_CBEMM_MOTDETAT = "motdetat";
+ // List of CBEMM EVOLUTION ICC Channel ids
+ public static final String CHANNEL_CBEMM_EVOLUTION_ICC_PAPP = "papp";
+ // List of CBETM Channel ids
+ public static final String CHANNEL_CBETM_IINST1 = "iinst1";
+ public static final String CHANNEL_CBETM_IINST2 = "iinst2";
+ public static final String CHANNEL_CBETM_IINST3 = "iinst3";
+ public static final String CHANNEL_CBETM_FRAME_TYPE = "frameType";
+ public static final String CHANNEL_CBETM_LONG_ISOUSC = "isousc";
+ public static final String CHANNEL_CBETM_LONG_IMAX1 = "imax1";
+ public static final String CHANNEL_CBETM_LONG_IMAX2 = "imax2";
+ public static final String CHANNEL_CBETM_LONG_IMAX3 = "imax3";
+ public static final String CHANNEL_CBETM_LONG_PTEC = "ptec";
+ public static final String CHANNEL_CBETM_LONG_PMAX = "pmax";
+ public static final String CHANNEL_CBETM_LONG_PAPP = "papp";
+ public static final String CHANNEL_CBETM_LONG_MOTDETAT = "motdetat";
+ public static final String CHANNEL_CBETM_LONG_PPOT = "ppot";
+ public static final String CHANNEL_CBETM_SHORT_ADIR1 = "adir1";
+ public static final String CHANNEL_CBETM_SHORT_ADIR2 = "adir2";
+ public static final String CHANNEL_CBETM_SHORT_ADIR3 = "adir3";
+
+ public static final String THING_ELECTRICITY_METER_PROPERTY_ADCO = "adco";
+
+ public static final ThingTypeUID THING_HC_CBEMM_ELECTRICITY_METER_TYPE_UID = new ThingTypeUID(BINDING_ID,
+ "cbemm_hc_electricitymeter");
+
+ public static final ThingTypeUID THING_BASE_CBEMM_ELECTRICITY_METER_TYPE_UID = new ThingTypeUID(BINDING_ID,
+ "cbemm_base_electricitymeter");
+
+ public static final ThingTypeUID THING_EJP_CBEMM_ELECTRICITY_METER_TYPE_UID = new ThingTypeUID(BINDING_ID,
+ "cbemm_ejp_electricitymeter");
+
+ public static final ThingTypeUID THING_TEMPO_CBEMM_ELECTRICITY_METER_TYPE_UID = new ThingTypeUID(BINDING_ID,
+ "cbemm_tempo_electricitymeter");
+
+ public static final ThingTypeUID THING_HC_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID = new ThingTypeUID(BINDING_ID,
+ "cbemm_evolution_icc_hc_electricitymeter");
+
+ public static final ThingTypeUID THING_BASE_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID = new ThingTypeUID(BINDING_ID,
+ "cbemm_evolution_icc_base_electricitymeter");
+
+ public static final ThingTypeUID THING_EJP_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID = new ThingTypeUID(BINDING_ID,
+ "cbemm_evolution_icc_ejp_electricitymeter");
+
+ public static final ThingTypeUID THING_TEMPO_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID = new ThingTypeUID(BINDING_ID,
+ "cbemm_evolution_icc_tempo_electricitymeter");
+
+ public static final ThingTypeUID THING_HC_CBETM_ELECTRICITY_METER_TYPE_UID = new ThingTypeUID(BINDING_ID,
+ "cbetm_hc_electricitymeter");
+
+ public static final ThingTypeUID THING_BASE_CBETM_ELECTRICITY_METER_TYPE_UID = new ThingTypeUID(BINDING_ID,
+ "cbetm_base_electricitymeter");
+
+ public static final ThingTypeUID THING_EJP_CBETM_ELECTRICITY_METER_TYPE_UID = new ThingTypeUID(BINDING_ID,
+ "cbetm_ejp_electricitymeter");
+
+ public static final ThingTypeUID THING_TEMPO_CBETM_ELECTRICITY_METER_TYPE_UID = new ThingTypeUID(BINDING_ID,
+ "cbetm_tempo_electricitymeter");
+
+ public static final String ERROR_OFFLINE_SERIAL_NOT_FOUND = "@text/teleinfo.thingstate.serial_notfound";
+ public static final String ERROR_OFFLINE_SERIAL_INUSE = "@text/teleinfo.thingstate.serial_inuse";
+ public static final String ERROR_OFFLINE_SERIAL_UNSUPPORTED = "@text/teleinfo.thingstate.serial_unsupported";
+ public static final String ERROR_OFFLINE_SERIAL_LISTENERS = "@text/teleinfo.thingstate.serial_listeners";
+ public static final String ERROR_OFFLINE_CONTROLLER_OFFLINE = "@text/teleinfo.thingstate.controller_offline";
+ public static final String ERROR_UNKNOWN_RETRY_IN_PROGRESS = "@text/teleinfo.thingstate.controller_unknown_retry_inprogress";
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/TeleinfoDiscoveryService.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/TeleinfoDiscoveryService.java
new file mode 100644
index 0000000000000..152ad9f89f7e8
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/TeleinfoDiscoveryService.java
@@ -0,0 +1,231 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal;
+
+import static org.openhab.binding.teleinfo.internal.TeleinfoBindingConstants.*;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.smarthome.config.discovery.AbstractDiscoveryService;
+import org.eclipse.smarthome.config.discovery.DiscoveryResult;
+import org.eclipse.smarthome.config.discovery.DiscoveryResultBuilder;
+import org.eclipse.smarthome.config.discovery.DiscoveryService;
+import org.eclipse.smarthome.core.thing.ThingTypeUID;
+import org.eclipse.smarthome.core.thing.ThingUID;
+import org.eclipse.smarthome.core.thing.binding.ThingHandler;
+import org.eclipse.smarthome.core.thing.binding.ThingHandlerService;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemmBaseOption;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemmEjpOption;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemmHcOption;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemmTempoOption;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccBaseOption;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccEjpOption;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccHcOption;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccTempoOption;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLongBaseOption;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLongEjpOption;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLongHcOption;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLongTempoOption;
+import org.openhab.binding.teleinfo.internal.dto.common.FrameAdco;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoControllerHandlerListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The {@link TeleinfoDiscoveryService} class is the service to discover a skeleton for controller handlers.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+@NonNullByDefault
+public class TeleinfoDiscoveryService extends AbstractDiscoveryService
+ implements TeleinfoControllerHandlerListener, ThingHandlerService, DiscoveryService {
+
+ private static final Set SUPPORTED_THING_TYPES = Stream.of(THING_HC_CBEMM_ELECTRICITY_METER_TYPE_UID,
+ THING_BASE_CBEMM_ELECTRICITY_METER_TYPE_UID, THING_TEMPO_CBEMM_ELECTRICITY_METER_TYPE_UID,
+ THING_EJP_CBEMM_ELECTRICITY_METER_TYPE_UID, THING_HC_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID,
+ THING_BASE_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID, THING_TEMPO_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID,
+ THING_EJP_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID, THING_HC_CBETM_ELECTRICITY_METER_TYPE_UID,
+ THING_BASE_CBETM_ELECTRICITY_METER_TYPE_UID, THING_TEMPO_CBETM_ELECTRICITY_METER_TYPE_UID,
+ THING_EJP_CBETM_ELECTRICITY_METER_TYPE_UID).collect(Collectors.toSet());
+
+ private static final int SCAN_DURATION_IN_S = 60;
+
+ private final Logger logger = LoggerFactory.getLogger(TeleinfoDiscoveryService.class);
+ private @Nullable TeleinfoAbstractControllerHandler controllerHandler;
+
+ public TeleinfoDiscoveryService() {
+ super(SCAN_DURATION_IN_S);
+ }
+
+ public TeleinfoDiscoveryService(TeleinfoAbstractControllerHandler controllerHandler) {
+ super(SCAN_DURATION_IN_S);
+ this.controllerHandler = controllerHandler;
+ }
+
+ @Override
+ public Set getSupportedThingTypes() {
+ return SUPPORTED_THING_TYPES;
+ }
+
+ public void activate() {
+ TeleinfoAbstractControllerHandler controllerHandlerRef = controllerHandler;
+ if (controllerHandlerRef != null) {
+ logger.debug("Teleinfo discovery: Activate {}", controllerHandlerRef.getThing().getUID());
+ } else {
+ logNullControllerHandler();
+ }
+ }
+
+ @Override
+ public void deactivate() {
+ TeleinfoAbstractControllerHandler controllerHandlerRef = controllerHandler;
+ if (controllerHandlerRef != null) {
+ logger.debug("Teleinfo discovery: Deactivate {}", controllerHandlerRef.getThing().getUID());
+ } else {
+ logNullControllerHandler();
+ }
+ }
+
+ @Override
+ protected void startScan() {
+ TeleinfoAbstractControllerHandler controllerHandlerRef = controllerHandler;
+ if (controllerHandlerRef != null) {
+ logger.debug("Teleinfo discovery: Start {}", controllerHandlerRef.getThing().getUID());
+
+ // Start the search for new devices
+ controllerHandlerRef.addListener(this);
+ } else {
+ logNullControllerHandler();
+ }
+ }
+
+ @Override
+ public synchronized void abortScan() {
+ TeleinfoAbstractControllerHandler controllerHandlerRef = controllerHandler;
+ if (controllerHandlerRef != null) {
+ logger.debug("Teleinfo discovery: Abort {}", controllerHandlerRef.getThing().getUID());
+ controllerHandlerRef.removeListener(this);
+ super.abortScan();
+ } else {
+ logNullControllerHandler();
+ }
+ }
+
+ @Override
+ protected synchronized void stopScan() {
+ TeleinfoAbstractControllerHandler controllerHandlerRef = controllerHandler;
+ if (controllerHandlerRef != null) {
+ logger.debug("Teleinfo discovery: Stop {}", controllerHandlerRef.getThing().getUID());
+ controllerHandlerRef.removeListener(this);
+ super.stopScan();
+ } else {
+ logNullControllerHandler();
+ }
+ }
+
+ @Override
+ public void onFrameReceived(TeleinfoAbstractControllerHandler controllerHandler, Frame frame) {
+ detectNewElectricityMeterFromReceivedFrame(frame);
+ }
+
+ private void detectNewElectricityMeterFromReceivedFrame(final Frame frameSample) {
+ TeleinfoAbstractControllerHandler controllerHandlerRef = controllerHandler;
+ if (controllerHandlerRef != null) {
+ logger.debug("New eletricity meter detection from frame {}", frameSample.getId());
+ if (!(frameSample instanceof FrameAdco)) {
+ throw new IllegalStateException("Teleinfo frame type not supported: " + frameSample.getClass());
+ }
+ final FrameAdco frameAdco = (FrameAdco) frameSample;
+
+ ThingUID thingUID = new ThingUID(getThingTypeUID(frameAdco), frameAdco.getAdco(),
+ controllerHandlerRef.getThing().getUID().getId());
+
+ final Map properties = getThingProperties(frameAdco);
+ final String representationProperty = THING_ELECTRICITY_METER_PROPERTY_ADCO;
+ DiscoveryResult discoveryResult = DiscoveryResultBuilder.create(thingUID).withProperties(properties)
+ .withLabel("Teleinfo ADCO " + frameAdco.getAdco()).withThingType(getThingTypeUID(frameAdco))
+ .withBridge(controllerHandlerRef.getThing().getUID())
+ .withRepresentationProperty(representationProperty).build();
+
+ thingDiscovered(discoveryResult);
+ } else {
+ logNullControllerHandler();
+ }
+ }
+
+ private ThingTypeUID getThingTypeUID(final Frame teleinfoFrame) {
+ if (teleinfoFrame instanceof FrameCbemmHcOption) {
+ return THING_HC_CBEMM_ELECTRICITY_METER_TYPE_UID;
+ } else if (teleinfoFrame instanceof FrameCbemmBaseOption) {
+ return THING_BASE_CBEMM_ELECTRICITY_METER_TYPE_UID;
+ } else if (teleinfoFrame instanceof FrameCbemmEjpOption) {
+ return THING_EJP_CBEMM_ELECTRICITY_METER_TYPE_UID;
+ } else if (teleinfoFrame instanceof FrameCbemmTempoOption) {
+ return THING_TEMPO_CBEMM_ELECTRICITY_METER_TYPE_UID;
+ } else if (teleinfoFrame instanceof FrameCbemmEvolutionIccHcOption) {
+ return THING_HC_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID;
+ } else if (teleinfoFrame instanceof FrameCbemmEvolutionIccBaseOption) {
+ return THING_BASE_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID;
+ } else if (teleinfoFrame instanceof FrameCbemmEvolutionIccEjpOption) {
+ return THING_EJP_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID;
+ } else if (teleinfoFrame instanceof FrameCbemmEvolutionIccTempoOption) {
+ return THING_TEMPO_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID;
+ } else if (teleinfoFrame instanceof FrameCbetmLongHcOption) {
+ return THING_HC_CBETM_ELECTRICITY_METER_TYPE_UID;
+ } else if (teleinfoFrame instanceof FrameCbetmLongBaseOption) {
+ return THING_BASE_CBETM_ELECTRICITY_METER_TYPE_UID;
+ } else if (teleinfoFrame instanceof FrameCbetmLongEjpOption) {
+ return THING_EJP_CBETM_ELECTRICITY_METER_TYPE_UID;
+ } else if (teleinfoFrame instanceof FrameCbetmLongTempoOption) {
+ return THING_TEMPO_CBETM_ELECTRICITY_METER_TYPE_UID;
+ } else {
+ throw new IllegalStateException("Teleinfo frame type not supported: " + teleinfoFrame.getClass());
+ }
+ }
+
+ private Map getThingProperties(final Frame teleinfoFrame) {
+ Map properties = new HashMap();
+ if (teleinfoFrame instanceof FrameAdco) {
+ final FrameAdco frameAdco = (FrameAdco) teleinfoFrame;
+ properties.put(THING_ELECTRICITY_METER_PROPERTY_ADCO, frameAdco.getAdco());
+
+ return properties;
+ }
+
+ throw new IllegalStateException("Teleinfo frame type not supported: " + teleinfoFrame.getClass());
+ }
+
+ @Override
+ public void setThingHandler(@Nullable ThingHandler handler) {
+ if (handler instanceof TeleinfoAbstractControllerHandler) {
+ controllerHandler = (TeleinfoAbstractControllerHandler) handler;
+ }
+ }
+
+ @Override
+ public @Nullable ThingHandler getThingHandler() {
+ return controllerHandler;
+ }
+
+ private void logNullControllerHandler() {
+ logger.warn("Null controller handler");
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/Frame.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/Frame.java
new file mode 100644
index 0000000000000..748797493d842
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/Frame.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.util.UUID;
+
+/**
+ * The {@link Frame} class defines common attributes for any Teleinfo frames.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public abstract class Frame implements Serializable {
+
+ private static final long serialVersionUID = -1934715078822532494L;
+
+ private UUID id;
+ private LocalDate timestamp; // UTC timestamp
+
+ public Frame() {
+ // default constructor
+ }
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public LocalDate getTimestamp() {
+ return timestamp;
+ }
+
+ public void setTimestamp(LocalDate timestamp) {
+ this.timestamp = timestamp;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemm.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemm.java
new file mode 100644
index 0000000000000..eadb35d2f09d0
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemm.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbemm;
+
+import org.openhab.binding.teleinfo.internal.dto.common.FrameAdco;
+import org.openhab.binding.teleinfo.internal.dto.common.Ptec;
+
+/**
+ * The {@link FrameCbemm} class defines common attributes for CBEMM Teleinfo frames.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public abstract class FrameCbemm extends FrameAdco {
+
+ private static final long serialVersionUID = -8500010131430582841L;
+
+ private int isousc;
+ private int iinst; // ampères
+ private Integer adps; // ampères
+ private Integer imax; // ampères
+ private Ptec ptec;
+ private String motdetat;
+
+ public FrameCbemm() {
+ // default constructor
+ }
+
+ public int getIsousc() {
+ return isousc;
+ }
+
+ public void setIsousc(int isousc) {
+ this.isousc = isousc;
+ }
+
+ public int getIinst() {
+ return iinst;
+ }
+
+ public void setIinst(int iinst) {
+ this.iinst = iinst;
+ }
+
+ public Integer getAdps() {
+ return adps;
+ }
+
+ public void setAdps(Integer adps) {
+ this.adps = adps;
+ }
+
+ public Integer getImax() {
+ return imax;
+ }
+
+ public void setImax(Integer imax) {
+ this.imax = imax;
+ }
+
+ public Ptec getPtec() {
+ return ptec;
+ }
+
+ public void setPtec(Ptec ptec) {
+ this.ptec = ptec;
+ }
+
+ public String getMotdetat() {
+ return motdetat;
+ }
+
+ public void setMotdetat(String motdetat) {
+ this.motdetat = motdetat;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemmBaseOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemmBaseOption.java
new file mode 100644
index 0000000000000..8802c8aaf94d9
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemmBaseOption.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbemm;
+
+import org.openhab.binding.teleinfo.internal.dto.common.FrameBaseOption;
+
+/**
+ * The {@link FrameCbemmBaseOption} class defines a CBEMM Teleinfo frame with Base option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public class FrameCbemmBaseOption extends FrameCbemm implements FrameBaseOption {
+
+ private static final long serialVersionUID = 5560141193379363335L;
+
+ private int base;
+
+ public FrameCbemmBaseOption() {
+ // default constructor
+ }
+
+ @Override
+ public int getBase() {
+ return base;
+ }
+
+ @Override
+ public void setBase(int base) {
+ this.base = base;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemmEjpOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemmEjpOption.java
new file mode 100644
index 0000000000000..400f7f58b1029
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemmEjpOption.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbemm;
+
+import org.openhab.binding.teleinfo.internal.dto.common.FrameEjpOption;
+
+/**
+ * The {@link FrameCbemmEjpOption} class defines a CBEMM Teleinfo frame with EJP option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public class FrameCbemmEjpOption extends FrameCbemm implements FrameEjpOption {
+
+ private static final long serialVersionUID = -1934715078822532494L;
+
+ private int ejphpm;
+ private int ejphn;
+ private Integer pejp;
+
+ public FrameCbemmEjpOption() {
+ // default constructor
+ }
+
+ @Override
+ public int getEjphpm() {
+ return ejphpm;
+ }
+
+ @Override
+ public int getEjphn() {
+ return ejphn;
+ }
+
+ @Override
+ public Integer getPejp() {
+ return pejp;
+ }
+
+ @Override
+ public void setEjphpm(int ejphpm) {
+ this.ejphpm = ejphpm;
+ }
+
+ @Override
+ public void setEjphn(int ejphn) {
+ this.ejphn = ejphn;
+ }
+
+ @Override
+ public void setPejp(Integer pejp) {
+ this.pejp = pejp;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemmHcOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemmHcOption.java
new file mode 100644
index 0000000000000..bb9c9947d9bea
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemmHcOption.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbemm;
+
+import org.openhab.binding.teleinfo.internal.dto.common.FrameHcOption;
+import org.openhab.binding.teleinfo.internal.dto.common.Hhphc;
+
+/**
+ * The {@link FrameCbemmHcOption} class defines a CBEMM Teleinfo frame with HC/HP option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public class FrameCbemmHcOption extends FrameCbemm implements FrameHcOption {
+
+ private static final long serialVersionUID = -1934715078822532494L;
+
+ private int hchc;
+ private int hchp;
+ private Hhphc hhphc;
+
+ public FrameCbemmHcOption() {
+ // default constructor
+ }
+
+ @Override
+ public int getHchc() {
+ return hchc;
+ }
+
+ @Override
+ public void setHchc(int hchc) {
+ this.hchc = hchc;
+ }
+
+ @Override
+ public int getHchp() {
+ return hchp;
+ }
+
+ @Override
+ public void setHchp(int hchp) {
+ this.hchp = hchp;
+ }
+
+ @Override
+ public Hhphc getHhphc() {
+ return hhphc;
+ }
+
+ @Override
+ public void setHhphc(Hhphc hhphc) {
+ this.hhphc = hhphc;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemmTempoOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemmTempoOption.java
new file mode 100644
index 0000000000000..34fd2d364da52
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/FrameCbemmTempoOption.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbemm;
+
+import org.openhab.binding.teleinfo.internal.dto.common.FrameTempoOption;
+import org.openhab.binding.teleinfo.internal.dto.common.Hhphc;
+
+/**
+ * The {@link FrameCbemmTempoOption} class defines a CBEMM Teleinfo frame with Tempo option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public class FrameCbemmTempoOption extends FrameCbemm implements FrameTempoOption {
+
+ private static final long serialVersionUID = 6423861816467362730L;
+
+ private int bbrhpjr;
+ private int bbrhcjr;
+ private int bbrhpjw;
+ private int bbrhcjw;
+ private int bbrhpjb;
+ private int bbrhcjb;
+ private CouleurDemain demain;
+ private Hhphc hhphc;
+ private ProgrammeCircuit1 programmeCircuit1;
+ private ProgrammeCircuit2 programmeCircuit2;
+
+ public FrameCbemmTempoOption() {
+ // default constructor
+ }
+
+ @Override
+ public int getBbrhpjr() {
+ return bbrhpjr;
+ }
+
+ @Override
+ public int getBbrhcjr() {
+ return bbrhcjr;
+ }
+
+ @Override
+ public int getBbrhpjw() {
+ return bbrhpjw;
+ }
+
+ @Override
+ public int getBbrhcjw() {
+ return bbrhcjw;
+ }
+
+ @Override
+ public int getBbrhpjb() {
+ return bbrhpjb;
+ }
+
+ @Override
+ public int getBbrhcjb() {
+ return bbrhcjb;
+ }
+
+ @Override
+ public CouleurDemain getDemain() {
+ return demain;
+ }
+
+ @Override
+ public void setBbrhpjr(int bbrhpjr) {
+ this.bbrhpjr = bbrhpjr;
+ }
+
+ @Override
+ public void setBbrhcjr(int bbrhcjr) {
+ this.bbrhcjr = bbrhcjr;
+ }
+
+ @Override
+ public void setBbrhpjw(int bbrhpjw) {
+ this.bbrhpjw = bbrhpjw;
+ }
+
+ @Override
+ public void setBbrhcjw(int bbrhcjw) {
+ this.bbrhcjw = bbrhcjw;
+ }
+
+ @Override
+ public void setBbrhpjb(int bbrhpjb) {
+ this.bbrhpjb = bbrhpjb;
+ }
+
+ @Override
+ public void setBbrhcjb(int bbrhcjb) {
+ this.bbrhcjb = bbrhcjb;
+ }
+
+ @Override
+ public void setDemain(CouleurDemain demain) {
+ this.demain = demain;
+ }
+
+ @Override
+ public Hhphc getHhphc() {
+ return hhphc;
+ }
+
+ @Override
+ public void setHhphc(Hhphc hhphc) {
+ this.hhphc = hhphc;
+ }
+
+ @Override
+ public ProgrammeCircuit1 getProgrammeCircuit1() {
+ return programmeCircuit1;
+ }
+
+ @Override
+ public void setProgrammeCircuit1(ProgrammeCircuit1 programmeCircuit1) {
+ this.programmeCircuit1 = programmeCircuit1;
+ }
+
+ @Override
+ public ProgrammeCircuit2 getProgrammeCircuit2() {
+ return programmeCircuit2;
+ }
+
+ @Override
+ public void setProgrammeCircuit2(ProgrammeCircuit2 programmeCircuit2) {
+ this.programmeCircuit2 = programmeCircuit2;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIcc.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIcc.java
new file mode 100644
index 0000000000000..f0723df47b69d
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIcc.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc;
+
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemm;
+
+/**
+ * The {@link FrameCbemmEvolutionIcc} class defines CBEMM Evolution ICC Teleinfo frames.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public abstract class FrameCbemmEvolutionIcc extends FrameCbemm {
+
+ private static final long serialVersionUID = 5532008316299149750L;
+
+ private int papp; // Volt.ampères
+
+ public FrameCbemmEvolutionIcc() {
+ // default constructor
+ }
+
+ public int getPapp() {
+ return papp;
+ }
+
+ public void setPapp(int papp) {
+ this.papp = papp;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIccBaseOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIccBaseOption.java
new file mode 100644
index 0000000000000..a190d095e8a0b
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIccBaseOption.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc;
+
+import org.openhab.binding.teleinfo.internal.dto.common.FrameBaseOption;
+
+/**
+ * The {@link FrameCbemmEvolutionIccBaseOption} class defines a CBEMM Evolution ICC Teleinfo frame with Base option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public class FrameCbemmEvolutionIccBaseOption extends FrameCbemmEvolutionIcc implements FrameBaseOption {
+
+ private static final long serialVersionUID = 1623781914779495089L;
+
+ private int base;
+
+ public FrameCbemmEvolutionIccBaseOption() {
+ // default constructor
+ }
+
+ @Override
+ public int getBase() {
+ return base;
+ }
+
+ @Override
+ public void setBase(int base) {
+ this.base = base;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIccEjpOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIccEjpOption.java
new file mode 100644
index 0000000000000..e932887f381b2
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIccEjpOption.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc;
+
+import org.openhab.binding.teleinfo.internal.dto.common.FrameEjpOption;
+
+/**
+ * The {@link FrameCbemmEvolutionIccEjpOption} class defines a CBEMM Evolution ICC Teleinfo frame with EJP option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public class FrameCbemmEvolutionIccEjpOption extends FrameCbemmEvolutionIcc implements FrameEjpOption {
+
+ private static final long serialVersionUID = -5053572570767309239L;
+
+ private int ejphpm;
+ private int ejphn;
+ private Integer pejp;
+
+ public FrameCbemmEvolutionIccEjpOption() {
+ // default constructor
+ }
+
+ @Override
+ public int getEjphpm() {
+ return ejphpm;
+ }
+
+ @Override
+ public int getEjphn() {
+ return ejphn;
+ }
+
+ @Override
+ public Integer getPejp() {
+ return pejp;
+ }
+
+ @Override
+ public void setEjphpm(int ejphpm) {
+ this.ejphpm = ejphpm;
+ }
+
+ @Override
+ public void setEjphn(int ejphn) {
+ this.ejphn = ejphn;
+ }
+
+ @Override
+ public void setPejp(Integer pejp) {
+ this.pejp = pejp;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIccHcOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIccHcOption.java
new file mode 100644
index 0000000000000..1215df6ec2482
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIccHcOption.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc;
+
+import org.openhab.binding.teleinfo.internal.dto.common.FrameHcOption;
+import org.openhab.binding.teleinfo.internal.dto.common.Hhphc;
+
+/**
+ * The {@link FrameCbemmEvolutionIccHcOption} class defines a CBEMM Evolution ICC Teleinfo frame with HC option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public class FrameCbemmEvolutionIccHcOption extends FrameCbemmEvolutionIcc implements FrameHcOption {
+
+ private static final long serialVersionUID = 3133144820515675037L;
+
+ private int hchc;
+ private int hchp;
+ private Hhphc hhphc;
+
+ public FrameCbemmEvolutionIccHcOption() {
+ // default constructor
+ }
+
+ @Override
+ public int getHchc() {
+ return hchc;
+ }
+
+ @Override
+ public void setHchc(int hchc) {
+ this.hchc = hchc;
+ }
+
+ @Override
+ public int getHchp() {
+ return hchp;
+ }
+
+ @Override
+ public void setHchp(int hchp) {
+ this.hchp = hchp;
+ }
+
+ @Override
+ public Hhphc getHhphc() {
+ return hhphc;
+ }
+
+ @Override
+ public void setHhphc(Hhphc hhphc) {
+ this.hhphc = hhphc;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIccTempoOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIccTempoOption.java
new file mode 100644
index 0000000000000..7b716eb13e535
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbemm/evoicc/FrameCbemmEvolutionIccTempoOption.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc;
+
+import org.openhab.binding.teleinfo.internal.dto.common.FrameTempoOption;
+import org.openhab.binding.teleinfo.internal.dto.common.Hhphc;
+
+/**
+ * The {@link FrameCbemmEvolutionIccTempoOption} class defines a CBEMM Evolution ICC Teleinfo frame with Tempo option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public class FrameCbemmEvolutionIccTempoOption extends FrameCbemmEvolutionIcc implements FrameTempoOption {
+
+ private static final long serialVersionUID = -1606685089266015480L;
+
+ private int bbrhpjr;
+ private int bbrhcjr;
+ private int bbrhpjw;
+ private int bbrhcjw;
+ private int bbrhpjb;
+ private int bbrhcjb;
+ private CouleurDemain demain;
+ private Hhphc hhphc;
+ private ProgrammeCircuit1 programmeCircuit1;
+ private ProgrammeCircuit2 programmeCircuit2;
+
+ public FrameCbemmEvolutionIccTempoOption() {
+ // default constructor
+ }
+
+ @Override
+ public int getBbrhpjr() {
+ return bbrhpjr;
+ }
+
+ @Override
+ public int getBbrhcjr() {
+ return bbrhcjr;
+ }
+
+ @Override
+ public int getBbrhpjw() {
+ return bbrhpjw;
+ }
+
+ @Override
+ public int getBbrhcjw() {
+ return bbrhcjw;
+ }
+
+ @Override
+ public int getBbrhpjb() {
+ return bbrhpjb;
+ }
+
+ @Override
+ public int getBbrhcjb() {
+ return bbrhcjb;
+ }
+
+ @Override
+ public CouleurDemain getDemain() {
+ return demain;
+ }
+
+ @Override
+ public void setBbrhpjr(int bbrhpjr) {
+ this.bbrhpjr = bbrhpjr;
+ }
+
+ @Override
+ public void setBbrhcjr(int bbrhcjr) {
+ this.bbrhcjr = bbrhcjr;
+ }
+
+ @Override
+ public void setBbrhpjw(int bbrhpjw) {
+ this.bbrhpjw = bbrhpjw;
+ }
+
+ @Override
+ public void setBbrhcjw(int bbrhcjw) {
+ this.bbrhcjw = bbrhcjw;
+ }
+
+ @Override
+ public void setBbrhpjb(int bbrhpjb) {
+ this.bbrhpjb = bbrhpjb;
+ }
+
+ @Override
+ public void setBbrhcjb(int bbrhcjb) {
+ this.bbrhcjb = bbrhcjb;
+ }
+
+ @Override
+ public void setDemain(CouleurDemain demain) {
+ this.demain = demain;
+ }
+
+ @Override
+ public Hhphc getHhphc() {
+ return hhphc;
+ }
+
+ @Override
+ public void setHhphc(Hhphc hhphc) {
+ this.hhphc = hhphc;
+ }
+
+ @Override
+ public ProgrammeCircuit1 getProgrammeCircuit1() {
+ return programmeCircuit1;
+ }
+
+ @Override
+ public void setProgrammeCircuit1(ProgrammeCircuit1 programmeCircuit1) {
+ this.programmeCircuit1 = programmeCircuit1;
+ }
+
+ @Override
+ public ProgrammeCircuit2 getProgrammeCircuit2() {
+ return programmeCircuit2;
+ }
+
+ @Override
+ public void setProgrammeCircuit2(ProgrammeCircuit2 programmeCircuit2) {
+ this.programmeCircuit2 = programmeCircuit2;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetm.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetm.java
new file mode 100644
index 0000000000000..ca20891be08b2
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetm.java
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbetm;
+
+import org.openhab.binding.teleinfo.internal.dto.common.FrameAdco;
+
+/**
+ * The {@link FrameCbetm} class defines common attributes for CBETM Teleinfo frames.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public abstract class FrameCbetm extends FrameAdco {
+
+ private static final long serialVersionUID = 2083723009359732507L;
+
+ private int iinst1; // ampères
+ private int iinst2; // ampères
+ private int iinst3; // ampères
+
+ public FrameCbetm() {
+ // default constructor
+ }
+
+ public int getIinst1() {
+ return iinst1;
+ }
+
+ public void setIinst1(int iinst1) {
+ this.iinst1 = iinst1;
+ }
+
+ public int getIinst2() {
+ return iinst2;
+ }
+
+ public void setIinst2(int iinst2) {
+ this.iinst2 = iinst2;
+ }
+
+ public int getIinst3() {
+ return iinst3;
+ }
+
+ public void setIinst3(int iinst3) {
+ this.iinst3 = iinst3;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLong.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLong.java
new file mode 100644
index 0000000000000..15f27e3537f32
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLong.java
@@ -0,0 +1,111 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbetm;
+
+import org.openhab.binding.teleinfo.internal.dto.common.Ptec;
+
+/**
+ * The {@link FrameCbetmLong} class defines common attributes for CBETM Long Teleinfo frames.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public abstract class FrameCbetmLong extends FrameCbetm {
+
+ private static final long serialVersionUID = -2527584397688316017L;
+
+ private int isousc;
+ private Integer imax1; // ampères
+ private Integer imax2; // ampères
+ private Integer imax3; // ampères
+ private Ptec ptec;
+ private int pmax; // W
+ private int papp; // Volt.ampères
+ private String motdetat;
+ private String ppot;
+
+ public FrameCbetmLong() {
+ // default constructor
+ }
+
+ public int getIsousc() {
+ return isousc;
+ }
+
+ public void setIsousc(int isousc) {
+ this.isousc = isousc;
+ }
+
+ public Integer getImax1() {
+ return imax1;
+ }
+
+ public void setImax1(Integer imax1) {
+ this.imax1 = imax1;
+ }
+
+ public Integer getImax2() {
+ return imax2;
+ }
+
+ public void setImax2(Integer imax2) {
+ this.imax2 = imax2;
+ }
+
+ public Integer getImax3() {
+ return imax3;
+ }
+
+ public void setImax3(Integer imax3) {
+ this.imax3 = imax3;
+ }
+
+ public Ptec getPtec() {
+ return ptec;
+ }
+
+ public void setPtec(Ptec ptec) {
+ this.ptec = ptec;
+ }
+
+ public int getPmax() {
+ return pmax;
+ }
+
+ public void setPmax(int pmax) {
+ this.pmax = pmax;
+ }
+
+ public int getPapp() {
+ return papp;
+ }
+
+ public void setPapp(int papp) {
+ this.papp = papp;
+ }
+
+ public String getMotdetat() {
+ return motdetat;
+ }
+
+ public void setMotdetat(String motdetat) {
+ this.motdetat = motdetat;
+ }
+
+ public String getPpot() {
+ return ppot;
+ }
+
+ public void setPpot(String ppot) {
+ this.ppot = ppot;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLongBaseOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLongBaseOption.java
new file mode 100644
index 0000000000000..c907fc41583f7
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLongBaseOption.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbetm;
+
+import org.openhab.binding.teleinfo.internal.dto.common.FrameBaseOption;
+
+/**
+ * The {@link FrameCbetmLongBaseOption} class defines a CBETM Teleinfo frame with Base option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public class FrameCbetmLongBaseOption extends FrameCbetmLong implements FrameBaseOption {
+
+ private static final long serialVersionUID = 7248276012515193856L;
+
+ private int base;
+
+ public FrameCbetmLongBaseOption() {
+ // default constructor
+ }
+
+ @Override
+ public int getBase() {
+ return base;
+ }
+
+ @Override
+ public void setBase(int base) {
+ this.base = base;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLongEjpOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLongEjpOption.java
new file mode 100644
index 0000000000000..ec13dc0307b2b
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLongEjpOption.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbetm;
+
+import org.openhab.binding.teleinfo.internal.dto.common.FrameEjpOption;
+
+/**
+ * The {@link FrameCbetmLongEjpOption} class defines a CBETM Teleinfo frame with EJP option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public class FrameCbetmLongEjpOption extends FrameCbetmLong implements FrameEjpOption {
+
+ private static final long serialVersionUID = 1104569000621483323L;
+
+ private int ejphpm;
+ private int ejphn;
+ private Integer pejp;
+
+ public FrameCbetmLongEjpOption() {
+ // default constructor
+ }
+
+ @Override
+ public int getEjphpm() {
+ return ejphpm;
+ }
+
+ @Override
+ public int getEjphn() {
+ return ejphn;
+ }
+
+ @Override
+ public Integer getPejp() {
+ return pejp;
+ }
+
+ @Override
+ public void setEjphpm(int ejphpm) {
+ this.ejphpm = ejphpm;
+ }
+
+ @Override
+ public void setEjphn(int ejphn) {
+ this.ejphn = ejphn;
+ }
+
+ @Override
+ public void setPejp(Integer pejp) {
+ this.pejp = pejp;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLongHcOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLongHcOption.java
new file mode 100644
index 0000000000000..faac765e8061b
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLongHcOption.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbetm;
+
+import org.openhab.binding.teleinfo.internal.dto.common.FrameHcOption;
+import org.openhab.binding.teleinfo.internal.dto.common.Hhphc;
+
+/**
+ * The {@link FrameCbetmLongHcOption} class defines a CBETM Teleinfo frame with HC/HP option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public class FrameCbetmLongHcOption extends FrameCbetmLong implements FrameHcOption {
+
+ private static final long serialVersionUID = -590729310348196198L;
+
+ private int hchc;
+ private int hchp;
+ private Hhphc hhphc;
+
+ public FrameCbetmLongHcOption() {
+ // default constructor
+ }
+
+ @Override
+ public int getHchc() {
+ return hchc;
+ }
+
+ @Override
+ public void setHchc(int hchc) {
+ this.hchc = hchc;
+ }
+
+ @Override
+ public int getHchp() {
+ return hchp;
+ }
+
+ @Override
+ public void setHchp(int hchp) {
+ this.hchp = hchp;
+ }
+
+ @Override
+ public Hhphc getHhphc() {
+ return hhphc;
+ }
+
+ @Override
+ public void setHhphc(Hhphc hhphc) {
+ this.hhphc = hhphc;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLongTempoOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLongTempoOption.java
new file mode 100644
index 0000000000000..137492e3bebe8
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmLongTempoOption.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbetm;
+
+import org.openhab.binding.teleinfo.internal.dto.common.FrameTempoOption;
+import org.openhab.binding.teleinfo.internal.dto.common.Hhphc;
+
+/**
+ * The {@link FrameCbetmLongTempoOption} class defines a CBETM Teleinfo frame with Tempo option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public class FrameCbetmLongTempoOption extends FrameCbetmLong implements FrameTempoOption {
+
+ private static final long serialVersionUID = 333018110121838463L;
+
+ private int bbrhpjr;
+ private int bbrhcjr;
+ private int bbrhpjw;
+ private int bbrhcjw;
+ private int bbrhpjb;
+ private int bbrhcjb;
+ private CouleurDemain demain;
+ private Hhphc hhphc;
+ private ProgrammeCircuit1 programmeCircuit1;
+ private ProgrammeCircuit2 programmeCircuit2;
+
+ public FrameCbetmLongTempoOption() {
+ // default constructor
+ }
+
+ @Override
+ public int getBbrhpjr() {
+ return bbrhpjr;
+ }
+
+ @Override
+ public int getBbrhcjr() {
+ return bbrhcjr;
+ }
+
+ @Override
+ public int getBbrhpjw() {
+ return bbrhpjw;
+ }
+
+ @Override
+ public int getBbrhcjw() {
+ return bbrhcjw;
+ }
+
+ @Override
+ public int getBbrhpjb() {
+ return bbrhpjb;
+ }
+
+ @Override
+ public int getBbrhcjb() {
+ return bbrhcjb;
+ }
+
+ @Override
+ public CouleurDemain getDemain() {
+ return demain;
+ }
+
+ @Override
+ public void setBbrhpjr(int bbrhpjr) {
+ this.bbrhpjr = bbrhpjr;
+ }
+
+ @Override
+ public void setBbrhcjr(int bbrhcjr) {
+ this.bbrhcjr = bbrhcjr;
+ }
+
+ @Override
+ public void setBbrhpjw(int bbrhpjw) {
+ this.bbrhpjw = bbrhpjw;
+ }
+
+ @Override
+ public void setBbrhcjw(int bbrhcjw) {
+ this.bbrhcjw = bbrhcjw;
+ }
+
+ @Override
+ public void setBbrhpjb(int bbrhpjb) {
+ this.bbrhpjb = bbrhpjb;
+ }
+
+ @Override
+ public void setBbrhcjb(int bbrhcjb) {
+ this.bbrhcjb = bbrhcjb;
+ }
+
+ @Override
+ public void setDemain(CouleurDemain demain) {
+ this.demain = demain;
+ }
+
+ @Override
+ public Hhphc getHhphc() {
+ return hhphc;
+ }
+
+ @Override
+ public void setHhphc(Hhphc hhphc) {
+ this.hhphc = hhphc;
+ }
+
+ @Override
+ public ProgrammeCircuit1 getProgrammeCircuit1() {
+ return programmeCircuit1;
+ }
+
+ @Override
+ public void setProgrammeCircuit1(ProgrammeCircuit1 programmeCircuit1) {
+ this.programmeCircuit1 = programmeCircuit1;
+ }
+
+ @Override
+ public ProgrammeCircuit2 getProgrammeCircuit2() {
+ return programmeCircuit2;
+ }
+
+ @Override
+ public void setProgrammeCircuit2(ProgrammeCircuit2 programmeCircuit2) {
+ this.programmeCircuit2 = programmeCircuit2;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmShort.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmShort.java
new file mode 100644
index 0000000000000..aeaecda930dd2
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/cbetm/FrameCbetmShort.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.cbetm;
+
+/**
+ * The {@link FrameCbetmShort} class defines a CBETM Short Teleinfo frames.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public class FrameCbetmShort extends FrameCbetm {
+
+ private static final long serialVersionUID = 4269743289079544119L;
+
+ private Integer adir1; // ampères
+ private Integer adir2; // ampères
+ private Integer adir3; // ampères
+
+ public FrameCbetmShort() {
+ // default constructor
+ }
+
+ public Integer getAdir1() {
+ return adir1;
+ }
+
+ public void setAdir1(Integer adir1) {
+ this.adir1 = adir1;
+ }
+
+ public Integer getAdir2() {
+ return adir2;
+ }
+
+ public void setAdir2(Integer adir2) {
+ this.adir2 = adir2;
+ }
+
+ public Integer getAdir3() {
+ return adir3;
+ }
+
+ public void setAdir3(Integer adir3) {
+ this.adir3 = adir3;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameAdco.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameAdco.java
new file mode 100644
index 0000000000000..752bcbaa0d2bd
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameAdco.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.common;
+
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+
+/**
+ * The {@link FrameAdco} class defines common attributes for CBEMM and CBETM Teleinfo frames.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public abstract class FrameAdco extends Frame {
+
+ private static final long serialVersionUID = 1384731471611580773L;
+
+ private String adco;
+
+ public FrameAdco() {
+ // default constructor
+ }
+
+ public String getAdco() {
+ return adco;
+ }
+
+ public void setAdco(String adco) {
+ this.adco = adco;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameBaseOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameBaseOption.java
new file mode 100644
index 0000000000000..8ae23f0320645
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameBaseOption.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.common;
+
+/**
+ * The {@link FrameBaseOption} interface defines common attributes for Base option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public interface FrameBaseOption {
+
+ int getBase();
+
+ void setBase(int base);
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameEjpOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameEjpOption.java
new file mode 100644
index 0000000000000..65fa837486996
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameEjpOption.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.common;
+
+/**
+ * The {@link FrameEjpOption} interface defines common attributes for EJP option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public interface FrameEjpOption {
+
+ int getEjphpm();
+
+ void setEjphpm(int ejphpm);
+
+ int getEjphn();
+
+ void setEjphn(int ejphn);
+
+ Integer getPejp();
+
+ void setPejp(Integer pejp);
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameHcOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameHcOption.java
new file mode 100644
index 0000000000000..06d2614888af3
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameHcOption.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.common;
+
+/**
+ * The {@link FrameHcOption} interface defines common attributes for HC option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public interface FrameHcOption {
+
+ int getHchc();
+
+ void setHchc(int hchc);
+
+ int getHchp();
+
+ void setHchp(int hchp);
+
+ Hhphc getHhphc();
+
+ void setHhphc(Hhphc hhphc);
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameTempoOption.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameTempoOption.java
new file mode 100644
index 0000000000000..2f1a57f9d04c1
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/FrameTempoOption.java
@@ -0,0 +1,84 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.common;
+
+/**
+ * The {@link FrameTempoOption} interface defines common attributes for Tempo option.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public interface FrameTempoOption {
+
+ public static enum CouleurDemain {
+ Bleu,
+ Blanc,
+ Rouge
+ }
+
+ public static enum ProgrammeCircuit1 {
+ A,
+ B,
+ C
+ }
+
+ public static enum ProgrammeCircuit2 {
+ P0,
+ P1,
+ P2,
+ P3,
+ P4,
+ P5,
+ P6,
+ P7
+ }
+
+ int getBbrhpjr();
+
+ void setBbrhpjr(int bbrhpjr);
+
+ int getBbrhcjr();
+
+ void setBbrhcjr(int bbrhcjr);
+
+ int getBbrhpjw();
+
+ void setBbrhpjw(int bbrhpjw);
+
+ int getBbrhcjw();
+
+ void setBbrhcjw(int bbrhcjw);
+
+ int getBbrhpjb();
+
+ void setBbrhpjb(int bbrhpjb);
+
+ int getBbrhcjb();
+
+ void setBbrhcjb(int bbrhcjb);
+
+ CouleurDemain getDemain();
+
+ void setDemain(CouleurDemain couleurDemain);
+
+ Hhphc getHhphc();
+
+ void setHhphc(Hhphc hhphc);
+
+ ProgrammeCircuit1 getProgrammeCircuit1();
+
+ void setProgrammeCircuit1(ProgrammeCircuit1 programmeCircuit1);
+
+ ProgrammeCircuit2 getProgrammeCircuit2();
+
+ void setProgrammeCircuit2(ProgrammeCircuit2 programmeCircuit2);
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/Hhphc.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/Hhphc.java
new file mode 100644
index 0000000000000..caf0d3e3e21cc
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/Hhphc.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.common;
+
+/**
+ * The {@link Hhphc} enumeration defines all HHPHC values.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public enum Hhphc {
+ A,
+ C,
+ D,
+ E,
+ Y
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/Ptec.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/Ptec.java
new file mode 100644
index 0000000000000..6137c11b625e2
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/dto/common/Ptec.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.dto.common;
+
+/**
+ * The {@link Ptec} enumeration defines all PTEC values.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+public enum Ptec {
+ TH,
+ HC,
+ HP,
+ HN,
+ PM,
+ HCJB,
+ HCJW,
+ HCJR,
+ HPJB,
+ HPJW,
+ HPJR
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoAbstractControllerHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoAbstractControllerHandler.java
new file mode 100644
index 0000000000000..7ed3415748cac
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoAbstractControllerHandler.java
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.thing.Bridge;
+import org.eclipse.smarthome.core.thing.binding.BaseBridgeHandler;
+import org.eclipse.smarthome.core.thing.binding.ThingHandlerService;
+import org.openhab.binding.teleinfo.internal.TeleinfoDiscoveryService;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+
+/**
+ * The {@link TeleinfoAbstractControllerHandler} class defines a skeleton for controller handlers.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+@NonNullByDefault
+public abstract class TeleinfoAbstractControllerHandler extends BaseBridgeHandler {
+
+ private List listeners = Collections.synchronizedList(new ArrayList<>());
+
+ public TeleinfoAbstractControllerHandler(Bridge bridge) {
+ super(bridge);
+ }
+
+ public void addListener(final TeleinfoControllerHandlerListener listener) {
+ listeners.add(listener);
+ }
+
+ public void removeListener(final TeleinfoControllerHandlerListener listener) {
+ listeners.remove(listener);
+ }
+
+ protected void fireOnFrameReceivedEvent(final Frame frame) {
+ listeners.forEach(l -> l.onFrameReceived(this, frame));
+ }
+
+ @Override
+ public Collection> getServices() {
+ return Collections.singleton(TeleinfoDiscoveryService.class);
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoAbstractElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoAbstractElectricityMeterHandler.java
new file mode 100644
index 0000000000000..cefb4352114c0
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoAbstractElectricityMeterHandler.java
@@ -0,0 +1,159 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler;
+
+import static org.openhab.binding.teleinfo.internal.TeleinfoBindingConstants.*;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.smarthome.core.library.types.QuantityType;
+import org.eclipse.smarthome.core.library.types.StringType;
+import org.eclipse.smarthome.core.library.unit.SmartHomeUnits;
+import org.eclipse.smarthome.core.thing.Bridge;
+import org.eclipse.smarthome.core.thing.Channel;
+import org.eclipse.smarthome.core.thing.ChannelUID;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.eclipse.smarthome.core.thing.ThingStatus;
+import org.eclipse.smarthome.core.thing.ThingStatusDetail;
+import org.eclipse.smarthome.core.thing.ThingStatusInfo;
+import org.eclipse.smarthome.core.thing.binding.BaseThingHandler;
+import org.eclipse.smarthome.core.types.Command;
+import org.eclipse.smarthome.core.types.UnDefType;
+import org.openhab.binding.teleinfo.internal.dto.common.FrameBaseOption;
+import org.openhab.binding.teleinfo.internal.dto.common.FrameEjpOption;
+import org.openhab.binding.teleinfo.internal.dto.common.FrameHcOption;
+import org.openhab.binding.teleinfo.internal.dto.common.FrameTempoOption;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The {@link TeleinfoAbstractElectricityMeterHandler} class defines a skeleton for Electricity Meters handlers.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+@NonNullByDefault
+public abstract class TeleinfoAbstractElectricityMeterHandler extends BaseThingHandler
+ implements TeleinfoControllerHandlerListener {
+ private final Logger logger = LoggerFactory.getLogger(TeleinfoAbstractElectricityMeterHandler.class);
+ protected TeleinfoElectricityMeterConfiguration configuration = new TeleinfoElectricityMeterConfiguration();
+
+ public TeleinfoAbstractElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ @Override
+ public void initialize() {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE, ERROR_OFFLINE_CONTROLLER_OFFLINE);
+
+ Bridge bridge = getBridge();
+ logger.debug("bridge = {}", bridge);
+ if (bridge != null) {
+ bridgeStatusChanged(bridge.getStatusInfo());
+ }
+ configuration = getConfigAs(TeleinfoElectricityMeterConfiguration.class);
+ }
+
+ @Override
+ public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) {
+ if (bridgeStatusInfo.getStatus() != ThingStatus.ONLINE) {
+ updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE, ERROR_OFFLINE_CONTROLLER_OFFLINE);
+ return;
+ }
+
+ Bridge bridge = getBridge();
+ if (bridge != null) {
+ TeleinfoAbstractControllerHandler controllerHandler = (TeleinfoAbstractControllerHandler) bridge
+ .getHandler();
+ if (controllerHandler != null) {
+ controllerHandler.addListener(this);
+ updateStatus(ThingStatus.ONLINE);
+ }
+ }
+ }
+
+ @Override
+ public void handleCommand(ChannelUID channelUID, Command command) {
+ // no commands supported
+ }
+
+ protected void updateStatesForBaseFrameOption(FrameBaseOption frameBaseOption) {
+ updateState(CHANNEL_BASE_FRAME_BASE, QuantityType.valueOf(frameBaseOption.getBase(), SmartHomeUnits.WATT_HOUR));
+ }
+
+ protected void updateStatesForHcFrameOption(FrameHcOption frameHcOption) {
+ updateState(CHANNEL_HC_FRAME_HCHC, QuantityType.valueOf(frameHcOption.getHchc(), SmartHomeUnits.WATT_HOUR));
+ updateState(CHANNEL_HC_FRAME_HCHP, QuantityType.valueOf(frameHcOption.getHchp(), SmartHomeUnits.WATT_HOUR));
+ updateState(CHANNEL_HC_FRAME_HHPHC, new StringType(frameHcOption.getHhphc().name()));
+ }
+
+ protected void updateStatesForTempoFrameOption(FrameTempoOption frameTempoOption) {
+ updateState(CHANNEL_TEMPO_FRAME_BBRHPJR,
+ QuantityType.valueOf(frameTempoOption.getBbrhpjr(), SmartHomeUnits.WATT_HOUR));
+ updateState(CHANNEL_TEMPO_FRAME_BBRHCJR,
+ QuantityType.valueOf(frameTempoOption.getBbrhcjr(), SmartHomeUnits.WATT_HOUR));
+ updateState(CHANNEL_TEMPO_FRAME_BBRHPJW,
+ QuantityType.valueOf(frameTempoOption.getBbrhpjw(), SmartHomeUnits.WATT_HOUR));
+ updateState(CHANNEL_TEMPO_FRAME_BBRHCJW,
+ QuantityType.valueOf(frameTempoOption.getBbrhcjw(), SmartHomeUnits.WATT_HOUR));
+ updateState(CHANNEL_TEMPO_FRAME_BBRHPJB,
+ QuantityType.valueOf(frameTempoOption.getBbrhpjb(), SmartHomeUnits.WATT_HOUR));
+ updateState(CHANNEL_TEMPO_FRAME_BBRHCJB,
+ QuantityType.valueOf(frameTempoOption.getBbrhcjb(), SmartHomeUnits.WATT_HOUR));
+ updateState(CHANNEL_TEMPO_FRAME_HHPHC, new StringType(frameTempoOption.getHhphc().name()));
+ updateState(CHANNEL_TEMPO_FRAME_PROGRAMME_CIRCUIT_1,
+ new StringType(frameTempoOption.getProgrammeCircuit1().name()));
+ updateState(CHANNEL_TEMPO_FRAME_PROGRAMME_CIRCUIT_2,
+ new StringType(frameTempoOption.getProgrammeCircuit2().name()));
+
+ if (frameTempoOption.getDemain() == null) {
+ updateState(CHANNEL_TEMPO_FRAME_DEMAIN, UnDefType.NULL);
+ } else {
+ updateState(CHANNEL_TEMPO_FRAME_DEMAIN, new StringType(frameTempoOption.getDemain().name()));
+ }
+ }
+
+ protected void updateStatesForEjpFrameOption(FrameEjpOption frameEjpOption) {
+ updateState(CHANNEL_EJP_FRAME_EJPHN, QuantityType.valueOf(frameEjpOption.getEjphn(), SmartHomeUnits.WATT_HOUR));
+ updateState(CHANNEL_EJP_FRAME_EJPHPM,
+ QuantityType.valueOf(frameEjpOption.getEjphpm(), SmartHomeUnits.WATT_HOUR));
+
+ if (frameEjpOption.getPejp() == null) {
+ updateState(CHANNEL_EJP_FRAME_PEJP, UnDefType.NULL);
+ } else {
+ updateState(CHANNEL_EJP_FRAME_PEJP, QuantityType.valueOf(frameEjpOption.getPejp(), SmartHomeUnits.MINUTE));
+ }
+ }
+
+ @Override
+ protected void updateStatus(ThingStatus status, ThingStatusDetail statusDetail, @Nullable String description) {
+ super.updateStatus(status, statusDetail, description);
+
+ if (!(ThingStatus.ONLINE.equals(status))) {
+ for (Channel channel : getThing().getChannels()) {
+ if (!CHANNEL_LAST_UPDATE.equals(channel.getUID().getId())) {
+ updateState(channel.getUID(), UnDefType.UNDEF);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void updateStatus(ThingStatus status, ThingStatusDetail statusDetail) {
+ this.updateStatus(status, statusDetail, null);
+ }
+
+ @Override
+ protected void updateStatus(ThingStatus status) {
+ this.updateStatus(status, ThingStatusDetail.NONE, null);
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoControllerHandlerListener.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoControllerHandlerListener.java
new file mode 100644
index 0000000000000..cf50686b54114
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoControllerHandlerListener.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+
+/**
+ * The {@link TeleinfoControllerHandlerListener} interface defines all events pushed by a
+ * {@link TeleinfoAbstractControllerHandler}.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+@NonNullByDefault
+public interface TeleinfoControllerHandlerListener {
+
+ void onFrameReceived(TeleinfoAbstractControllerHandler controllerHandler, final Frame frame);
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoElectricityMeterConfiguration.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoElectricityMeterConfiguration.java
new file mode 100644
index 0000000000000..0dc741e5be61a
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoElectricityMeterConfiguration.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+
+/**
+ * The {@link TeleinfoElectricityMeterConfiguration} class stores electricity meter thing configuration
+ *
+ * @author Olivier MARCEAU - Initial contribution
+ */
+@NonNullByDefault
+public class TeleinfoElectricityMeterConfiguration {
+
+ private String adco = "";
+
+ public String getAdco() {
+ return adco;
+ }
+
+ public void setAdco(String adco) {
+ this.adco = adco;
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoThingHandlerFactory.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoThingHandlerFactory.java
new file mode 100644
index 0000000000000..d0b75199dcaff
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/TeleinfoThingHandlerFactory.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler;
+
+import static org.openhab.binding.teleinfo.internal.TeleinfoBindingConstants.*;
+
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.smarthome.core.thing.Bridge;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.eclipse.smarthome.core.thing.ThingTypeUID;
+import org.eclipse.smarthome.core.thing.binding.BaseThingHandlerFactory;
+import org.eclipse.smarthome.core.thing.binding.ThingHandler;
+import org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory;
+import org.eclipse.smarthome.io.transport.serial.SerialPortManager;
+import org.openhab.binding.teleinfo.internal.handler.cbemm.TeleinfoBaseCbemmElectricityMeterHandler;
+import org.openhab.binding.teleinfo.internal.handler.cbemm.TeleinfoEjpCbemmElectricityMeterHandler;
+import org.openhab.binding.teleinfo.internal.handler.cbemm.TeleinfoHcCbemmElectricityMeterHandler;
+import org.openhab.binding.teleinfo.internal.handler.cbemm.TeleinfoTempoCbemmElectricityMeterHandler;
+import org.openhab.binding.teleinfo.internal.handler.cbemm.evoicc.TeleinfoBaseCbemmEvoIccElectricityMeterHandler;
+import org.openhab.binding.teleinfo.internal.handler.cbemm.evoicc.TeleinfoEjpCbemmEvoIccElectricityMeterHandler;
+import org.openhab.binding.teleinfo.internal.handler.cbemm.evoicc.TeleinfoHcCbemmEvoIccElectricityMeterHandler;
+import org.openhab.binding.teleinfo.internal.handler.cbemm.evoicc.TeleinfoTempoCbemmEvoIccElectricityMeterHandler;
+import org.openhab.binding.teleinfo.internal.handler.cbetm.TeleinfoBaseCbetmLongElectricityMeterHandler;
+import org.openhab.binding.teleinfo.internal.handler.cbetm.TeleinfoEjpCbetmLongElectricityMeterHandler;
+import org.openhab.binding.teleinfo.internal.handler.cbetm.TeleinfoHcCbetmLongElectricityMeterHandler;
+import org.openhab.binding.teleinfo.internal.handler.cbetm.TeleinfoTempoCbetmLongElectricityMeterHandler;
+import org.openhab.binding.teleinfo.internal.serial.TeleinfoSerialControllerHandler;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+
+/**
+ * The {@link TeleinfoThingHandlerFactory} is responsible for creating things and thing
+ * handlers.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+@NonNullByDefault
+@Component(configurationPid = "binding.teleinfo", service = ThingHandlerFactory.class)
+public class TeleinfoThingHandlerFactory extends BaseThingHandlerFactory {
+
+ private static final Set SUPPORTED_THING_TYPES_UIDS = Stream.of(THING_TYPE_SERIAL_CONTROLLER,
+ THING_HC_CBEMM_ELECTRICITY_METER_TYPE_UID, THING_BASE_CBEMM_ELECTRICITY_METER_TYPE_UID,
+ THING_TEMPO_CBEMM_ELECTRICITY_METER_TYPE_UID, THING_EJP_CBEMM_ELECTRICITY_METER_TYPE_UID,
+ THING_HC_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID, THING_BASE_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID,
+ THING_TEMPO_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID, THING_EJP_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID,
+ THING_HC_CBETM_ELECTRICITY_METER_TYPE_UID, THING_BASE_CBETM_ELECTRICITY_METER_TYPE_UID,
+ THING_TEMPO_CBETM_ELECTRICITY_METER_TYPE_UID, THING_EJP_CBETM_ELECTRICITY_METER_TYPE_UID)
+ .collect(Collectors.toSet());
+
+ private final SerialPortManager serialPortManager;
+
+ @Activate
+ public TeleinfoThingHandlerFactory(@Reference SerialPortManager serialPortManager) {
+ this.serialPortManager = serialPortManager;
+ }
+
+ @Override
+ public boolean supportsThingType(ThingTypeUID thingTypeUID) {
+ return SUPPORTED_THING_TYPES_UIDS.contains(thingTypeUID);
+ }
+
+ @Override
+ protected @Nullable ThingHandler createHandler(Thing thing) {
+ ThingTypeUID thingTypeUID = thing.getThingTypeUID();
+
+ if (THING_TYPE_SERIAL_CONTROLLER.equals(thingTypeUID)) {
+ return new TeleinfoSerialControllerHandler((Bridge) thing, serialPortManager);
+ }
+
+ if (THING_BASE_CBEMM_ELECTRICITY_METER_TYPE_UID.equals(thing.getThingTypeUID())) {
+ return new TeleinfoBaseCbemmElectricityMeterHandler(thing);
+ } else if (THING_HC_CBEMM_ELECTRICITY_METER_TYPE_UID.equals(thing.getThingTypeUID())) {
+ return new TeleinfoHcCbemmElectricityMeterHandler(thing);
+ } else if (THING_TEMPO_CBEMM_ELECTRICITY_METER_TYPE_UID.equals(thing.getThingTypeUID())) {
+ return new TeleinfoTempoCbemmElectricityMeterHandler(thing);
+ } else if (THING_EJP_CBEMM_ELECTRICITY_METER_TYPE_UID.equals(thing.getThingTypeUID())) {
+ return new TeleinfoEjpCbemmElectricityMeterHandler(thing);
+ } else if (THING_BASE_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID.equals(thing.getThingTypeUID())) {
+ return new TeleinfoBaseCbemmEvoIccElectricityMeterHandler(thing);
+ } else if (THING_HC_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID.equals(thing.getThingTypeUID())) {
+ return new TeleinfoHcCbemmEvoIccElectricityMeterHandler(thing);
+ } else if (THING_TEMPO_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID.equals(thing.getThingTypeUID())) {
+ return new TeleinfoTempoCbemmEvoIccElectricityMeterHandler(thing);
+ } else if (THING_EJP_CBEMM_EVO_ICC_ELECTRICITY_METER_TYPE_UID.equals(thing.getThingTypeUID())) {
+ return new TeleinfoEjpCbemmEvoIccElectricityMeterHandler(thing);
+ } else if (THING_BASE_CBETM_ELECTRICITY_METER_TYPE_UID.equals(thing.getThingTypeUID())) {
+ return new TeleinfoBaseCbetmLongElectricityMeterHandler(thing);
+ } else if (THING_HC_CBETM_ELECTRICITY_METER_TYPE_UID.equals(thing.getThingTypeUID())) {
+ return new TeleinfoHcCbetmLongElectricityMeterHandler(thing);
+ } else if (THING_TEMPO_CBETM_ELECTRICITY_METER_TYPE_UID.equals(thing.getThingTypeUID())) {
+ return new TeleinfoTempoCbetmLongElectricityMeterHandler(thing);
+ } else if (THING_EJP_CBETM_ELECTRICITY_METER_TYPE_UID.equals(thing.getThingTypeUID())) {
+ return new TeleinfoEjpCbetmLongElectricityMeterHandler(thing);
+ } else {
+ throw new IllegalStateException("Teleinfo frame type not supported: " + thing.getThingTypeUID());
+ }
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoAbstractCbemmElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoAbstractCbemmElectricityMeterHandler.java
new file mode 100644
index 0000000000000..790ebd8e2b0bb
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoAbstractCbemmElectricityMeterHandler.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbemm;
+
+import static org.openhab.binding.teleinfo.internal.TeleinfoBindingConstants.*;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.library.types.DateTimeType;
+import org.eclipse.smarthome.core.library.types.QuantityType;
+import org.eclipse.smarthome.core.library.types.StringType;
+import org.eclipse.smarthome.core.library.unit.SmartHomeUnits;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.eclipse.smarthome.core.types.UnDefType;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemm;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractElectricityMeterHandler;
+
+/**
+ * The {@link TeleinfoAbstractCbemmElectricityMeterHandler} class defines a skeleton for CBEMM Electricity Meters
+ * handlers.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+@NonNullByDefault
+public abstract class TeleinfoAbstractCbemmElectricityMeterHandler extends TeleinfoAbstractElectricityMeterHandler {
+
+ public TeleinfoAbstractCbemmElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ protected void updateStatesForCommonCbemmChannels(FrameCbemm frame) {
+ // update common channels
+ updateState(CHANNEL_CBEMM_ISOUSC, QuantityType.valueOf(frame.getIsousc(), SmartHomeUnits.AMPERE));
+ updateState(CHANNEL_CBEMM_PTEC, new StringType(frame.getPtec().name()));
+ if (frame.getImax() == null) {
+ updateState(CHANNEL_CBEMM_IMAX, UnDefType.NULL);
+ } else {
+ updateState(CHANNEL_CBEMM_IMAX, QuantityType.valueOf(frame.getImax(), SmartHomeUnits.AMPERE));
+ }
+
+ if (frame.getAdps() == null) {
+ updateState(CHANNEL_CBEMM_ADPS, UnDefType.NULL);
+ } else {
+ updateState(CHANNEL_CBEMM_ADPS, QuantityType.valueOf(frame.getAdps(), SmartHomeUnits.AMPERE));
+ }
+ updateState(CHANNEL_CBEMM_IINST, QuantityType.valueOf(frame.getIinst(), SmartHomeUnits.AMPERE));
+
+ updateState(CHANNEL_LAST_UPDATE, new DateTimeType());
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoBaseCbemmElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoBaseCbemmElectricityMeterHandler.java
new file mode 100644
index 0000000000000..5b3af50de0af3
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoBaseCbemmElectricityMeterHandler.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbemm;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemmBaseOption;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
+
+/**
+ * The {@link TeleinfoBaseCbemmElectricityMeterHandler} class defines a handler for a BASE CBEMM Electricity Meters
+ * thing.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ * @author Olivier MARCEAU - Change ADCO property to parameter
+ */
+@NonNullByDefault
+public class TeleinfoBaseCbemmElectricityMeterHandler extends TeleinfoAbstractCbemmElectricityMeterHandler {
+
+ public TeleinfoBaseCbemmElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ @Override
+ public void onFrameReceived(TeleinfoAbstractControllerHandler controllerHandler, Frame frame) {
+ final FrameCbemmBaseOption frameCbemmBaseOption = (FrameCbemmBaseOption) frame;
+
+ String adco = configuration.getAdco();
+ if (frameCbemmBaseOption.getAdco().equalsIgnoreCase(adco)) {
+ updateStatesForCommonCbemmChannels(frameCbemmBaseOption);
+ updateStatesForBaseFrameOption(frameCbemmBaseOption);
+ }
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoEjpCbemmElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoEjpCbemmElectricityMeterHandler.java
new file mode 100644
index 0000000000000..86f0a91a861a0
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoEjpCbemmElectricityMeterHandler.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbemm;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemmEjpOption;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
+
+/**
+ * The {@link TeleinfoEjpCbemmElectricityMeterHandler} class defines a handler for a EJB CBEMM Electricity Meters
+ * thing.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ * @author Olivier MARCEAU - Change ADCO property to parameter
+ */
+@NonNullByDefault
+public class TeleinfoEjpCbemmElectricityMeterHandler extends TeleinfoAbstractCbemmElectricityMeterHandler {
+
+ public TeleinfoEjpCbemmElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ @Override
+ public void onFrameReceived(TeleinfoAbstractControllerHandler controllerHandler, Frame frame) {
+ final FrameCbemmEjpOption frameCbemmEjpOption = (FrameCbemmEjpOption) frame;
+
+ String adco = configuration.getAdco();
+ if (frameCbemmEjpOption.getAdco().equalsIgnoreCase(adco)) {
+ updateStatesForCommonCbemmChannels(frameCbemmEjpOption);
+ updateStatesForEjpFrameOption(frameCbemmEjpOption);
+ }
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoHcCbemmElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoHcCbemmElectricityMeterHandler.java
new file mode 100644
index 0000000000000..c148e9a8e8f77
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoHcCbemmElectricityMeterHandler.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbemm;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemmHcOption;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
+
+/**
+ * The {@link TeleinfoHcCbemmElectricityMeterHandler} class defines a handler for a HC CBEMM Electricity Meters thing.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ * @author Olivier MARCEAU - Change ADCO property to parameter
+ */
+@NonNullByDefault
+public class TeleinfoHcCbemmElectricityMeterHandler extends TeleinfoAbstractCbemmElectricityMeterHandler {
+
+ public TeleinfoHcCbemmElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ @Override
+ public void onFrameReceived(TeleinfoAbstractControllerHandler controllerHandler, Frame frame) {
+ final FrameCbemmHcOption frameCbemmHcOption = (FrameCbemmHcOption) frame;
+
+ String adco = configuration.getAdco();
+ if (frameCbemmHcOption.getAdco().equalsIgnoreCase(adco)) {
+ updateStatesForCommonCbemmChannels(frameCbemmHcOption);
+ updateStatesForHcFrameOption(frameCbemmHcOption);
+ }
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoTempoCbemmElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoTempoCbemmElectricityMeterHandler.java
new file mode 100644
index 0000000000000..093486a592158
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/TeleinfoTempoCbemmElectricityMeterHandler.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbemm;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemmTempoOption;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
+
+/**
+ * The {@link TeleinfoTempoCbemmElectricityMeterHandler} class defines a handler for a TEMPO CBEMM Electricity Meters
+ * thing.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ * @author Olivier MARCEAU - Change ADCO property to parameter
+ */
+@NonNullByDefault
+public class TeleinfoTempoCbemmElectricityMeterHandler extends TeleinfoAbstractCbemmElectricityMeterHandler {
+
+ public TeleinfoTempoCbemmElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ @Override
+ public void onFrameReceived(TeleinfoAbstractControllerHandler controllerHandler, Frame frame) {
+ final FrameCbemmTempoOption frameCbemmTempoOption = (FrameCbemmTempoOption) frame;
+
+ String adco = configuration.getAdco();
+ if (frameCbemmTempoOption.getAdco().equalsIgnoreCase(adco)) {
+ updateStatesForCommonCbemmChannels(frameCbemmTempoOption);
+ updateStatesForTempoFrameOption(frameCbemmTempoOption);
+ }
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoAbstractCbemmEvoIccElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoAbstractCbemmEvoIccElectricityMeterHandler.java
new file mode 100644
index 0000000000000..25d04b08176be
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoAbstractCbemmEvoIccElectricityMeterHandler.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbemm.evoicc;
+
+import static org.openhab.binding.teleinfo.internal.TeleinfoBindingConstants.CHANNEL_CBEMM_EVOLUTION_ICC_PAPP;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.library.types.QuantityType;
+import org.eclipse.smarthome.core.library.unit.SmartHomeUnits;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIcc;
+import org.openhab.binding.teleinfo.internal.handler.cbemm.TeleinfoAbstractCbemmElectricityMeterHandler;
+
+/**
+ * The {@link TeleinfoAbstractCbemmEvoIccElectricityMeterHandler} class defines a skeleton for CBEMM Evolution ICC
+ * Electricity Meters
+ * handlers.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+@NonNullByDefault
+public abstract class TeleinfoAbstractCbemmEvoIccElectricityMeterHandler
+ extends TeleinfoAbstractCbemmElectricityMeterHandler {
+
+ public TeleinfoAbstractCbemmEvoIccElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ protected void updateStatesForCommonCbemmEvolutionIccChannels(FrameCbemmEvolutionIcc frame) {
+ updateStatesForCommonCbemmChannels(frame);
+ updateState(CHANNEL_CBEMM_EVOLUTION_ICC_PAPP, QuantityType.valueOf(frame.getPapp(), SmartHomeUnits.WATT));
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoBaseCbemmEvoIccElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoBaseCbemmEvoIccElectricityMeterHandler.java
new file mode 100644
index 0000000000000..dc6a65610429d
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoBaseCbemmEvoIccElectricityMeterHandler.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbemm.evoicc;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccBaseOption;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
+
+/**
+ * The {@link TeleinfoBaseCbemmEvoIccElectricityMeterHandler} class defines a handler for a BASE CBEMM Evolution ICC
+ * Electricity Meters thing.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ * @author Olivier MARCEAU - Change ADCO property to parameter
+ */
+@NonNullByDefault
+public class TeleinfoBaseCbemmEvoIccElectricityMeterHandler extends TeleinfoAbstractCbemmEvoIccElectricityMeterHandler {
+
+ public TeleinfoBaseCbemmEvoIccElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ @Override
+ public void onFrameReceived(TeleinfoAbstractControllerHandler controllerHandler, Frame frame) {
+ final FrameCbemmEvolutionIccBaseOption frameCbemmEvoIccBaseOption = (FrameCbemmEvolutionIccBaseOption) frame;
+
+ String adco = configuration.getAdco();
+ if (frameCbemmEvoIccBaseOption.getAdco().equalsIgnoreCase(adco)) {
+ updateStatesForCommonCbemmEvolutionIccChannels(frameCbemmEvoIccBaseOption);
+ updateStatesForBaseFrameOption(frameCbemmEvoIccBaseOption);
+ }
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoEjpCbemmEvoIccElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoEjpCbemmEvoIccElectricityMeterHandler.java
new file mode 100644
index 0000000000000..1f24418dded73
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoEjpCbemmEvoIccElectricityMeterHandler.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbemm.evoicc;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccEjpOption;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
+
+/**
+ * The {@link TeleinfoEjpCbemmEvoIccElectricityMeterHandler} class defines a handler for a EJP CBEMM Evolution ICC
+ * Electricity Meters thing.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ * @author Olivier MARCEAU - Change ADCO property to parameter
+ */
+@NonNullByDefault
+public class TeleinfoEjpCbemmEvoIccElectricityMeterHandler extends TeleinfoAbstractCbemmEvoIccElectricityMeterHandler {
+
+ public TeleinfoEjpCbemmEvoIccElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ @Override
+ public void onFrameReceived(TeleinfoAbstractControllerHandler controllerHandler, Frame frame) {
+ final FrameCbemmEvolutionIccEjpOption frameCbemmEvoIccEjpOption = (FrameCbemmEvolutionIccEjpOption) frame;
+
+ String adco = configuration.getAdco();
+ if (frameCbemmEvoIccEjpOption.getAdco().equalsIgnoreCase(adco)) {
+ updateStatesForCommonCbemmEvolutionIccChannels(frameCbemmEvoIccEjpOption);
+ updateStatesForEjpFrameOption(frameCbemmEvoIccEjpOption);
+ }
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoHcCbemmEvoIccElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoHcCbemmEvoIccElectricityMeterHandler.java
new file mode 100644
index 0000000000000..e362969fa15ff
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoHcCbemmEvoIccElectricityMeterHandler.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbemm.evoicc;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccHcOption;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
+
+/**
+ * The {@link TeleinfoHcCbemmEvoIccElectricityMeterHandler} class defines a handler for a HC CBEMM Evolution ICC
+ * Electricity Meters thing.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ * @author Olivier MARCEAU - Change ADCO property to parameter
+ */
+@NonNullByDefault
+public class TeleinfoHcCbemmEvoIccElectricityMeterHandler extends TeleinfoAbstractCbemmEvoIccElectricityMeterHandler {
+
+ public TeleinfoHcCbemmEvoIccElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ @Override
+ public void onFrameReceived(TeleinfoAbstractControllerHandler controllerHandler, Frame frame) {
+ final FrameCbemmEvolutionIccHcOption frameCbemmEvoIccHcOption = (FrameCbemmEvolutionIccHcOption) frame;
+
+ String adco = configuration.getAdco();
+ if (frameCbemmEvoIccHcOption.getAdco().equalsIgnoreCase(adco)) {
+ updateStatesForCommonCbemmEvolutionIccChannels(frameCbemmEvoIccHcOption);
+ updateStatesForHcFrameOption(frameCbemmEvoIccHcOption);
+ }
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoTempoCbemmEvoIccElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoTempoCbemmEvoIccElectricityMeterHandler.java
new file mode 100644
index 0000000000000..9bff39aaec5e6
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbemm/evoicc/TeleinfoTempoCbemmEvoIccElectricityMeterHandler.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbemm.evoicc;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccTempoOption;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
+
+/**
+ * The {@link TeleinfoTempoCbemmEvoIccElectricityMeterHandler} class defines a handler for a TEMPO CBEMM Evolution ICC
+ * Electricity Meters thing.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ * @author Olivier MARCEAU - Change ADCO property to parameter
+ */
+@NonNullByDefault
+public class TeleinfoTempoCbemmEvoIccElectricityMeterHandler
+ extends TeleinfoAbstractCbemmEvoIccElectricityMeterHandler {
+
+ public TeleinfoTempoCbemmEvoIccElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ @Override
+ public void onFrameReceived(TeleinfoAbstractControllerHandler controllerHandler, Frame frame) {
+ final FrameCbemmEvolutionIccTempoOption frameCbemmEvoIccTempoOption = (FrameCbemmEvolutionIccTempoOption) frame;
+
+ String adco = configuration.getAdco();
+ if (frameCbemmEvoIccTempoOption.getAdco().equalsIgnoreCase(adco)) {
+ updateStatesForCommonCbemmEvolutionIccChannels(frameCbemmEvoIccTempoOption);
+ updateStatesForTempoFrameOption(frameCbemmEvoIccTempoOption);
+ }
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoAbstractCbetmElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoAbstractCbetmElectricityMeterHandler.java
new file mode 100644
index 0000000000000..112e69fd02dfd
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoAbstractCbetmElectricityMeterHandler.java
@@ -0,0 +1,119 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbetm;
+
+import static org.openhab.binding.teleinfo.internal.TeleinfoBindingConstants.*;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.library.types.DateTimeType;
+import org.eclipse.smarthome.core.library.types.QuantityType;
+import org.eclipse.smarthome.core.library.types.StringType;
+import org.eclipse.smarthome.core.library.unit.SmartHomeUnits;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.eclipse.smarthome.core.types.UnDefType;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetm;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLong;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmShort;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractElectricityMeterHandler;
+
+/**
+ * The {@link TeleinfoAbstractCbetmElectricityMeterHandler} class defines a skeleton for CBETM Electricity Meters
+ * handlers.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+@NonNullByDefault
+public abstract class TeleinfoAbstractCbetmElectricityMeterHandler extends TeleinfoAbstractElectricityMeterHandler {
+
+ public TeleinfoAbstractCbetmElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ protected void updateStatesForCommonCbetmChannels(FrameCbetm frameCbetm) {
+ updateState(CHANNEL_CBETM_IINST1, QuantityType.valueOf(frameCbetm.getIinst1(), SmartHomeUnits.AMPERE));
+ updateState(CHANNEL_CBETM_IINST2, QuantityType.valueOf(frameCbetm.getIinst2(), SmartHomeUnits.AMPERE));
+ updateState(CHANNEL_CBETM_IINST3, QuantityType.valueOf(frameCbetm.getIinst3(), SmartHomeUnits.AMPERE));
+
+ if (frameCbetm instanceof FrameCbetmLong) {
+ FrameCbetmLong frameCbetmLong = (FrameCbetmLong) frameCbetm;
+
+ updateState(CHANNEL_CBETM_FRAME_TYPE, new StringType("LONG"));
+
+ updateState(CHANNEL_CBETM_LONG_ISOUSC,
+ QuantityType.valueOf(frameCbetmLong.getIsousc(), SmartHomeUnits.AMPERE));
+ updateState(CHANNEL_CBETM_LONG_PTEC, new StringType(frameCbetmLong.getPtec().name()));
+ if (frameCbetmLong.getImax1() == null) {
+ updateState(CHANNEL_CBETM_LONG_IMAX1, UnDefType.NULL);
+ } else {
+ updateState(CHANNEL_CBETM_LONG_IMAX1,
+ QuantityType.valueOf(frameCbetmLong.getImax1(), SmartHomeUnits.AMPERE));
+ }
+ if (frameCbetmLong.getImax2() == null) {
+ updateState(CHANNEL_CBETM_LONG_IMAX2, UnDefType.NULL);
+ } else {
+ updateState(CHANNEL_CBETM_LONG_IMAX2,
+ QuantityType.valueOf(frameCbetmLong.getImax2(), SmartHomeUnits.AMPERE));
+ }
+ if (frameCbetmLong.getImax3() == null) {
+ updateState(CHANNEL_CBETM_LONG_IMAX3, UnDefType.NULL);
+ } else {
+ updateState(CHANNEL_CBETM_LONG_IMAX3,
+ QuantityType.valueOf(frameCbetmLong.getImax3(), SmartHomeUnits.AMPERE));
+ }
+
+ updateState(CHANNEL_CBETM_LONG_PMAX, QuantityType.valueOf(frameCbetmLong.getPmax(), SmartHomeUnits.WATT));
+ updateState(CHANNEL_CBETM_LONG_PAPP, QuantityType.valueOf(frameCbetmLong.getPapp(), SmartHomeUnits.WATT));
+ updateState(CHANNEL_CBETM_LONG_PPOT, new StringType(frameCbetmLong.getPpot()));
+
+ updateState(CHANNEL_CBETM_SHORT_ADIR1, UnDefType.NULL);
+ updateState(CHANNEL_CBETM_SHORT_ADIR2, UnDefType.NULL);
+ updateState(CHANNEL_CBETM_SHORT_ADIR3, UnDefType.NULL);
+ } else { // FrameCbetmShort
+ FrameCbetmShort frameCbetmShort = (FrameCbetmShort) frameCbetm;
+
+ updateState(CHANNEL_CBETM_FRAME_TYPE, new StringType("SHORT"));
+
+ if (frameCbetmShort.getAdir1() == null) {
+ updateState(CHANNEL_CBETM_SHORT_ADIR1, UnDefType.NULL);
+ } else {
+ updateState(CHANNEL_CBETM_SHORT_ADIR1,
+ QuantityType.valueOf(frameCbetmShort.getAdir1(), SmartHomeUnits.AMPERE));
+ }
+
+ if (frameCbetmShort.getAdir2() == null) {
+ updateState(CHANNEL_CBETM_SHORT_ADIR2, UnDefType.NULL);
+ } else {
+ updateState(CHANNEL_CBETM_SHORT_ADIR2,
+ QuantityType.valueOf(frameCbetmShort.getAdir2(), SmartHomeUnits.AMPERE));
+ }
+
+ if (frameCbetmShort.getAdir3() == null) {
+ updateState(CHANNEL_CBETM_SHORT_ADIR3, UnDefType.NULL);
+ } else {
+ updateState(CHANNEL_CBETM_SHORT_ADIR3,
+ QuantityType.valueOf(frameCbetmShort.getAdir3(), SmartHomeUnits.AMPERE));
+ }
+
+ updateState(CHANNEL_CBETM_LONG_ISOUSC, UnDefType.NULL);
+ updateState(CHANNEL_CBETM_LONG_PTEC, UnDefType.NULL);
+ updateState(CHANNEL_CBETM_LONG_IMAX1, UnDefType.NULL);
+ updateState(CHANNEL_CBETM_LONG_IMAX2, UnDefType.NULL);
+ updateState(CHANNEL_CBETM_LONG_IMAX3, UnDefType.NULL);
+ updateState(CHANNEL_CBETM_LONG_PMAX, UnDefType.NULL);
+ updateState(CHANNEL_CBETM_LONG_PAPP, UnDefType.NULL);
+ updateState(CHANNEL_CBETM_LONG_PPOT, UnDefType.NULL);
+ }
+
+ updateState(CHANNEL_LAST_UPDATE, new DateTimeType());
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoBaseCbetmLongElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoBaseCbetmLongElectricityMeterHandler.java
new file mode 100644
index 0000000000000..efe73922e2199
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoBaseCbetmLongElectricityMeterHandler.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbetm;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetm;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLongBaseOption;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
+
+/**
+ * The {@link TeleinfoBaseCbetmLongElectricityMeterHandler} class defines a handler for a BASE CBETM Electricity Meters
+ * thing.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ * @author Olivier MARCEAU - Change ADCO property to parameter
+ */
+@NonNullByDefault
+public class TeleinfoBaseCbetmLongElectricityMeterHandler extends TeleinfoAbstractCbetmElectricityMeterHandler {
+
+ public TeleinfoBaseCbetmLongElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ @Override
+ public void onFrameReceived(TeleinfoAbstractControllerHandler controllerHandler, Frame frame) {
+ final FrameCbetm frameCbetm = (FrameCbetm) frame;
+
+ String adco = configuration.getAdco();
+ if (frameCbetm.getAdco().equalsIgnoreCase(adco)) {
+ updateStatesForCommonCbetmChannels(frameCbetm);
+ if (frameCbetm instanceof FrameCbetmLongBaseOption) {
+ updateStatesForBaseFrameOption((FrameCbetmLongBaseOption) frameCbetm);
+ }
+ }
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoEjpCbetmLongElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoEjpCbetmLongElectricityMeterHandler.java
new file mode 100644
index 0000000000000..29ac006768d20
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoEjpCbetmLongElectricityMeterHandler.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbetm;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetm;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLongEjpOption;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
+
+/**
+ * The {@link TeleinfoEjpCbetmLongElectricityMeterHandler} class defines a handler for a EJP CBETM Electricity Meters
+ * thing.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ * @author Olivier MARCEAU - Change ADCO property to parameter
+ */
+@NonNullByDefault
+public class TeleinfoEjpCbetmLongElectricityMeterHandler extends TeleinfoAbstractCbetmElectricityMeterHandler {
+
+ public TeleinfoEjpCbetmLongElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ @Override
+ public void onFrameReceived(TeleinfoAbstractControllerHandler controllerHandler, Frame frame) {
+ final FrameCbetm frameCbetm = (FrameCbetm) frame;
+
+ String adco = configuration.getAdco();
+ if (frameCbetm.getAdco().equalsIgnoreCase(adco)) {
+ updateStatesForCommonCbetmChannels(frameCbetm);
+ if (frameCbetm instanceof FrameCbetmLongEjpOption) {
+ updateStatesForEjpFrameOption((FrameCbetmLongEjpOption) frameCbetm);
+ }
+ }
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoHcCbetmLongElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoHcCbetmLongElectricityMeterHandler.java
new file mode 100644
index 0000000000000..84731b593ea07
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoHcCbetmLongElectricityMeterHandler.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbetm;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetm;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLongHcOption;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
+
+/**
+ * The {@link TeleinfoHcCbetmLongElectricityMeterHandler} class defines a handler for a HC CBETM Electricity Meters
+ * thing.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ * @author Olivier MARCEAU - Change ADCO property to parameter
+ */
+@NonNullByDefault
+public class TeleinfoHcCbetmLongElectricityMeterHandler extends TeleinfoAbstractCbetmElectricityMeterHandler {
+
+ public TeleinfoHcCbetmLongElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ @Override
+ public void onFrameReceived(TeleinfoAbstractControllerHandler controllerHandler, Frame frame) {
+ final FrameCbetm frameCbetm = (FrameCbetm) frame;
+
+ String adco = configuration.getAdco();
+ if (frameCbetm.getAdco().equalsIgnoreCase(adco)) {
+ updateStatesForCommonCbetmChannels(frameCbetm);
+
+ if (frameCbetm instanceof FrameCbetmLongHcOption) {
+ updateStatesForHcFrameOption((FrameCbetmLongHcOption) frameCbetm);
+ }
+ }
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoTempoCbetmLongElectricityMeterHandler.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoTempoCbetmLongElectricityMeterHandler.java
new file mode 100644
index 0000000000000..b574f88e9e293
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/handler/cbetm/TeleinfoTempoCbetmLongElectricityMeterHandler.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.handler.cbetm;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.smarthome.core.thing.Thing;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetm;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLongTempoOption;
+import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
+
+/**
+ * The {@link TeleinfoTempoCbetmLongElectricityMeterHandler} class defines a handler for a TEMPO CBETM Electricity
+ * Meters
+ * thing.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ * @author Olivier MARCEAU - Change ADCO property to parameter
+ */
+@NonNullByDefault
+public class TeleinfoTempoCbetmLongElectricityMeterHandler extends TeleinfoAbstractCbetmElectricityMeterHandler {
+
+ public TeleinfoTempoCbetmLongElectricityMeterHandler(Thing thing) {
+ super(thing);
+ }
+
+ @Override
+ public void onFrameReceived(TeleinfoAbstractControllerHandler controllerHandler, Frame frame) {
+ final FrameCbetm frameCbetm = (FrameCbetm) frame;
+
+ String adco = configuration.getAdco();
+ if (frameCbetm.getAdco().equalsIgnoreCase(adco)) {
+ updateStatesForCommonCbetmChannels(frameCbetm);
+
+ if (frameCbetm instanceof FrameCbetmLongTempoOption) {
+ updateStatesForTempoFrameOption((FrameCbetmLongTempoOption) frameCbetm);
+ }
+ }
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/reader/TeleinfoReader.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/reader/TeleinfoReader.java
new file mode 100644
index 0000000000000..7c39c04bc37b7
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/reader/TeleinfoReader.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.reader;
+
+import java.io.Closeable;
+import java.io.IOException;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+
+/**
+ * The {@link TeleinfoReader} interface defines a mechanism to read Teleinfo frames.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+@NonNullByDefault
+public interface TeleinfoReader extends Closeable {
+
+ void open() throws IOException;
+
+ void addListener(final TeleinfoReaderListener listener);
+
+ void removeListener(final TeleinfoReaderListener listener);
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/reader/TeleinfoReaderAdaptor.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/reader/TeleinfoReaderAdaptor.java
new file mode 100644
index 0000000000000..2524c36042b83
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/reader/TeleinfoReaderAdaptor.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.reader;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+
+/**
+ * The {@link TeleinfoReaderAdaptor} class defines an adaptor at {@link TeleinfoReader} interface.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+@NonNullByDefault
+public abstract class TeleinfoReaderAdaptor implements TeleinfoReader {
+
+ private List listeners = new ArrayList<>();
+
+ @Override
+ public void addListener(final TeleinfoReaderListener listener) {
+ listeners.add(listener);
+ }
+
+ @Override
+ public void removeListener(final TeleinfoReaderListener listener) {
+ listeners.remove(listener);
+ }
+
+ protected void fireOnFrameReceivedEvent(final Frame frame) {
+ for (TeleinfoReaderListener listener : listeners) {
+ listener.onFrameReceived(this, frame);
+ }
+ }
+
+ protected void fireOnOpeningEvent() {
+ for (TeleinfoReaderListener listener : listeners) {
+ listener.onOpening(this);
+ }
+ }
+
+ protected void fireOnOpenedEvent() {
+ for (TeleinfoReaderListener listener : listeners) {
+ listener.onOpened(this);
+ }
+ }
+
+ protected void fireOnClosingEvent() {
+ for (TeleinfoReaderListener listener : listeners) {
+ listener.onClosing(this);
+ }
+ }
+
+ protected void fireOnClosedEvent() {
+ for (TeleinfoReaderListener listener : listeners) {
+ listener.onClosed(this);
+ }
+ }
+
+ public List getListeners() {
+ return Collections.unmodifiableList(listeners);
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/reader/TeleinfoReaderListener.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/reader/TeleinfoReaderListener.java
new file mode 100644
index 0000000000000..177cead0a0807
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/reader/TeleinfoReaderListener.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.reader;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+
+/**
+ * The {@link TeleinfoReaderListener} interface defines all events pushed by a {@link TeleinfoReader}.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+@NonNullByDefault
+public interface TeleinfoReaderListener {
+
+ default void onFrameReceived(final TeleinfoReader reader, final Frame frame) {
+ // NOP
+ }
+
+ default void onOpening(final TeleinfoReader reader) {
+ // NOP
+ }
+
+ default void onOpened(final TeleinfoReader reader) {
+ // NOP
+ }
+
+ default void onClosing(final TeleinfoReader reader) {
+ // NOP
+ }
+
+ default void onClosed(final TeleinfoReader reader) {
+ // NOP
+ }
+}
diff --git a/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/reader/io/TeleinfoInputStream.java b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/reader/io/TeleinfoInputStream.java
new file mode 100644
index 0000000000000..417157fdaab1b
--- /dev/null
+++ b/bundles/org.openhab.binding.teleinfo/src/main/java/org/openhab/binding/teleinfo/internal/reader/io/TeleinfoInputStream.java
@@ -0,0 +1,690 @@
+/**
+ * Copyright (c) 2010-2020 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.openhab.binding.teleinfo.internal.reader.io;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.time.LocalDate;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+import org.openhab.binding.teleinfo.internal.dto.Frame;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemm;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemmBaseOption;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemmEjpOption;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemmHcOption;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.FrameCbemmTempoOption;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIcc;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccBaseOption;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccEjpOption;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccHcOption;
+import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccTempoOption;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLong;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLongBaseOption;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLongEjpOption;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLongHcOption;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLongTempoOption;
+import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmShort;
+import org.openhab.binding.teleinfo.internal.dto.common.FrameBaseOption;
+import org.openhab.binding.teleinfo.internal.dto.common.FrameEjpOption;
+import org.openhab.binding.teleinfo.internal.dto.common.FrameHcOption;
+import org.openhab.binding.teleinfo.internal.dto.common.FrameTempoOption;
+import org.openhab.binding.teleinfo.internal.dto.common.FrameTempoOption.CouleurDemain;
+import org.openhab.binding.teleinfo.internal.dto.common.FrameTempoOption.ProgrammeCircuit1;
+import org.openhab.binding.teleinfo.internal.dto.common.FrameTempoOption.ProgrammeCircuit2;
+import org.openhab.binding.teleinfo.internal.dto.common.Hhphc;
+import org.openhab.binding.teleinfo.internal.dto.common.Ptec;
+import org.openhab.binding.teleinfo.internal.reader.io.serialport.ConversionException;
+import org.openhab.binding.teleinfo.internal.reader.io.serialport.FrameUtil;
+import org.openhab.binding.teleinfo.internal.reader.io.serialport.InvalidFrameException;
+import org.openhab.binding.teleinfo.internal.reader.io.serialport.Label;
+import org.openhab.binding.teleinfo.internal.reader.io.serialport.converter.Converter;
+import org.openhab.binding.teleinfo.internal.reader.io.serialport.converter.CouleurDemainConverter;
+import org.openhab.binding.teleinfo.internal.reader.io.serialport.converter.FloatConverter;
+import org.openhab.binding.teleinfo.internal.reader.io.serialport.converter.HhphcConverter;
+import org.openhab.binding.teleinfo.internal.reader.io.serialport.converter.IntegerConverter;
+import org.openhab.binding.teleinfo.internal.reader.io.serialport.converter.PtecConverter;
+import org.openhab.binding.teleinfo.internal.reader.io.serialport.converter.StringConverter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * InputStream for Teleinfo {@link Frame} in serial port format.
+ */
+/**
+ * The {@link TeleinfoInputStream} class is an {@link InputStream} to decode/read Teleinfo frames.
+ *
+ * @author Nicolas SIBERIL - Initial contribution
+ */
+@NonNullByDefault
+public class TeleinfoInputStream extends InputStream {
+
+ public static final long DEFAULT_TIMEOUT_NEXT_HEADER_FRAME_US = 33400;
+ public static final long DEFAULT_TIMEOUT_READING_FRAME_US = 33400;
+
+ private final Logger logger = LoggerFactory.getLogger(TeleinfoInputStream.class);
+ private static final Map, Converter> LABEL_VALUE_CONVERTERS;
+
+ private BufferedReader bufferedReader;
+ private @Nullable String groupLine;
+ private ExecutorService executorService;
+ private long waitNextHeaderFrameTimeoutInUs;
+ private long readingFrameTimeoutInUs;
+ private boolean autoRepairInvalidADPSgroupLine;
+ private boolean useOwnScheduler;
+
+ static {
+ LABEL_VALUE_CONVERTERS = new HashMap<>();
+ LABEL_VALUE_CONVERTERS.put(Integer.class, new IntegerConverter());
+ LABEL_VALUE_CONVERTERS.put(String.class, new StringConverter());
+ LABEL_VALUE_CONVERTERS.put(Float.class, new FloatConverter());
+ LABEL_VALUE_CONVERTERS.put(Ptec.class, new PtecConverter());
+ LABEL_VALUE_CONVERTERS.put(Hhphc.class, new HhphcConverter());
+ LABEL_VALUE_CONVERTERS.put(CouleurDemain.class, new CouleurDemainConverter());
+ }
+
+ public TeleinfoInputStream(final InputStream teleinfoInputStream) {
+ this(teleinfoInputStream, DEFAULT_TIMEOUT_NEXT_HEADER_FRAME_US, DEFAULT_TIMEOUT_READING_FRAME_US, false);
+ }
+
+ public TeleinfoInputStream(final InputStream teleinfoInputStream, boolean autoRepairInvalidADPSgroupLine) {
+ this(teleinfoInputStream, DEFAULT_TIMEOUT_NEXT_HEADER_FRAME_US, DEFAULT_TIMEOUT_READING_FRAME_US,
+ autoRepairInvalidADPSgroupLine);
+ }
+
+ public TeleinfoInputStream(final @Nullable InputStream teleinfoInputStream, long waitNextHeaderFrameTimeoutInUs,
+ long readingFrameTimeoutInUs, boolean autoRepairInvalidADPSgroupLine) {
+ this(teleinfoInputStream, waitNextHeaderFrameTimeoutInUs, readingFrameTimeoutInUs,
+ autoRepairInvalidADPSgroupLine, null);
+ }
+
+ public TeleinfoInputStream(final @Nullable InputStream teleinfoInputStream, long waitNextHeaderFrameTimeoutInUs,
+ long readingFrameTimeoutInUs, boolean autoRepairInvalidADPSgroupLine,
+ @Nullable ExecutorService executorService) {
+ if (teleinfoInputStream == null) {
+ throw new IllegalArgumentException("Teleinfo inputStream is null");
+ }
+
+ this.waitNextHeaderFrameTimeoutInUs = waitNextHeaderFrameTimeoutInUs;
+ this.readingFrameTimeoutInUs = readingFrameTimeoutInUs;
+ this.autoRepairInvalidADPSgroupLine = autoRepairInvalidADPSgroupLine;
+ if (executorService == null) {
+ this.executorService = Executors.newFixedThreadPool(2);
+ this.useOwnScheduler = true;
+ } else {
+ this.executorService = executorService;
+ this.useOwnScheduler = false;
+ }
+
+ this.bufferedReader = new BufferedReader(new InputStreamReader(teleinfoInputStream, StandardCharsets.US_ASCII));
+
+ groupLine = null;
+ }
+
+ @Override
+ public void close() throws IOException {
+ logger.debug("close() [start]");
+ bufferedReader.close();
+ if (useOwnScheduler) {
+ executorService.shutdownNow();
+ }
+ super.close();
+ logger.debug("close() [end]");
+ }
+
+ /**
+ * Returns the next frame.
+ *
+ * @return the next frame or null if end of stream
+ * @throws TimeoutException
+ * @throws IOException
+ * @throws InvalidFrameException
+ * @throws Exception
+ */
+ public synchronized @Nullable Frame readNextFrame() throws TimeoutException, InvalidFrameException, IOException {
+ // seek the next header frame
+ Future<@Nullable Void> seekNextHeaderFrameTask = executorService.submit(() -> {
+ while (!isHeaderFrame(groupLine)) {
+ groupLine = bufferedReader.readLine();
+ if (logger.isTraceEnabled()) {
+ logger.trace("groupLine = {}", groupLine);
+ }
+ if (groupLine == null) { // end of stream
+ logger.trace("end of stream reached !");
+ return null;
+ }
+ }
+
+ logger.trace("header frame found !");
+ return null;
+ });
+ try {
+ logger.debug("seeking the next header frame...");
+ logger.trace("waitNextHeaderFrameTimeoutInUs = {}", waitNextHeaderFrameTimeoutInUs);
+ seekNextHeaderFrameTask.get(waitNextHeaderFrameTimeoutInUs, TimeUnit.MICROSECONDS);
+
+ if (groupLine == null) { // end of stream
+ return null;
+ }
+ } catch (InterruptedException e) {
+ logger.debug("Got interrupted exception", e);
+ Thread.currentThread().interrupt();
+ } catch (ExecutionException e) {
+ rethrowTaskExecutionException(e);
+ }
+
+ Future