mirror of
https://github.com/danieldemus/openhab-addons
synced 2026-07-29 12:34:21 +02:00
[teleinfo] Add support for D2L wifi dongle (#18738)
* add support for D2L dongle bridge Signed-off-by: Laurent ARNAL <laurent@clae.net>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# Teleinfo Binding
|
||||
## Discovery# Teleinfo Binding
|
||||
|
||||
The Teleinfo binding supports an interface to ENEDIS/ERDF [Teleinfo protocol](https://www.enedis.fr/sites/default/files/Enedis-NOI-CPT_54E.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)).
|
||||
|
||||
@@ -10,9 +10,24 @@ These values can be used to
|
||||
- check if your subscription is relevant for your needs,
|
||||
- monitor your electricity consumption,
|
||||
|
||||
### TIC Mode
|
||||
|
||||
There are two different TIC modes, corresponding to two distinct frame formats:
|
||||
|
||||
- Historical TIC mode (older version)
|
||||
- Uses a serial transmission rate of 1200 baud.
|
||||
|
||||
- Standard TIC mode (newer version)
|
||||
- Uses a serial transmission rate of 9600 baud.
|
||||
- Provides more information from the meter.
|
||||
- Only available on Linky meters.
|
||||
- Offers a faster refresh rate.
|
||||
|
||||
The method for changing the TIC mode of a Linky meter is explained [here](https://forum.gce-electronics.com/t/comment-passer-un-cpt-linky-en-mode-standard/8206/7).
|
||||
|
||||
## Supported Things
|
||||
|
||||
### Historical TIC mode
|
||||
### Historical TIC Mode
|
||||
|
||||
Historical TIC mode is the only mode of all telemeters before Linky models and the default mode for Linky telemeters.
|
||||
|
||||
@@ -38,7 +53,7 @@ The Teleinfo binding provides support for both single-phase and three-phase conn
|
||||
| cbetm_hc_electricitymeter | three-phase | HCHP | |
|
||||
| cbetm_tempo_electricitymeter | three-phase | Tempo | |
|
||||
|
||||
### Standard TIC mode
|
||||
### Standard TIC Mode
|
||||
|
||||
Linky telemeters add a new `Standard` mode with more detailed information but still provide information on the legacy format under the `Historical` denomination.
|
||||
|
||||
@@ -51,26 +66,82 @@ Standard mode doesn't depend on the pricing options, but it adds some useful inf
|
||||
| lstm_electricitymeter | three-phase | |
|
||||
| lstm_prod_electricitymeter | three-phase | [x] |
|
||||
|
||||
## Discovery
|
||||
## Bridge
|
||||
|
||||
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.
|
||||
Consumption data can be retrieved directly from your electricity meter (Linky or older “blue” meters).
|
||||
More information about the Teleinfo protocol is available here: [Teleinfo protocol](https://www.enedis.fr/sites/default/files/Enedis-NOI-CPT_54E.pdf)
|
||||
|
||||
To do this, the Teleinfo output must be connected to your openHAB server.
|
||||
This is typically done by connecting a Teleinfo modem to the I1 and I2 terminals of your electricity meter.
|
||||
|
||||
There are two main ways to achieve this:
|
||||
|
||||
- Direct connection: using a Teleinfo-to-serial modem connected directly to the meter (typically providing data with a granularity of 2 to 5 seconds).
|
||||
- Remote connection: using an ERL dongle installed in the meter (typically providing data with a granularity of around 1 minute).
|
||||
|
||||
Before the binding can be used, a controller must be configured. Currently, two types of controllers are supported: serial and D2L.
|
||||
|
||||
Remote controller connections may use different technologies to transmit the Teleinfo frames.
|
||||
This binding has been tested with a D2L ERL, which uses Wi-Fi to send the frames over a TCP/IP connection.
|
||||
|
||||
However, some ERLs use other radio technologies, such as:
|
||||
|
||||
- 433 MHz transmission
|
||||
- LoRa or Sigfox (long-range, low-bandwidth networks)
|
||||
- KNX
|
||||
- Zigbee
|
||||
|
||||
At the moment, the binding supports Wi-Fi/D2L devices only.
|
||||
Support for 433 MHz transmission may be added in the future.
|
||||
|
||||
KNX and Zigbee are out of scope, as they already have dedicated openHAB bindings.
|
||||
|
||||
|
||||
### Serial Bridge
|
||||
|
||||
Select **Teleinfo Serial Controller** and enter the serial port.
|
||||
|
||||
If you want to place the Teleinfo modem apart from your openHAB server, you can forward its serial messages over TCP/IP (_ser2net_).
|
||||
In this case you have to define the serial port of your Teleinfo modem like this `rfc2217://ip:port`. When using _ser2net_ make sure to use _telnet_ instead of _raw_ in the _ser2net_ config file.
|
||||
|
||||
Once the serial controller added, electricity meters will automatically appear after starting discovery, with default label **Teleinfo ADCO #adco** where **#adco** is your electricity meter identifier.
|
||||
|
||||
## Thing Configuration
|
||||
| Parameter | Meaning | Possible values |
|
||||
|----------------------------------|--------------------------------------------------|-------------------------------------|
|
||||
| `serialport` | Path to the serial controller | /dev/ttyXXXX, rfc2217://ip:port |
|
||||
| `ticMode` | TIC mode | `STANDARD`, `HISTORICAL` (default) |
|
||||
| `adco` | Electricity meter identifier | 12 digits number |
|
||||
| `verifyChecksum` | If we check the checksum of the Teleinfo frame | true, false (default=true) |
|
||||
| `autoRepairInvalidADPSgroupLine` | If we try to repair corrupted frame | true, false (default=true) |
|
||||
|
||||
### D2L Bridge
|
||||
|
||||
The D2L bridge will open a TCP port, listen on it, and wait for Teleinfo frames.
|
||||
If you have multiple meters, you can use a single port for all of them.
|
||||
The bridge will decode the ID of the D2L device sending the frame and dispatch it to the corresponding thing.
|
||||
|
||||
| Parameter | Sample | Description |
|
||||
|--------------------------------|-----------------------------------------|-------------------------------------------------------------------|
|
||||
| listenningPort | 7845 | The tcp port we will listen for Teleinfo frame coming from D2L |
|
||||
| encryptionKeys | idd2l:appKey:ivKey;idd2l:appKey:ivKey; | The key use by your D2L ERL |
|
||||
|
||||
EncryptionKeys must be filled with the key assigned to your D2L.
|
||||
You can put multiple encryptionKeys separate by ";". It will be usefull if you have multiple D2L module.
|
||||
|
||||
Each encryptionKey must have this format : idd2l:appKey:ivKey
|
||||
You can find the idd2l on D2L sticker.
|
||||
You will have to ask the appKey and ivKey to eesmart support : support@eesmart.fr
|
||||
|
||||
## Discovery
|
||||
|
||||
This binding provides a discovery service only for things.
|
||||
Once the bridge added, electricity meters will automatically appear after starting discovery.
|
||||
They meter will have a default label **[MeterType] ADCO #adco** where **#adco** is your electricity meter identifier.
|
||||
For D2L-connected meters, you will need to enter the encryptionKey on the D2L bridge previous the discovery phase.
|
||||
|
||||
| Thing type | Parameter | Meaning | Possible values |
|
||||
|----------------------|--------------|-------------------------------|------------------------------------|
|
||||
| `serialcontroller` | `serialport` | Path to the serial controller | /dev/ttyXXXX, rfc2217://ip:port |
|
||||
| | `ticMode` | TIC mode | `STANDARD`, `HISTORICAL` (default) |
|
||||
| `*_electricitymeter` | `adco` | Electricity meter identifier | 12 digits number |
|
||||
|
||||
## Channels
|
||||
|
||||
### Historical TIC mode
|
||||
### Historical TIC Mode
|
||||
|
||||
Channel availability depends on the electricity connection (single or three-phase) and on the pricing mode (Base, HCHP, EJP or Tempo).
|
||||
|
||||
@@ -108,49 +179,120 @@ Channel availability depends on the electricity connection (single or three-phas
|
||||
| pejp | `Number:Time` | Prior notice to EJP start | All | EJP |
|
||||
| demain | `String` | Following day color | All | Tempo |
|
||||
|
||||
### Standard TIC mode
|
||||
### Standard TIC Mode
|
||||
|
||||
#### Common channels
|
||||
|
||||
The following channels are available on all Linky telemeters in standard TIC mode.
|
||||
|
||||
| Channel | Type | Description |
|
||||
|---------------------------------|--------------------------|---------------------------------------------------------------------------|
|
||||
| commonLSMGroup#ngtf | `String` | Provider schedule name |
|
||||
| commonLSMGroup#ltarf | `String` | Current pricing label |
|
||||
| commonLSMGroup#east | `Number:Energy` | Total active energy withdrawn |
|
||||
| commonLSMGroup#easf_XX_ | `Number:Energy` | Active energy withdrawn from provider on index _XX, XX_ in {01,...,10} |
|
||||
| commonLSMGroup#easd_XX_ | `Number:Energy` | Active energy withdrawn from distributor on index _XX, XX_ in {01,...,04} |
|
||||
| commonLSMGroup#irms1 | `Number:ElectricCurrent` | RMS Current on phase 1 |
|
||||
| commonLSMGroup#urms1 | `Number:Potential` | RMS Voltage on phase 1 |
|
||||
| commonLSMGroup#pref | `Number:Power` | Reference apparent power |
|
||||
| commonLSMGroup#pcoup | `Number:Power` | Apparent power rupture capacity |
|
||||
| commonLSMGroup#sinsts | `Number:Power` | Instantaneous withdrawn apparent power |
|
||||
| commonLSMGroup#smaxsn | `Number:Power` | Maximum withdrawn apparent power of the day |
|
||||
| commonLSMGroup#smaxsnMinus1 | `Number:Power` | Maximum withdrawn apparent power of the previous day |
|
||||
| commonLSMGroup#ccasn | `Number:Power` | Active charge point N |
|
||||
| commonLSMGroup#ccasnMinus1 | `Number:Power` | Active charge point N-1 |
|
||||
| commonLSMGroup#umoy1 | `Number:Potential` | Mean Voltage on phase 1 |
|
||||
| commonLSMGroup#dpm_X_ | `String` | Start of mobile peak period _X, X_ in {1,2,3} |
|
||||
| commonLSMGroup#fpm_X_ | `String` | End of mobile peak period _X, X_ in {1,2,3} |
|
||||
| commonLSMGroup#msg1 | `String` | Short message |
|
||||
| commonLSMGroup#msg2 | `String` | Very short message |
|
||||
| commonLSMGroup#ntarf | `String` | Index of current pricing |
|
||||
| commonLSMGroup#njourf | `String` | Number of current provider schedule |
|
||||
| commonLSMGroup#njourfPlus1 | `String` | Number of next day provider schedule |
|
||||
| commonLSMGroup#pjourfPlus1 | `String` | Profile of next day provider schedule |
|
||||
| commonLSMGroup#ppointe | `String` | Profile of next rush day |
|
||||
| commonLSMGroup#date | `DateTime` | Date and Time |
|
||||
| commonLSMGroup#smaxsnDate | `DateTime` | Timestamp of SMAXSN value |
|
||||
| commonLSMGroup#smaxsnMinus1Date | `DateTime` | Timestamp of SMAXSN-1 value |
|
||||
| commonLSMGroup#ccasnDate | `DateTime` | Timestamp of CCASN value |
|
||||
| commonLSMGroup#ccasnMinus1Date | `DateTime` | Timestamp of CCASN-1 value |
|
||||
| commonLSMGroup#umoy1Date | `DateTime` | Timestamp of UMOY1 value |
|
||||
| commonLSMGroup#dpm_X_Date | `DateTime` | Date of DPM_X_, _X_ in {1,2,3} |
|
||||
| commonLSMGroup#fpm_X_Date | `DateTime` | Date of FPM_X_, _X_ in {1,2,3} |
|
||||
| commonLSMGroup#relais_X_ | `Switch` | state of relais _X, X_ in {1,...,8} |
|
||||
| Channel | Type | Description |
|
||||
|---------------------------------------|--------------------------------|-----------------------------------------------------------------------------|
|
||||
| commonLSMGroup#ngtf | `String` | Provider schedule name |
|
||||
| commonLSMGroup#ltarf | `String` | Current pricing label |
|
||||
| commonLSMGroup#east | `Number:Energy` | Total active energy withdrawn |
|
||||
| commonLSMGroup#easf_XX_ | `Number:Energy` | Active energy withdrawn from provider on index _XX, XX_ in {01,...,10} |
|
||||
| commonLSMGroup#easd_XX_ | `Number:Energy` | Active energy withdrawn from distributor on index _XX, XX_ in {01,...,04} |
|
||||
| commonLSMGroup#irms1 | `Number:ElectricCurrent` | RMS Current on phase 1 |
|
||||
| commonLSMGroup#urms1 | `Number:Potential` | RMS Voltage on phase 1 |
|
||||
| commonLSMGroup#pref | `Number:Power` | Reference apparent power |
|
||||
| commonLSMGroup#pcoup | `Number:Power` | Apparent power rupture capacity |
|
||||
| commonLSMGroup#sinsts | `Number:Power` | Instantaneous withdrawn apparent power |
|
||||
| commonLSMGroup#smaxsn | `Number:Power` | Maximum withdrawn apparent power of the day |
|
||||
| commonLSMGroup#smaxsnMinus1 | `Number:Power` | Maximum withdrawn apparent power of the previous day |
|
||||
| commonLSMGroup#ccasn | `Number:Power` | Active charge point N |
|
||||
| commonLSMGroup#ccasnMinus1 | `Number:Power` | Active charge point N-1 |
|
||||
| commonLSMGroup#umoy1 | `Number:Potential` | Mean Voltage on phase 1 |
|
||||
| commonLSMGroup#dpm_X_ | `String` | Start of mobile peak period _X, X_ in {1,2,3} |
|
||||
| commonLSMGroup#fpm_X_ | `String` | End of mobile peak period _X, X_ in {1,2,3} |
|
||||
| commonLSMGroup#msg1 | `String` | Short message |
|
||||
| commonLSMGroup#msg2 | `String` | Very short message |
|
||||
| commonLSMGroup#ntarf | `String` | Index of current pricing |
|
||||
| commonLSMGroup#njourf | `String` | Number of current provider schedule |
|
||||
| commonLSMGroup#njourfPlus1 | `String` | Number of next day provider schedule |
|
||||
| commonLSMGroup#pjourfPlus1 | `String` | Profile of next day provider schedule |
|
||||
| commonLSMGroup#ppointe | `String` | Profile of next rush day |
|
||||
| commonLSMGroup#date | `DateTime` | Date and Time |
|
||||
| commonLSMGroup#smaxsnDate | `DateTime` | Timestamp of SMAXSN value |
|
||||
| commonLSMGroup#smaxsnMinus1Date | `DateTime` | Timestamp of SMAXSN-1 value |
|
||||
| commonLSMGroup#ccasnDate | `DateTime` | Timestamp of CCASN value |
|
||||
| commonLSMGroup#ccasnMinus1Date | `DateTime` | Timestamp of CCASN-1 value |
|
||||
| commonLSMGroup#umoy1Date | `DateTime` | Timestamp of UMOY1 value |
|
||||
| commonLSMGroup#dpm_X_Date | `DateTime` | Date of DPM_X_, _X_ in {1,2,3} |
|
||||
| commonLSMGroup#fpm_X_Date | `DateTime` | Date of FPM_X_, _X_ in {1,2,3} |
|
||||
| commonLSMGroup#relais_X_ | `Switch` | state of relais _X, X_ in {1,...,8} |
|
||||
| commonLSMGroup#irms1f | `current` | Floating value for Irms1 |
|
||||
| commonLSMGroup#cosphi | `powerFactor` | Channel to feed external cosPhi calculation |
|
||||
| commonLSMGroup#sactive | `power` | Active power calculate from apparent power and Cosphi |
|
||||
| commonLSMGroup#sreactive | `power` | Reactive power calculate from apparent power and Cosphi |
|
||||
| commonLSMGroup#contac-sec | `contact` | Stge decode : contact Sec Value |
|
||||
| commonLSMGroup#cut-off | `cutoff` | Stge decode : of cutoff |
|
||||
| commonLSMGroup#cache | `contact` | Stge decode : linky cache state |
|
||||
| commonLSMGroup#over-voltage | `over-voltage-state` | Stge decode : overvoltage state |
|
||||
| commonLSMGroup#exceeding-power | `exceeding-power-state` | Stge decode : exceding power state |
|
||||
| commonLSMGroup#function | `function` | Stge decode : function |
|
||||
| commonLSMGroup#direction | `direction` | Stge decode : direction |
|
||||
| commonLSMGroup#supplier-rate | `rate` | Stge decode : supplier rate index |
|
||||
| commonLSMGroup#distributor-rate | `rate` | Stge decode : distributor rate index |
|
||||
| commonLSMGroup#clock | `contact` | Stge decode : clock state |
|
||||
| commonLSMGroup#plc | `plc` | Stge decode : PLC |
|
||||
| commonLSMGroup#outputcom | `outputcomState` | Stge decode : Output com state |
|
||||
| commonLSMGroup#plc-state | `plcState` | Stge decode : PLC state |
|
||||
| commonLSMGroup#plc-synchro | `synchroPlcState` | Stge decode : PLC Synchro state |
|
||||
| commonLSMGroup#tempo-today | `tempo` | Stge decode : Today tempo color |
|
||||
| commonLSMGroup#tempo-tomorrow | `tempo` | Stge decode : Tomorrow tempo color |
|
||||
| commonLSMGroup#advice-moving-tips | `movingTips` | Stge decode : Advice of moving tips |
|
||||
| commonLSMGroup#moving-tips | `movingTips` | Stge decode : Current moving tips |
|
||||
| commonLSMGroup#pjourf1-plus1 | `String` | Pjourf decode : Slot 1 |
|
||||
| commonLSMGroup#pjourf2-plus1 | `String` | Pjourf decode : Slot 2 |
|
||||
| commonLSMGroup#pjourf3-plus1 | `String` | Pjourf decode : Slot 3 |
|
||||
| commonLSMGroup#pjourf4-plus1 | `String` | Pjourf decode : Slot 4 |
|
||||
| commonLSMGroup#pjourf5-plus1 | `String` | Pjourf decode : Slot 5 |
|
||||
| commonLSMGroup#pjourf6-plus1 | `String` | Pjourf decode : Slot 6 |
|
||||
| commonLSMGroup#pjourf7-plus1 | `String` | Pjourf decode : Slot 7 |
|
||||
| commonLSMGroup#pjourf8-plus1 | `String` | Pjourf decode : Slot 8 |
|
||||
| commonLSMGroup#ppointe1 | `String` | PPointe decode : Slot 1 |
|
||||
| commonLSMGroup#ppointe2 | `String` | PPointe decode : Slot 2 |
|
||||
| commonLSMGroup#ppointe3 | `String` | PPointe decode : Slot 3 |
|
||||
| commonLSMGroup#ppointe4 | `String` | PPointe decode : Slot 4 |
|
||||
| commonLSMGroup#ppointe5 | `String` | PPointe decode : Slot 5 |
|
||||
| commonLSMGroup#ppointe6 | `String` | PPointe decode : Slot 6 |
|
||||
| commonLSMGroup#ppointe7 | `String` | PPointe decode : Slot 7 |
|
||||
| commonLSMGroup#ppointe8 | `String` | PPointe decode : Slot 8 |
|
||||
|
||||
#### Three phase only channels
|
||||
#### Calculated Channels
|
||||
|
||||
The binding also offer a number of "calculated" channels.
|
||||
|
||||
These channels can help decode existing data into more readable content, such as Relais, Stage State, PjourF, and PPointe advice.
|
||||
Additionally, they can provide new values like irms1f, sactive, and sreactive.
|
||||
|
||||
- irms1f provides a more precise value of irms1, calculated as papp / urms1.
|
||||
- cosphi is a specific channel designed to receive the cosphi value calculated by an external device.
|
||||
- If cosphi is exposed, sactive and sreactive will provide the Active and Reactive power, respectively, derived from Apparent Power and Cosphi.
|
||||
|
||||
Note:<br/>
|
||||
Cosphi, Active Power, and Reactive Power are not directly available on Linky meters.
|
||||
Active power is particularly important as it is used to calculate consumption, which is what your supplier bills you for.
|
||||
|
||||
How to feed cosphi ?
|
||||
|
||||
You will have to create a specific channel Cosphi.
|
||||
First channel will be the one you get your cosphi from.
|
||||
Second one, with profile="follow" will feed the cosphi to teleinfo binding.
|
||||
|
||||
```java
|
||||
Number
|
||||
CompteurEDF_xxx_Cosphi
|
||||
"Teleinfo Cosphi [%s]"
|
||||
(gTeleinfo)
|
||||
[ "Measurement" ]
|
||||
{
|
||||
channel="mqtt:topic:local:CompteurPi1:PFac_ComptGenerale",
|
||||
channel="teleinfo:lsmm_electricitymeter:myElectricityMeter:commonLSMGroup#cosphi"[profile="follow"]
|
||||
}
|
||||
```
|
||||
|
||||
#### Three Phase Only Channels
|
||||
|
||||
These channels are available on the following telemeters:
|
||||
|
||||
@@ -169,7 +311,7 @@ These channels are available on the following telemeters:
|
||||
| threePhasedLSMGroup#smaxs_X_nDate | `DateTime` | Timestamp of SMAXSN_X_ value, _X_ in {1,2,3} |
|
||||
| threePhasedLSMGroup#smaxsn_X_Minus1Date | `DateTime` | Timestamp of SMAXSN_X_-1 value, _X_ in {1,2,3} |
|
||||
|
||||
#### Producer only channels
|
||||
#### Producer Only Channels
|
||||
|
||||
These channels are available on the following telemeters:
|
||||
|
||||
@@ -192,7 +334,7 @@ These channels are available on the following telemeters:
|
||||
|
||||
## Full Example
|
||||
|
||||
### Historical TIC mode
|
||||
### Historical TIC Mode
|
||||
|
||||
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`:
|
||||
|
||||
@@ -218,7 +360,7 @@ Number:Energy TLInfoEDF_HCHP "HCHP" <energy> {channel="teleinfo:cbemm_evolution_
|
||||
String TLInfoEDF_HHPHC "HHPHC" <energy> {channel="teleinfo:cbemm_evolution_icc_hc_electricitymeter:teleinfoUSB:myElectricityMeter:hhphc"}
|
||||
```
|
||||
|
||||
### Standard TIC mode
|
||||
### Standard TIC Mode
|
||||
|
||||
The following `things` file declare a serial USB controller on `/dev/ttyUSB0` for a Linky Single-phase Electricity meter in standard TIC mode and adsc `031528042289`:
|
||||
|
||||
@@ -242,7 +384,16 @@ String TLInfoEDF_NGTF "NGTF" <energy> ["Status"] {channel="teleinfo:lsmm_electri
|
||||
DateTime TLInfoEDF_SMAXSN_DATE "SMAXSN_DATE" <energy> ["Measurement","Energy"] {channel="teleinfo:lsmm_electricitymeter:teleinfoUSB:myElectricityMeter:commonLSMGroup#smaxsnDate"}
|
||||
```
|
||||
|
||||
## Tested hardware
|
||||
### Standard TIC Mode With D2l
|
||||
|
||||
The following `things` file declare a D2L controller listenning on tcp port 7845 for a Linky Single-phase Electricity meter in standard TIC mode and adsc `031528042289`:
|
||||
|
||||
```java
|
||||
Bridge teleinfo:d2lcontroller:teleinfoD2L "D2lBridge" [ listenningPort="7845"] {
|
||||
Thing lsmm_electricitymeter myElectricityMeter [ adco="031528042289" ]
|
||||
```
|
||||
|
||||
## Tested Hardware
|
||||
|
||||
The Teleinfo binding has been successfully validated with below hardware configuration:
|
||||
|
||||
@@ -253,4 +404,58 @@ The Teleinfo binding has been successfully validated with below hardware configu
|
||||
| GCE Electronics USB Teleinfo module [(more details)](https://gce-electronics.com/fr/usb/655-module-teleinfo-usb.html) | Linky | Single-phase HCHP | Standard |
|
||||
| Cartelectronic USB Teleinfo modem [(more details)](https://www.cartelectronic.fr/teleinfo-compteur-enedis/17-teleinfo-1-compteur-usb-rail-din-3760313520028.html) | Linky | Three-phase TEMPO | Standard |
|
||||
|
||||
The method for changing the TIC mode of a Linky telemeter is explained in the [GCE Electronics forum post](https://forum.gce-electronics.com/t/comment-passer-un-cpt-linky-en-mode-standard/8206/7).
|
||||
You can also build a Teleinfo modem by yourself (see [this example](http://bernard.lefrancois.free.fr)).
|
||||
|
||||
| Wifi interface | Power Energy Meter model | Mode(s) | TIC mode | |
|
||||
|-------------------------------------|-----------------------------|---------------------------|------------|-------------------------------------------------------------------------------------|
|
||||
| D2L | Linky | Single-phase TEMPO | Standard | [(more details)](https://eesmart.fr/modulesd2l/erl-wifi-compteur-linky/) |
|
||||
|
||||
### Verify Communication
|
||||
|
||||
The communication can be verified using software like picocom
|
||||
|
||||
picocom -b 9600 -d 7 -p e -f n /dev/ttyUSB1 (for Standard mode)
|
||||
picocom -b 1200 -d 7 -p e -f n /dev/ttyUSB1 (for Historical mode)
|
||||
|
||||
After a few seconds, you should see Linky frame displayed in your terminal
|
||||
|
||||
```java
|
||||
ADSC 81187xxxxxx M
|
||||
VTIC 02 J
|
||||
DATE H250314152111 ;
|
||||
NGTF TEMPO F
|
||||
LTARF HP BLEU +
|
||||
EAST 120684765 6
|
||||
EASF01 083957312 H
|
||||
EASF02 031765917 J
|
||||
EASF03 001219877 G
|
||||
EASF04 002681581 D
|
||||
EASF05 000607543 ?
|
||||
EASF06 000452535 ?
|
||||
EASF07 000000000 (
|
||||
EASF08 000000000 )
|
||||
EASF09 000000000 *
|
||||
EASF10 000000000 "
|
||||
EASD01 076241272 ?
|
||||
EASD02 033890466 H
|
||||
EASD03 003663842 B
|
||||
EASD04 006889185 P
|
||||
IRMS1 006 4
|
||||
URMS1 233 B
|
||||
PREF 12 B
|
||||
PCOUP 12 \
|
||||
SINSTS 01389 [
|
||||
SMAXSN H250314052302 07720 8
|
||||
SMAXSN-1 H250308233739 09340 (
|
||||
CCASN H250314150000 05090 >
|
||||
CCASN-1 H250314143000 06668 *
|
||||
UMOY1 H250314152000 231 +
|
||||
STGE 013AC401 R
|
||||
MSG1 PAS DE MESSAGE <
|
||||
PRM 2145499yyyyyyyy 4
|
||||
RELAIS 000 B
|
||||
NTARF 02 O
|
||||
NJOURF 00 &
|
||||
NJOURF+1 00 B
|
||||
PJOURF+1 00004001 06004002 16004001 NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE NONUTILE 1
|
||||
```
|
||||
|
||||
+38
@@ -33,6 +33,7 @@ public class TeleinfoBindingConstants {
|
||||
|
||||
// List of all Thing Type UIDs
|
||||
public static final ThingTypeUID THING_TYPE_SERIAL_CONTROLLER = new ThingTypeUID(BINDING_ID, "serialcontroller");
|
||||
public static final ThingTypeUID THING_TYPE_D2L_CONTROLLER = new ThingTypeUID(BINDING_ID, "d2lcontroller");
|
||||
public static final String THING_SERIAL_CONTROLLER_CHANNEL_INVALID_FRAME_COUNTER = "invalidFrameCounter";
|
||||
|
||||
// List of commons channel ids
|
||||
@@ -178,10 +179,47 @@ public class TeleinfoBindingConstants {
|
||||
public static final String CHANNEL_LSM_UMOY2_DATE = "threePhasedLSMGroup#umoy2Date";
|
||||
public static final String CHANNEL_LSM_UMOY3_DATE = "threePhasedLSMGroup#umoy3Date";
|
||||
|
||||
public static final String CHANNEL_PJOURF_IDX = "commonLSMGroup#pjourf";
|
||||
public static final String CHANNEL_PPOINTE_IDX = "commonLSMGroup#ppointe";
|
||||
|
||||
public static final String CHANNEL_IRMS1F = "commonLSMGroup#irms1f";
|
||||
public static final String CHANNEL_COSPHI = "commonLSMGroup#cosphi";
|
||||
public static final String CHANNEL_SACTIVE = "commonLSMGroup#sactive";
|
||||
public static final String CHANNEL_SREACTIVE = "commonLSMGroup#sreactive";
|
||||
|
||||
public static final String CHANNEL_CONTACT_SEC = "commonLSMGroup#contact-sec";
|
||||
public static final String CHANNEL_CACHE = "commonLSMGroup#cache";
|
||||
public static final String CHANNEL_CUT_OFF = "commonLSMGroup#cut-off";
|
||||
public static final String CHANNEL_OVER_VOLTAGE = "commonLSMGroup#over-voltage";
|
||||
public static final String CHANNEL_EXCEEDING_POWER = "commonLSMGroup#exceeding-power";
|
||||
public static final String CHANNEL_FUNCTION = "commonLSMGroup#function";
|
||||
public static final String CHANNEL_DIRECTION = "commonLSMGroup#direction";
|
||||
public static final String CHANNEL_SUPPLIER_RATE = "commonLSMGroup#supplier-rate";
|
||||
public static final String CHANNEL_DISTRIBUTOR_RATE = "commonLSMGroup#distributor-rate";
|
||||
public static final String CHANNEL_CLOCK = "commonLSMGroup#clock";
|
||||
public static final String CHANNEL_PLC = "commonLSMGroup#plc";
|
||||
public static final String CHANNEL_COM_OUTPUT = "commonLSMGroup#outputcom";
|
||||
public static final String CHANNEL_PLC_STATE = "commonLSMGroup#plc-state";
|
||||
public static final String CHANNEL_PLC_SYNCHRO = "commonLSMGroup#plc-synchro";
|
||||
public static final String CHANNEL_TEMPO_TODAY = "commonLSMGroup#tempo-today";
|
||||
public static final String CHANNEL_TEMPO_TOMORROW = "commonLSMGroup#tempo-tomorrow";
|
||||
public static final String CHANNEL_MOVING_TIPS = "commonLSMGroup#moving-tips";
|
||||
public static final String CHANNEL_MOVING_TIPS_ADVICE = "commonLSMGroup#advice-moving-tips";
|
||||
|
||||
public static final String NOT_A_CHANNEL = "";
|
||||
|
||||
public static final String THING_ELECTRICITY_METER_PROPERTY_ADCO = "adco";
|
||||
|
||||
public static final String THING_ELECTRICITY_METER_PROPERTY_IDD2L = "id-d2l";
|
||||
public static final String THING_ELECTRICITY_METER_PROPERTY_TYPETRAME = "type-trame";
|
||||
public static final String THING_ELECTRICITY_METER_PROPERTY_DATE_FIRMWARE = "date-firmware";
|
||||
public static final String THING_ELECTRICITY_METER_PROPERTY_VTIC = "vtic";
|
||||
public static final String THING_ELECTRICITY_METER_PROPERTY_MANUFACTURER = "meter-manufacturer";
|
||||
public static final String THING_ELECTRICITY_METER_PROPERTY_TYPE = "meter-type";
|
||||
public static final String THING_ELECTRICITY_METER_PROPERTY_CATEGORY = "meter-category";
|
||||
public static final String THING_ELECTRICITY_METER_PROPERTY_MATRICULE = "meter-matricule";
|
||||
public static final String THING_ELECTRICITY_METER_PROPERTY_MANUFACTURE_YEAR = "meter-manufacture-year";
|
||||
|
||||
public static final ThingTypeUID THING_HC_CBEMM_ELECTRICITY_METER_TYPE_UID = new ThingTypeUID(BINDING_ID,
|
||||
"cbemm_hc_electricitymeter");
|
||||
|
||||
|
||||
+19
-9
@@ -19,6 +19,7 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.binding.teleinfo.internal.data.Frame;
|
||||
import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
|
||||
import org.openhab.binding.teleinfo.internal.handler.TeleinfoControllerHandlerListener;
|
||||
@@ -27,9 +28,13 @@ import org.openhab.binding.teleinfo.internal.reader.io.serialport.Label;
|
||||
import org.openhab.core.config.discovery.AbstractThingHandlerDiscoveryService;
|
||||
import org.openhab.core.config.discovery.DiscoveryResult;
|
||||
import org.openhab.core.config.discovery.DiscoveryResultBuilder;
|
||||
import org.openhab.core.i18n.TranslationProvider;
|
||||
import org.openhab.core.thing.ThingTypeUID;
|
||||
import org.openhab.core.thing.ThingUID;
|
||||
import org.osgi.framework.FrameworkUtil;
|
||||
import org.osgi.service.component.annotations.Activate;
|
||||
import org.osgi.service.component.annotations.Component;
|
||||
import org.osgi.service.component.annotations.Reference;
|
||||
import org.osgi.service.component.annotations.ServiceScope;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -44,6 +49,8 @@ import org.slf4j.LoggerFactory;
|
||||
public class TeleinfoDiscoveryService extends AbstractThingHandlerDiscoveryService<TeleinfoAbstractControllerHandler>
|
||||
implements TeleinfoControllerHandlerListener {
|
||||
|
||||
private @Nullable TranslationProvider translationProvider;
|
||||
|
||||
private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = Set.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,
|
||||
@@ -58,13 +65,10 @@ public class TeleinfoDiscoveryService extends AbstractThingHandlerDiscoveryServi
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(TeleinfoDiscoveryService.class);
|
||||
|
||||
public TeleinfoDiscoveryService() {
|
||||
@Activate
|
||||
public TeleinfoDiscoveryService(final @Reference TranslationProvider translationProvider) {
|
||||
super(TeleinfoAbstractControllerHandler.class, SCAN_DURATION_IN_S);
|
||||
}
|
||||
|
||||
public TeleinfoDiscoveryService(TeleinfoAbstractControllerHandler controllerHandler) {
|
||||
this();
|
||||
setThingHandler(controllerHandler);
|
||||
this.translationProvider = translationProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -119,13 +123,19 @@ public class TeleinfoDiscoveryService extends AbstractThingHandlerDiscoveryServi
|
||||
|
||||
String adco = frameSample.get(Label.ADCO) != null ? frameSample.get(Label.ADCO) : frameSample.get(Label.ADSC);
|
||||
if (adco != null) {
|
||||
ThingUID thingUID = new ThingUID(getThingTypeUID(frameSample), adco,
|
||||
thingHandler.getThing().getUID().getId());
|
||||
ThingTypeUID thingTypeUID = getThingTypeUID(frameSample);
|
||||
ThingUID thingUID = new ThingUID(thingTypeUID, adco, thingHandler.getThing().getUID().getId());
|
||||
|
||||
String key = String.format("thing-type.teleinfo.%s.label", thingTypeUID.getId());
|
||||
String label = key;
|
||||
if (translationProvider != null) {
|
||||
label = translationProvider.getText(FrameworkUtil.getBundle(getClass()), key, null, null);
|
||||
}
|
||||
|
||||
final Map<String, Object> properties = getThingProperties(adco);
|
||||
final String representationProperty = THING_ELECTRICITY_METER_PROPERTY_ADCO;
|
||||
DiscoveryResult discoveryResult = DiscoveryResultBuilder.create(thingUID).withProperties(properties)
|
||||
.withLabel("Teleinfo ADCO/ADSC " + adco).withThingType(getThingTypeUID(frameSample))
|
||||
.withLabel(label + " ADCO/ADSC " + adco).withThingType(getThingTypeUID(frameSample))
|
||||
.withBridge(thingHandler.getThing().getUID()).withRepresentationProperty(representationProperty)
|
||||
.build();
|
||||
|
||||
|
||||
+95
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
* Copyright (c) 2010-2026 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.d2l;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.binding.teleinfo.internal.handler.TeleinfoElectricityMeterConfiguration;
|
||||
|
||||
/**
|
||||
* The {@link TeleinfoElectricityMeterConfiguration} class stores electricity meter thing configuration
|
||||
*
|
||||
* @author Laurent Arnal - Initial contribution
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public class TeleinfoD2LConfig {
|
||||
private Map<Long, D2LConfig> d2lConfig = new HashMap<Long, D2LConfig>();
|
||||
private int listenningPort = 7845;
|
||||
private String encryptionKeys = "";
|
||||
|
||||
public TeleinfoD2LConfig() {
|
||||
}
|
||||
|
||||
public void initKey() {
|
||||
String[] encryptionKeyTab = encryptionKeys.split(";");
|
||||
for (String encryptionKey : encryptionKeyTab) {
|
||||
String[] encriptionParamTab = encryptionKey.split(":");
|
||||
String idd2lSt = encriptionParamTab[0];
|
||||
String appKey = encriptionParamTab[1];
|
||||
String ivKey = encriptionParamTab[2];
|
||||
|
||||
long idd2l = -1;
|
||||
if (!idd2lSt.isBlank()) {
|
||||
idd2l = Long.parseLong(idd2lSt);
|
||||
}
|
||||
|
||||
D2LConfig config = new D2LConfig();
|
||||
config.setIdd2l(idd2l);
|
||||
config.setAppKey(appKey);
|
||||
config.setIvKey(ivKey);
|
||||
|
||||
d2lConfig.put(idd2l, config);
|
||||
}
|
||||
}
|
||||
|
||||
public int getListenningPort() {
|
||||
return listenningPort;
|
||||
}
|
||||
|
||||
public @Nullable D2LConfig getConfig(long idd2l) {
|
||||
return d2lConfig.get(idd2l);
|
||||
}
|
||||
|
||||
class D2LConfig {
|
||||
private long idd2l = -1;
|
||||
private String appKey = "";
|
||||
private String ivKey = "";
|
||||
|
||||
public long getIdd2l() {
|
||||
return idd2l;
|
||||
}
|
||||
|
||||
public String getAppKey() {
|
||||
return appKey;
|
||||
}
|
||||
|
||||
public String getIvKey() {
|
||||
return ivKey;
|
||||
}
|
||||
|
||||
public void setIdd2l(long idd2l) {
|
||||
this.idd2l = idd2l;
|
||||
}
|
||||
|
||||
public void setAppKey(String appKey) {
|
||||
this.appKey = appKey;
|
||||
}
|
||||
|
||||
public void setIvKey(String ivKey) {
|
||||
this.ivKey = ivKey;
|
||||
}
|
||||
}
|
||||
}
|
||||
+374
@@ -0,0 +1,374 @@
|
||||
/*
|
||||
* Copyright (c) 2010-2026 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.d2l;
|
||||
|
||||
import static java.time.temporal.ChronoField.*;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Type;
|
||||
import java.math.BigInteger;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.SocketException;
|
||||
import java.net.StandardSocketOptions;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.ByteOrder;
|
||||
import java.nio.channels.SelectionKey;
|
||||
import java.nio.channels.Selector;
|
||||
import java.nio.channels.ServerSocketChannel;
|
||||
import java.nio.channels.SocketChannel;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeFormatterBuilder;
|
||||
import java.time.format.DateTimeParseException;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.IvParameterSpec;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.binding.teleinfo.internal.d2l.TeleinfoD2LConfig.D2LConfig;
|
||||
import org.openhab.binding.teleinfo.internal.data.Frame;
|
||||
import org.openhab.binding.teleinfo.internal.handler.TeleinfoAbstractControllerHandler;
|
||||
import org.openhab.binding.teleinfo.internal.handler.TeleinfoElectricityMeterHandler;
|
||||
import org.openhab.binding.teleinfo.internal.reader.io.serialport.InvalidFrameException;
|
||||
import org.openhab.binding.teleinfo.internal.reader.io.serialport.Label;
|
||||
import org.openhab.core.thing.Bridge;
|
||||
import org.openhab.core.thing.ChannelUID;
|
||||
import org.openhab.core.thing.Thing;
|
||||
import org.openhab.core.thing.ThingStatus;
|
||||
import org.openhab.core.thing.ThingStatusDetail;
|
||||
import org.openhab.core.types.Command;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
/**
|
||||
* {@link BridgeLocalD2LHandler} is the base handler to access enedis data.
|
||||
*
|
||||
* @author Laurent Arnal - Initial contribution
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public class TeleinfoD2LControllerHandler extends TeleinfoAbstractControllerHandler {
|
||||
private final Logger logger = LoggerFactory.getLogger(TeleinfoD2LControllerHandler.class);
|
||||
private @Nullable ScheduledFuture<?> pollingJob = null;
|
||||
private int listenningPort = 7845;
|
||||
private TeleinfoD2LConfig config;
|
||||
|
||||
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSX");
|
||||
private static final DateTimeFormatter LOCALDATE_FORMATTER = DateTimeFormatter.ofPattern("uuuu-MM-dd", Locale.ROOT);
|
||||
private static final DateTimeFormatter LOCALDATETIME_FORMATTER = new DateTimeFormatterBuilder()
|
||||
.appendPattern("uuuu-MM-dd['T'][' ']HH:mm").optionalStart().appendLiteral(':')
|
||||
.appendValue(SECOND_OF_MINUTE, 2).optionalStart().appendFraction(NANO_OF_SECOND, 0, 9, true).toFormatter();
|
||||
|
||||
private final Gson gson = new GsonBuilder()
|
||||
.registerTypeAdapter(ZonedDateTime.class,
|
||||
(JsonDeserializer<ZonedDateTime>) (json, type, jsonDeserializationContext) -> ZonedDateTime
|
||||
.parse(json.getAsJsonPrimitive().getAsString(), DATE_FORMATTER))
|
||||
.registerTypeAdapter(LocalDate.class,
|
||||
(JsonDeserializer<LocalDate>) (json, type, jsonDeserializationContext) -> LocalDate
|
||||
.parse(json.getAsJsonPrimitive().getAsString(), LOCALDATE_FORMATTER))
|
||||
.registerTypeAdapter(LocalDateTime.class,
|
||||
(JsonDeserializer<LocalDateTime>) (json, type, jsonDeserializationContext) -> {
|
||||
try {
|
||||
return LocalDateTime.parse(json.getAsJsonPrimitive().getAsString(),
|
||||
LOCALDATETIME_FORMATTER);
|
||||
} catch (DateTimeParseException ex) {
|
||||
return LocalDate.parse(json.getAsJsonPrimitive().getAsString(), LOCALDATE_FORMATTER)
|
||||
.atStartOfDay();
|
||||
}
|
||||
})
|
||||
.create();
|
||||
|
||||
public TeleinfoD2LControllerHandler(Bridge bridge) {
|
||||
super(bridge);
|
||||
config = new TeleinfoD2LConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
config = getConfigAs(TeleinfoD2LConfig.class);
|
||||
config.initKey();
|
||||
|
||||
listenningPort = config.getListenningPort();
|
||||
|
||||
if (listenningPort == -1) {
|
||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
|
||||
"@text/@listenning_port_not_defined");
|
||||
return;
|
||||
}
|
||||
|
||||
updateStatus(ThingStatus.OFFLINE);
|
||||
|
||||
pollingJob = scheduler.schedule(this::pollingCode, 3, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
logger.debug("Disposing the LocalD2L bridge handler");
|
||||
ScheduledFuture<?> job = this.pollingJob;
|
||||
if (job != null && !job.isCancelled()) {
|
||||
job.cancel(true);
|
||||
pollingJob = null;
|
||||
}
|
||||
|
||||
logger.debug("Shutting down Enedis bridge handler.");
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleCommand(ChannelUID channelUID, Command command) {
|
||||
}
|
||||
|
||||
private void pollingCode() {
|
||||
Selector selector = null;
|
||||
ServerSocketChannel socket = null;
|
||||
|
||||
try {
|
||||
// define an assign a selector
|
||||
selector = Selector.open();
|
||||
|
||||
socket = ServerSocketChannel.open();
|
||||
|
||||
// specify the port and host to connect to
|
||||
InetSocketAddress serverSocketAddr = new InetSocketAddress(Integer.valueOf(listenningPort));
|
||||
|
||||
socket.bind(serverSocketAddr);
|
||||
|
||||
// to set our server as non-blocking.
|
||||
socket.configureBlocking(false);
|
||||
socket.register(selector, SelectionKey.OP_ACCEPT);
|
||||
updateStatus(ThingStatus.ONLINE);
|
||||
} catch (Exception ex) {
|
||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, ex.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
while (getThing().getStatus() == ThingStatus.ONLINE) {
|
||||
if (selector.select(3000) == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// define a set of selectable keys
|
||||
Set<SelectionKey> selKeys = selector.selectedKeys();
|
||||
Iterator<SelectionKey> keyIterator = selKeys.iterator();
|
||||
|
||||
// iterate over the selected keys
|
||||
while (keyIterator.hasNext()) {
|
||||
SelectionKey selectionKey = keyIterator.next();
|
||||
|
||||
/*
|
||||
* if both the server and the client have binded to a port and
|
||||
* both are ready to share data with one another isAcceptable()
|
||||
* will return true
|
||||
*/
|
||||
|
||||
if (selectionKey.isAcceptable()) {
|
||||
SocketChannel client = socket.accept();
|
||||
logger.debug("Accept: {} {}", client.getLocalAddress(), client.getRemoteAddress());
|
||||
|
||||
client.configureBlocking(false);
|
||||
client.setOption(StandardSocketOptions.SO_KEEPALIVE, true);
|
||||
client.setOption(StandardSocketOptions.TCP_NODELAY, false);
|
||||
client.register(selectionKey.selector(), SelectionKey.OP_READ, ByteBuffer.allocate(20000));
|
||||
}
|
||||
|
||||
/*
|
||||
* if there is any data while is yet to be read by the server
|
||||
* isReadable returns true. Note that each operation of sendData() is
|
||||
* mapped to a key and only if new data is present and unread
|
||||
* isReadable() will return true
|
||||
*/
|
||||
|
||||
else if (selectionKey.isReadable()) {
|
||||
try {
|
||||
SocketChannel client = (SocketChannel) selectionKey.channel();
|
||||
ByteBuffer buf = (ByteBuffer) selectionKey.attachment();
|
||||
long bytesRead = client.read(buf);
|
||||
|
||||
if (bytesRead == -1) {
|
||||
logger.trace("Close on bytesRead==-1 {} {}", client.getLocalAddress(),
|
||||
client.getRemoteAddress());
|
||||
client.close();
|
||||
} else if (bytesRead > 0) {
|
||||
boolean res = handleRead(buf);
|
||||
selectionKey.interestOps(SelectionKey.OP_READ);
|
||||
if (res) {
|
||||
logger.trace("Close on res=true {} {}", client.getLocalAddress(),
|
||||
client.getRemoteAddress());
|
||||
client.close();
|
||||
}
|
||||
}
|
||||
} catch (SocketException ex) {
|
||||
logger.debug("Error during reading socket, retry ", ex);
|
||||
} catch (Exception ex) {
|
||||
logger.debug("Error during reading, retry ", ex);
|
||||
}
|
||||
} else if (selectionKey.isWritable()) {
|
||||
logger.debug("Writable");
|
||||
|
||||
ByteBuffer buf = (ByteBuffer) selectionKey.attachment();
|
||||
buf.flip(); // Prepare buffer for writing
|
||||
SocketChannel clientChannel = (SocketChannel) selectionKey.channel();
|
||||
clientChannel.write(buf);
|
||||
if (!buf.hasRemaining()) { // Buffer completely written?
|
||||
// Nothing left, so no longer interested in writes
|
||||
selectionKey.interestOps(SelectionKey.OP_READ);
|
||||
}
|
||||
buf.compact(); // Make room for more data to be read in
|
||||
}
|
||||
}
|
||||
// once read, each key is removed from the operation.
|
||||
keyIterator.remove();
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
logger.debug("IO Exception occurred in data reception loop", ex);
|
||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.OFFLINE.COMMUNICATION_ERROR, ex.getMessage());
|
||||
} finally {
|
||||
try {
|
||||
if (socket != null) {
|
||||
socket.close();
|
||||
}
|
||||
if (selector != null) {
|
||||
selector.close();
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
logger.debug("IO Exception occured during socket closing", ex);
|
||||
}
|
||||
}
|
||||
|
||||
logger.debug("end pooling socket");
|
||||
}
|
||||
|
||||
public boolean handleRead(ByteBuffer byteBuffer) {
|
||||
boolean res = false;
|
||||
byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
|
||||
// int version = byteBuffer.get(0);
|
||||
int length = byteBuffer.getShort(2);
|
||||
long idd2l = byteBuffer.getLong(4);
|
||||
|
||||
if (byteBuffer.position() < length) {
|
||||
// We have incomplete data, wait next read on buffer
|
||||
return false;
|
||||
}
|
||||
|
||||
// Look if we have a thing that is declared for this idd2l
|
||||
D2LConfig d2lConfig = config.getConfig(idd2l);
|
||||
|
||||
if (d2lConfig != null) {
|
||||
// if so, get appKey and ivKey and decode the buffer
|
||||
String appKey = d2lConfig.getAppKey();
|
||||
String ivKey = d2lConfig.getIvKey();
|
||||
// Prefix "7F" is required for AES key derivation to ensure proper key formatting for d2l.
|
||||
final String aesKeyPrefix = "7F";
|
||||
|
||||
try {
|
||||
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
|
||||
|
||||
byte[] bytesKey = new BigInteger(aesKeyPrefix + appKey, 16).toByteArray();
|
||||
SecretKeySpec key = new SecretKeySpec(bytesKey, 1, bytesKey.length - 1, "AES");
|
||||
|
||||
byte[] bytesIv = new BigInteger(ivKey, 16).toByteArray();
|
||||
IvParameterSpec iv = new IvParameterSpec(bytesIv);
|
||||
|
||||
cipher.init(Cipher.DECRYPT_MODE, key, iv);
|
||||
|
||||
byte[] bufferToDecode = new byte[length];
|
||||
byteBuffer.get(16, bufferToDecode, 0, length - 16);
|
||||
byte[] plainText = cipher.doFinal(bufferToDecode);
|
||||
|
||||
ByteBuffer byteBufferDecode = ByteBuffer.wrap(plainText);
|
||||
byteBufferDecode.order(ByteOrder.LITTLE_ENDIAN);
|
||||
int payloadLength = byteBufferDecode.getShort(18);
|
||||
int payloadType = byteBufferDecode.get(20) & 0x7f;
|
||||
|
||||
String st1 = new String(plainText, 22, payloadLength, StandardCharsets.UTF_8);
|
||||
logger.trace("frame with payload: {}", payloadType);
|
||||
|
||||
if (payloadType == 0x03) {
|
||||
// PUSH_JSON request
|
||||
Type type = new TypeToken<Map<String, String>>() {
|
||||
}.getType();
|
||||
|
||||
Map<String, String> r1 = gson.fromJson(st1, type);
|
||||
if (r1 != null) {
|
||||
Frame frame = new Frame();
|
||||
for (String channelName : r1.keySet()) {
|
||||
|
||||
try {
|
||||
Label label = Label.getEnum(channelName);
|
||||
String valueString = r1.get(channelName);
|
||||
String timestampString = null;
|
||||
|
||||
if (valueString != null) {
|
||||
int delimiterPos = valueString.indexOf('|');
|
||||
if (delimiterPos > 0) {
|
||||
timestampString = valueString.substring(0, delimiterPos);
|
||||
valueString = valueString.substring(delimiterPos + 1);
|
||||
} else if (delimiterPos == 0) {
|
||||
timestampString = "";
|
||||
valueString = "";
|
||||
}
|
||||
frame.put(label, valueString);
|
||||
|
||||
if (timestampString != null) {
|
||||
frame.putTimestamp(label, timestampString);
|
||||
}
|
||||
}
|
||||
} catch (IllegalArgumentException e) {
|
||||
final String error = String.format("The label '%s' is unknown", channelName);
|
||||
throw new InvalidFrameException(error);
|
||||
}
|
||||
}
|
||||
|
||||
fireOnFrameReceivedEvent(frame);
|
||||
res = true;
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
logger.debug("ex: {}", ex.toString(), ex);
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
public @Nullable TeleinfoElectricityMeterHandler getHandlerForPrmId(String prmId) {
|
||||
List<Thing> lThing = getThing().getThings();
|
||||
|
||||
for (Thing th : lThing) {
|
||||
if (th.getHandler() instanceof TeleinfoElectricityMeterHandler handler) {
|
||||
if (prmId.equals(handler.getAdco())) {
|
||||
return handler;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+32
-11
@@ -60,9 +60,19 @@ public class Frame implements Serializable {
|
||||
if (timestamp == null) {
|
||||
return "";
|
||||
}
|
||||
return "20" + timestamp.substring(1, 3) + "-" + timestamp.substring(3, 5) + "-" + timestamp.substring(5, 7)
|
||||
+ "T" + timestamp.substring(7, 9) + ":" + timestamp.substring(9, 11) + ":"
|
||||
+ timestamp.substring(11, 13);
|
||||
|
||||
if (timestamp.isBlank()) {
|
||||
return "";
|
||||
}
|
||||
|
||||
if (timestamp.length() > 9) {
|
||||
return "20" + timestamp.substring(1, 3) + "-" + timestamp.substring(3, 5) + "-" + timestamp.substring(5, 7)
|
||||
+ "T" + timestamp.substring(7, 9) + ":" + timestamp.substring(9, 11) + ":"
|
||||
+ timestamp.substring(11, 13);
|
||||
} else {
|
||||
return "20" + timestamp.substring(1, 3) + "-" + timestamp.substring(3, 5) + "-" + timestamp.substring(5, 7)
|
||||
+ "T" + timestamp.substring(7, 9) + ":00:00";
|
||||
}
|
||||
}
|
||||
|
||||
public Frame() {
|
||||
@@ -140,21 +150,32 @@ public class Frame implements Serializable {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean containsInitializedKey(Label label) {
|
||||
if (labelToValues.containsKey(label)) {
|
||||
String value = labelToValues.get(label);
|
||||
if (value != null && !value.isBlank()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public Phase getPhase() throws InvalidFrameException {
|
||||
if (labelToValues.containsKey(Label.IINST)) {
|
||||
if (containsInitializedKey(Label.IINST)) {
|
||||
return Phase.ONE_PHASED;
|
||||
} else if (labelToValues.containsKey(Label.IINST1)) {
|
||||
} else if (containsInitializedKey(Label.IINST1)) {
|
||||
return Phase.THREE_PHASED;
|
||||
}
|
||||
throw new InvalidFrameException();
|
||||
}
|
||||
|
||||
public boolean isShortFrame() {
|
||||
return !labelToValues.containsKey(Label.ISOUSC);
|
||||
return !containsInitializedKey(Label.ISOUSC);
|
||||
}
|
||||
|
||||
public Evolution getEvolution() {
|
||||
if (labelToValues.containsKey(Label.PAPP)) {
|
||||
if (containsInitializedKey(Label.PAPP)) {
|
||||
return Evolution.ICC;
|
||||
}
|
||||
return Evolution.NONE;
|
||||
@@ -181,17 +202,17 @@ public class Frame implements Serializable {
|
||||
}
|
||||
|
||||
public TeleinfoTicMode getTicMode() throws InvalidFrameException {
|
||||
if (labelToValues.containsKey(Label.ADCO)) {
|
||||
if (containsInitializedKey(Label.ADCO)) {
|
||||
return TeleinfoTicMode.HISTORICAL;
|
||||
} else if (labelToValues.containsKey(Label.ADSC)) {
|
||||
} else if (containsInitializedKey(Label.ADSC)) {
|
||||
return TeleinfoTicMode.STANDARD;
|
||||
}
|
||||
throw new InvalidFrameException();
|
||||
}
|
||||
|
||||
public FrameType getStandardType() throws InvalidFrameException {
|
||||
boolean isProd = labelToValues.containsKey(Label.EAIT);
|
||||
boolean isThreePhase = labelToValues.containsKey(Label.IRMS2);
|
||||
boolean isProd = containsInitializedKey(Label.EAIT);
|
||||
boolean isThreePhase = containsInitializedKey(Label.IRMS2);
|
||||
if (isProd && isThreePhase) {
|
||||
return FrameType.LSMT_PROD;
|
||||
}
|
||||
|
||||
-1
@@ -21,7 +21,6 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public class TeleinfoElectricityMeterConfiguration {
|
||||
|
||||
private String adco = "";
|
||||
|
||||
public String getAdco() {
|
||||
|
||||
+343
-26
@@ -14,10 +14,20 @@ package org.openhab.binding.teleinfo.internal.handler;
|
||||
|
||||
import static org.openhab.binding.teleinfo.internal.TeleinfoBindingConstants.*;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeFormatterBuilder;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.binding.teleinfo.internal.TeleinfoBindingConstants;
|
||||
import org.openhab.binding.teleinfo.internal.data.Frame;
|
||||
import org.openhab.binding.teleinfo.internal.data.Phase;
|
||||
import org.openhab.binding.teleinfo.internal.data.Pricing;
|
||||
@@ -26,8 +36,12 @@ import org.openhab.binding.teleinfo.internal.reader.io.serialport.InvalidFrameEx
|
||||
import org.openhab.binding.teleinfo.internal.reader.io.serialport.Label;
|
||||
import org.openhab.binding.teleinfo.internal.reader.io.serialport.ValueType;
|
||||
import org.openhab.binding.teleinfo.internal.serial.TeleinfoTicMode;
|
||||
import org.openhab.binding.teleinfo.internal.types.Manufacturer;
|
||||
import org.openhab.binding.teleinfo.internal.types.Meter;
|
||||
import org.openhab.core.library.types.DateTimeType;
|
||||
import org.openhab.core.library.types.DecimalType;
|
||||
import org.openhab.core.library.types.OnOffType;
|
||||
import org.openhab.core.library.types.OpenClosedType;
|
||||
import org.openhab.core.library.types.QuantityType;
|
||||
import org.openhab.core.library.types.StringType;
|
||||
import org.openhab.core.thing.Bridge;
|
||||
@@ -39,6 +53,7 @@ import org.openhab.core.thing.ThingStatusDetail;
|
||||
import org.openhab.core.thing.ThingStatusInfo;
|
||||
import org.openhab.core.thing.binding.BaseThingHandler;
|
||||
import org.openhab.core.types.Command;
|
||||
import org.openhab.core.types.RefreshType;
|
||||
import org.openhab.core.types.UnDefType;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -55,6 +70,9 @@ public class TeleinfoElectricityMeterHandler extends BaseThingHandler implements
|
||||
protected TeleinfoElectricityMeterConfiguration configuration = new TeleinfoElectricityMeterConfiguration();
|
||||
private boolean wasLastFrameShort = false;
|
||||
|
||||
private String adco = "";
|
||||
private double cosphi = Double.NaN;
|
||||
|
||||
public TeleinfoElectricityMeterHandler(Thing thing) {
|
||||
super(thing);
|
||||
}
|
||||
@@ -68,7 +86,11 @@ public class TeleinfoElectricityMeterHandler extends BaseThingHandler implements
|
||||
if (bridge != null) {
|
||||
bridgeStatusChanged(bridge.getStatusInfo());
|
||||
}
|
||||
|
||||
configuration = getConfigAs(TeleinfoElectricityMeterConfiguration.class);
|
||||
|
||||
adco = configuration.getAdco();
|
||||
logger.debug("Initializing Linky handler for {}", adco);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -104,7 +126,18 @@ public class TeleinfoElectricityMeterHandler extends BaseThingHandler implements
|
||||
|
||||
@Override
|
||||
public void handleCommand(ChannelUID channelUID, Command command) {
|
||||
// no commands supported
|
||||
if (!(command instanceof RefreshType)) {
|
||||
if (channelUID.getId().indexOf("cosphi") >= 0) {
|
||||
if (command instanceof DecimalType dc) {
|
||||
cosphi = dc.doubleValue();
|
||||
} else if (command instanceof QuantityType<?> qt) {
|
||||
cosphi = qt.toBigDecimal().doubleValue();
|
||||
}
|
||||
} else {
|
||||
logger.debug("The Linky local binding is read-only and can not handle command {} {}",
|
||||
channelUID.getId(), command);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -139,25 +172,106 @@ public class TeleinfoElectricityMeterHandler extends BaseThingHandler implements
|
||||
}
|
||||
|
||||
private void updateStatesForChannels(Frame frame) {
|
||||
double urms = 0.0;
|
||||
double sinst = 0.0;
|
||||
|
||||
Map<String, String> props = this.editProperties();
|
||||
|
||||
for (Entry<Label, String> entry : frame.getLabelToValues().entrySet()) {
|
||||
Label label = entry.getKey();
|
||||
if (!label.getChannelName().equals(NOT_A_CHANNEL)) {
|
||||
logger.trace("Update channel {} to value {}", label.getChannelName(), entry.getValue());
|
||||
if (label == Label.PTEC) {
|
||||
updateState(label.getChannelName(), StringType.valueOf(entry.getValue().replace(".", "")));
|
||||
} else if (label.getType() == ValueType.STRING) {
|
||||
updateState(label.getChannelName(), StringType.valueOf(entry.getValue()));
|
||||
} else if (label.getType() == ValueType.INTEGER) {
|
||||
updateState(label.getChannelName(), QuantityType
|
||||
.valueOf(label.getFactor() * Integer.parseInt(entry.getValue()), label.getUnit()));
|
||||
try {
|
||||
if (!label.getChannelName().equals(NOT_A_CHANNEL)) {
|
||||
logger.trace("Update channel {} to value {}", label.getChannelName(), entry.getValue());
|
||||
if (label == Label.PTEC) {
|
||||
updateState(label.getChannelName(), StringType.valueOf(entry.getValue().replace(".", "")));
|
||||
} else if (label.getType() == ValueType.STRING) {
|
||||
updateState(label.getChannelName(), StringType.valueOf(entry.getValue()));
|
||||
} else if (label.getType() == ValueType.DATE) {
|
||||
String value = entry.getValue();
|
||||
if (value.isBlank()) {
|
||||
value = frame.getLabelToTimestamp().get(label);
|
||||
}
|
||||
|
||||
if (value != null && !value.isEmpty()) {
|
||||
Instant timestampConv = getAsInstant(value);
|
||||
|
||||
if (timestampConv != null) {
|
||||
logger.trace("Update channel {} to value {}", label.getChannelName(), value);
|
||||
|
||||
updateState(label.getChannelName(), new DateTimeType(timestampConv));
|
||||
}
|
||||
}
|
||||
} else if (label.getType() == ValueType.INTEGER) {
|
||||
if (!entry.getValue().isBlank()) {
|
||||
updateState(label.getChannelName(), QuantityType
|
||||
.valueOf(label.getFactor() * Integer.parseInt(entry.getValue()), label.getUnit()));
|
||||
}
|
||||
}
|
||||
|
||||
// handle special case channel that will need additionnal decoding
|
||||
if (label == Label.RELAIS) {
|
||||
handleRelaisPayload(entry.getValue());
|
||||
} else if (label == Label.PJOURF_PLUS_1) {
|
||||
handlePayload(Label.PJOURF_PLUS_1.name(), entry.getValue());
|
||||
} else if (label == Label.PPOINTE) {
|
||||
handlePayload(Label.PPOINTE.name(), entry.getValue());
|
||||
} else if (label == Label.STGE) {
|
||||
handleStgePayload(entry.getValue());
|
||||
} else if (label == Label.URMS1) {
|
||||
urms = Double.valueOf(entry.getValue());
|
||||
} else if (label == Label.SINSTS) {
|
||||
sinst = Double.valueOf(entry.getValue());
|
||||
}
|
||||
} else {
|
||||
// handle some channel that we want to have has properties for reference
|
||||
if (label == Label._TYPE_TRAME) {
|
||||
props.put(THING_ELECTRICITY_METER_PROPERTY_TYPETRAME, entry.getValue());
|
||||
} else if (label == Label._DATE_FIRMWARE) {
|
||||
props.put(THING_ELECTRICITY_METER_PROPERTY_DATE_FIRMWARE, entry.getValue());
|
||||
} else if (label == Label.VTIC) {
|
||||
props.put(THING_ELECTRICITY_METER_PROPERTY_VTIC, entry.getValue());
|
||||
} else if (label == Label.ADSC || label == Label.ADCO) {
|
||||
String secondaryAddress = frame.get(Label.ADCO) != null ? frame.get(Label.ADCO)
|
||||
: frame.get(Label.ADSC);
|
||||
|
||||
if (secondaryAddress != null && secondaryAddress.length() == 12) {
|
||||
String oldMatricule = getThing().getProperties()
|
||||
.get(THING_ELECTRICITY_METER_PROPERTY_MATRICULE);
|
||||
|
||||
if (oldMatricule == null || oldMatricule.isBlank()) {
|
||||
String manufacturerSt = secondaryAddress.substring(0, 2);
|
||||
String year = secondaryAddress.substring(2, 4);
|
||||
String type = secondaryAddress.substring(4, 6);
|
||||
String matricule = secondaryAddress.substring(6, 12);
|
||||
|
||||
Meter meter = Meter.getCompteurForId(Integer.parseInt(type));
|
||||
Manufacturer manufacturer = Manufacturer
|
||||
.getManufacturerForId(Integer.parseInt(manufacturerSt));
|
||||
|
||||
if (manufacturer != null) {
|
||||
props.put(THING_ELECTRICITY_METER_PROPERTY_MANUFACTURER, manufacturer.getLabel());
|
||||
}
|
||||
if (meter != null) {
|
||||
props.put(THING_ELECTRICITY_METER_PROPERTY_TYPE, meter.getLabel());
|
||||
props.put(THING_ELECTRICITY_METER_PROPERTY_CATEGORY,
|
||||
meter.getCompteurType().getLabel());
|
||||
}
|
||||
props.put(THING_ELECTRICITY_METER_PROPERTY_MATRICULE, matricule);
|
||||
props.put(THING_ELECTRICITY_METER_PROPERTY_MANUFACTURE_YEAR,
|
||||
"" + ((Integer.parseInt(year) + 2000)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!label.getTimestampChannelName().equals(NOT_A_CHANNEL)) {
|
||||
String timestamp = frame.getAsDateTime(label);
|
||||
if (!timestamp.isEmpty()) {
|
||||
logger.trace("Update channel {} to value {}", label.getTimestampChannelName(), timestamp);
|
||||
updateState(label.getTimestampChannelName(), DateTimeType.valueOf(timestamp));
|
||||
if (!label.getTimestampChannelName().equals(NOT_A_CHANNEL)) {
|
||||
String timestamp = frame.getAsDateTime(label);
|
||||
if (!timestamp.isEmpty()) {
|
||||
logger.trace("Update channel {} to value {}", label.getTimestampChannelName(), timestamp);
|
||||
updateState(label.getTimestampChannelName(), DateTimeType.valueOf(timestamp));
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
logger.warn("Can't update channel {}", label.getChannelName());
|
||||
}
|
||||
}
|
||||
try {
|
||||
@@ -188,27 +302,230 @@ public class TeleinfoElectricityMeterHandler extends BaseThingHandler implements
|
||||
} catch (InvalidFrameException e) {
|
||||
logger.warn("Can not find phase.");
|
||||
}
|
||||
} else {
|
||||
if (frame.getLabelToValues().containsKey(Label.RELAIS)) {
|
||||
String relaisString = frame.get(Label.RELAIS);
|
||||
if (relaisString != null) {
|
||||
boolean[] relaisStates = FrameUtil.parseRelaisStates(relaisString);
|
||||
for (int i = 0; i <= 7; i++) {
|
||||
updateState(CHANNELS_LSM_RELAIS[i], OnOffType.from(relaisStates[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (InvalidFrameException e) {
|
||||
logger.warn("Can not find TIC mode.");
|
||||
}
|
||||
|
||||
this.updateProperties(props);
|
||||
updateCalcVars(urms, sinst);
|
||||
updateState(CHANNEL_LAST_UPDATE, new DateTimeType());
|
||||
}
|
||||
|
||||
private void updateCalcVars(double urms, double sinst) {
|
||||
if (urms == 0) {
|
||||
logger.warn("Invalid input: urms is zero, cannot perform calculations.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (urms < 0 || sinst < 0) {
|
||||
logger.warn("Invalid input: urms and sinst must be positive. Received urms={}, sinst={}", urms, sinst);
|
||||
return;
|
||||
}
|
||||
|
||||
double irms1c = sinst / urms;
|
||||
|
||||
Label channelIrms1f = Label.IRMS1F;
|
||||
Label channelSactive = Label.SACTIVE;
|
||||
Label channelSreactive = Label.SREACTIVE;
|
||||
|
||||
updateState(channelIrms1f.getChannelName(),
|
||||
QuantityType.valueOf(channelIrms1f.getFactor() * irms1c, channelIrms1f.getUnit()));
|
||||
|
||||
if (Double.isNaN(cosphi)) {
|
||||
return;
|
||||
}
|
||||
|
||||
double clampedCosphi = Math.max(-1.0, Math.min(1.0, cosphi));
|
||||
double phi = Math.acos(clampedCosphi);
|
||||
double sinphi = Math.sin(phi);
|
||||
|
||||
double sactive = sinst * clampedCosphi;
|
||||
double sreactive = sinst * sinphi;
|
||||
|
||||
updateState(channelSactive.getChannelName(),
|
||||
QuantityType.valueOf(channelSactive.getFactor() * sactive, channelSactive.getUnit()));
|
||||
|
||||
updateState(channelSreactive.getChannelName(),
|
||||
QuantityType.valueOf(channelSreactive.getFactor() * sreactive, channelSreactive.getUnit()));
|
||||
}
|
||||
|
||||
private void updateStateForMissingAlert(Frame frame, Label label) {
|
||||
if (!frame.getLabelToValues().containsKey(label)) {
|
||||
updateState(label.getChannelName(), UnDefType.NULL);
|
||||
}
|
||||
}
|
||||
|
||||
public String getAdco() {
|
||||
return this.adco;
|
||||
}
|
||||
|
||||
protected @Nullable Instant getAsInstant(String timestamp) {
|
||||
LocalDateTime res;
|
||||
|
||||
if (timestamp.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (timestamp.startsWith("H") || timestamp.startsWith("E") || timestamp.startsWith(" ")) {
|
||||
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyMMdd[HH][mm][ss]");
|
||||
res = LocalDateTime.parse(timestamp.substring(1), df);
|
||||
|
||||
// Handle summer time
|
||||
if (timestamp.startsWith("E")) {
|
||||
res = res.minusHours(1);
|
||||
}
|
||||
} else {
|
||||
DateTimeFormatter df = new DateTimeFormatterBuilder().appendPattern("MMM dd yyyy")
|
||||
.toFormatter(Locale.ENGLISH);
|
||||
res = LocalDate.parse(timestamp, df).atStartOfDay();
|
||||
}
|
||||
|
||||
return res.toInstant(ZoneOffset.of("+1"));
|
||||
}
|
||||
|
||||
// @formatter:off
|
||||
// 1 0 0 0 0 1 0 0 0 1 1 1 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1
|
||||
// 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
||||
// 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
|
||||
//
|
||||
// 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1
|
||||
// P==> P==> T==> T==> S S==> E==> N T H T==> T========> S F D S N C C=====> C
|
||||
// o o e e y t t o é o a a e o é u o a o o
|
||||
// i i m m n a a t l r r r n n p r t c u n
|
||||
// n n p p c t t é l i i s c a t h p t
|
||||
// t t o o h u U o f f t s e u e u a
|
||||
// e e r t S s i g i s n s r c
|
||||
// + o o e n e D F o e s e e t
|
||||
// 1 C r d f i o n m i d
|
||||
// C P t o s u e o s
|
||||
// P L i t r n n e
|
||||
// L e i n t c
|
||||
|
||||
// @formatter:on
|
||||
|
||||
private void handleStgePayload(String value) {
|
||||
String binStr = String.format("%32s", new BigInteger(value, 16).toString(2)).replace(' ', '0');
|
||||
|
||||
String relais = binStr.substring(31, 32);
|
||||
int coupure = Integer.parseInt(binStr.substring(28, 31), 2);
|
||||
String cache = binStr.substring(27, 28);
|
||||
String overVoltage = binStr.substring(25, 26);
|
||||
String exceedingPower = binStr.substring(24, 25);
|
||||
String function = binStr.substring(23, 24);
|
||||
String direction = binStr.substring(22, 23);
|
||||
int supplierRate = Integer.parseInt(binStr.substring(18, 22), 2);
|
||||
int distributorRate = Integer.parseInt(binStr.substring(16, 18), 2);
|
||||
String clock = binStr.substring(15, 16);
|
||||
String plc = binStr.substring(14, 15);
|
||||
int comOuput = Integer.parseInt(binStr.substring(11, 13), 2);
|
||||
int plcState = Integer.parseInt(binStr.substring(9, 11), 2);
|
||||
String plcSync = binStr.substring(8, 9);
|
||||
int tempoToday = Integer.parseInt(binStr.substring(6, 8), 2);
|
||||
int tempoTomorrow = Integer.parseInt(binStr.substring(4, 6), 2);
|
||||
int movingTipsAdvice = Integer.parseInt(binStr.substring(2, 4), 2);
|
||||
int movingTips = Integer.parseInt(binStr.substring(0, 2), 2);
|
||||
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_CONTACT_SEC, getOpenClosed(relais));
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_CACHE, getOpenClosed(cache));
|
||||
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_CUT_OFF, new DecimalType(coupure));
|
||||
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_OVER_VOLTAGE, new DecimalType(overVoltage));
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_EXCEEDING_POWER, new DecimalType(exceedingPower));
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_FUNCTION, new DecimalType(function));
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_DIRECTION, new DecimalType(direction));
|
||||
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_SUPPLIER_RATE, new DecimalType(supplierRate));
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_DISTRIBUTOR_RATE, new DecimalType(distributorRate));
|
||||
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_CLOCK, new DecimalType(clock));
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_PLC, new DecimalType(plc));
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_COM_OUTPUT, new DecimalType(comOuput));
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_PLC_STATE, new DecimalType(plcState));
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_PLC_SYNCHRO, new DecimalType(plcSync));
|
||||
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_TEMPO_TODAY, new DecimalType(tempoToday));
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_TEMPO_TOMORROW, new DecimalType(tempoTomorrow));
|
||||
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_MOVING_TIPS_ADVICE, new DecimalType(movingTipsAdvice));
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_MOVING_TIPS, new DecimalType(movingTips));
|
||||
}
|
||||
|
||||
private OpenClosedType getOpenClosed(String val) {
|
||||
if ("0".equals(val)) {
|
||||
return OpenClosedType.CLOSED;
|
||||
} else if ("1".equals(val)) {
|
||||
return OpenClosedType.OPEN;
|
||||
}
|
||||
|
||||
return OpenClosedType.CLOSED;
|
||||
}
|
||||
|
||||
private void handleRelaisPayload(String value) {
|
||||
boolean[] relaisStates = FrameUtil.parseRelaisStates(value);
|
||||
for (int i = 0; i <= 7; i++) {
|
||||
updateState(CHANNELS_LSM_RELAIS[i], OnOffType.from(relaisStates[i]));
|
||||
}
|
||||
}
|
||||
|
||||
private void handlePayload(String channelName, String value) {
|
||||
if (value.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
String[] parts = value.split(" ");
|
||||
int idx = 1;
|
||||
for (String part : parts) {
|
||||
if ("NONUTILE".equals(part)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
int h = Integer.parseInt(part.substring(0, 2), 16);
|
||||
int m = Integer.parseInt(part.substring(2, 4), 16);
|
||||
|
||||
String p2 = part.substring(4, 8);
|
||||
String binStr = String.format("%16s", new BigInteger(p2, 16).toString(2)).replace(' ', '0');
|
||||
|
||||
String index = binStr.substring(12, 16);
|
||||
String relais = binStr.substring(0, 2);
|
||||
|
||||
int indexI = Integer.parseInt(index, 2);
|
||||
|
||||
String tarif = "";
|
||||
|
||||
if (indexI == 1) {
|
||||
tarif = "Bleue-HC";
|
||||
} else if (indexI == 2) {
|
||||
tarif = "Bleue-HP";
|
||||
} else if (indexI == 3) {
|
||||
tarif = "Blanc-HC";
|
||||
} else if (indexI == 4) {
|
||||
tarif = "Blanc-HP";
|
||||
} else if (indexI == 5) {
|
||||
tarif = "Red-HC";
|
||||
} else if (indexI == 6) {
|
||||
tarif = "Red-HP";
|
||||
}
|
||||
|
||||
String relaisSt = "";
|
||||
if ("00".equals(relais)) {
|
||||
relaisSt = "Fermé";
|
||||
} else if ("01".equals(relais)) {
|
||||
relaisSt = "Ouvert";
|
||||
}
|
||||
|
||||
if ("PJOURF_PLUS_1".equals(channelName)) {
|
||||
// PJourF
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_PJOURF_IDX + idx + "-plus1",
|
||||
new StringType(h + ":" + m + "<>" + tarif + "<>" + relaisSt));
|
||||
} else if ("PPOINTE".equals(channelName)) {
|
||||
// PJourF
|
||||
updateState(TeleinfoBindingConstants.CHANNEL_PPOINTE_IDX + idx,
|
||||
new StringType(h + ":" + m + "<>" + tarif + "<>" + relaisSt));
|
||||
}
|
||||
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+12
-9
@@ -20,6 +20,7 @@ import java.util.stream.Stream;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.binding.teleinfo.internal.d2l.TeleinfoD2LControllerHandler;
|
||||
import org.openhab.binding.teleinfo.internal.serial.TeleinfoSerialControllerHandler;
|
||||
import org.openhab.core.io.transport.serial.SerialPortManager;
|
||||
import org.openhab.core.thing.Bridge;
|
||||
@@ -43,15 +44,15 @@ import org.osgi.service.component.annotations.Reference;
|
||||
public class TeleinfoThingHandlerFactory extends BaseThingHandlerFactory {
|
||||
|
||||
private static final Set<ThingTypeUID> 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,
|
||||
THING_LSMM_ELECTRICITY_METER_TYPE_UID, THING_LSMM_PROD_ELECTRICITY_METER_TYPE_UID,
|
||||
THING_LSMT_ELECTRICITY_METER_TYPE_UID, THING_LSMT_PROD_ELECTRICITY_METER_TYPE_UID)
|
||||
.collect(Collectors.toSet());
|
||||
THING_TYPE_D2L_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, THING_LSMM_ELECTRICITY_METER_TYPE_UID,
|
||||
THING_LSMM_PROD_ELECTRICITY_METER_TYPE_UID, THING_LSMT_ELECTRICITY_METER_TYPE_UID,
|
||||
THING_LSMT_PROD_ELECTRICITY_METER_TYPE_UID).collect(Collectors.toSet());
|
||||
|
||||
private final SerialPortManager serialPortManager;
|
||||
|
||||
@@ -71,6 +72,8 @@ public class TeleinfoThingHandlerFactory extends BaseThingHandlerFactory {
|
||||
|
||||
if (THING_TYPE_SERIAL_CONTROLLER.equals(thingTypeUID)) {
|
||||
return new TeleinfoSerialControllerHandler((Bridge) thing, serialPortManager);
|
||||
} else if (THING_TYPE_D2L_CONTROLLER.equals(thing.getThingTypeUID())) {
|
||||
return new TeleinfoD2LControllerHandler((Bridge) thing);
|
||||
}
|
||||
|
||||
if (SUPPORTED_THING_TYPES_UIDS.contains(thing.getThingTypeUID())) {
|
||||
|
||||
+17
-4
@@ -26,7 +26,6 @@ import org.openhab.core.library.unit.Units;
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public enum Label {
|
||||
|
||||
// Historical labels
|
||||
ADCO(ValueType.STRING, NOT_A_CHANNEL, Units.ONE),
|
||||
OPTARIF(ValueType.STRING, NOT_A_CHANNEL, Units.ONE),
|
||||
@@ -65,8 +64,8 @@ public enum Label {
|
||||
|
||||
// Standard TIC mode labels
|
||||
ADSC(ValueType.STRING, NOT_A_CHANNEL, Units.ONE),
|
||||
VTIC(ValueType.INTEGER, NOT_A_CHANNEL, Units.ONE),
|
||||
DATE(ValueType.STRING, NOT_A_CHANNEL, CHANNEL_LSM_DATE, Units.ONE),
|
||||
VTIC(ValueType.STRING, NOT_A_CHANNEL, Units.ONE),
|
||||
DATE(ValueType.DATE, CHANNEL_LSM_DATE, Units.ONE),
|
||||
NGTF(ValueType.STRING, CHANNEL_LSM_NGTF, Units.ONE),
|
||||
LTARF(ValueType.STRING, CHANNEL_LSM_LTARF, Units.ONE),
|
||||
EAST(ValueType.INTEGER, CHANNEL_LSM_EAST, Units.WATT_HOUR),
|
||||
@@ -98,6 +97,9 @@ public enum Label {
|
||||
PREF(ValueType.INTEGER, CHANNEL_LSM_PREF, Units.VOLT_AMPERE, 1000),
|
||||
PCOUP(ValueType.INTEGER, CHANNEL_LSM_PCOUP, Units.VOLT_AMPERE, 1000),
|
||||
SINSTS(ValueType.INTEGER, CHANNEL_LSM_SINSTS, Units.VOLT_AMPERE),
|
||||
SINST1(ValueType.INTEGER, CHANNEL_LSM_SINSTS1, Units.VOLT_AMPERE),
|
||||
SINST2(ValueType.INTEGER, CHANNEL_LSM_SINSTS2, Units.VOLT_AMPERE),
|
||||
SINST3(ValueType.INTEGER, CHANNEL_LSM_SINSTS3, Units.VOLT_AMPERE),
|
||||
SINSTS1(ValueType.INTEGER, CHANNEL_LSM_SINSTS1, Units.VOLT_AMPERE),
|
||||
SINSTS2(ValueType.INTEGER, CHANNEL_LSM_SINSTS2, Units.VOLT_AMPERE),
|
||||
SINSTS3(ValueType.INTEGER, CHANNEL_LSM_SINSTS3, Units.VOLT_AMPERE),
|
||||
@@ -137,7 +139,18 @@ public enum Label {
|
||||
NJOURF(ValueType.STRING, CHANNEL_LSM_NJOURF, Units.ONE),
|
||||
NJOURF_PLUS_1(ValueType.STRING, CHANNEL_LSM_NJOURF_PLUS_1, Units.ONE),
|
||||
PJOURF_PLUS_1(ValueType.STRING, CHANNEL_LSM_PJOURF_PLUS_1, Units.ONE),
|
||||
PPOINTE(ValueType.STRING, CHANNEL_LSM_PPOINTE, Units.ONE);
|
||||
PPOINTE(ValueType.STRING, CHANNEL_LSM_PPOINTE, Units.ONE),
|
||||
|
||||
// ID D2L Channels
|
||||
_ID_D2L(ValueType.STRING, NOT_A_CHANNEL, Units.ONE),
|
||||
_TYPE_TRAME(ValueType.STRING, NOT_A_CHANNEL, Units.ONE),
|
||||
_DATE_FIRMWARE(ValueType.DATE, NOT_A_CHANNEL, Units.ONE),
|
||||
|
||||
// Additional Calculated Channels
|
||||
IRMS1F(ValueType.INTEGER, CHANNEL_IRMS1F, Units.AMPERE),
|
||||
COSPHI(ValueType.INTEGER, CHANNEL_COSPHI, Units.ONE),
|
||||
SACTIVE(ValueType.INTEGER, CHANNEL_SACTIVE, Units.WATT),
|
||||
SREACTIVE(ValueType.INTEGER, CHANNEL_SREACTIVE, Units.WATT);
|
||||
|
||||
private final ValueType type;
|
||||
private final String channelName;
|
||||
|
||||
+3
-2
@@ -16,12 +16,13 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
|
||||
/**
|
||||
* Defines all the type of values
|
||||
*
|
||||
*
|
||||
* @author Olivier MARCEAU - Initial contribution
|
||||
*
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public enum ValueType {
|
||||
INTEGER,
|
||||
STRING
|
||||
STRING,
|
||||
DATE
|
||||
}
|
||||
|
||||
+170
@@ -0,0 +1,170 @@
|
||||
/*
|
||||
* Copyright (c) 2010-2026 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.types;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
|
||||
/**
|
||||
* Define the different Meter manufacturer
|
||||
*
|
||||
* @author Laurent Arnal - Initial contribution
|
||||
*
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public enum Manufacturer {
|
||||
|
||||
NotAttrib000(0x00, "Unassigned"),
|
||||
|
||||
Crouzet(0x01, "CROUZET / MONETEL"),
|
||||
Sagem(0x02, "SAGEM / SAGEMCOM"),
|
||||
Schlumberger(0x03, "SCHLUMBERGER / ACTARIS / ITRON"),
|
||||
Landis(0x04, "LANDIS ET GYR / SIEMENS METERING / LANDIS+GYR"),
|
||||
Sauter(0x05, "SAUTER / STEPPER ENERGIE France / ZELLWEGER"),
|
||||
Itron(0x06, "ITRON"),
|
||||
Maec(0x07, "MAEC"),
|
||||
Matra(0x08, "MATRA-CHAUVIN ARNOUX / ENERDIS"),
|
||||
Faure(0x09, "FAURE-HERMAN"),
|
||||
Sevme(0x0A, "SEVME / SIS"),
|
||||
Magnol(0x0B, "MAGNOL / ELSTER / HONEYWELL"),
|
||||
GazThermique(0x0C, "GAZ THERMIQUE"),
|
||||
|
||||
NotAttrib013(0x0D, "Unassigned"),
|
||||
|
||||
Ghielmetti(0x0E, "GHIELMETTI / DIALOG E.S. / MICRONIQUE"),
|
||||
Mecelec(0x0F, "MECELEC"),
|
||||
|
||||
Legrand(0x10, "LEGRAND / BACO"),
|
||||
Serd(0x11, "SERD-SCHLUMBERGER"),
|
||||
Schneider(0x12, "SCHNEIDER / MERLIN GERIN / GARDY"),
|
||||
GeneralElectri(0x13, "GENERAL ELECTRIC / POWER CONTROL"),
|
||||
NuovoPignone(0x14, "NUOVO PIGNONE / DRESSER"),
|
||||
Scle(0x15, "SCLE"),
|
||||
Edf(0x16, "EDF"),
|
||||
Gdf(0x17, "GDF / GDF-SUEZ"),
|
||||
Hager(0x18, "HAGER – GENERAL ELECTRIC"),
|
||||
DeltaCore(0x19, "DELTA-DORE"),
|
||||
Riz(0x1A, "RIZ"),
|
||||
IskraEmeco(0x1B, "ISKRAEMECO"),
|
||||
Gmt(0x1C, "GMT"),
|
||||
AnalogDevice(0x1D, "ANALOG DEVICE"),
|
||||
Michaud(0x1E, "MICHAUD"),
|
||||
HexingElectrical(0x1F, "HEXING ELECTRICAL CO. Ltd"),
|
||||
|
||||
Siame(0x20, "SIAME"),
|
||||
Larsen(0x21, "LARSEN & TOUBRO Limited"),
|
||||
Elster(0x22, "ELSTER / HONEYWELL"),
|
||||
ElectronicAfzar(0x23, "ELECTRONIC AFZAR AZMA"),
|
||||
AdvancedElectronic(0x24, "ADVANCED ELECTRONIC COMPAGNY Ldt"),
|
||||
Aem(0x25, "AEM"),
|
||||
Zhejiang(0x26, "ZHEJIANG CHINT INSTRUMENT & METER CO. Ldt"),
|
||||
Ziv(0x27, "ZIV"),
|
||||
|
||||
NotAttrib040(0x28, "Unassigned"),
|
||||
NotAttrib041(0x29, "Unassigned"),
|
||||
NotAttrib042(0x2A, "Unassigned"),
|
||||
NotAttrib043(0x2B, "Unassigned"),
|
||||
NotAttrib044(0x2C, "Unassigned"),
|
||||
NotAttrib045(0x2D, "Unassigned"),
|
||||
NotAttrib046(0x2E, "Unassigned"),
|
||||
NotAttrib047(0x2F, "Unassigned"),
|
||||
NotAttrib048(0x30, "Unassigned"),
|
||||
NotAttrib049(0x31, "Unassigned"),
|
||||
NotAttrib050(0x32, "Unassigned"),
|
||||
NotAttrib051(0x33, "Unassigned"),
|
||||
NotAttrib052(0x34, "Unassigned"),
|
||||
NotAttrib053(0x35, "Unassigned"),
|
||||
NotAttrib054(0x36, "Unassigned"),
|
||||
NotAttrib055(0x37, "Unassigned"),
|
||||
NotAttrib056(0x38, "Unassigned"),
|
||||
NotAttrib057(0x39, "Unassigned"),
|
||||
NotAttrib058(0x3A, "Unassigned"),
|
||||
NotAttrib059(0x3B, "Unassigned"),
|
||||
NotAttrib060(0x3C, "Unassigned"),
|
||||
NotAttrib061(0x3D, "Unassigned"),
|
||||
NotAttrib062(0x3E, "Unassigned"),
|
||||
NotAttrib063(0x3F, "Unassigned"),
|
||||
NotAttrib064(0x40, "Unassigned"),
|
||||
NotAttrib065(0x41, "Unassigned"),
|
||||
NotAttrib066(0x42, "Unassigned"),
|
||||
NotAttrib067(0x43, "Unassigned"),
|
||||
NotAttrib068(0x44, "Unassigned"),
|
||||
NotAttrib069(0x45, "Unassigned"),
|
||||
|
||||
Landis02(0x46, "LANDIS et GYR (export ou régie)"),
|
||||
StepperEnergie(0x47, "STEPPER ENERGIE France"),
|
||||
|
||||
NotAttrib072(0x48, "Unassigned"),
|
||||
NotAttrib073(0x49, "Unassigned"),
|
||||
NotAttrib074(0x4A, "Unassigned"),
|
||||
NotAttrib075(0x4B, "Unassigned"),
|
||||
NotAttrib076(0x4C, "Unassigned"),
|
||||
NotAttrib077(0x4D, "Unassigned"),
|
||||
NotAttrib078(0x4E, "Unassigned"),
|
||||
NotAttrib079(0x4F, "Unassigned"),
|
||||
NotAttrib080(0x50, "Unassigned"),
|
||||
|
||||
Sagem02(0x51, "SAGEM / SAGEMCOM"),
|
||||
Landis03(0x52, "LANDIS ET GYR / SIEMENS METERING / LANDIS+GYR"),
|
||||
Elster02(0x53, "ELSTER / HONEYWELL"),
|
||||
Sagem03(0x54, "SAGEM / SAGEMCOM"),
|
||||
Itron02(0x55, "ITRON"),
|
||||
|
||||
NotAttrib086(0x56, "Unassigned"),
|
||||
NotAttrib087(0x57, "Unassigned"),
|
||||
NotAttrib088(0x58, "Unassigned"),
|
||||
NotAttrib089(0x59, "Unassigned"),
|
||||
NotAttrib090(0x5A, "Unassigned"),
|
||||
NotAttrib091(0x5B, "Unassigned"),
|
||||
NotAttrib092(0x5C, "Unassigned"),
|
||||
NotAttrib093(0x5D, "Unassigned"),
|
||||
NotAttrib094(0x5E, "Unassigned"),
|
||||
NotAttrib095(0x5F, "Unassigned"),
|
||||
NotAttrib096(0x60, "Unassigned"),
|
||||
NotAttrib097(0x61, "Unassigned"),
|
||||
NotAttrib098(0x62, "Unassigned"),
|
||||
NotAttrib099(0x63, "Unassigned");
|
||||
|
||||
private static Map<Integer, Manufacturer> idToValue = new Hashtable<Integer, Manufacturer>();
|
||||
|
||||
static {
|
||||
for (Manufacturer manufacturer : EnumSet.allOf(Manufacturer.class)) {
|
||||
// Yes, use some appropriate locale in production code :)
|
||||
idToValue.put(manufacturer.id, manufacturer);
|
||||
}
|
||||
}
|
||||
|
||||
private final int id;
|
||||
private final String label;
|
||||
|
||||
Manufacturer(int id, String label) {
|
||||
this.id = id;
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
|
||||
public static @Nullable Manufacturer getManufacturerForId(int id) {
|
||||
if (idToValue.containsKey(id)) {
|
||||
return idToValue.get(id);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+369
@@ -0,0 +1,369 @@
|
||||
/*
|
||||
* Copyright (c) 2010-2026 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.types;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
|
||||
/**
|
||||
* Define the different available meter on the market
|
||||
*
|
||||
* @author Laurent Arnal - Initial contribution
|
||||
*
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public enum Meter {
|
||||
|
||||
NotAttrib000(0x00, MeterType.NOATTRIB, "Non attribué"),
|
||||
|
||||
BleuMonoMultiTarif(0x01, MeterType.BLEUE, "Compteur bleu monophasé multitarif (BBR) - 1ère gen"),
|
||||
|
||||
CentraleG3(0x02, MeterType.OTHER, "Centrale de mesure G3 - Poste HTA/BT"),
|
||||
|
||||
Concentrateur01(0x03, MeterType.OTHER, "Concentrateur multi-compteurs / électrique + 2 fluides"),
|
||||
Concentrateur02(0x04, MeterType.OTHER, "Concentrateur simplifié / élec"),
|
||||
|
||||
BleuMonoSimpleTarif(0x05, MeterType.BLEUE, "Compteur bleu monophasé simple tarif électronique - 1ère gen"),
|
||||
|
||||
JauneElectro(0x06, MeterType.JAUNE, "Compteur jaune électronique / tarif modulable"),
|
||||
|
||||
PrismeElectro(0x07, MeterType.PRISME, "Compteur électronique universel (PRISME ou ICE)"),
|
||||
SauterEuridis(0x08, MeterType.OTHER, "Compteur sauter modifié EURIDIS"),
|
||||
|
||||
BleuTri1Gen(0x09, MeterType.BLEUE, "Compteur bleu triphasé électronique - 1ère gen"),
|
||||
|
||||
JauneElectro2Gen(0x0A, MeterType.JAUNE, "Compteur jaune électronique 2ème gen"),
|
||||
|
||||
BleuTriSimpleTarif(0x0B, MeterType.BLEUE, "Compteur bleu monophasé simple tarif FERRARIS"),
|
||||
|
||||
Prisme(0x0C, MeterType.PRISME, "Compteur prisme"),
|
||||
|
||||
CentraleMesureF1(0x0D, MeterType.OTHER, "Centrale de mesure G1 - Poste HTA/BT"),
|
||||
AnalyserCourbeCharge(0x0E, MeterType.OTHER, "Analyseur de courbe de charge (panel BT)"),
|
||||
|
||||
BleuMonoMultiTarifSansBBR(0x0F, MeterType.BLEUE, "Compteur bleu monophasé multitarif électronique sans BBR"),
|
||||
BleuExpICC(0x10, MeterType.BLEUE, "Compteur bleu expérimentation « 10000 ICC »"),
|
||||
|
||||
ExpICC(0x11, MeterType.OTHER, "ICC expérimentation « 10000 ICC »"),
|
||||
|
||||
DetectDefHTA(0x12, MeterType.OTHER, "Détecteur de défauts / HTA , neutre compensé"),
|
||||
Concentrateur03(0x13, MeterType.OTHER, "Concentrateur multi-compteurs / 3 fluides indifférenciés"),
|
||||
|
||||
BleuMonoMultiTarifDemiTaux1Gen(0x14, MeterType.BLEUE, "Compteur bleu monophasé multitarif 1/2 - 1ère gen"),
|
||||
BleuTriMultiTarifDemiTaux1Gen(0x15, MeterType.BLEUE, "Compteur bleu triphasé 1/2 taux - 1ére gen"),
|
||||
BleuMonoMultiTarif2Gen(0x16, MeterType.BLEUE, "Compteur bleu monophasé multitarif - 2ème gen"),
|
||||
BleuMonoMultiTarifDemiTaux2Gen(0x17, MeterType.BLEUE, "Compteur bleu monophasé multitarif 1/2 - 2ème gen"),
|
||||
|
||||
NotAttrib024(0x18, MeterType.NOATTRIB, "Non attribué"),
|
||||
|
||||
BleuMonoSimpleTarif2Gen(0x19, MeterType.BLEUE, "Compteur bleu monophasé simple tarif - 2ème gen"),
|
||||
BleuTri20002Gen(0x1A, MeterType.BLEUE, "Compteur bleu triphasé - palier 2000 - 2ème gen"),
|
||||
BleuTri2000DemiTaux2Gen(0x1B, MeterType.BLEUE, "Compteur bleu triphasé - palier 2000 ½ taux - 2ème gen"),
|
||||
BleuMono20073Gen(0x1C, MeterType.BLEUE, "Compteur bleu monophasé multitarif - palier 2007 - 3ème gen"),
|
||||
BleuMono2007DemiTaux3Gen(0x1D, MeterType.BLEUE, "Compteur bleu monophasé multi ½ - 2007 - 3ème gen"),
|
||||
BleuTri20073Gen(0x1E, MeterType.BLEUE, "Compteur bleu triphasé - palier 2007 - 3ème gen"),
|
||||
BleuTri2007DemiTaux3Gen(0x1F, MeterType.BLEUE, "Compteur bleu triphasé ½ taux - palier 2007 – 3ème gen"),
|
||||
BleuTriTele(0x20, MeterType.BLEUE, "Compteur bleu triphasé télétotalisation"),
|
||||
|
||||
JauneElectroDirect(0x21, MeterType.JAUNE, "Compteur jaune électronique branchement direct"),
|
||||
|
||||
Ice(0x22, MeterType.OTHER, "Compteur ICE 4 quadrants"),
|
||||
Tromaran(0x23, MeterType.OTHER, "Compteur trimaran 2P classe 0,2s pour RTE"),
|
||||
PmePmiBt(0x24, MeterType.OTHER, "Compteur PME-PMI BT > 36kva"),
|
||||
Prepaie(0x25, MeterType.OTHER, "Compteur prépaiement"),
|
||||
Hxe34(0x26, MeterType.OTHER, "Compteur triphasé HXE34 de HECL"),
|
||||
|
||||
NotAttrib039(0x27, MeterType.NOATTRIB, "Non attribué"),
|
||||
|
||||
AffMulti(0x28, MeterType.OTHER, "Système d'affichage multiusage (SAM)"),
|
||||
|
||||
NotAttrib041(0x29, MeterType.NOATTRIB, "Non attribué"),
|
||||
|
||||
ActarisMono1(0x2A, MeterType.OTHER, "Compteur monophasé export (ACTARIS)"),
|
||||
ActarisMono2(0x2B, MeterType.OTHER, "Compteur monophasé export (ACTARIS)"),
|
||||
ActarisTri1(0x2C, MeterType.OTHER, "Compteur triphasé export ACTARIS"),
|
||||
ActarisTri2(0x2D, MeterType.OTHER, "Compteur triphasé export ACTARIS"),
|
||||
ModemEuredis(0x2E, MeterType.OTHER, "Modem EURIDIS pour compteur PME-PMI"),
|
||||
|
||||
NotAttrib047(0x2F, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib048(0x30, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib049(0x31, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib050(0x32, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib051(0x33, MeterType.NOATTRIB, "Non attribué"),
|
||||
|
||||
Concentrateur04(0x34, MeterType.OTHER, "Concentrateur simplifié / gaz ou Transpondeur Gaz EURIDIS"),
|
||||
Concentrateur05(0x35, MeterType.OTHER, "Concentrateur multi-compteurs / VGR"),
|
||||
Concentrateur06(0x36, MeterType.OTHER, "Concentrateur multi-compteurs / gaz"),
|
||||
|
||||
NotAttrib055(0x37, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib056(0x38, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib057(0x39, MeterType.NOATTRIB, "Non attribué"),
|
||||
|
||||
PrismeBaie(0x3A, MeterType.OTHER, "Baie prisme de télétotalisation, exp Lyon"),
|
||||
|
||||
NotAttrib059(0x3B, MeterType.NOATTRIB, "Non attribué"),
|
||||
|
||||
LinkyMono60AG1(0x3C, MeterType.LINKY, "Compteur monophasé 60A LINKY - généralisation G1 - arrivée basse"),
|
||||
LinkyMono60AG3(0x3D, MeterType.LINKY, "Compteur monophasé 60A LINKY - généralisation G3 - arrivée haute"),
|
||||
LinkyMono90AG1(0x3E, MeterType.LINKY, "Compteur monophasé 90A LINKY - généralisation G1 - arrivée basse"),
|
||||
LinkyTri60AG1(0x3F, MeterType.LINKY, "Compteur triphasé 60A LINKY - généralisation G1 - arrivée basse"),
|
||||
LinkyTri60AG3(0x40, MeterType.LINKY, "Compteur monophasé 60A LINKY - généralisation G3 - arrivée basse"),
|
||||
LinkyMono60AG3Exp(0x41, MeterType.LINKY, "Compteur monophasé 90A LINKY expérimentation CPL G3 (2000 ex.)"),
|
||||
|
||||
ModulaireGen(0x42, MeterType.OTHER, "Module du compteur modulaire généralisation"),
|
||||
|
||||
LinkyMono90AG1Pil(0x43, MeterType.LINKY, "Compteur monophasé 90A LINKY - pilote G1 - arrivée basse"),
|
||||
LinkyTri60AG1Pil(0x44, MeterType.LINKY, "Compteur triphasé 60A LINKY - pilote G1 - arrivée basse"),
|
||||
|
||||
NotAttrib069(0x45, MeterType.NOATTRIB, "Non attribué"),
|
||||
|
||||
LinkyMono60AG3I(0x46, MeterType.LINKY, "Compteur monophasé 60A LINKY - interopérabilité G3 - arrivée basse"),
|
||||
LinkyTru60AG3I(0x47, MeterType.LINKY, "Compteur triphasé 60A LINKY - interopérabilité G3 - arrivée basse"),
|
||||
|
||||
HXE12K(0x48, MeterType.OTHER, "Compteur monophasé HXE12K 10-80A 4 tarifs (Hexing Electrical co,Ltd)"),
|
||||
|
||||
NotAttrib073(0x49, MeterType.NOATTRIB, "Non attribué"),
|
||||
|
||||
HXE34K(0x4A, MeterType.OTHER, "Compteur triphasé HXE34K 230/400V 10-80A"),
|
||||
|
||||
LinkyMono90AG3P(0x4B, MeterType.LINKY, "Compteur monophasé 90A LINKY - palier 1 G3 - arrivée basse"),
|
||||
LinkyTru60AG3P(0x4C, MeterType.LINKY, "Compteur triphasé 60A LINKY - palier 1 G3 - arrivée basse"),
|
||||
|
||||
NotAttrib077(0x4D, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib078(0x4E, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib079(0x4F, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib080(0x50, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib081(0x51, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib082(0x52, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib083(0x53, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib084(0x54, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib085(0x55, MeterType.NOATTRIB, "Non attribué"),
|
||||
|
||||
SeiMono(0x56, MeterType.OTHER, "Compteur numérique SEI monophasé 60A 230V - G3 - arrivée basse - 60Hz"),
|
||||
SeiTri(0x57, MeterType.OTHER, "Compteur numérique SEI triphasé 60A 230/400V - G3 - 60Hz"),
|
||||
PlcMono(0x58, MeterType.OTHER, "Compteur monophasé PLC DSMR2.2 (Actaris)"),
|
||||
PlcTri(0x59, MeterType.OTHER, "Compteur triphasé PLC DSMR2.2 (Actaris)"),
|
||||
CplGen1(0x5A, MeterType.OTHER, "Compteur monophasé CPL intégré 1ère gen"),
|
||||
CplGen2(0x5B, MeterType.OTHER, "Compteur triphasé CPL intégré 2ème gen"),
|
||||
|
||||
LinkyMono90A(0x5C, MeterType.LINKY, "Compteur monophasé 90A LINKY ORES – G3 Palier 1"),
|
||||
LinkyTri60A3F(0x5D, MeterType.LINKY, "Compteur triphasé 60A 3 fils LINKY ORES – G3 Palier 1"),
|
||||
LinkyTri60A4F(0x5E, MeterType.LINKY, "Compteur triphasé 60A 4 fils LINKY ORES – G3 Palier 1"),
|
||||
|
||||
NotAttrib095(0x5F, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib096(0x60, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib097(0x61, MeterType.NOATTRIB, "Non attribué"),
|
||||
|
||||
BCPLG0(0x62, MeterType.OTHER, "BCPL G0 pour compteur CJE et CBE"),
|
||||
|
||||
NotAttrib099(0x63, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib100(0x64, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib101(0x65, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib102(0x66, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib103(0x67, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib104(0x68, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib105(0x69, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib106(0x6A, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib107(0x6B, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib108(0x6C, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib109(0x6D, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib110(0x6E, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib111(0x6F, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib112(0x70, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib113(0x71, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib114(0x72, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib115(0x73, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib116(0x74, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib117(0x75, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib118(0x76, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib119(0x77, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib120(0x78, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib121(0x79, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib122(0x7A, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib123(0x7B, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib124(0x7C, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib125(0x7D, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib126(0x7E, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib127(0x7F, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib128(0x80, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib129(0x81, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib130(0x82, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib131(0x83, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib132(0x84, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib133(0x85, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib134(0x86, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib135(0x87, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib136(0x88, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib137(0x89, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib138(0x8A, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib139(0x8B, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib140(0x8C, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib141(0x8D, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib142(0x8E, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib143(0x8F, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib144(0x90, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib145(0x91, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib146(0x92, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib147(0x93, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib148(0x94, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib149(0x95, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib150(0x96, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib151(0x97, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib152(0x98, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib153(0x99, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib154(0x9A, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib155(0x9B, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib156(0x9C, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib157(0x9D, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib158(0x9E, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib159(0x9F, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib160(0xA0, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib161(0xA1, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib162(0xA2, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib163(0xA3, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib164(0xA4, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib165(0xA5, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib166(0xA6, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib167(0xA7, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib168(0xA8, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib169(0xA9, MeterType.NOATTRIB, "Non attribué"),
|
||||
|
||||
EuredisBluetooth(0xAA, MeterType.OTHER, "Coupleur EURIDIS bluetooth (PKE)"),
|
||||
|
||||
NotAttrib171(0xAB, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib172(0xAC, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib173(0xAD, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib174(0xAE, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib175(0xAF, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib176(0xB0, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib177(0xB1, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib178(0xB2, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib179(0xB3, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib180(0xB4, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib181(0xB5, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib182(0xB6, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib183(0xB7, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib184(0xB8, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib185(0xB9, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib186(0xBA, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib187(0xBB, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib188(0xBC, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib189(0xBD, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib190(0xBE, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib191(0xBF, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib192(0xC0, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib193(0xC1, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib194(0xC2, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib195(0xC3, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib196(0xC4, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib197(0xC5, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib198(0xC6, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib199(0xC7, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib200(0xC8, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib201(0xC9, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib202(0xCA, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib203(0xCB, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib204(0xCC, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib205(0xCD, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib206(0xCE, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib207(0xCF, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib208(0xD0, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib209(0xD1, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib210(0xD2, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib211(0xD3, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib212(0xD4, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib213(0xD5, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib214(0xD6, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib215(0xD7, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib216(0xD8, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib217(0xD9, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib218(0xDA, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib219(0xDB, MeterType.NOATTRIB, "Non attribué"),
|
||||
|
||||
BcplGen1(0xDC, MeterType.LINKY, "BCPL G1 LINKY pour compteur CJE"),
|
||||
|
||||
NotAttrib221(0xDD, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib222(0xDE, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib223(0xDF, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib224(0xE0, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib225(0xE1, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib226(0xE2, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib227(0xE3, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib228(0xE4, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib229(0xE5, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib230(0xE6, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib231(0xE7, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib232(0xE8, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib233(0xE9, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib234(0xEA, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib235(0xEB, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib236(0xEC, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib237(0xED, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib238(0xEE, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib239(0xEF, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib240(0xF0, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib241(0xF1, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib242(0xF2, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib243(0xF3, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib244(0xF4, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib245(0xF5, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib246(0xF6, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib247(0xF7, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib248(0xF8, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib249(0xF9, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib250(0xFA, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib251(0xFB, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib252(0xFC, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib253(0xFD, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib254(0xFE, MeterType.NOATTRIB, "Non attribué"),
|
||||
NotAttrib255(0xFF, MeterType.NOATTRIB, "Non attribué");
|
||||
|
||||
private static Map<Integer, Meter> idToValue = new Hashtable<Integer, Meter>();
|
||||
|
||||
static {
|
||||
for (Meter cpt : EnumSet.allOf(Meter.class)) {
|
||||
// Yes, use some appropriate locale in production code :)
|
||||
idToValue.put(cpt.id, cpt);
|
||||
}
|
||||
}
|
||||
|
||||
private final MeterType type;
|
||||
private final int id;
|
||||
private final String label;
|
||||
|
||||
Meter(int id, MeterType type, String label) {
|
||||
this.id = id;
|
||||
this.type = type;
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public final MeterType getCompteurType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public static @Nullable Meter getCompteurForId(int id) {
|
||||
if (idToValue.containsKey(id)) {
|
||||
return idToValue.get(id);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (c) 2010-2026 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.types;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
|
||||
/**
|
||||
* Define the different possible meter types
|
||||
*
|
||||
* @author Laurent Arnal - Initial contribution
|
||||
*
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public enum MeterType {
|
||||
NOATTRIB(0, "NoAttrib"),
|
||||
BLEUE(1, "Blue"),
|
||||
JAUNE(2, "Yellow"),
|
||||
LINKY(3, "Linky"),
|
||||
PRISME(4, "Prisme"),
|
||||
OTHER(5, "Other");
|
||||
|
||||
private final int id;
|
||||
private final String label;
|
||||
|
||||
MeterType(int id, String label) {
|
||||
this.id = id;
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public final int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public final String getLabel() {
|
||||
return label;
|
||||
}
|
||||
}
|
||||
+351
-198
@@ -29,6 +29,8 @@ thing-type.teleinfo.cbetm_hc_electricitymeter.label = CBETM HC/HP
|
||||
thing-type.teleinfo.cbetm_hc_electricitymeter.description = Three-phase Electricity meter with HC option - CBETM (aka "Compteur Bleu Electronique Triphasé Multitarif")
|
||||
thing-type.teleinfo.cbetm_tempo_electricitymeter.label = CBETM TEMPO
|
||||
thing-type.teleinfo.cbetm_tempo_electricitymeter.description = Three-phase Electricity meter with TEMPO option - CBETM (aka "Compteur Bleu Electronique Triphasé Multitarif")
|
||||
thing-type.teleinfo.d2lcontroller.label = Teleinfo D2L Controller
|
||||
thing-type.teleinfo.d2lcontroller.description = Teleinfo D2L dongle with Wifi Interface
|
||||
thing-type.teleinfo.lsmm_electricitymeter.label = Linky Single-phase
|
||||
thing-type.teleinfo.lsmm_electricitymeter.description = Single-phase Linky Electricity meter in standard mode
|
||||
thing-type.teleinfo.lsmm_prod_electricitymeter.label = Linky Single-phase Producer
|
||||
@@ -44,6 +46,16 @@ thing-type.teleinfo.serialcontroller.description = Teleinfo USB Stick with Seria
|
||||
|
||||
thing-type.config.teleinfo.adco.adco.label = ADCO/ADSC
|
||||
thing-type.config.teleinfo.adco.adco.description = Electricity meter identifier (format: 12 characters / e.g: '031528042289')
|
||||
thing-type.config.teleinfo.d2lcontroller.autoRepairInvalidADPSgroupLine.label = Auto Repair Malformed ADPS Data
|
||||
thing-type.config.teleinfo.d2lcontroller.autoRepairInvalidADPSgroupLine.description = Try to auto repair malformed ADPS data from hardware issues (e.g: "ADPS032" instead of "ADPS 032" expected/well-formed data)
|
||||
thing-type.config.teleinfo.d2lcontroller.listenningPort.label = TCP Port
|
||||
thing-type.config.teleinfo.d2lcontroller.listenningPort.description = The tcp port we receive data from d2l
|
||||
thing-type.config.teleinfo.d2lcontroller.ticMode.label = TIC mode
|
||||
thing-type.config.teleinfo.d2lcontroller.ticMode.description = TIC Mode of the telemeter (Standard TIC mode is only available on Linky telemeters)
|
||||
thing-type.config.teleinfo.d2lcontroller.ticMode.option.HISTORICAL = Historical
|
||||
thing-type.config.teleinfo.d2lcontroller.ticMode.option.STANDARD = Standard
|
||||
thing-type.config.teleinfo.d2lcontroller.verifyChecksum.label = Checksum Verification
|
||||
thing-type.config.teleinfo.d2lcontroller.verifyChecksum.description = Activate checksum verification
|
||||
thing-type.config.teleinfo.serialcontroller.autoRepairInvalidADPSgroupLine.label = Auto Repair Malformed ADPS Data
|
||||
thing-type.config.teleinfo.serialcontroller.autoRepairInvalidADPSgroupLine.description = Try to auto repair malformed ADPS data from hardware issues (e.g: "ADPS032" instead of "ADPS 032" expected/well-formed data)
|
||||
thing-type.config.teleinfo.serialcontroller.serialport.label = Serial Port
|
||||
@@ -57,202 +69,278 @@ thing-type.config.teleinfo.serialcontroller.verifyChecksum.description = Activat
|
||||
|
||||
# channel group types
|
||||
|
||||
channel-group-type.teleinfo.commonLSMGroupType.label = Common
|
||||
channel-group-type.teleinfo.commonLSMGroupType.description = Common channels for Linky telemeter in standard teleinformation mode
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ccasn.label = CCASN
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ccasn.description = Active charge point N
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ccasnDate.label = CCASN TIMESTAMP
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ccasnDate.description = Timestamp of CCASN value
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ccasnMinus1.label = CCASN-1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ccasnMinus1.description = Active charge point N-1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ccasnMinus1Date.label = CCASN-1 TIMESTAMP
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ccasnMinus1Date.description = Timestamp of CCASN-1 value
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.date.label = DATE
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.date.description = Date and Time
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.dpm1.label = DPM1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.dpm1.description = Start of mobile peak period 1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.dpm1Date.label = DPM1 TIMESTAMP
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.dpm1Date.description = Date of DPM1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.dpm2.label = DPM2
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.dpm2.description = Start of mobile peak period 2
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.dpm2Date.label = DPM2 TIMESTAMP
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.dpm2Date.description = Date of DPM2
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.dpm3.label = DPM3
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.dpm3.description = Start of mobile peak period 3
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.dpm3Date.label = DPM3 TIMESTAMP
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.dpm3Date.description = Date of DPM3
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easd01.label = EASD01
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easd01.description = Active energy withdrawn from distributor on index 01
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easd02.label = EASD02
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easd02.description = Active energy withdrawn from distributor on index 02
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easd03.label = EASD03
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easd03.description = Active energy withdrawn from distributor on index 03
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easd04.label = EASD04
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easd04.description = Active energy withdrawn from distributor on index 04
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf01.label = EASF01
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf01.description = Active energy withdrawn from provider on index 01
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf02.label = EASF02
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf02.description = Active energy withdrawn from provider on index 02
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf03.label = EASF03
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf03.description = Active energy withdrawn from provider on index 03
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf04.label = EASF04
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf04.description = Active energy withdrawn from provider on index 04
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf05.label = EASF05
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf05.description = Active energy withdrawn from provider on index 05
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf06.label = EASF06
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf06.description = Active energy withdrawn from provider on index 06
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf07.label = EASF07
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf07.description = Active energy withdrawn from provider on index 07
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf08.label = EASF08
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf08.description = Active energy withdrawn from provider on index 08
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf09.label = EASF09
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf09.description = Active energy withdrawn from provider on index 09
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf10.label = EASF10
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.easf10.description = Active energy withdrawn from provider on index 10
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.east.label = EAST
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.east.description = Total active energy withdrawn
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.fpm1.label = FPM1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.fpm1.description = End of mobile peak period 1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.fpm1Date.label = FPM1 TIMESTAMP
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.fpm1Date.description = Date of FPM1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.fpm2.label = FPM2
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.fpm2.description = End of mobile peak period 2
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.fpm2Date.label = FPM2 TIMESTAMP
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.fpm2Date.description = Date of FPM2
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.fpm3.label = FPM3
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.fpm3.description = End of mobile peak period 3
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.fpm3Date.label = FPM3 TIMESTAMP
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.fpm3Date.description = Date of FPM3
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.irms1.label = IRMS1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.irms1.description = RMS Current on phase 1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ltarf.label = LTARF
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ltarf.description = Current pricing label
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.msg1.label = MSG1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.msg1.description = Short message
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.msg2.label = MSG2
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.msg2.description = Very short message
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ngtf.label = NGTF
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ngtf.description = Provider schedule name
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.njourf.label = NJOURF
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.njourf.description = Number of current provider schedule
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.njourfPlus1.label = NJOURF+1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.njourfPlus1.description = Number of next day provider schedule
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ntarf.label = NTARF
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ntarf.description = Index of current pricing
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.pcoup.label = PCOUP
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.pcoup.description = Apparent power rupture capacity
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.pjourfPlus1.label = PJOURF+1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.pjourfPlus1.description = Profile of next day provider schedule
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ppointe.label = PPOINTE
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.ppointe.description = Profile of next rush day
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.pref.label = PREF
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.pref.description = Reference apparent power
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.prm.label = PRM
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.prm.description = PRM
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.relais1.label = Relais 1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.relais2.label = Relais 2
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.relais3.label = Relais 3
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.relais4.label = Relais 4
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.relais5.label = Relais 5
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.relais6.label = Relais 6
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.relais7.label = Relais 7
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.relais8.label = Relais 8
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.sinsts.label = SINSTS
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.sinsts.description = Instantaneous withdrawn apparent power
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.smaxsn.label = SMAXSN
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.smaxsn.description = Maximum withdrawn apparent power of the day
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.smaxsnDate.label = SMAXSN TIMESTAMP
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.smaxsnDate.description = Timestamp of SMAXSN value
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.smaxsnMinus1.label = SMAXSN-1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.smaxsnMinus1.description = Maximum withdrawn apparent power of the previous day
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.smaxsnMinus1Date.label = SMAXSN-1 TIMESTAMP
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.smaxsnMinus1Date.description = Timestamp of SMAXSN-1 value
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.stge.label = STGE
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.stge.description = Status registry
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.umoy1.label = UMOY1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.umoy1.description = Mean Voltage on phase 1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.umoy1Date.label = UMOY1 TIMESTAMP
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.umoy1Date.description = Timestamp of UMOY1 value
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.urms1.label = URMS1
|
||||
channel-group-type.teleinfo.commonLSMGroupType.channel.urms1.description = RMS Voltage on phase 1
|
||||
channel-group-type.teleinfo.producerLSMGroupType.label = Producer
|
||||
channel-group-type.teleinfo.producerLSMGroupType.description = Producer channels for Linky telemeter in standard teleinformation mode
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.ccain.label = CCAIN
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.ccain.description = Injected active charge point N
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.ccainDate.label = CCAIN TIMESTAMP
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.ccainDate.description = Timestamp of CCAIN value
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.ccainMinus1.label = CCAIN-1
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.ccainMinus1.description = Injected active charge point N-1
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.ccainMinus1Date.label = CCAIN-1 TIMESTAMP
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.ccainMinus1Date.description = Timestamp of CCAIN-1 value
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.eait.label = EAIT
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.eait.description = Total active energy injected
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.erq1.label = ERQ1
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.erq1.description = Total reactive energy Q1
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.erq2.label = ERQ2
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.erq2.description = Total reactive energy Q2
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.erq3.label = ERQ3
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.erq3.description = Total reactive energy Q3
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.erq4.label = ERQ4
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.erq4.description = Total reactive energy Q4
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.sinsti.label = SINSTI
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.sinsti.description = Instantaneous injected apparent power
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.smaxin.label = SMAXIN
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.smaxin.description = Maximum injected apparent power of the day
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.smaxinDate.label = SMAXIN TIMESTAMP
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.smaxinDate.description = Timestamp of SMAXIN value
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.smaxinMinus1.label = SMAXIN-1
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.smaxinMinus1.description = Maximum injected apparent power of the previous day
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.smaxinMinus1Date.label = SMAXIN-1 TIMESTAMP
|
||||
channel-group-type.teleinfo.producerLSMGroupType.channel.smaxinMinus1Date.description = Timestamp of SMAXIN-1 value
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.label = Three-phase
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.description = Three-phased channels for Linky telemeter in standard teleinformation mode
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.irms2.label = IRMS2
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.irms2.description = RMS Current on phase 2
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.irms3.label = IRMS3
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.irms3.description = RMS Current on phase 3
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.sinsts1.label = SINSTS1
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.sinsts1.description = Instantaneous withdrawn apparent power on phase 1
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.sinsts2.label = SINSTS2
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.sinsts2.description = Instantaneous withdrawn apparent power on phase 2
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.sinsts3.label = SINSTS3
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.sinsts3.description = Instantaneous withdrawn apparent power on phase 3
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn1.label = SMAXSN1
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn1.description = Maximum withdrawn apparent power of the day on phase 1
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn1Date.label = SMAXSN1 TIMESTAMP
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn1Date.description = Timestamp of SMAXSN1 value
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn1Minus1.label = SMAXSN1-1
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn1Minus1.description = Maximum withdrawn apparent power of the previous day on phase 1
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn1Minus1Date.label = SMAXSN1-1 TIMESTAMP
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn1Minus1Date.description = Timestamp of SMAXSN1-1 value
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn2.label = SMAXSN2
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn2.description = Maximum withdrawn apparent power of the day on phase 2
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn2Date.label = SMAXSN2 TIMESTAMP
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn2Date.description = Timestamp of SMAXSN2 value
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn2Minus1.label = SMAXSN2-1
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn2Minus1.description = Maximum withdrawn apparent power of the previous day on phase 2
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn2Minus1Date.label = SMAXSN2-1 TIMESTAMP
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn2Minus1Date.description = Timestamp of SMAXSN2-1 value
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn3.label = SMAXSN3
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn3.description = Maximum withdrawn apparent power of the day on phase 3
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn3Date.label = SMAXSN3 TIMESTAMP
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn3Date.description = Timestamp of SMAXSN3 value
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn3Minus1.label = SMAXSN3-1
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn3Minus1.description = Maximum withdrawn apparent power of the previous day on phase 3
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn3Minus1Date.label = SMAXSN3-1 TIMESTAMP
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.smaxsn3Minus1Date.description = Timestamp of SMAXSN3-1 value
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.umoy2.label = UMOY2
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.umoy2.description = Mean Voltage on phase 2
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.umoy2Date.label = UMOY2 TIMESTAMP
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.umoy2Date.description = Timestamp of UMOY2 value
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.umoy3.label = UMOY3
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.umoy3.description = Mean Voltage on phase 3
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.umoy3Date.label = UMOY3 TIMESTAMP
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.umoy3Date.description = Timestamp of UMOY3 value
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.urms2.label = URMS2
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.urms2.description = RMS Voltage on phase 2
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.urms3.label = URMS3
|
||||
channel-group-type.teleinfo.threePhasedLSMGroupType.channel.urms3.description = RMS Voltage on phase 3
|
||||
channel-group-type.teleinfo.common-lsm-group-type.label = Common
|
||||
channel-group-type.teleinfo.common-lsm-group-type.description = Common channels for Linky telemeter in standard teleinformation mode
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.advice-moving-tips.label = Moving Tips Advice
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.advice-moving-tips.description = State of moving tips adviceh
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.cache.label = Cache
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.cache.description = State of linky cache switch
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ccasn.label = CCASN
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ccasn.description = Active charge point N
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ccasnDate.label = CCASN TIMESTAMP
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ccasnDate.description = Timestamp of CCASN value
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ccasnMinus1.label = CCASN-1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ccasnMinus1.description = Active charge point N-1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ccasnMinus1Date.label = CCASN-1 TIMESTAMP
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ccasnMinus1Date.description = Timestamp of CCASN-1 value
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.clock.label = Clock State
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.clock.description = State Of Clock
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.contact-sec.label = Dry Contact
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.contact-sec.description = State of main relay
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.cosphi.label = CosPhi
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.cosphi.description = CosPhi (floating value)
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.cut-off.label = Cut Off
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.cut-off.description = State of Cut Off switch
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.date.label = DATE
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.date.description = Date and Time
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.direction.label = Direction
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.direction.description = Direction of the active energy
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.distributor-rate.label = Distributor Rate
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.distributor-rate.description = The distributor rate
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.dpm1.label = DPM1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.dpm1.description = Start of mobile peak period 1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.dpm1Date.label = DPM1 TIMESTAMP
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.dpm1Date.description = Date of DPM1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.dpm2.label = DPM2
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.dpm2.description = Start of mobile peak period 2
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.dpm2Date.label = DPM2 TIMESTAMP
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.dpm2Date.description = Date of DPM2
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.dpm3.label = DPM3
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.dpm3.description = Start of mobile peak period 3
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.dpm3Date.label = DPM3 TIMESTAMP
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.dpm3Date.description = Date of DPM3
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easd01.label = EASD01
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easd01.description = Active energy withdrawn from distributor on index 01
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easd02.label = EASD02
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easd02.description = Active energy withdrawn from distributor on index 02
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easd03.label = EASD03
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easd03.description = Active energy withdrawn from distributor on index 03
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easd04.label = EASD04
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easd04.description = Active energy withdrawn from distributor on index 04
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf01.label = EASF01
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf01.description = Active energy withdrawn from provider on index 01
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf02.label = EASF02
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf02.description = Active energy withdrawn from provider on index 02
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf03.label = EASF03
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf03.description = Active energy withdrawn from provider on index 03
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf04.label = EASF04
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf04.description = Active energy withdrawn from provider on index 04
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf05.label = EASF05
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf05.description = Active energy withdrawn from provider on index 05
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf06.label = EASF06
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf06.description = Active energy withdrawn from provider on index 06
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf07.label = EASF07
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf07.description = Active energy withdrawn from provider on index 07
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf08.label = EASF08
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf08.description = Active energy withdrawn from provider on index 08
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf09.label = EASF09
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf09.description = Active energy withdrawn from provider on index 09
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf10.label = EASF10
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.easf10.description = Active energy withdrawn from provider on index 10
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.east.label = EAST
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.east.description = Total active energy withdrawn
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.exceeding-power.label = Exceeding
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.exceeding-power.description = State of exceeding
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.fpm1.label = FPM1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.fpm1.description = End of mobile peak period 1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.fpm1Date.label = FPM1 TIMESTAMP
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.fpm1Date.description = Date of FPM1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.fpm2.label = FPM2
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.fpm2.description = End of mobile peak period 2
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.fpm2Date.label = FPM2 TIMESTAMP
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.fpm2Date.description = Date of FPM2
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.fpm3.label = FPM3
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.fpm3.description = End of mobile peak period 3
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.fpm3Date.label = FPM3 TIMESTAMP
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.fpm3Date.description = Date of FPM3
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.function.label = Function
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.function.description = State of functionnality : consummer/producer
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.irms1.label = IRMS1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.irms1.description = RMS Current on phase 1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.irms1f.label = Irms 1f
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.irms1f.description = Intensity (floating value)
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ltarf.label = LTARF
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ltarf.description = Current pricing label
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.moving-tips.label = Moving Tips
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.moving-tips.description = State of moving tips
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.msg1.label = MSG1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.msg1.description = Short message
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.msg2.label = MSG2
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.msg2.description = Very short message
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ngtf.label = NGTF
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ngtf.description = Provider schedule name
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.njourf.label = NJOURF
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.njourf.description = Number of current provider schedule
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.njourfPlus1.label = NJOURF+1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.njourfPlus1.description = Number of next day provider schedule
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ntarf.label = NTARF
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ntarf.description = Index of current pricing
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.outputcom.label = Communication Output State
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.outputcom.description = State of communication output
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.over-voltage.label = Over Voltage
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.over-voltage.description = State of over voltage
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pcoup.label = PCOUP
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pcoup.description = Apparent power rupture capacity
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf1-plus1.label = Pjour f1 +1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf1-plus1.description = Profile of next day provider schedule
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf2-plus1.label = Pjour f2 +1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf2-plus1.description = Profile of next day provider schedule
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf3-plus1.label = Pjour f3 +1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf3-plus1.description = Profile of next day provider schedule
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf4-plus1.label = Pjour f4 +1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf4-plus1.description = Profile of next day provider schedule
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf5-plus1.label = Pjour f5 +1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf5-plus1.description = Profile of next day provider schedule
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf6-plus1.label = Pjour f6 +1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf6-plus1.description = Profile of next day provider schedule
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf7-plus1.label = Pjour f7 +1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf7-plus1.description = Profile of next day provider schedule
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf8-plus1.label = Pjour f8 +1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourf8-plus1.description = Profile of next day provider schedule
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourfPlus1.label = PJOURF+1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pjourfPlus1.description = Profile of next day provider schedule
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.plc.label = Plc Type
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.plc.description = Type of PLC
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.plc-state.label = Plc State
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.plc-state.description = State of PLC
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.plc-synchro.label = Plc Synchro
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.plc-synchro.description = State of PLC Synchro
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe.label = PPOINTE
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe.description = Profile of next rush day
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe1.label = Ppointe 1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe1.description = Profile of next rush day
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe2.label = Ppointe 2
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe2.description = Profile of next rush day
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe3.label = Ppointe 3
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe3.description = Profile of next rush day
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe4.label = Ppointe 4
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe4.description = Profile of next rush day
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe5.label = Ppointe 5
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe5.description = Profile of next rush day
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe6.label = Ppointe 6
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe6.description = Profile of next rush day
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe7.label = Ppointe 7
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe7.description = Profile of next rush day
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe8.label = Ppointe 8
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.ppointe8.description = Profile of next rush day
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pref.label = PREF
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.pref.description = Reference apparent power
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.prm.label = PRM
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.prm.description = PRM
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.relais1.label = Relais 1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.relais2.label = Relais 2
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.relais3.label = Relais 3
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.relais4.label = Relais 4
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.relais5.label = Relais 5
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.relais6.label = Relais 6
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.relais7.label = Relais 7
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.relais8.label = Relais 8
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.sactive.label = Sactive
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.sactive.description = Instantaneous withdrawn active power
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.sinsts.label = SINSTS
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.sinsts.description = Instantaneous withdrawn apparent power
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.smaxsn.label = SMAXSN
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.smaxsn.description = Maximum withdrawn apparent power of the day
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.smaxsnDate.label = SMAXSN TIMESTAMP
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.smaxsnDate.description = Timestamp of SMAXSN value
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.smaxsnMinus1.label = SMAXSN-1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.smaxsnMinus1.description = Maximum withdrawn apparent power of the previous day
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.smaxsnMinus1Date.label = SMAXSN-1 TIMESTAMP
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.smaxsnMinus1Date.description = Timestamp of SMAXSN-1 value
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.sreactive.label = Sreactive
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.sreactive.description = Instantaneous withdrawn reactive power
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.stge.label = STGE
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.stge.description = Status registry
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.supplier-rate.label = Supplier Rate
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.supplier-rate.description = The supplier rate
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.tempo-today.label = Tempo Today
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.tempo-today.description = State of coupure switch
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.tempo-tomorrow.label = Tempo Tomorrow
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.tempo-tomorrow.description = State of coupure switch
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.umoy1.label = UMOY1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.umoy1.description = Mean Voltage on phase 1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.umoy1Date.label = UMOY1 TIMESTAMP
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.umoy1Date.description = Timestamp of UMOY1 value
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.urms1.label = URMS1
|
||||
channel-group-type.teleinfo.common-lsm-group-type.channel.urms1.description = RMS Voltage on phase 1
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.label = Producer
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.description = Producer channels for Linky telemeter in standard teleinformation mode
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.ccain.label = CCAIN
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.ccain.description = Injected active charge point N
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.ccainDate.label = CCAIN TIMESTAMP
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.ccainDate.description = Timestamp of CCAIN value
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.ccainMinus1.label = CCAIN-1
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.ccainMinus1.description = Injected active charge point N-1
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.ccainMinus1Date.label = CCAIN-1 TIMESTAMP
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.ccainMinus1Date.description = Timestamp of CCAIN-1 value
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.eait.label = EAIT
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.eait.description = Total active energy injected
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.erq1.label = ERQ1
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.erq1.description = Total reactive energy Q1
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.erq2.label = ERQ2
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.erq2.description = Total reactive energy Q2
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.erq3.label = ERQ3
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.erq3.description = Total reactive energy Q3
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.erq4.label = ERQ4
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.erq4.description = Total reactive energy Q4
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.sinsti.label = SINSTI
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.sinsti.description = Instantaneous injected apparent power
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.smaxin.label = SMAXIN
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.smaxin.description = Maximum injected apparent power of the day
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.smaxinDate.label = SMAXIN TIMESTAMP
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.smaxinDate.description = Timestamp of SMAXIN value
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.smaxinMinus1.label = SMAXIN-1
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.smaxinMinus1.description = Maximum injected apparent power of the previous day
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.smaxinMinus1Date.label = SMAXIN-1 TIMESTAMP
|
||||
channel-group-type.teleinfo.producer-lsm-group-type.channel.smaxinMinus1Date.description = Timestamp of SMAXIN-1 value
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.label = Three-phase
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.description = Three-phased channels for Linky telemeter in standard teleinformation mode
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.irms2.label = IRMS2
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.irms2.description = RMS Current on phase 2
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.irms3.label = IRMS3
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.irms3.description = RMS Current on phase 3
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.sinsts1.label = SINSTS1
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.sinsts1.description = Instantaneous withdrawn apparent power on phase 1
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.sinsts2.label = SINSTS2
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.sinsts2.description = Instantaneous withdrawn apparent power on phase 2
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.sinsts3.label = SINSTS3
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.sinsts3.description = Instantaneous withdrawn apparent power on phase 3
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn1.label = SMAXSN1
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn1.description = Maximum withdrawn apparent power of the day on phase 1
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn1Date.label = SMAXSN1 TIMESTAMP
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn1Date.description = Timestamp of SMAXSN1 value
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn1Minus1.label = SMAXSN1-1
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn1Minus1.description = Maximum withdrawn apparent power of the previous day on phase 1
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn1Minus1Date.label = SMAXSN1-1 TIMESTAMP
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn1Minus1Date.description = Timestamp of SMAXSN1-1 value
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn2.label = SMAXSN2
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn2.description = Maximum withdrawn apparent power of the day on phase 2
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn2Date.label = SMAXSN2 TIMESTAMP
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn2Date.description = Timestamp of SMAXSN2 value
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn2Minus1.label = SMAXSN2-1
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn2Minus1.description = Maximum withdrawn apparent power of the previous day on phase 2
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn2Minus1Date.label = SMAXSN2-1 TIMESTAMP
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn2Minus1Date.description = Timestamp of SMAXSN2-1 value
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn3.label = SMAXSN3
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn3.description = Maximum withdrawn apparent power of the day on phase 3
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn3Date.label = SMAXSN3 TIMESTAMP
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn3Date.description = Timestamp of SMAXSN3 value
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn3Minus1.label = SMAXSN3-1
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn3Minus1.description = Maximum withdrawn apparent power of the previous day on phase 3
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn3Minus1Date.label = SMAXSN3-1 TIMESTAMP
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.smaxsn3Minus1Date.description = Timestamp of SMAXSN3-1 value
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.umoy2.label = UMOY2
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.umoy2.description = Mean Voltage on phase 2
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.umoy2Date.label = UMOY2 TIMESTAMP
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.umoy2Date.description = Timestamp of UMOY2 value
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.umoy3.label = UMOY3
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.umoy3.description = Mean Voltage on phase 3
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.umoy3Date.label = UMOY3 TIMESTAMP
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.umoy3Date.description = Timestamp of UMOY3 value
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.urms2.label = URMS2
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.urms2.description = RMS Voltage on phase 2
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.urms3.label = URMS3
|
||||
channel-group-type.teleinfo.three-phased-lsm-group-type.channel.urms3.description = RMS Voltage on phase 3
|
||||
|
||||
# channel types
|
||||
|
||||
@@ -278,23 +366,50 @@ channel-type.teleinfo.bbrhpjrType.label = BBRHPJR
|
||||
channel-type.teleinfo.bbrhpjrType.description = Total consumed energy at high rate pricing on red days
|
||||
channel-type.teleinfo.bbrhpjwType.label = BBRHPJW
|
||||
channel-type.teleinfo.bbrhpjwType.description = Total consumed energy at high rate pricing on white days
|
||||
channel-type.teleinfo.clockStateType.label = Clock State
|
||||
channel-type.teleinfo.clockStateType.description = State of the clock.
|
||||
channel-type.teleinfo.clockStateType.state.option.0 = Clock ok
|
||||
channel-type.teleinfo.clockStateType.state.option.1 = Clock degrade
|
||||
channel-type.teleinfo.contactType.label = Contact Type
|
||||
channel-type.teleinfo.contactType.label = Contact Type
|
||||
channel-type.teleinfo.couleurDemainType.label = DEMAIN
|
||||
channel-type.teleinfo.couleurDemainType.description = Following day color
|
||||
channel-type.teleinfo.couleurDemainType.state.option.Bleu = Bleu
|
||||
channel-type.teleinfo.couleurDemainType.state.option.Blanc = Blanc
|
||||
channel-type.teleinfo.couleurDemainType.state.option.Rouge = Rouge
|
||||
channel-type.teleinfo.currentType.label = Teleinfo Current Type
|
||||
channel-type.teleinfo.cutoffType.label = Cutoff Type
|
||||
channel-type.teleinfo.cutoffType.description = This status describes the current cutoff type.
|
||||
channel-type.teleinfo.cutoffType.state.option.0 = Not cutoff
|
||||
channel-type.teleinfo.cutoffType.state.option.1 = Cutoff over power
|
||||
channel-type.teleinfo.cutoffType.state.option.2 = Cutoff over voltage
|
||||
channel-type.teleinfo.cutoffType.state.option.3 = Cutoff for delest
|
||||
channel-type.teleinfo.cutoffType.state.option.4 = Cutoff from Eredis
|
||||
channel-type.teleinfo.cutoffType.state.option.5 = Cutoff over heating with over currency
|
||||
channel-type.teleinfo.cutoffType.state.option.6 = Cutoff over heating without over currency
|
||||
channel-type.teleinfo.dateTimeType.label = Teleinfo DateTime Type
|
||||
channel-type.teleinfo.dateTimeType.state.pattern = %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS
|
||||
channel-type.teleinfo.directionType.label = Active Energy
|
||||
channel-type.teleinfo.directionType.description = Tell about energy direction, if negative we take energy from network, if positive we inject energy.
|
||||
channel-type.teleinfo.directionType.state.option.0 = Active energy positive
|
||||
channel-type.teleinfo.directionType.state.option.1 = Active energy negative
|
||||
channel-type.teleinfo.ejphnType.label = EJPHN
|
||||
channel-type.teleinfo.ejphnType.description = Total consumed energy at low rate pricing
|
||||
channel-type.teleinfo.ejphpmType.label = EJPHPM
|
||||
channel-type.teleinfo.ejphpmType.description = Total consumed energy at high rate pricing
|
||||
channel-type.teleinfo.energyType.label = Teleinfo Energy Type
|
||||
channel-type.teleinfo.exceedingPowerStateType.label = Exceeding Power State
|
||||
channel-type.teleinfo.exceedingPowerStateType.description = Describe an Exceeding power condition state papp > pmax.
|
||||
channel-type.teleinfo.exceedingPowerStateType.state.option.0 = No exceeding power
|
||||
channel-type.teleinfo.exceedingPowerStateType.state.option.1 = Exceeding power
|
||||
channel-type.teleinfo.frameTypeType.label = frameType
|
||||
channel-type.teleinfo.frameTypeType.description = frameType
|
||||
channel-type.teleinfo.frameTypeType.state.option.Long = Long
|
||||
channel-type.teleinfo.frameTypeType.state.option.Short = Short
|
||||
channel-type.teleinfo.functionType.label = Function Mode
|
||||
channel-type.teleinfo.functionType.description = Tell if the meter is in Consummer mode or Producer mode.
|
||||
channel-type.teleinfo.functionType.state.option.0 = Consummer
|
||||
channel-type.teleinfo.functionType.state.option.1 = Producer
|
||||
channel-type.teleinfo.hchcType.label = HCHC
|
||||
channel-type.teleinfo.hchcType.description = Total consumed energy at low rate pricing
|
||||
channel-type.teleinfo.hchpType.label = HCHP
|
||||
@@ -322,19 +437,45 @@ channel-type.teleinfo.imax3Type.label = IMAX3
|
||||
channel-type.teleinfo.imax3Type.description = Maximum consumed electric current on phase 3
|
||||
channel-type.teleinfo.imaxType.label = IMAX
|
||||
channel-type.teleinfo.imaxType.description = Maximum consumed electric current
|
||||
channel-type.teleinfo.invalidFrameCounterType.label = Frames Corrupted
|
||||
channel-type.teleinfo.invalidFrameCounterType.description = Counter tracking the number of frames invalid/corrupted (checksum)
|
||||
channel-type.teleinfo.invalidFrameCounter.label = Frames Corrupted
|
||||
channel-type.teleinfo.invalidFrameCounter.description = Counter tracking the number of frames invalid/corrupted (checksum)
|
||||
channel-type.teleinfo.isouscType.label = ISOUSC
|
||||
channel-type.teleinfo.isouscType.description = Subscribed electric current
|
||||
channel-type.teleinfo.lastUpdateType.label = Last Update
|
||||
channel-type.teleinfo.lastUpdateType.description = Timestamp of last received Teleinfo frame
|
||||
channel-type.teleinfo.movingTipsType.label = Moving Tips
|
||||
channel-type.teleinfo.movingTipsType.description = Indicate a special tariff slot for a specific period.
|
||||
channel-type.teleinfo.movingTipsType.state.option.0 = Not moving tips advice
|
||||
channel-type.teleinfo.movingTipsType.state.option.1 = Moving tips advice 1
|
||||
channel-type.teleinfo.movingTipsType.state.option.2 = Moving tips advice 2
|
||||
channel-type.teleinfo.movingTipsType.state.option.3 = Moving tips advice 3
|
||||
channel-type.teleinfo.outputcomStateType.label = Output Com State
|
||||
channel-type.teleinfo.outputcomStateType.description = State of the communication output
|
||||
channel-type.teleinfo.outputcomStateType.state.option.0 = Desactivated
|
||||
channel-type.teleinfo.outputcomStateType.state.option.1 = Activated without security
|
||||
channel-type.teleinfo.outputcomStateType.state.option.2 = Unknow
|
||||
channel-type.teleinfo.outputcomStateType.state.option.3 = Activated with security
|
||||
channel-type.teleinfo.overVoltageStateType.label = Overvoltage State
|
||||
channel-type.teleinfo.overVoltageStateType.description = Describes an over voltage condition possible state.
|
||||
channel-type.teleinfo.overVoltageStateType.state.option.0 = No overvoltage
|
||||
channel-type.teleinfo.overVoltageStateType.state.option.1 = Overvoltage
|
||||
channel-type.teleinfo.pappType.label = PAPP
|
||||
channel-type.teleinfo.pappType.description = Instantaneous apparent power
|
||||
channel-type.teleinfo.pejpType.label = PEJP
|
||||
channel-type.teleinfo.pejpType.description = Prior notice to EJP start
|
||||
channel-type.teleinfo.plcStateType.label = PLC State
|
||||
channel-type.teleinfo.plcStateType.description = State of the PLC
|
||||
channel-type.teleinfo.plcStateType.state.option.0 = New/Unlock
|
||||
channel-type.teleinfo.plcStateType.state.option.1 = New/Lock
|
||||
channel-type.teleinfo.plcStateType.state.option.1 = Registered
|
||||
channel-type.teleinfo.plcType.label = PLC Mode
|
||||
channel-type.teleinfo.plcType.description = Mode of the PLC
|
||||
channel-type.teleinfo.plcType.state.option.0 = Historic Mode
|
||||
channel-type.teleinfo.plcType.state.option.1 = Standard mode
|
||||
channel-type.teleinfo.pmaxType.label = PMAX
|
||||
channel-type.teleinfo.pmaxType.description = Maximum consumed electric power on all phases
|
||||
channel-type.teleinfo.potentialType.label = Teleinfo Potential Type
|
||||
channel-type.teleinfo.powerFactorType.label = Teleinfo PowerFactor Type
|
||||
channel-type.teleinfo.powerType.label = Teleinfo Power Type
|
||||
channel-type.teleinfo.ppotType.label = PPOT
|
||||
channel-type.teleinfo.ppotType.description = Electrical potential presence
|
||||
@@ -366,5 +507,17 @@ channel-type.teleinfo.ptecType.state.option.HCJR = HCJR
|
||||
channel-type.teleinfo.ptecType.state.option.HPJB = HPJB
|
||||
channel-type.teleinfo.ptecType.state.option.HPJW = HPJW
|
||||
channel-type.teleinfo.ptecType.state.option.HPJR = HPJR
|
||||
channel-type.teleinfo.rateType.label = Numeric Rate Type
|
||||
channel-type.teleinfo.stringType.label = Teleinfo String Type
|
||||
channel-type.teleinfo.switchType.label = Teleinfo Switch Type
|
||||
channel-type.teleinfo.switchType.label = Switch Type
|
||||
channel-type.teleinfo.synchroPlcStateType.label = PLC Synchro State
|
||||
channel-type.teleinfo.synchroPlcStateType.description = State of the PLC Synchro
|
||||
channel-type.teleinfo.synchroPlcStateType.state.option.0 = PLC Sync
|
||||
channel-type.teleinfo.synchroPlcStateType.state.option.1 = PLC Not Sync
|
||||
channel-type.teleinfo.tempoType.label = Tempo Color Information
|
||||
channel-type.teleinfo.tempoType.description = This status describes the tempo color of a day.
|
||||
channel-type.teleinfo.tempoType.state.option.0 = Unknow
|
||||
channel-type.teleinfo.tempoType.state.option.1 = Blue
|
||||
channel-type.teleinfo.tempoType.state.option.2 = White
|
||||
channel-type.teleinfo.tempoType.state.option.3 = Red
|
||||
|
||||
+1
@@ -4,3 +4,4 @@ teleinfo.thingstate.serial_unsupported=Serial Error: Unsupported operation on po
|
||||
teleinfo.thingstate.serial_listeners=Serial Error: Too many listeners on port {0}
|
||||
teleinfo.thingstate.controller_offline=Controller is offline
|
||||
teleinfo.thingstate.controller_unknown_retry_inprogress=Serial Error: Retry in progress...
|
||||
teleinfo.thingstate.listenning_port_not_defined=ListenningPort is not defined
|
||||
|
||||
+8
-8
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="cbemm_base_electricitymeter" listed="false">
|
||||
<thing-type id="cbemm_base_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
@@ -14,13 +14,13 @@
|
||||
Multitarif")</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channels>
|
||||
<channel id="isousc" typeId="isouscType"/>
|
||||
<channel id="ptec" typeId="ptecType"/>
|
||||
<channel id="imax" typeId="imaxType"/>
|
||||
<channel id="adps" typeId="adpsType"/>
|
||||
<channel id="iinst" typeId="iinstType"/>
|
||||
<channel id="lastUpdate" typeId="lastUpdateType"/>
|
||||
<channel id="base" typeId="baseType"/>
|
||||
<channel id="isousc" typeId="i-sousc"/>
|
||||
<channel id="ptec" typeId="p-tec"/>
|
||||
<channel id="imax" typeId="i-max"/>
|
||||
<channel id="adps" typeId="adps"/>
|
||||
<channel id="iinst" typeId="i-inst"/>
|
||||
<channel id="lastUpdate" typeId="last-update"/>
|
||||
<channel id="base" typeId="base"/>
|
||||
</channels>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+10
-10
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="cbemm_ejp_electricitymeter" listed="false">
|
||||
<thing-type id="cbemm_ejp_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
@@ -14,15 +14,15 @@
|
||||
Multitarif")</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channels>
|
||||
<channel id="isousc" typeId="isouscType"/>
|
||||
<channel id="ptec" typeId="ptecType"/>
|
||||
<channel id="imax" typeId="imaxType"/>
|
||||
<channel id="adps" typeId="adpsType"/>
|
||||
<channel id="iinst" typeId="iinstType"/>
|
||||
<channel id="pejp" typeId="pejpType"/>
|
||||
<channel id="ejphpm" typeId="ejphpmType"/>
|
||||
<channel id="ejphn" typeId="ejphnType"/>
|
||||
<channel id="lastUpdate" typeId="lastUpdateType"/>
|
||||
<channel id="isousc" typeId="i-sousc"/>
|
||||
<channel id="ptec" typeId="p-tec"/>
|
||||
<channel id="imax" typeId="i-max"/>
|
||||
<channel id="adps" typeId="adps"/>
|
||||
<channel id="iinst" typeId="i-inst"/>
|
||||
<channel id="pejp" typeId="p-ejp"/>
|
||||
<channel id="ejphpm" typeId="ejp-hpm"/>
|
||||
<channel id="ejphn" typeId="ejp-hn"/>
|
||||
<channel id="lastUpdate" typeId="last-update"/>
|
||||
</channels>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+9
-9
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="cbemm_evolution_icc_base_electricitymeter" listed="false">
|
||||
<thing-type id="cbemm_evolution_icc_base_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
@@ -14,14 +14,14 @@
|
||||
Monophasé Multitarif Evolution ICC")</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channels>
|
||||
<channel id="isousc" typeId="isouscType"/>
|
||||
<channel id="ptec" typeId="ptecType"/>
|
||||
<channel id="imax" typeId="imaxType"/>
|
||||
<channel id="adps" typeId="adpsType"/>
|
||||
<channel id="papp" typeId="pappType"/>
|
||||
<channel id="iinst" typeId="iinstType"/>
|
||||
<channel id="lastUpdate" typeId="lastUpdateType"/>
|
||||
<channel id="base" typeId="baseType"/>
|
||||
<channel id="isousc" typeId="i-sousc"/>
|
||||
<channel id="ptec" typeId="p-tec"/>
|
||||
<channel id="imax" typeId="i-max"/>
|
||||
<channel id="adps" typeId="adps"/>
|
||||
<channel id="papp" typeId="p-app"/>
|
||||
<channel id="iinst" typeId="i-inst"/>
|
||||
<channel id="lastUpdate" typeId="last-update"/>
|
||||
<channel id="base" typeId="base"/>
|
||||
</channels>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+11
-11
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="cbemm_evolution_icc_ejp_electricitymeter" listed="false">
|
||||
<thing-type id="cbemm_evolution_icc_ejp_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
@@ -15,16 +15,16 @@
|
||||
Multitarif")</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channels>
|
||||
<channel id="isousc" typeId="isouscType"/>
|
||||
<channel id="ptec" typeId="ptecType"/>
|
||||
<channel id="imax" typeId="imaxType"/>
|
||||
<channel id="adps" typeId="adpsType"/>
|
||||
<channel id="papp" typeId="pappType"/>
|
||||
<channel id="iinst" typeId="iinstType"/>
|
||||
<channel id="pejp" typeId="pejpType"/>
|
||||
<channel id="ejphpm" typeId="ejphpmType"/>
|
||||
<channel id="ejphn" typeId="ejphnType"/>
|
||||
<channel id="lastUpdate" typeId="lastUpdateType"/>
|
||||
<channel id="isousc" typeId="i-sousc"/>
|
||||
<channel id="ptec" typeId="p-tec"/>
|
||||
<channel id="imax" typeId="i-max"/>
|
||||
<channel id="adps" typeId="adps"/>
|
||||
<channel id="papp" typeId="p-app"/>
|
||||
<channel id="iinst" typeId="i-inst"/>
|
||||
<channel id="pejp" typeId="p-ejp"/>
|
||||
<channel id="ejphpm" typeId="ejp-hpm"/>
|
||||
<channel id="ejphn" typeId="ejp-hn"/>
|
||||
<channel id="lastUpdate" typeId="last-update"/>
|
||||
</channels>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+11
-11
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="cbemm_evolution_icc_hc_electricitymeter" listed="false">
|
||||
<thing-type id="cbemm_evolution_icc_hc_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
@@ -14,16 +14,16 @@
|
||||
Monophasé Multitarif Evolution ICC")</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channels>
|
||||
<channel id="isousc" typeId="isouscType"/>
|
||||
<channel id="ptec" typeId="ptecType"/>
|
||||
<channel id="imax" typeId="imaxType"/>
|
||||
<channel id="adps" typeId="adpsType"/>
|
||||
<channel id="papp" typeId="pappType"/>
|
||||
<channel id="iinst" typeId="iinstType"/>
|
||||
<channel id="hchc" typeId="hchcType"/>
|
||||
<channel id="hchp" typeId="hchpType"/>
|
||||
<channel id="hhphc" typeId="hhphcType"/>
|
||||
<channel id="lastUpdate" typeId="lastUpdateType"/>
|
||||
<channel id="isousc" typeId="i-sousc"/>
|
||||
<channel id="ptec" typeId="p-tec"/>
|
||||
<channel id="imax" typeId="i-max"/>
|
||||
<channel id="adps" typeId="adps"/>
|
||||
<channel id="papp" typeId="p-app"/>
|
||||
<channel id="iinst" typeId="i-inst"/>
|
||||
<channel id="hchc" typeId="hc-hc"/>
|
||||
<channel id="hchp" typeId="hc-hp"/>
|
||||
<channel id="hhphc" typeId="h-hphc"/>
|
||||
<channel id="lastUpdate" typeId="last-update"/>
|
||||
</channels>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+18
-18
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="cbemm_evolution_icc_tempo_electricitymeter" listed="false">
|
||||
<thing-type id="cbemm_evolution_icc_tempo_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
@@ -15,23 +15,23 @@
|
||||
Monophasé Multitarif Evolution ICC")</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channels>
|
||||
<channel id="isousc" typeId="isouscType"/>
|
||||
<channel id="ptec" typeId="ptecType"/>
|
||||
<channel id="imax" typeId="imaxType"/>
|
||||
<channel id="adps" typeId="adpsType"/>
|
||||
<channel id="papp" typeId="pappType"/>
|
||||
<channel id="iinst" typeId="iinstType"/>
|
||||
<channel id="bbrhpjr" typeId="bbrhpjrType"/>
|
||||
<channel id="bbrhcjr" typeId="bbrhcjrType"/>
|
||||
<channel id="bbrhpjw" typeId="bbrhpjwType"/>
|
||||
<channel id="bbrhcjw" typeId="bbrhcjwType"/>
|
||||
<channel id="bbrhpjb" typeId="bbrhpjbType"/>
|
||||
<channel id="bbrhcjb" typeId="bbrhcjbType"/>
|
||||
<channel id="demain" typeId="couleurDemainType"/>
|
||||
<channel id="hhphc" typeId="hhphcType"/>
|
||||
<channel id="programmeCircuit1" typeId="programmeCircuit1Type"/>
|
||||
<channel id="programmeCircuit2" typeId="programmeCircuit2Type"/>
|
||||
<channel id="lastUpdate" typeId="lastUpdateType"/>
|
||||
<channel id="isousc" typeId="i-sousc"/>
|
||||
<channel id="ptec" typeId="p-tec"/>
|
||||
<channel id="imax" typeId="i-max"/>
|
||||
<channel id="adps" typeId="adps"/>
|
||||
<channel id="papp" typeId="p-app"/>
|
||||
<channel id="iinst" typeId="i-inst"/>
|
||||
<channel id="bbrhpjr" typeId="bbr-hp-jr"/>
|
||||
<channel id="bbrhcjr" typeId="bbr-hc-jr"/>
|
||||
<channel id="bbrhpjw" typeId="bbr-hp-jw"/>
|
||||
<channel id="bbrhcjw" typeId="bbr-hc-jw"/>
|
||||
<channel id="bbrhpjb" typeId="bbr-hp-jb"/>
|
||||
<channel id="bbrhcjb" typeId="bbr-hc-jb"/>
|
||||
<channel id="demain" typeId="couleur-demain"/>
|
||||
<channel id="hhphc" typeId="h-hphc"/>
|
||||
<channel id="programmeCircuit1" typeId="programme-circuit-1"/>
|
||||
<channel id="programmeCircuit2" typeId="programme-circuit-2"/>
|
||||
<channel id="lastUpdate" typeId="last-update"/>
|
||||
</channels>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+10
-10
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="cbemm_hc_electricitymeter" listed="false">
|
||||
<thing-type id="cbemm_hc_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
@@ -14,15 +14,15 @@
|
||||
Multitarif")</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channels>
|
||||
<channel id="isousc" typeId="isouscType"/>
|
||||
<channel id="ptec" typeId="ptecType"/>
|
||||
<channel id="imax" typeId="imaxType"/>
|
||||
<channel id="adps" typeId="adpsType"/>
|
||||
<channel id="iinst" typeId="iinstType"/>
|
||||
<channel id="hchc" typeId="hchcType"/>
|
||||
<channel id="hchp" typeId="hchpType"/>
|
||||
<channel id="hhphc" typeId="hhphcType"/>
|
||||
<channel id="lastUpdate" typeId="lastUpdateType"/>
|
||||
<channel id="isousc" typeId="i-sousc"/>
|
||||
<channel id="ptec" typeId="p-tec"/>
|
||||
<channel id="imax" typeId="i-max"/>
|
||||
<channel id="adps" typeId="adps"/>
|
||||
<channel id="iinst" typeId="i-inst"/>
|
||||
<channel id="hchc" typeId="hc-hc"/>
|
||||
<channel id="hchp" typeId="hc-hp"/>
|
||||
<channel id="hhphc" typeId="h-hphc"/>
|
||||
<channel id="lastUpdate" typeId="last-update"/>
|
||||
</channels>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+17
-17
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="cbemm_tempo_electricitymeter" listed="false">
|
||||
<thing-type id="cbemm_tempo_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
@@ -14,22 +14,22 @@
|
||||
Multitarif")</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channels>
|
||||
<channel id="isousc" typeId="isouscType"/>
|
||||
<channel id="ptec" typeId="ptecType"/>
|
||||
<channel id="imax" typeId="imaxType"/>
|
||||
<channel id="adps" typeId="adpsType"/>
|
||||
<channel id="iinst" typeId="iinstType"/>
|
||||
<channel id="bbrhpjr" typeId="bbrhpjrType"/>
|
||||
<channel id="bbrhcjr" typeId="bbrhcjrType"/>
|
||||
<channel id="bbrhpjw" typeId="bbrhpjwType"/>
|
||||
<channel id="bbrhcjw" typeId="bbrhcjwType"/>
|
||||
<channel id="bbrhpjb" typeId="bbrhpjbType"/>
|
||||
<channel id="bbrhcjb" typeId="bbrhcjbType"/>
|
||||
<channel id="demain" typeId="couleurDemainType"/>
|
||||
<channel id="hhphc" typeId="hhphcType"/>
|
||||
<channel id="programmeCircuit1" typeId="programmeCircuit1Type"/>
|
||||
<channel id="programmeCircuit2" typeId="programmeCircuit2Type"/>
|
||||
<channel id="lastUpdate" typeId="lastUpdateType"/>
|
||||
<channel id="isousc" typeId="i-sousc"/>
|
||||
<channel id="ptec" typeId="p-tec"/>
|
||||
<channel id="imax" typeId="i-max"/>
|
||||
<channel id="adps" typeId="adps"/>
|
||||
<channel id="iinst" typeId="i-inst"/>
|
||||
<channel id="bbrhpjr" typeId="bbr-hp-jr"/>
|
||||
<channel id="bbrhcjr" typeId="bbr-hc-jr"/>
|
||||
<channel id="bbrhpjw" typeId="bbr-hp-jw"/>
|
||||
<channel id="bbrhcjw" typeId="bbr-hc-jw"/>
|
||||
<channel id="bbrhpjb" typeId="bbr-hp-jb"/>
|
||||
<channel id="bbrhcjb" typeId="bbr-hc-jb"/>
|
||||
<channel id="demain" typeId="couleur-demain"/>
|
||||
<channel id="hhphc" typeId="h-hphc"/>
|
||||
<channel id="programmeCircuit1" typeId="programme-circuit-1"/>
|
||||
<channel id="programmeCircuit2" typeId="programme-circuit-2"/>
|
||||
<channel id="lastUpdate" typeId="last-update"/>
|
||||
</channels>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+18
-18
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="cbetm_base_electricitymeter" listed="false">
|
||||
<thing-type id="cbetm_base_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
@@ -14,23 +14,23 @@
|
||||
Multitarif")</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channels>
|
||||
<channel id="frameType" typeId="frameTypeType"/>
|
||||
<channel id="isousc" typeId="isouscType"/>
|
||||
<channel id="ptec" typeId="ptecType"/>
|
||||
<channel id="iinst1" typeId="iinst1Type"/>
|
||||
<channel id="iinst2" typeId="iinst2Type"/>
|
||||
<channel id="iinst3" typeId="iinst3Type"/>
|
||||
<channel id="imax1" typeId="imax1Type"/>
|
||||
<channel id="imax2" typeId="imax2Type"/>
|
||||
<channel id="imax3" typeId="imax3Type"/>
|
||||
<channel id="pmax" typeId="pmaxType"/>
|
||||
<channel id="papp" typeId="pappType"/>
|
||||
<channel id="ppot" typeId="ppotType"/>
|
||||
<channel id="adir1" typeId="adir1Type"/>
|
||||
<channel id="adir2" typeId="adir2Type"/>
|
||||
<channel id="adir3" typeId="adir3Type"/>
|
||||
<channel id="lastUpdate" typeId="lastUpdateType"/>
|
||||
<channel id="base" typeId="baseType"/>
|
||||
<channel id="frame" typeId="frame"/>
|
||||
<channel id="isousc" typeId="i-sousc"/>
|
||||
<channel id="ptec" typeId="p-tec"/>
|
||||
<channel id="iinst1" typeId="i-inst-1"/>
|
||||
<channel id="iinst2" typeId="i-inst-2"/>
|
||||
<channel id="iinst3" typeId="i-inst-3"/>
|
||||
<channel id="imax1" typeId="i-max-1"/>
|
||||
<channel id="imax2" typeId="i-max-2"/>
|
||||
<channel id="imax3" typeId="i-max-3"/>
|
||||
<channel id="pmax" typeId="p-max"/>
|
||||
<channel id="papp" typeId="p-app"/>
|
||||
<channel id="ppot" typeId="p-pot"/>
|
||||
<channel id="adir1" typeId="a-dir-1"/>
|
||||
<channel id="adir2" typeId="a-dir-2"/>
|
||||
<channel id="adir3" typeId="a-dir-3"/>
|
||||
<channel id="lastUpdate" typeId="last-update"/>
|
||||
<channel id="base" typeId="base"/>
|
||||
</channels>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+20
-20
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="cbetm_ejp_electricitymeter" listed="false">
|
||||
<thing-type id="cbetm_ejp_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
@@ -14,25 +14,25 @@
|
||||
Multitarif")</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channels>
|
||||
<channel id="frameType" typeId="frameTypeType"/>
|
||||
<channel id="isousc" typeId="isouscType"/>
|
||||
<channel id="ptec" typeId="ptecType"/>
|
||||
<channel id="iinst1" typeId="iinst1Type"/>
|
||||
<channel id="iinst2" typeId="iinst2Type"/>
|
||||
<channel id="iinst3" typeId="iinst3Type"/>
|
||||
<channel id="imax1" typeId="imax1Type"/>
|
||||
<channel id="imax2" typeId="imax2Type"/>
|
||||
<channel id="imax3" typeId="imax3Type"/>
|
||||
<channel id="pmax" typeId="pmaxType"/>
|
||||
<channel id="papp" typeId="pappType"/>
|
||||
<channel id="ppot" typeId="ppotType"/>
|
||||
<channel id="adir1" typeId="adir1Type"/>
|
||||
<channel id="adir2" typeId="adir2Type"/>
|
||||
<channel id="adir3" typeId="adir3Type"/>
|
||||
<channel id="lastUpdate" typeId="lastUpdateType"/>
|
||||
<channel id="pejp" typeId="pejpType"/>
|
||||
<channel id="ejphpm" typeId="ejphpmType"/>
|
||||
<channel id="ejphn" typeId="ejphnType"/>
|
||||
<channel id="frame" typeId="frame"/>
|
||||
<channel id="isousc" typeId="i-sousc"/>
|
||||
<channel id="ptec" typeId="p-tec"/>
|
||||
<channel id="iinst1" typeId="i-inst-1"/>
|
||||
<channel id="iinst2" typeId="i-inst-2"/>
|
||||
<channel id="iinst3" typeId="i-inst-3"/>
|
||||
<channel id="imax1" typeId="i-max-1"/>
|
||||
<channel id="imax2" typeId="i-max-2"/>
|
||||
<channel id="imax3" typeId="i-max-3"/>
|
||||
<channel id="pmax" typeId="p-max"/>
|
||||
<channel id="papp" typeId="p-app"/>
|
||||
<channel id="ppot" typeId="p-pot"/>
|
||||
<channel id="adir1" typeId="a-dir-1"/>
|
||||
<channel id="adir2" typeId="a-dir-2"/>
|
||||
<channel id="adir3" typeId="a-dir-3"/>
|
||||
<channel id="lastUpdate" typeId="last-update"/>
|
||||
<channel id="pejp" typeId="p-ejp"/>
|
||||
<channel id="ejphpm" typeId="ejp-hpm"/>
|
||||
<channel id="ejphn" typeId="ejp-hn"/>
|
||||
</channels>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+20
-20
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="cbetm_hc_electricitymeter" listed="false">
|
||||
<thing-type id="cbetm_hc_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
@@ -14,25 +14,25 @@
|
||||
Multitarif")</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channels>
|
||||
<channel id="frameType" typeId="frameTypeType"/>
|
||||
<channel id="isousc" typeId="isouscType"/>
|
||||
<channel id="ptec" typeId="ptecType"/>
|
||||
<channel id="iinst1" typeId="iinst1Type"/>
|
||||
<channel id="iinst2" typeId="iinst2Type"/>
|
||||
<channel id="iinst3" typeId="iinst3Type"/>
|
||||
<channel id="imax1" typeId="imax1Type"/>
|
||||
<channel id="imax2" typeId="imax2Type"/>
|
||||
<channel id="imax3" typeId="imax3Type"/>
|
||||
<channel id="pmax" typeId="pmaxType"/>
|
||||
<channel id="papp" typeId="pappType"/>
|
||||
<channel id="ppot" typeId="ppotType"/>
|
||||
<channel id="adir1" typeId="adir1Type"/>
|
||||
<channel id="adir2" typeId="adir2Type"/>
|
||||
<channel id="adir3" typeId="adir3Type"/>
|
||||
<channel id="lastUpdate" typeId="lastUpdateType"/>
|
||||
<channel id="hchc" typeId="hchcType"/>
|
||||
<channel id="hchp" typeId="hchpType"/>
|
||||
<channel id="hhphc" typeId="hhphcType"/>
|
||||
<channel id="frame" typeId="frame"/>
|
||||
<channel id="isousc" typeId="i-sousc"/>
|
||||
<channel id="ptec" typeId="p-tec"/>
|
||||
<channel id="iinst1" typeId="i-inst-1"/>
|
||||
<channel id="iinst2" typeId="i-inst-2"/>
|
||||
<channel id="iinst3" typeId="i-inst-3"/>
|
||||
<channel id="imax1" typeId="i-max-1"/>
|
||||
<channel id="imax2" typeId="i-max-2"/>
|
||||
<channel id="imax3" typeId="i-max-3"/>
|
||||
<channel id="pmax" typeId="p-max"/>
|
||||
<channel id="papp" typeId="p-app"/>
|
||||
<channel id="ppot" typeId="p-pot"/>
|
||||
<channel id="adir1" typeId="a-dir-1"/>
|
||||
<channel id="adir2" typeId="a-dir-2"/>
|
||||
<channel id="adir3" typeId="a-dir-3"/>
|
||||
<channel id="lastUpdate" typeId="last-update"/>
|
||||
<channel id="hchc" typeId="hc-hc"/>
|
||||
<channel id="hchp" typeId="hc-hp"/>
|
||||
<channel id="hhphc" typeId="h-hphc"/>
|
||||
</channels>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+27
-27
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="cbetm_tempo_electricitymeter" listed="false">
|
||||
<thing-type id="cbetm_tempo_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
@@ -14,32 +14,32 @@
|
||||
Multitarif")</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channels>
|
||||
<channel id="frameType" typeId="frameTypeType"/>
|
||||
<channel id="isousc" typeId="isouscType"/>
|
||||
<channel id="ptec" typeId="ptecType"/>
|
||||
<channel id="iinst1" typeId="iinst1Type"/>
|
||||
<channel id="iinst2" typeId="iinst2Type"/>
|
||||
<channel id="iinst3" typeId="iinst3Type"/>
|
||||
<channel id="imax1" typeId="imax1Type"/>
|
||||
<channel id="imax2" typeId="imax2Type"/>
|
||||
<channel id="imax3" typeId="imax3Type"/>
|
||||
<channel id="pmax" typeId="pmaxType"/>
|
||||
<channel id="papp" typeId="pappType"/>
|
||||
<channel id="ppot" typeId="ppotType"/>
|
||||
<channel id="adir1" typeId="adir1Type"/>
|
||||
<channel id="adir2" typeId="adir2Type"/>
|
||||
<channel id="adir3" typeId="adir3Type"/>
|
||||
<channel id="bbrhpjr" typeId="bbrhpjrType"/>
|
||||
<channel id="bbrhcjr" typeId="bbrhcjrType"/>
|
||||
<channel id="bbrhpjw" typeId="bbrhpjwType"/>
|
||||
<channel id="bbrhcjw" typeId="bbrhcjwType"/>
|
||||
<channel id="bbrhpjb" typeId="bbrhpjbType"/>
|
||||
<channel id="bbrhcjb" typeId="bbrhcjbType"/>
|
||||
<channel id="demain" typeId="couleurDemainType"/>
|
||||
<channel id="hhphc" typeId="hhphcType"/>
|
||||
<channel id="programmeCircuit1" typeId="programmeCircuit1Type"/>
|
||||
<channel id="programmeCircuit2" typeId="programmeCircuit2Type"/>
|
||||
<channel id="lastUpdate" typeId="lastUpdateType"/>
|
||||
<channel id="frame" typeId="frame"/>
|
||||
<channel id="isousc" typeId="i-sousc"/>
|
||||
<channel id="ptec" typeId="p-tec"/>
|
||||
<channel id="iinst1" typeId="i-inst-1"/>
|
||||
<channel id="iinst2" typeId="i-inst-2"/>
|
||||
<channel id="iinst3" typeId="i-inst-3"/>
|
||||
<channel id="imax1" typeId="i-max-1"/>
|
||||
<channel id="imax2" typeId="i-max-2"/>
|
||||
<channel id="imax3" typeId="i-max-3"/>
|
||||
<channel id="pmax" typeId="p-max"/>
|
||||
<channel id="papp" typeId="p-app"/>
|
||||
<channel id="ppot" typeId="p-pot"/>
|
||||
<channel id="adir1" typeId="a-dir-1"/>
|
||||
<channel id="adir2" typeId="a-dir-2"/>
|
||||
<channel id="adir3" typeId="a-dir-3"/>
|
||||
<channel id="bbrhpjr" typeId="bbr-hp-jr"/>
|
||||
<channel id="bbrhcjr" typeId="bbr-hc-jr"/>
|
||||
<channel id="bbrhpjw" typeId="bbr-hp-jw"/>
|
||||
<channel id="bbrhcjw" typeId="bbr-hc-jw"/>
|
||||
<channel id="bbrhpjb" typeId="bbr-hp-jb"/>
|
||||
<channel id="bbrhcjb" typeId="bbr-hc-jb"/>
|
||||
<channel id="demain" typeId="couleur-demain"/>
|
||||
<channel id="hhphc" typeId="h-hphc"/>
|
||||
<channel id="programmeCircuit1" typeId="programme-circuit-1"/>
|
||||
<channel id="programmeCircuit2" typeId="programme-circuit-2"/>
|
||||
<channel id="lastUpdate" typeId="last-update"/>
|
||||
</channels>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+7
-1
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<channel-type id="baseType">
|
||||
<channel-type id="base">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>BASE</label>
|
||||
<description>Total consumed energy</description>
|
||||
@@ -16,4 +16,10 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="invalid-frame-counter">
|
||||
<item-type>Number</item-type>
|
||||
<label>Frames Corrupted</label>
|
||||
<description>Counter tracking the number of frames invalid/corrupted (checksum)</description>
|
||||
<state pattern="%d" readOnly="true"></state>
|
||||
</channel-type>
|
||||
</thing:thing-descriptions>
|
||||
|
||||
+3
-3
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<channel-type id="imaxType">
|
||||
<channel-type id="i-max">
|
||||
<item-type>Number:ElectricCurrent</item-type>
|
||||
<label>IMAX</label>
|
||||
<description>Maximum consumed electric current</description>
|
||||
@@ -16,7 +16,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="iinstType">
|
||||
<channel-type id="i-inst">
|
||||
<item-type>Number:ElectricCurrent</item-type>
|
||||
<label>IINST</label>
|
||||
<description>Instantaneous electric current</description>
|
||||
@@ -28,7 +28,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="adpsType">
|
||||
<channel-type id="adps">
|
||||
<item-type>Number:ElectricCurrent</item-type>
|
||||
<label>ADPS</label>
|
||||
<description>Excess electric current warning</description>
|
||||
|
||||
+28
-13
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<channel-type id="frameTypeType" advanced="true">
|
||||
<channel-type id="frame" advanced="true">
|
||||
<item-type>String</item-type>
|
||||
<label>frameType</label>
|
||||
<description>frameType</description>
|
||||
@@ -17,7 +17,7 @@
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="iinst1Type">
|
||||
<channel-type id="i-inst-1">
|
||||
<item-type>Number:ElectricCurrent</item-type>
|
||||
<label>IINST1</label>
|
||||
<description>Instantaneous electric current on phase 1</description>
|
||||
@@ -29,7 +29,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="iinst2Type">
|
||||
<channel-type id="i-inst-2">
|
||||
<item-type>Number:ElectricCurrent</item-type>
|
||||
<label>IINST2</label>
|
||||
<description>Instantaneous electric current on phase 2</description>
|
||||
@@ -41,7 +41,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="iinst3Type">
|
||||
<channel-type id="i-inst-3">
|
||||
<item-type>Number:ElectricCurrent</item-type>
|
||||
<label>IINST3</label>
|
||||
<description>Instantaneous electric current on phase 3</description>
|
||||
@@ -53,7 +53,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="imax1Type">
|
||||
<channel-type id="i-max-1">
|
||||
<item-type>Number:ElectricCurrent</item-type>
|
||||
<label>IMAX1</label>
|
||||
<description>Maximum consumed electric current on phase 1</description>
|
||||
@@ -65,7 +65,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="imax2Type">
|
||||
<channel-type id="i-max-2">
|
||||
<item-type>Number:ElectricCurrent</item-type>
|
||||
<label>IMAX2</label>
|
||||
<description>Maximum consumed electric current on phase 2</description>
|
||||
@@ -77,7 +77,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="imax3Type">
|
||||
<channel-type id="i-max-3">
|
||||
<item-type>Number:ElectricCurrent</item-type>
|
||||
<label>IMAX3</label>
|
||||
<description>Maximum consumed electric current on phase 3</description>
|
||||
@@ -89,7 +89,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="pmaxType">
|
||||
<channel-type id="p-max">
|
||||
<item-type>Number:Power</item-type>
|
||||
<label>PMAX</label>
|
||||
<description>Maximum consumed electric power on all phases</description>
|
||||
@@ -101,7 +101,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="pappType">
|
||||
<channel-type id="p-app">
|
||||
<item-type>Number:Power</item-type>
|
||||
<label>PAPP</label>
|
||||
<description>Instantaneous apparent power</description>
|
||||
@@ -113,35 +113,50 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="ppotType">
|
||||
<channel-type id="p-pot">
|
||||
<item-type>String</item-type>
|
||||
<label>PPOT</label>
|
||||
<description>Electrical potential presence</description>
|
||||
<category>Energy</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
</tags>
|
||||
<state pattern="%s" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="adir1Type">
|
||||
<channel-type id="a-dir-1">
|
||||
<item-type>Number:ElectricCurrent</item-type>
|
||||
<label>ADIR1</label>
|
||||
<description>Excess electric current on phase 1 warning</description>
|
||||
<category>Energy</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Current</tag>
|
||||
</tags>
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="adir2Type">
|
||||
<channel-type id="a-dir-2">
|
||||
<item-type>Number:ElectricCurrent</item-type>
|
||||
<label>ADIR2</label>
|
||||
<description>Excess electric current on phase 2 warning</description>
|
||||
<category>Energy</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Current</tag>
|
||||
</tags>
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="adir3Type">
|
||||
<channel-type id="a-dir-3">
|
||||
<item-type>Number:ElectricCurrent</item-type>
|
||||
<label>ADIR3</label>
|
||||
<description>Excess electric current on phase 3 warning</description>
|
||||
<category>Energy</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Current</tag>
|
||||
</tags>
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
</thing:thing-descriptions>
|
||||
|
||||
+4
-4
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<channel-type id="isouscType">
|
||||
<channel-type id="i-sousc">
|
||||
<item-type>Number:ElectricCurrent</item-type>
|
||||
<label>ISOUSC</label>
|
||||
<description>Subscribed electric current</description>
|
||||
@@ -16,7 +16,7 @@
|
||||
<state pattern="%d A" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="ptecType">
|
||||
<channel-type id="p-tec">
|
||||
<item-type>String</item-type>
|
||||
<label>PTEC</label>
|
||||
<description>Current pricing period</description>
|
||||
@@ -42,7 +42,7 @@
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="hhphcType">
|
||||
<channel-type id="h-hphc">
|
||||
<item-type>String</item-type>
|
||||
<label>HHPHC</label>
|
||||
<description>Pricing schedule group</description>
|
||||
@@ -62,7 +62,7 @@
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="lastUpdateType">
|
||||
<channel-type id="last-update">
|
||||
<item-type>DateTime</item-type>
|
||||
<label>Last Update</label>
|
||||
<description>Timestamp of last received Teleinfo frame</description>
|
||||
|
||||
+7
-3
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<channel-type id="ejphpmType">
|
||||
<channel-type id="ejp-hpm">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>EJPHPM</label>
|
||||
<description>Total consumed energy at high rate pricing</description>
|
||||
@@ -16,7 +16,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="ejphnType">
|
||||
<channel-type id="ejp-hn">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>EJPHN</label>
|
||||
<description>Total consumed energy at low rate pricing</description>
|
||||
@@ -28,11 +28,15 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="pejpType">
|
||||
<channel-type id="p-ejp">
|
||||
<item-type>Number:Time</item-type>
|
||||
<label>PEJP</label>
|
||||
<description>Prior notice to EJP start</description>
|
||||
<category>Energy</category>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
</thing:thing-descriptions>
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<channel-type id="hchcType">
|
||||
<channel-type id="hc-hc">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>HCHC</label>
|
||||
<description>Total consumed energy at low rate pricing</description>
|
||||
@@ -16,7 +16,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="hchpType">
|
||||
<channel-type id="hc-hp">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>HCHP</label>
|
||||
<description>Total consumed energy at high rate pricing</description>
|
||||
|
||||
+9
-9
@@ -4,7 +4,7 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<channel-type id="bbrhpjrType">
|
||||
<channel-type id="bbr-hp-jr">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>BBRHPJR</label>
|
||||
<description>Total consumed energy at high rate pricing on red days</description>
|
||||
@@ -16,7 +16,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="bbrhcjrType">
|
||||
<channel-type id="bbr-hc-jr">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>BBRHCJR</label>
|
||||
<description>Total consumed energy at low rate pricing on red days</description>
|
||||
@@ -28,7 +28,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="bbrhpjwType">
|
||||
<channel-type id="bbr-hp-jw">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>BBRHPJW</label>
|
||||
<description>Total consumed energy at high rate pricing on white days</description>
|
||||
@@ -40,7 +40,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="bbrhcjwType">
|
||||
<channel-type id="bbr-hc-jw">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>BBRHCJW</label>
|
||||
<description>Total consumed energy at low rate pricing on white days</description>
|
||||
@@ -52,7 +52,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="bbrhpjbType">
|
||||
<channel-type id="bbr-hp-jb">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>BBRHPJB</label>
|
||||
<description>Total consumed energy at high rate pricing on blue days</description>
|
||||
@@ -64,7 +64,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="bbrhcjbType">
|
||||
<channel-type id="bbr-hc-jb">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>BBRHCJB</label>
|
||||
<description>Total consumed energy at low rate pricing on blue days</description>
|
||||
@@ -76,7 +76,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="couleurDemainType">
|
||||
<channel-type id="couleur-demain">
|
||||
<item-type>String</item-type>
|
||||
<label>DEMAIN</label>
|
||||
<description>Following day color</description>
|
||||
@@ -94,7 +94,7 @@
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="programmeCircuit1Type">
|
||||
<channel-type id="programme-circuit-1">
|
||||
<item-type>String</item-type>
|
||||
<label>ProgrammeCircuit1</label>
|
||||
<description>Circuit 1 program</description>
|
||||
@@ -112,7 +112,7 @@
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="programmeCircuit2Type">
|
||||
<channel-type id="programme-circuit-2">
|
||||
<item-type>String</item-type>
|
||||
<label>ProgrammeCircuit2</label>
|
||||
<description>Circuit 2 program</description>
|
||||
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<thing:thing-descriptions bindingId="teleinfo"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<bridge-type id="d2lcontroller">
|
||||
<label>D2L Controller</label>
|
||||
<description>D2L dongle with Wifi Interface</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
|
||||
<channels>
|
||||
<channel id="invalidFrameCounter" typeId="invalid-frame-counter"/>
|
||||
</channels>
|
||||
|
||||
<config-description>
|
||||
<parameter name="listenningPort" type="text" required="false">
|
||||
<label>TCP Port</label>
|
||||
<description>The tcp port we receive data from d2l</description>
|
||||
</parameter>
|
||||
<parameter name="encryptionKeys" type="text" required="true">
|
||||
<label>Encryption Key</label>
|
||||
<description>The different encryptionKey of your d2l</description>
|
||||
</parameter>
|
||||
<parameter name="ticMode" type="text" required="true">
|
||||
<label>TIC Mode</label>
|
||||
<description>TIC Mode of the telemeter (Standard TIC mode is only available on Linky telemeters)</description>
|
||||
<default>HISTORICAL</default>
|
||||
<options>
|
||||
<option value="HISTORICAL">Historical</option>
|
||||
<option value="STANDARD">Standard</option>
|
||||
</options>
|
||||
<limitToOptions>true</limitToOptions>
|
||||
</parameter>
|
||||
<parameter name="verifyChecksum" type="boolean" required="true">
|
||||
<label>Checksum Verification</label>
|
||||
<description>Activate checksum verification</description>
|
||||
<default>true</default>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="autoRepairInvalidADPSgroupLine" type="boolean" required="false">
|
||||
<label>Auto Repair Malformed ADPS Data</label>
|
||||
<description>Try to auto repair malformed ADPS data from hardware issues (e.g: "ADPS032" instead of "ADPS 032"
|
||||
expected/well-formed data)</description>
|
||||
<default>true</default>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
</config-description>
|
||||
</bridge-type>
|
||||
</thing:thing-descriptions>
|
||||
+292
-102
@@ -4,506 +4,696 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<channel-group-type id="commonLSMGroupType">
|
||||
<channel-group-type id="common-lsm-group-type">
|
||||
<label>Common</label>
|
||||
<description>Common channels for Linky telemeter in standard teleinformation mode</description>
|
||||
<category>Energy</category>
|
||||
<channels>
|
||||
|
||||
<channel id="ngtf" typeId="stringType">
|
||||
<channel id="ngtf" typeId="string">
|
||||
<label>NGTF</label>
|
||||
<description>Provider schedule name</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ltarf" typeId="stringType">
|
||||
<channel id="ltarf" typeId="string">
|
||||
<label>LTARF</label>
|
||||
<description>Current pricing label</description>
|
||||
</channel>
|
||||
|
||||
<channel id="east" typeId="energyType">
|
||||
<channel id="east" typeId="energy">
|
||||
<label>EAST</label>
|
||||
<description>Total active energy withdrawn</description>
|
||||
</channel>
|
||||
|
||||
<channel id="easf01" typeId="energyType">
|
||||
<channel id="easf01" typeId="energy">
|
||||
<label>EASF01</label>
|
||||
<description>Active energy withdrawn from provider on index 01</description>
|
||||
</channel>
|
||||
|
||||
<channel id="easf02" typeId="energyType">
|
||||
<channel id="easf02" typeId="energy">
|
||||
<label>EASF02</label>
|
||||
<description>Active energy withdrawn from provider on index 02</description>
|
||||
</channel>
|
||||
|
||||
<channel id="easf03" typeId="energyType">
|
||||
<channel id="easf03" typeId="energy">
|
||||
<label>EASF03</label>
|
||||
<description>Active energy withdrawn from provider on index 03</description>
|
||||
</channel>
|
||||
|
||||
<channel id="easf04" typeId="energyType">
|
||||
<channel id="easf04" typeId="energy">
|
||||
<label>EASF04</label>
|
||||
<description>Active energy withdrawn from provider on index 04</description>
|
||||
</channel>
|
||||
|
||||
<channel id="easf05" typeId="energyType">
|
||||
<channel id="easf05" typeId="energy">
|
||||
<label>EASF05</label>
|
||||
<description>Active energy withdrawn from provider on index 05</description>
|
||||
</channel>
|
||||
|
||||
<channel id="easf06" typeId="energyType">
|
||||
<channel id="easf06" typeId="energy">
|
||||
<label>EASF06</label>
|
||||
<description>Active energy withdrawn from provider on index 06</description>
|
||||
</channel>
|
||||
|
||||
<channel id="easf07" typeId="energyType">
|
||||
<channel id="easf07" typeId="energy">
|
||||
<label>EASF07</label>
|
||||
<description>Active energy withdrawn from provider on index 07</description>
|
||||
</channel>
|
||||
|
||||
<channel id="easf08" typeId="energyType">
|
||||
<channel id="easf08" typeId="energy">
|
||||
<label>EASF08</label>
|
||||
<description>Active energy withdrawn from provider on index 08</description>
|
||||
</channel>
|
||||
|
||||
<channel id="easf09" typeId="energyType">
|
||||
<channel id="easf09" typeId="energy">
|
||||
<label>EASF09</label>
|
||||
<description>Active energy withdrawn from provider on index 09</description>
|
||||
</channel>
|
||||
|
||||
<channel id="easf10" typeId="energyType">
|
||||
<channel id="easf10" typeId="energy">
|
||||
<label>EASF10</label>
|
||||
<description>Active energy withdrawn from provider on index 10</description>
|
||||
</channel>
|
||||
|
||||
<channel id="easd01" typeId="energyType">
|
||||
<channel id="easd01" typeId="energy">
|
||||
<label>EASD01</label>
|
||||
<description>Active energy withdrawn from distributor on index 01</description>
|
||||
</channel>
|
||||
|
||||
<channel id="easd02" typeId="energyType">
|
||||
<channel id="easd02" typeId="energy">
|
||||
<label>EASD02</label>
|
||||
<description>Active energy withdrawn from distributor on index 02</description>
|
||||
</channel>
|
||||
|
||||
<channel id="easd03" typeId="energyType">
|
||||
<channel id="easd03" typeId="energy">
|
||||
<label>EASD03</label>
|
||||
<description>Active energy withdrawn from distributor on index 03</description>
|
||||
</channel>
|
||||
|
||||
<channel id="easd04" typeId="energyType">
|
||||
<channel id="easd04" typeId="energy">
|
||||
<label>EASD04</label>
|
||||
<description>Active energy withdrawn from distributor on index 04</description>
|
||||
</channel>
|
||||
|
||||
<channel id="irms1" typeId="currentType">
|
||||
<channel id="irms1" typeId="current">
|
||||
<label>IRMS1</label>
|
||||
<description>RMS Current on phase 1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="urms1" typeId="potentialType">
|
||||
<channel id="urms1" typeId="potential">
|
||||
<label>URMS1</label>
|
||||
<description>RMS Voltage on phase 1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="pref" typeId="powerType">
|
||||
<channel id="pref" typeId="power">
|
||||
<label>PREF</label>
|
||||
<description>Reference apparent power</description>
|
||||
</channel>
|
||||
|
||||
<channel id="pcoup" typeId="powerType">
|
||||
<channel id="pcoup" typeId="power">
|
||||
<label>PCOUP</label>
|
||||
<description>Apparent power rupture capacity</description>
|
||||
</channel>
|
||||
|
||||
<channel id="sinsts" typeId="powerType">
|
||||
<channel id="sinsts" typeId="power">
|
||||
<label>SINSTS</label>
|
||||
<description>Instantaneous withdrawn apparent power</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsn" typeId="powerType">
|
||||
<channel id="smaxsn" typeId="power">
|
||||
<label>SMAXSN</label>
|
||||
<description>Maximum withdrawn apparent power of the day</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsnMinus1" typeId="powerType">
|
||||
<channel id="smaxsnMinus1" typeId="power">
|
||||
<label>SMAXSN-1</label>
|
||||
<description>Maximum withdrawn apparent power of the previous day</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ccasn" typeId="powerType">
|
||||
<channel id="ccasn" typeId="power">
|
||||
<label>CCASN</label>
|
||||
<description>Active charge point N</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ccasnMinus1" typeId="powerType">
|
||||
<channel id="ccasnMinus1" typeId="power">
|
||||
<label>CCASN-1</label>
|
||||
<description>Active charge point N-1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="umoy1" typeId="potentialType">
|
||||
<channel id="umoy1" typeId="potential">
|
||||
<label>UMOY1</label>
|
||||
<description>Mean Voltage on phase 1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="stge" typeId="stringType">
|
||||
<channel id="stge" typeId="string">
|
||||
<label>STGE</label>
|
||||
<description>Status registry</description>
|
||||
</channel>
|
||||
|
||||
<channel id="dpm1" typeId="stringType">
|
||||
<channel id="dpm1" typeId="string">
|
||||
<label>DPM1</label>
|
||||
<description>Start of mobile peak period 1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="fpm1" typeId="stringType">
|
||||
<channel id="fpm1" typeId="string">
|
||||
<label>FPM1</label>
|
||||
<description>End of mobile peak period 1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="dpm2" typeId="stringType">
|
||||
<channel id="dpm2" typeId="string">
|
||||
<label>DPM2</label>
|
||||
<description>Start of mobile peak period 2</description>
|
||||
</channel>
|
||||
|
||||
<channel id="fpm2" typeId="stringType">
|
||||
<channel id="fpm2" typeId="string">
|
||||
<label>FPM2</label>
|
||||
<description>End of mobile peak period 2</description>
|
||||
</channel>
|
||||
|
||||
<channel id="dpm3" typeId="stringType">
|
||||
<channel id="dpm3" typeId="string">
|
||||
<label>DPM3</label>
|
||||
<description>Start of mobile peak period 3</description>
|
||||
</channel>
|
||||
|
||||
<channel id="fpm3" typeId="stringType">
|
||||
<channel id="fpm3" typeId="string">
|
||||
<label>FPM3</label>
|
||||
<description>End of mobile peak period 3</description>
|
||||
</channel>
|
||||
|
||||
<channel id="msg1" typeId="stringType">
|
||||
<channel id="msg1" typeId="string">
|
||||
<label>MSG1</label>
|
||||
<description>Short message</description>
|
||||
</channel>
|
||||
|
||||
<channel id="msg2" typeId="stringType">
|
||||
<channel id="msg2" typeId="string">
|
||||
<label>MSG2</label>
|
||||
<description>Very short message</description>
|
||||
</channel>
|
||||
|
||||
<channel id="prm" typeId="stringType">
|
||||
<channel id="prm" typeId="string">
|
||||
<label>PRM</label>
|
||||
<description>PRM</description>
|
||||
</channel>
|
||||
|
||||
|
||||
<channel id="ntarf" typeId="stringType">
|
||||
<channel id="ntarf" typeId="string">
|
||||
<label>NTARF</label>
|
||||
<description>Index of current pricing</description>
|
||||
</channel>
|
||||
|
||||
<channel id="njourf" typeId="stringType">
|
||||
<channel id="njourf" typeId="string">
|
||||
<label>NJOURF</label>
|
||||
<description>Number of current provider schedule</description>
|
||||
</channel>
|
||||
|
||||
<channel id="njourfPlus1" typeId="stringType">
|
||||
<channel id="njourfPlus1" typeId="string">
|
||||
<label>NJOURF+1</label>
|
||||
<description>Number of next day provider schedule</description>
|
||||
</channel>
|
||||
|
||||
<channel id="pjourfPlus1" typeId="stringType">
|
||||
<channel id="pjourfPlus1" typeId="string">
|
||||
<label>PJOURF+1</label>
|
||||
<description>Profile of next day provider schedule</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ppointe" typeId="stringType">
|
||||
<channel id="ppointe" typeId="string">
|
||||
<label>PPOINTE</label>
|
||||
<description>Profile of next rush day</description>
|
||||
</channel>
|
||||
|
||||
<channel id="date" typeId="dateTimeType">
|
||||
<channel id="date" typeId="date-time">
|
||||
<label>DATE</label>
|
||||
<description>Date and Time</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsnDate" typeId="dateTimeType">
|
||||
<channel id="smaxsnDate" typeId="date-time">
|
||||
<label>SMAXSN TIMESTAMP</label>
|
||||
<description>Timestamp of SMAXSN value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsnMinus1Date" typeId="dateTimeType">
|
||||
<channel id="smaxsnMinus1Date" typeId="date-time">
|
||||
<label>SMAXSN-1 TIMESTAMP</label>
|
||||
<description>Timestamp of SMAXSN-1 value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ccasnDate" typeId="dateTimeType">
|
||||
<channel id="ccasnDate" typeId="date-time">
|
||||
<label>CCASN TIMESTAMP</label>
|
||||
<description>Timestamp of CCASN value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ccasnMinus1Date" typeId="dateTimeType">
|
||||
<channel id="ccasnMinus1Date" typeId="date-time">
|
||||
<label>CCASN-1 TIMESTAMP</label>
|
||||
<description>Timestamp of CCASN-1 value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="umoy1Date" typeId="dateTimeType">
|
||||
<channel id="umoy1Date" typeId="date-time">
|
||||
<label>UMOY1 TIMESTAMP</label>
|
||||
<description>Timestamp of UMOY1 value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="dpm1Date" typeId="dateTimeType">
|
||||
<channel id="dpm1Date" typeId="date-time">
|
||||
<label>DPM1 TIMESTAMP</label>
|
||||
<description>Date of DPM1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="fpm1Date" typeId="dateTimeType">
|
||||
<channel id="fpm1Date" typeId="date-time">
|
||||
<label>FPM1 TIMESTAMP</label>
|
||||
<description>Date of FPM1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="dpm2Date" typeId="dateTimeType">
|
||||
<channel id="dpm2Date" typeId="date-time">
|
||||
<label>DPM2 TIMESTAMP</label>
|
||||
<description>Date of DPM2</description>
|
||||
</channel>
|
||||
|
||||
<channel id="fpm2Date" typeId="dateTimeType">
|
||||
<channel id="fpm2Date" typeId="date-time">
|
||||
<label>FPM2 TIMESTAMP</label>
|
||||
<description>Date of FPM2</description>
|
||||
</channel>
|
||||
|
||||
<channel id="dpm3Date" typeId="dateTimeType">
|
||||
<channel id="dpm3Date" typeId="date-time">
|
||||
<label>DPM3 TIMESTAMP</label>
|
||||
<description>Date of DPM3</description>
|
||||
</channel>
|
||||
|
||||
<channel id="fpm3Date" typeId="dateTimeType">
|
||||
<channel id="fpm3Date" typeId="date-time">
|
||||
<label>FPM3 TIMESTAMP</label>
|
||||
<description>Date of FPM3</description>
|
||||
</channel>
|
||||
|
||||
<channel id="relais1" typeId="switchType">
|
||||
<channel id="relais1" typeId="switch">
|
||||
<label>Relais 1</label>
|
||||
</channel>
|
||||
<channel id="relais2" typeId="switchType">
|
||||
<channel id="relais2" typeId="switch">
|
||||
<label>Relais 2</label>
|
||||
</channel>
|
||||
<channel id="relais3" typeId="switchType">
|
||||
<channel id="relais3" typeId="switch">
|
||||
<label>Relais 3</label>
|
||||
</channel>
|
||||
<channel id="relais4" typeId="switchType">
|
||||
<channel id="relais4" typeId="switch">
|
||||
<label>Relais 4</label>
|
||||
</channel>
|
||||
<channel id="relais5" typeId="switchType">
|
||||
<channel id="relais5" typeId="switch">
|
||||
<label>Relais 5</label>
|
||||
</channel>
|
||||
<channel id="relais6" typeId="switchType">
|
||||
<channel id="relais6" typeId="switch">
|
||||
<label>Relais 6</label>
|
||||
</channel>
|
||||
<channel id="relais7" typeId="switchType">
|
||||
<channel id="relais7" typeId="switch">
|
||||
<label>Relais 7</label>
|
||||
</channel>
|
||||
<channel id="relais8" typeId="switchType">
|
||||
<channel id="relais8" typeId="switch">
|
||||
<label>Relais 8</label>
|
||||
</channel>
|
||||
|
||||
<channel id="irms1f" typeId="current">
|
||||
<label>Irms 1f</label>
|
||||
<description>Intensity (floating value)</description>
|
||||
</channel>
|
||||
|
||||
<channel id="cosphi" typeId="power-factor">
|
||||
<label>CosPhi</label>
|
||||
<description>CosPhi (floating value)</description>
|
||||
</channel>
|
||||
|
||||
<channel id="sactive" typeId="power">
|
||||
<label>Sactive</label>
|
||||
<description>Instantaneous withdrawn active power</description>
|
||||
</channel>
|
||||
|
||||
<channel id="sreactive" typeId="power">
|
||||
<label>Sreactive</label>
|
||||
<description>Instantaneous withdrawn reactive power</description>
|
||||
</channel>
|
||||
|
||||
<channel id="contact-sec" typeId="contact">
|
||||
<label>Dry Contact</label>
|
||||
<description>State of main relay</description>
|
||||
</channel>
|
||||
|
||||
<channel id="cut-off" typeId="cut-off">
|
||||
<label>Cut Off</label>
|
||||
<description>State of Cut Off switch</description>
|
||||
</channel>
|
||||
|
||||
<channel id="cache" typeId="contact">
|
||||
<label>Cache</label>
|
||||
<description>State of linky cache switch</description>
|
||||
</channel>
|
||||
|
||||
|
||||
<channel id="over-voltage" typeId="over-voltage-state">
|
||||
<label>Over Voltage</label>
|
||||
<description>State of over voltage</description>
|
||||
</channel>
|
||||
|
||||
<channel id="exceeding-power" typeId="exceeding-power-state">
|
||||
<label>Exceeding</label>
|
||||
<description>State of exceeding</description>
|
||||
</channel>
|
||||
|
||||
<channel id="function" typeId="function">
|
||||
<label>Function</label>
|
||||
<description>State of functionnality : consummer/producer</description>
|
||||
</channel>
|
||||
|
||||
<channel id="direction" typeId="direction">
|
||||
<label>Direction</label>
|
||||
<description>Direction of the active energy</description>
|
||||
</channel>
|
||||
|
||||
<channel id="supplier-rate" typeId="rate">
|
||||
<label>Supplier Rate</label>
|
||||
<description>The supplier rate</description>
|
||||
</channel>
|
||||
|
||||
<channel id="distributor-rate" typeId="rate">
|
||||
<label>Distributor Rate</label>
|
||||
<description>The distributor rate</description>
|
||||
</channel>
|
||||
|
||||
<channel id="clock" typeId="clock-state">
|
||||
<label>Clock State</label>
|
||||
<description>State Of Clock</description>
|
||||
</channel>
|
||||
|
||||
<channel id="plc" typeId="plc">
|
||||
<label>Plc Type</label>
|
||||
<description>Type of PLC</description>
|
||||
</channel>
|
||||
|
||||
<channel id="outputcom" typeId="outputcom-state">
|
||||
<label>Communication Output State</label>
|
||||
<description>State of communication output</description>
|
||||
</channel>
|
||||
|
||||
<channel id="plc-state" typeId="plc-state">
|
||||
<label>Plc State</label>
|
||||
<description>State of PLC</description>
|
||||
</channel>
|
||||
|
||||
<channel id="plc-synchro" typeId="synchro-plc-state">
|
||||
<label>Plc Synchro</label>
|
||||
<description>State of PLC Synchro</description>
|
||||
</channel>
|
||||
|
||||
<channel id="tempo-today" typeId="tempo">
|
||||
<label>Tempo Today</label>
|
||||
<description>The state of tempo tariff for today</description>
|
||||
</channel>
|
||||
|
||||
<channel id="tempo-tomorrow" typeId="tempo">
|
||||
<label>Tempo Tomorrow</label>
|
||||
<description>The state of tempo tariff for tomorrow</description>
|
||||
</channel>
|
||||
|
||||
<channel id="advice-moving-tips" typeId="moving-tips">
|
||||
<label>Moving Tips Advice</label>
|
||||
<description>State of moving tips advice</description>
|
||||
</channel>
|
||||
|
||||
<channel id="moving-tips" typeId="moving-tips">
|
||||
<label>Moving Tips</label>
|
||||
<description>State of moving tips</description>
|
||||
</channel>
|
||||
|
||||
<channel id="pjourf1-plus1" typeId="string">
|
||||
<label>NextDay Provider Schedule Slot 1</label>
|
||||
<description>Profile of next day provider schedule, slot 1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ppointe1" typeId="string">
|
||||
<label>Next Rush Day Slot 1</label>
|
||||
<description>Profile of next rush day, slot 1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="pjourf2-plus1" typeId="string">
|
||||
<label>NextDay Provider Schedule Slot 2</label>
|
||||
<description>Profile of next day provider schedule, slot 2</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ppointe2" typeId="string">
|
||||
<label>Next Rush Day Slot 2</label>
|
||||
<description>Profile of next rush day, slot 2</description>
|
||||
</channel>
|
||||
|
||||
<channel id="pjourf3-plus1" typeId="string">
|
||||
<label>NextDay Provider Schedule Slot 3</label>
|
||||
<description>Profile of next day provider schedule, slot 3</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ppointe3" typeId="string">
|
||||
<label>Next Rush Day Slot 3</label>
|
||||
<description>Profile of next rush day, slot 3</description>
|
||||
</channel>
|
||||
|
||||
<channel id="pjourf4-plus1" typeId="string">
|
||||
<label>NextDay Provider Schedule Slot 4</label>
|
||||
<description>Profile of next day provider schedule, slot 4</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ppointe4" typeId="string">
|
||||
<label>Next Rush Day Slot 4</label>
|
||||
<description>Profile of next rush day, slot 4</description>
|
||||
</channel>
|
||||
|
||||
<channel id="pjourf5-plus1" typeId="string">
|
||||
<label>NextDay Provider Schedule Slot 5</label>
|
||||
<description>Profile of next day provider schedule, slot 5</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ppointe5" typeId="string">
|
||||
<label>Next Rush Day Slot 5</label>
|
||||
<description>Profile of next rush day, slot 5</description>
|
||||
</channel>
|
||||
|
||||
<channel id="pjourf6-plus1" typeId="string">
|
||||
<label>NextDay Provider Schedule Slot 6</label>
|
||||
<description>Profile of next day provider schedule, slot 6</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ppointe6" typeId="string">
|
||||
<label>Next Rush Day Slot 6</label>
|
||||
<description>Profile of next rush day, slot 6</description>
|
||||
</channel>
|
||||
|
||||
<channel id="pjourf7-plus1" typeId="string">
|
||||
<label>NextDay Provider Schedule Slot 7</label>
|
||||
<description>Profile of next day provider schedule, slot 7</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ppointe7" typeId="string">
|
||||
<label>Next Rush Day Slot 7</label>
|
||||
<description>Profile of next rush day, slot 7</description>
|
||||
</channel>
|
||||
|
||||
<channel id="pjourf8-plus1" typeId="string">
|
||||
<label>NextDay Provider Schedule Slot 8</label>
|
||||
<description>Profile of next day provider schedule, slot 8</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ppointe8" typeId="string">
|
||||
<label>Next Rush Day Slot 8</label>
|
||||
<description>Profile of next rush day, slot 8</description>
|
||||
</channel>
|
||||
</channels>
|
||||
|
||||
</channel-group-type>
|
||||
|
||||
<channel-group-type id="producerLSMGroupType">
|
||||
<channel-group-type id="producer-lsm-group-type">
|
||||
<label>Producer</label>
|
||||
<description>Producer channels for Linky telemeter in standard teleinformation mode</description>
|
||||
<category>Energy</category>
|
||||
<channels>
|
||||
<channel id="eait" typeId="energyType">
|
||||
<channel id="eait" typeId="energy">
|
||||
<label>EAIT</label>
|
||||
<description>Total active energy injected</description>
|
||||
</channel>
|
||||
|
||||
<channel id="erq1" typeId="energyType">
|
||||
<channel id="erq1" typeId="energy">
|
||||
<label>ERQ1</label>
|
||||
<description>Total reactive energy Q1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="erq2" typeId="energyType">
|
||||
<channel id="erq2" typeId="energy">
|
||||
<label>ERQ2</label>
|
||||
<description>Total reactive energy Q2</description>
|
||||
</channel>
|
||||
|
||||
<channel id="erq3" typeId="energyType">
|
||||
<channel id="erq3" typeId="energy">
|
||||
<label>ERQ3</label>
|
||||
<description>Total reactive energy Q3</description>
|
||||
</channel>
|
||||
|
||||
<channel id="erq4" typeId="energyType">
|
||||
<channel id="erq4" typeId="energy">
|
||||
<label>ERQ4</label>
|
||||
<description>Total reactive energy Q4</description>
|
||||
</channel>
|
||||
|
||||
<channel id="sinsti" typeId="powerType">
|
||||
<channel id="sinsti" typeId="power">
|
||||
<label>SINSTI</label>
|
||||
<description>Instantaneous injected apparent power</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxin" typeId="powerType">
|
||||
<channel id="smaxin" typeId="power">
|
||||
<label>SMAXIN</label>
|
||||
<description>Maximum injected apparent power of the day</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxinMinus1" typeId="powerType">
|
||||
<channel id="smaxinMinus1" typeId="power">
|
||||
<label>SMAXIN-1</label>
|
||||
<description>Maximum injected apparent power of the previous day</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ccain" typeId="powerType">
|
||||
<channel id="ccain" typeId="power">
|
||||
<label>CCAIN</label>
|
||||
<description>Injected active charge point N</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ccainMinus1" typeId="powerType">
|
||||
<channel id="ccainMinus1" typeId="power">
|
||||
<label>CCAIN-1</label>
|
||||
<description>Injected active charge point N-1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxinDate" typeId="dateTimeType">
|
||||
<channel id="smaxinDate" typeId="date-time">
|
||||
<label>SMAXIN TIMESTAMP</label>
|
||||
<description>Timestamp of SMAXIN value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxinMinus1Date" typeId="dateTimeType">
|
||||
<channel id="smaxinMinus1Date" typeId="date-time">
|
||||
<label>SMAXIN-1 TIMESTAMP</label>
|
||||
<description>Timestamp of SMAXIN-1 value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ccainDate" typeId="dateTimeType">
|
||||
<channel id="ccainDate" typeId="date-time">
|
||||
<label>CCAIN TIMESTAMP</label>
|
||||
<description>Timestamp of CCAIN value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="ccainMinus1Date" typeId="dateTimeType">
|
||||
<channel id="ccainMinus1Date" typeId="date-time">
|
||||
<label>CCAIN-1 TIMESTAMP</label>
|
||||
<description>Timestamp of CCAIN-1 value</description>
|
||||
</channel>
|
||||
</channels>
|
||||
</channel-group-type>
|
||||
|
||||
<channel-group-type id="threePhasedLSMGroupType">
|
||||
<channel-group-type id="three-phased-lsm-group-type">
|
||||
<label>Three-phase</label>
|
||||
<description>Three-phased channels for Linky telemeter in standard teleinformation mode</description>
|
||||
<category>Energy</category>
|
||||
<channels>
|
||||
|
||||
<channel id="irms2" typeId="currentType">
|
||||
<channel id="irms2" typeId="current">
|
||||
<label>IRMS2</label>
|
||||
<description>RMS Current on phase 2</description>
|
||||
</channel>
|
||||
|
||||
<channel id="irms3" typeId="currentType">
|
||||
<channel id="irms3" typeId="current">
|
||||
<label>IRMS3</label>
|
||||
<description>RMS Current on phase 3</description>
|
||||
</channel>
|
||||
|
||||
<channel id="urms2" typeId="potentialType">
|
||||
<channel id="urms2" typeId="potential">
|
||||
<label>URMS2</label>
|
||||
<description>RMS Voltage on phase 2</description>
|
||||
</channel>
|
||||
|
||||
<channel id="urms3" typeId="potentialType">
|
||||
<channel id="urms3" typeId="potential">
|
||||
<label>URMS3</label>
|
||||
<description>RMS Voltage on phase 3</description>
|
||||
</channel>
|
||||
|
||||
<channel id="sinsts1" typeId="powerType">
|
||||
<channel id="sinsts1" typeId="power">
|
||||
<label>SINSTS1</label>
|
||||
<description>Instantaneous withdrawn apparent power on phase 1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="sinsts2" typeId="powerType">
|
||||
<channel id="sinsts2" typeId="power">
|
||||
<label>SINSTS2</label>
|
||||
<description>Instantaneous withdrawn apparent power on phase 2</description>
|
||||
</channel>
|
||||
|
||||
<channel id="sinsts3" typeId="powerType">
|
||||
<channel id="sinsts3" typeId="power">
|
||||
<label>SINSTS3</label>
|
||||
<description>Instantaneous withdrawn apparent power on phase 3</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsn1" typeId="powerType">
|
||||
<channel id="smaxsn1" typeId="power">
|
||||
<label>SMAXSN1</label>
|
||||
<description>Maximum withdrawn apparent power of the day on phase 1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsn2" typeId="powerType">
|
||||
<channel id="smaxsn2" typeId="power">
|
||||
<label>SMAXSN2</label>
|
||||
<description>Maximum withdrawn apparent power of the day on phase 2</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsn3" typeId="powerType">
|
||||
<channel id="smaxsn3" typeId="power">
|
||||
<label>SMAXSN3</label>
|
||||
<description>Maximum withdrawn apparent power of the day on phase 3</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsn1Minus1" typeId="powerType">
|
||||
<channel id="smaxsn1Minus1" typeId="power">
|
||||
<label>SMAXSN1-1</label>
|
||||
<description>Maximum withdrawn apparent power of the previous day on phase 1</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsn2Minus1" typeId="powerType">
|
||||
<channel id="smaxsn2Minus1" typeId="power">
|
||||
<label>SMAXSN2-1</label>
|
||||
<description>Maximum withdrawn apparent power of the previous day on phase 2</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsn3Minus1" typeId="powerType">
|
||||
<channel id="smaxsn3Minus1" typeId="power">
|
||||
<label>SMAXSN3-1</label>
|
||||
<description>Maximum withdrawn apparent power of the previous day on phase 3</description>
|
||||
</channel>
|
||||
|
||||
<channel id="umoy2" typeId="potentialType">
|
||||
<channel id="umoy2" typeId="potential">
|
||||
<label>UMOY2</label>
|
||||
<description>Mean Voltage on phase 2</description>
|
||||
</channel>
|
||||
|
||||
<channel id="umoy3" typeId="potentialType">
|
||||
<channel id="umoy3" typeId="potential">
|
||||
<label>UMOY3</label>
|
||||
<description>Mean Voltage on phase 3</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsn1Date" typeId="dateTimeType">
|
||||
<channel id="smaxsn1Date" typeId="date-time">
|
||||
<label>SMAXSN1 TIMESTAMP</label>
|
||||
<description>Timestamp of SMAXSN1 value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsn2Date" typeId="dateTimeType">
|
||||
<channel id="smaxsn2Date" typeId="date-time">
|
||||
<label>SMAXSN2 TIMESTAMP</label>
|
||||
<description>Timestamp of SMAXSN2 value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsn3Date" typeId="dateTimeType">
|
||||
<channel id="smaxsn3Date" typeId="date-time">
|
||||
<label>SMAXSN3 TIMESTAMP</label>
|
||||
<description>Timestamp of SMAXSN3 value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsn1Minus1Date" typeId="dateTimeType">
|
||||
<channel id="smaxsn1Minus1Date" typeId="date-time">
|
||||
<label>SMAXSN1-1 TIMESTAMP</label>
|
||||
<description>Timestamp of SMAXSN1-1 value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsn2Minus1Date" typeId="dateTimeType">
|
||||
<channel id="smaxsn2Minus1Date" typeId="date-time">
|
||||
<label>SMAXSN2-1 TIMESTAMP</label>
|
||||
<description>Timestamp of SMAXSN2-1 value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="smaxsn3Minus1Date" typeId="dateTimeType">
|
||||
<channel id="smaxsn3Minus1Date" typeId="date-time">
|
||||
<label>SMAXSN3-1 TIMESTAMP</label>
|
||||
<description>Timestamp of SMAXSN3-1 value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="umoy2Date" typeId="dateTimeType">
|
||||
<channel id="umoy2Date" typeId="date-time">
|
||||
<label>UMOY2 TIMESTAMP</label>
|
||||
<description>Timestamp of UMOY2 value</description>
|
||||
</channel>
|
||||
|
||||
<channel id="umoy3Date" typeId="dateTimeType">
|
||||
<channel id="umoy3Date" typeId="date-time">
|
||||
<label>UMOY3 TIMESTAMP</label>
|
||||
<description>Timestamp of UMOY3 value</description>
|
||||
</channel>
|
||||
|
||||
+235
-7
@@ -4,14 +4,14 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<channel-type id="stringType">
|
||||
<channel-type id="string">
|
||||
<item-type>String</item-type>
|
||||
<label>Teleinfo String Type</label>
|
||||
<category>Energy</category>
|
||||
<state pattern="%s" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="energyType">
|
||||
<channel-type id="energy">
|
||||
<item-type>Number:Energy</item-type>
|
||||
<label>Teleinfo Energy Type</label>
|
||||
<category>Energy</category>
|
||||
@@ -22,7 +22,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="currentType">
|
||||
<channel-type id="current">
|
||||
<item-type>Number:ElectricCurrent</item-type>
|
||||
<label>Teleinfo Current Type</label>
|
||||
<category>Energy</category>
|
||||
@@ -33,7 +33,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="potentialType">
|
||||
<channel-type id="potential">
|
||||
<item-type>Number:ElectricPotential</item-type>
|
||||
<label>Teleinfo Potential Type</label>
|
||||
<category>Energy</category>
|
||||
@@ -44,7 +44,7 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="powerType">
|
||||
<channel-type id="power">
|
||||
<item-type>Number:Power</item-type>
|
||||
<label>Teleinfo Power Type</label>
|
||||
<category>Energy</category>
|
||||
@@ -55,18 +55,246 @@
|
||||
<state pattern="%d %unit%" readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="switchType">
|
||||
<channel-type id="power-factor">
|
||||
<item-type>Number</item-type>
|
||||
<label>Teleinfo PowerFactor Type</label>
|
||||
<category>Energy</category>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Power</tag>
|
||||
</tags>
|
||||
<state pattern="%d" readOnly="false"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="switch">
|
||||
<item-type>Switch</item-type>
|
||||
<label>Teleinfo Switch Type</label>
|
||||
<category>Energy</category>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="dateTimeType">
|
||||
<channel-type id="date-time">
|
||||
<item-type>DateTime</item-type>
|
||||
<label>Teleinfo DateTime Type</label>
|
||||
<category>Energy</category>
|
||||
<state readOnly="true" pattern="%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="contact">
|
||||
<item-type>Contact</item-type>
|
||||
<label>Contact Type</label>
|
||||
<category>Energy</category>
|
||||
<state readOnly="true"/>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="cut-off">
|
||||
<item-type>Number</item-type>
|
||||
<label>Cutoff Type</label>
|
||||
<description>This status describes the current cutoff type.</description>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="0">Not cutoff</option>
|
||||
<option value="1">Cutoff over power</option>
|
||||
<option value="2">Cutoff over voltage</option>
|
||||
<option value="3">Cutoff for delest</option>
|
||||
<option value="4">Cutoff from Eredis</option>
|
||||
<option value="5">Cutoff over heating with over currency</option>
|
||||
<option value="6">Cutoff over heating without over currency</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
|
||||
<channel-type id="over-voltage-state">
|
||||
<item-type>Number</item-type>
|
||||
<label>Overvoltage State</label>
|
||||
<description>Describes an over voltage condition possible state.</description>
|
||||
<tags>
|
||||
<tag>Alarm</tag>
|
||||
<tag>Voltage</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="0">No overvoltage</option>
|
||||
<option value="1">Overvoltage</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="exceeding-power-state">
|
||||
<item-type>Number</item-type>
|
||||
<label>Exceeding Power State</label>
|
||||
<description>Describe an Exceeding power condition state papp > pmax.</description>
|
||||
<tags>
|
||||
<tag>Alarm</tag>
|
||||
<tag>Power</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="0">No exceeding power</option>
|
||||
<option value="1">Exceeding power</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="function">
|
||||
<item-type>Number</item-type>
|
||||
<label>Function Mode</label>
|
||||
<description>Tell if the meter is in Consummer mode or Producer mode.</description>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Mode</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="0">Consummer</option>
|
||||
<option value="1">Producer</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="direction">
|
||||
<item-type>Number</item-type>
|
||||
<label>Active Energy</label>
|
||||
<description>Tell about energy direction, if negative we take energy from network, if positive we inject energy.</description>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="0">Active energy positive</option>
|
||||
<option value="1">Active energy negative</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="clock-state">
|
||||
<item-type>Number</item-type>
|
||||
<label>Clock State</label>
|
||||
<description>State of the clock.</description>
|
||||
<tags>
|
||||
<tag>Measurement</tag>
|
||||
<tag>Alarm</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="0">Clock ok</option>
|
||||
<option value="1">Clock degrade</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="plc">
|
||||
<item-type>Number</item-type>
|
||||
<label>PLC Mode</label>
|
||||
<description>Mode of the PLC</description>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
<tag>Mode</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="0">Historic mode</option>
|
||||
<option value="1">Standard mode</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="outputcom-state">
|
||||
<item-type>Number</item-type>
|
||||
<label>Output Com State</label>
|
||||
<description>State of the communication output</description>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
<tag>Mode</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="0">Desactivated</option>
|
||||
<option value="1">Activated without security</option>
|
||||
<option value="2">Unknow</option>
|
||||
<option value="3">Activated with security</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="plc-state">
|
||||
<item-type>Number</item-type>
|
||||
<label>PLC State</label>
|
||||
<description>State of the PLC</description>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="0">New/Unlock</option>
|
||||
<option value="1">New/Lock</option>
|
||||
<option value="2">Registered</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="synchro-plc-state">
|
||||
<item-type>Number</item-type>
|
||||
<label>PLC Synchro State</label>
|
||||
<description>State of the PLC Synchro</description>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="0">PLC Sync</option>
|
||||
<option value="1">PLC Not Sync</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="moving-tips">
|
||||
<item-type>Number</item-type>
|
||||
<label>Moving Tips</label>
|
||||
<description>Indicate a special tariff slot for a specific period.</description>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="0">Not moving tips advice</option>
|
||||
<option value="1">Moving tips advice 1</option>
|
||||
<option value="2">Moving tips advice 2</option>
|
||||
<option value="3">Moving tips advice 3</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="tempo">
|
||||
<item-type>Number</item-type>
|
||||
<label>Tempo Color Information</label>
|
||||
<description>This status describes the tempo color of a day.</description>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state>
|
||||
<options>
|
||||
<option value="0">Unknow</option>
|
||||
<option value="1">Blue</option>
|
||||
<option value="2">White</option>
|
||||
<option value="3">Red</option>
|
||||
</options>
|
||||
</state>
|
||||
</channel-type>
|
||||
|
||||
<channel-type id="rate">
|
||||
<item-type>Number</item-type>
|
||||
<label>Numeric Rate Type</label>
|
||||
<category>energy</category>
|
||||
<tags>
|
||||
<tag>Status</tag>
|
||||
</tags>
|
||||
<state readOnly="true" pattern="%.0f"/>
|
||||
</channel-type>
|
||||
|
||||
|
||||
</thing:thing-descriptions>
|
||||
|
||||
+3
-2
@@ -4,16 +4,17 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="lsmm_electricitymeter" listed="false">
|
||||
<thing-type id="lsmm_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
<bridge-type-ref id="d2lcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
|
||||
<label>Linky Single-phase</label>
|
||||
<description>Single-phase Linky Electricity meter in standard mode</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channel-groups>
|
||||
<channel-group id="commonLSMGroup" typeId="commonLSMGroupType"/>
|
||||
<channel-group id="commonLSMGroup" typeId="common-lsm-group-type"/>
|
||||
</channel-groups>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+4
-3
@@ -4,17 +4,18 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="lsmm_prod_electricitymeter" listed="false">
|
||||
<thing-type id="lsmm_prod_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
<bridge-type-ref id="d2lcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
|
||||
<label>Linky Single-phase Producer</label>
|
||||
<description>Single-phase producer Linky Electricity meter in standard mode</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channel-groups>
|
||||
<channel-group id="commonLSMGroup" typeId="commonLSMGroupType"/>
|
||||
<channel-group id="producerLSMGroup" typeId="producerLSMGroupType"/>
|
||||
<channel-group id="commonLSMGroup" typeId="common-lsm-group-type"/>
|
||||
<channel-group id="producerLSMGroup" typeId="three-phased-lsm-group-type"/>
|
||||
</channel-groups>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+4
-3
@@ -4,17 +4,18 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="lsmt_electricitymeter" listed="false">
|
||||
<thing-type id="lsmt_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
<bridge-type-ref id="d2lcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
|
||||
<label>Linky Three-phase</label>
|
||||
<description>Three-phase Linky Electricity meter in standard mode</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channel-groups>
|
||||
<channel-group id="commonLSMGroup" typeId="commonLSMGroupType"/>
|
||||
<channel-group id="threePhasedLSMGroup" typeId="threePhasedLSMGroupType"/>
|
||||
<channel-group id="commonLSMGroup" typeId="common-lsm-group-type"/>
|
||||
<channel-group id="threePhasedLSMGroup" typeId="three-phased-lsm-group-type"/>
|
||||
</channel-groups>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+5
-4
@@ -4,18 +4,19 @@
|
||||
xmlns:thing="https://openhab.org/schemas/thing-description/v1.0.0"
|
||||
xsi:schemaLocation="https://openhab.org/schemas/thing-description/v1.0.0 https://openhab.org/schemas/thing-description-1.0.0.xsd">
|
||||
|
||||
<thing-type id="lsmt_prod_electricitymeter" listed="false">
|
||||
<thing-type id="lsmt_prod_electricitymeter" listed="true">
|
||||
<supported-bridge-type-refs>
|
||||
<bridge-type-ref id="serialcontroller"/>
|
||||
<bridge-type-ref id="d2lcontroller"/>
|
||||
</supported-bridge-type-refs>
|
||||
|
||||
<label>Linky Three-phase Producer</label>
|
||||
<description>Three-phase producer Linky Electricity meter in standard mode</description>
|
||||
<semantic-equipment-tag>ElectricMeter</semantic-equipment-tag>
|
||||
<channel-groups>
|
||||
<channel-group id="commonLSMGroup" typeId="commonLSMGroupType"/>
|
||||
<channel-group id="producerLSMGroup" typeId="producerLSMGroupType"/>
|
||||
<channel-group id="threePhasedLSMGroup" typeId="threePhasedLSMGroupType"/>
|
||||
<channel-group id="commonLSMGroup" typeId="three-phased-lsm-group-type"/>
|
||||
<channel-group id="producerLSMGroup" typeId="producer-lsm-group-type"/>
|
||||
<channel-group id="threePhasedLSMGroup" typeId="three-phased-lsm-group-type"/>
|
||||
</channel-groups>
|
||||
|
||||
<config-description-ref uri="thing-type:teleinfo:adco"/>
|
||||
|
||||
+1
-11
@@ -9,7 +9,7 @@
|
||||
<description>Teleinfo USB Stick with Serial Interface</description>
|
||||
|
||||
<channels>
|
||||
<channel id="invalidFrameCounter" typeId="invalidFrameCounterType"/>
|
||||
<channel id="invalidFrameCounter" typeId="invalid-frame-counter"/>
|
||||
</channels>
|
||||
|
||||
<config-description>
|
||||
@@ -44,14 +44,4 @@
|
||||
</parameter>
|
||||
</config-description>
|
||||
</bridge-type>
|
||||
|
||||
|
||||
<channel-type id="invalidFrameCounterType">
|
||||
<item-type>Number</item-type>
|
||||
<label>Frames Corrupted</label>
|
||||
<description>Counter tracking the number of frames invalid/corrupted (checksum)</description>
|
||||
<category></category>
|
||||
<state pattern="%d" readOnly="true"></state>
|
||||
</channel-type>
|
||||
|
||||
</thing:thing-descriptions>
|
||||
|
||||
+24
-22
@@ -33,35 +33,37 @@ public class FrameUtilTest {
|
||||
|
||||
@Test
|
||||
public void testComputeGroupLineChecksumThreePhaseProd() throws Exception {
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(
|
||||
new FileInputStream(TestUtils.getTestFile("linky-tic-mode-standard-three-phase-prod.raw"))));
|
||||
String groupLine;
|
||||
int i = 0;
|
||||
while ((groupLine = bufferedReader.readLine()) != null) {
|
||||
if (i >= 1 && !TeleinfoInputStream.isHeaderFrame(groupLine)) {
|
||||
char expected = groupLine.charAt(groupLine.length() - 1);
|
||||
char actual = FrameUtil.computeGroupLineChecksum(groupLine.substring(0, groupLine.length() - 2),
|
||||
TeleinfoTicMode.STANDARD);
|
||||
assertEquals(expected, actual, i + " " + groupLine + " " + (int) expected + " " + (int) actual);
|
||||
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(
|
||||
new FileInputStream(TestUtils.getTestFile("linky-tic-mode-standard-three-phase-prod.raw"))))) {
|
||||
String groupLine;
|
||||
int i = 0;
|
||||
while ((groupLine = bufferedReader.readLine()) != null) {
|
||||
if (i >= 1 && !TeleinfoInputStream.isHeaderFrame(groupLine)) {
|
||||
char expected = groupLine.charAt(groupLine.length() - 1);
|
||||
char actual = FrameUtil.computeGroupLineChecksum(groupLine.substring(0, groupLine.length() - 2),
|
||||
TeleinfoTicMode.STANDARD);
|
||||
assertEquals(expected, actual, i + " " + groupLine + " " + (int) expected + " " + (int) actual);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testComputeGroupLineChecksumSinglePhaseProd() throws Exception {
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(
|
||||
new FileInputStream(TestUtils.getTestFile("linky-tic-mode-standard-single-phase-prod.raw"))));
|
||||
String groupLine;
|
||||
int i = 0;
|
||||
while ((groupLine = bufferedReader.readLine()) != null) {
|
||||
if (i >= 1 && !TeleinfoInputStream.isHeaderFrame(groupLine)) {
|
||||
char expected = groupLine.charAt(groupLine.length() - 1);
|
||||
char actual = FrameUtil.computeGroupLineChecksum(groupLine.substring(0, groupLine.length() - 2),
|
||||
TeleinfoTicMode.STANDARD);
|
||||
assertEquals(expected, actual, i + " " + groupLine + " " + (int) expected + " " + (int) actual);
|
||||
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(
|
||||
new FileInputStream(TestUtils.getTestFile("linky-tic-mode-standard-single-phase-prod.raw"))))) {
|
||||
String groupLine;
|
||||
int i = 0;
|
||||
while ((groupLine = bufferedReader.readLine()) != null) {
|
||||
if (i >= 1 && !TeleinfoInputStream.isHeaderFrame(groupLine)) {
|
||||
char expected = groupLine.charAt(groupLine.length() - 1);
|
||||
char actual = FrameUtil.computeGroupLineChecksum(groupLine.substring(0, groupLine.length() - 2),
|
||||
TeleinfoTicMode.STANDARD);
|
||||
assertEquals(expected, actual, i + " " + groupLine + " " + (int) expected + " " + (int) actual);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+8
-1
@@ -12,6 +12,8 @@
|
||||
*/
|
||||
package org.openhab.binding.teleinfo.util;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
@@ -30,7 +32,12 @@ public final class TestUtils {
|
||||
}
|
||||
|
||||
public static File getTestFile(String testResourceName) {
|
||||
URL url = TestUtils.class.getClassLoader().getResource(testResourceName);
|
||||
ClassLoader classLoader = TestUtils.class.getClassLoader();
|
||||
assertNotNull(classLoader);
|
||||
|
||||
URL url = classLoader.getResource(testResourceName);
|
||||
assertNotNull(url);
|
||||
|
||||
try {
|
||||
return new File(url.toURI());
|
||||
} catch (URISyntaxException e) {
|
||||
|
||||
Reference in New Issue
Block a user