Skip to content

Commit

Permalink
[teleinfo] Add support for Standard tic mode (openhab#11375)
Browse files Browse the repository at this point in the history
* Add a ticMode parameter to serial controller

Signed-off-by: Olivier Marceau <[email protected]>

* Improve checksum verification

Signed-off-by: Olivier Marceau <[email protected]>

* Add parameter to deactivate checksum verification

Signed-off-by: Olivier Marceau <[email protected]>

* Add standard field labels

Signed-off-by: Olivier Marceau <[email protected]>

* Add things and channels for standard tic mode

Signed-off-by: Olivier Marceau <[email protected]>

* Add standard tic mode timestamp

Signed-off-by: Olivier Marceau <[email protected]>

* Fix typo

Signed-off-by: Olivier Marceau <[email protected]>

* Add some required null annotation

Signed-off-by: Olivier Marceau <[email protected]>

* Add parser for relais states

Signed-off-by: Olivier Marceau <[email protected]>

* Add relais channels and refactor standard mode channels

Signed-off-by: Olivier Marceau <[email protected]>

* Add @NonNullByDefault on enum

Signed-off-by: Olivier Marceau <[email protected]>

* Update documentation

Signed-off-by: Olivier Marceau <[email protected]>

* Fix formula in documentation

Signed-off-by: Olivier Marceau <[email protected]>

* Fix code issues

Signed-off-by: Olivier Marceau <[email protected]>

* Move channel type description in same file than channel group type description

Signed-off-by: Olivier Marceau <[email protected]>

* Add pattern specification to dateTime channel type

Signed-off-by: Olivier Marceau <[email protected]>

* Add missing channelGroup id in channel UID

Signed-off-by: Olivier Marceau <[email protected]>

* Add trace log

Signed-off-by: Olivier Marceau <[email protected]>

* Fix group labels

Signed-off-by: Olivier Marceau <[email protected]>

* Make labels uppercase

Signed-off-by: Olivier Marceau <[email protected]>

* Make options lowercase

Signed-off-by: Olivier Marceau <[email protected]>

* Simplify group label

Signed-off-by: Olivier Marceau <[email protected]>
  • Loading branch information
olivierkeke authored and andan67 committed Nov 5, 2022
1 parent 56b8ceb commit 4ca5931
Show file tree
Hide file tree
Showing 34 changed files with 1,765 additions and 90 deletions.
108 changes: 92 additions & 16 deletions bundles/org.openhab.binding.teleinfo/README.md
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ These values can be used to

## Supported Things

### Historical TIC mode

Historical TIC mode is the only mode of all telemeters before Linky models and the default mode for Linky telemeters.

The Teleinfo binding provides support for both single-phase and three-phase connection, ICC evolution and the following pricing modes:

- HCHP mode
Expand All @@ -34,6 +38,19 @@ 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

Linky telemeters add a new `Standard` mode with more detailed information but still provide information on the legacy format under the `Historical` denomination.

Standard mode doesn't depend on the pricing options, but it adds some useful information for electricity producers.

| Thing type | Connection | Producer mode |
|--------------------------------------------|--------------|--------------|
| lsmm_electricitymeter | single-phase | |
| lsmm_prod_electricitymeter | single-phase | [x] |
| lstm_electricitymeter | three-phase | |
| lstm_prod_electricitymeter | three-phase | [x] |

## Discovery

Before the binding can be used, a serial controller must be added. This needs to be done manually. Select __Teleinfo Serial Controller__ and enter the serial port.
Expand All @@ -49,30 +66,33 @@ Once the serial controller added, electricity meters will automatically appear a
|----------------------|--------------|---------------------------------------|---------------------------------|
| `serialcontroller` | `serialport` | Path to the serial controller | /dev/ttyXXXX, rfc2217://ip:port |
| `*_electricitymeter` | `adco` | Electricity meter identifier | 12 digits number |
| | `ticMode` | TIC mode | `STANDARD`, `HISTORICAL` (default) |

## Channels

### Historical TIC mode

Channel availability depends on the electricity connection (single or three-phase) and on the pricing mode (Base, HCHP, EJP or Tempo).

| Channel | Type | Description | Phase | Mode |
| Channel | Type | Description | Connection | Mode |
|----------|---------------------------|----------------------------------------------------------|--------|-------|
| isousc | `Number:ElectricCurrent` | Subscribed electric current | All | All |
| ptec | `String` | Current pricing period | All | All |
| imax | `Number:ElectricCurrent` | Maximum consumed electric current | Single | All |
| imax1 | `Number:ElectricCurrent` | Maximum consumed electric current on phase 1 | Three | All |
| imax2 | `Number:ElectricCurrent` | Maximum consumed electric current on phase 2 | Three | All |
| imax3 | `Number:ElectricCurrent` | Maximum consumed electric current on phase 3 | Three | All |
| adps | `Number:ElectricCurrent` | Excess electric current warning | Single | All |
| adir1 | `Number:ElectricCurrent` | Excess electric current on phase 1 warning | Three | All |
| adir2 | `Number:ElectricCurrent` | Excess electric current on phase 2 warning | Three | All |
| adir3 | `Number:ElectricCurrent` | Excess electric current on phase 3 warning | Three | All |
| iinst | `Number:ElectricCurrent` | Instantaneous electric current | Single | All |
| iinst1 | `Number:ElectricCurrent` | Instantaneous electric current on phase 1 | Three | All |
| iinst2 | `Number:ElectricCurrent` | Instantaneous electric current on phase 2 | Three | All |
| iinst3 | `Number:ElectricCurrent` | Instantaneous electric current on phase 3 | Three | All |
| ppot | `String` | Electrical potential presence | Three | All |
| pmax | `Number:Energy` | Maximum consumed electric power on all phases | Three | All |
| papp | `Number:Power` | Instantaneous apparent power | Three, single (ICC evolution only) | All |
| imax | `Number:ElectricCurrent` | Maximum consumed electric current | Single-phase | All |
| imax1 | `Number:ElectricCurrent` | Maximum consumed electric current on phase 1 | Three-phase | All |
| imax2 | `Number:ElectricCurrent` | Maximum consumed electric current on phase 2 | Three-phase | All |
| imax3 | `Number:ElectricCurrent` | Maximum consumed electric current on phase 3 | Three-phase | All |
| adps | `Number:ElectricCurrent` | Excess electric current warning | Single-phase | All |
| adir1 | `Number:ElectricCurrent` | Excess electric current on phase 1 warning | Three-phase | All |
| adir2 | `Number:ElectricCurrent` | Excess electric current on phase 2 warning | Three-phase | All |
| adir3 | `Number:ElectricCurrent` | Excess electric current on phase 3 warning | Three-phase | All |
| iinst | `Number:ElectricCurrent` | Instantaneous electric current | Single-phase | All |
| iinst1 | `Number:ElectricCurrent` | Instantaneous electric current on phase 1 | Three-phase | All |
| iinst2 | `Number:ElectricCurrent` | Instantaneous electric current on phase 2 | Three-phase | All |
| iinst3 | `Number:ElectricCurrent` | Instantaneous electric current on phase 3 | Three-phase | All |
| ppot | `String` | Electrical potential presence | Three-phase | All |
| pmax | `Number:Energy` | Maximum consumed electric power on all phases | Three-phase | All |
| papp | `Number:Power` | Instantaneous apparent power | Three-phase, single-phase (ICC evolution only) | All |
| hhphc | `String` | Pricing schedule group | All | HCHP |
| hchc | `Number:Energy` | Total consumed energy at low rate pricing | All | HCHP |
| hchp | `Number:Energy` | Total consumed energy at high rate pricing | All | HCHP |
Expand All @@ -88,8 +108,64 @@ Channel availability depends on the electricity connection (single or three-phas
| pejp | `Number:Duration` | Prior notice to EJP start | All | EJP |
| demain | `String` | Following day color | All | Tempo |

### Standard TIC mode

| Channel | Type | Description | Connection | Mode |
|----------|---------------------------|----------------------------------------------------------|--------|-------|
| ngtf | `String` | Provider schedule name | All | All |
| ltarf | `String` | Current pricing label | All | All |
| east | `Number:Energy` | Total active energy withdrawn | All | All |
| easf*XX* | `Number:Energy` | Active energy withdrawn from provider on index <img src="https://render.githubusercontent.com/render/math?math=XX \in \{01,\dots,10\}"/> | All | All |
| easd*XX* | `Number:Energy` | Active energy withdrawn from distributor on index <img src="https://render.githubusercontent.com/render/math?math=XX \in \{01,\dots,04\}"/> | All | All |
| irms*X* | `Number:ElectricCurrent` | RMS Current on phase *X* | All for <img src="https://render.githubusercontent.com/render/math?math=X=1"/>, Three-phase for <img src="https://render.githubusercontent.com/render/math?math=X\in \{2,3\}"/> | All |
| urms*X* | `Number:Potential` | RMS Voltage on phase *X* | All for <img src="https://render.githubusercontent.com/render/math?math=X=1"/>, Three-phase for <img src="https://render.githubusercontent.com/render/math?math=X\in \{2,3\}"/> | All |
| pref | `Number:Power` | Reference apparent power | All | All |
| pcoup | `Number:Power` | Apparent power rupture capacity | All | All |
| sinsts | `Number:Power` | Instantaneous withdrawn apparent power | Single-phase | All |
| smaxsn | `Number:Power` | Maximum withdrawn apparent power of the day | Single-phase | All |
| smaxsnMinus1 | `Number:Power` | Maximum withdrawn apparent power of the previous day | Single-phase | All |
| ccasn | `Number:Power` | Active charge point N | All | All |
| ccasnMinus1 | `Number:Power` | Active charge point N-1 | All | All |
| umoy*X* | `Number:Potential` | Mean Voltage on phase *X* | All for <img src="https://render.githubusercontent.com/render/math?math=X=1"/>, Three-phase for <img src="https://render.githubusercontent.com/render/math?math=X\in \{2,3\}"/> | All |
| dpm*X* | `String` | Start of mobile peak period <img src="https://render.githubusercontent.com/render/math?math=X\in \{1,\dots,3\}"/> | All | All |
| fpm*X* | `String` | End of mobile peak period <img src="https://render.githubusercontent.com/render/math?math=X\in \{1,\dots,3\}"/> | All | All |
| msg1 | `String` | Short message | All | All |
| msg2 | `String` | Very short message | All | All |
| ntarf | `String` | Index of current pricing | All | All |
| njourf | `String` | Number of current provider schedule | All | All |
| njourfPlus1 | `String` | Number of next day provider schedule | All | All |
| pjourfPlus1 | `String` | Profile of next day provider schedule | All | All |
| ppointe | `String` | Profile of next rush day | All | All |
| date | `DateTime` | Date and Time | All | All |
| smaxsnDate | `DateTime` | Timestamp of SMAXSN value | All | All |
| smaxsnMinus1Date | `DateTime` | Timestamp of SMAXSN-1 value | All | All |
| ccasnDate | `DateTime` | Timestamp of CCASN value | All | All |
| ccasnMinus1Date | `DateTime` | Timestamp of CCASN-1 value | All | All |
| umoy*X*Date | `DateTime` | Timestamp of UMOY*X* value | All for <img src="https://render.githubusercontent.com/render/math?math=X=1"/>, Three-phase for <img src="https://render.githubusercontent.com/render/math?math=X\in \{2,3\}"/> | All |
| dpm*X*Date | `DateTime` | Date of DPM*X* | All | All |
| fpm*X*Date | `DateTime` | Date of FPM*X* | All | All |
| relais*X* | `Switch` | relais status (<img src="https://render.githubusercontent.com/render/math?math=X\in {1,\dots,8}"/> ) | All | All |
| sinsts*X* | `Number:Power` | Instantaneous withdrawn apparent power on phase *X* | Three-phase | All |
| smaxsn*X* | `Number:Power` | Maximum withdrawn apparent power of the day on phase *X* | Three-phase | All |
| smaxsn*X*Minus1 | `Number:Power` | Maximum withdrawn apparent power on the previous day on phase *X* | Three-phase | All |
| smaxs*X*nDate | `DateTime` | Timestamp of SMAXSN*X* value | Three-phase | All |
| smaxsn*X*Minus1Date | `DateTime` | Timestamp of SMAXSN*X*-1 value | Three-phase | All |
| eait | `Number:Energy` | Total active energy withdrawn | All | All |
| erq*X* | `Number:Energy` | Active energy withdrawn from provider on index <img src="https://render.githubusercontent.com/render/math?math=XX \in \{01,\dots,10\}"/> | All | All |
| sinsti | `Number:Energy` | Active energy withdrawn from distributor on index <img src="https://render.githubusercontent.com/render/math?math=XX \in \{01,\dots,04\}"/> | All | All |
| smaxin | `Number:Power` | Maximum injected apparent power of the day | All for <img src="https://render.githubusercontent.com/render/math?math=X=1"/>, Three-phase for <img src="https://render.githubusercontent.com/render/math?math=X\in \{2,3\}"/> | All |
| smaxinMinus1 | `Number:Power` | Maximum injected apparent power of the previous day | All for <img src="https://render.githubusercontent.com/render/math?math=X=1"/>, Three-phase for <img src="https://render.githubusercontent.com/render/math?math=X\in \{2,3\}"/> | All |
| ccain | `Number:Power` | Injected active charge point N | All | Producer |
| ccainMinus1 | `Number:Power` | Injected active charge point N-1 | All | Producer |
| smaxinDate | `DateTime` | Timestamp of SMAXIN value | All | Producer |
| smaxinMinus1Date | `DateTime` | Timestamp of SMAXIN-1 value | All | Producer |
| ccainDate | `DateTime` | Timestamp of CCAIN value | All | Producer |
| ccainMinus1Date | `DateTime` | Timestamp of CCAIN-1 value | All | Producer |

## Full Example

### 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` :

```
Expand Down
Loading

0 comments on commit 4ca5931

Please sign in to comment.