mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-24 15:19:21 +00:00
36_WMBus: initial support for mode 7 encryption, mostly untested
git-svn-id: https://svn.fhem.de/fhem/trunk@20012 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
003117c3c1
commit
896cbf52ad
@ -1,5 +1,7 @@
|
||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||
# Do not insert empty lines here, update check depends on it.
|
||||
- feature: 36_WMBUS: initial support for mode 7 encryption (mostly untested)
|
||||
Digest::CMAC must be installed
|
||||
- feature: 72_XiaomiDevice: added S1 vacuum states
|
||||
- bugfix: 73_AutoShuttersControl: fix bug forum #966778
|
||||
- change: 49_SSCam: commandref revised
|
||||
|
@ -480,37 +480,37 @@ WMBUS_Attr(@)
|
||||
every minute.
|
||||
<br>
|
||||
WMBus messages can be optionally encrypted. In that case the matching AESkey must be specified with attr AESkey. Otherwise the decryption
|
||||
will fail and no relevant data will be available.
|
||||
will fail and no relevant data will be available. The module can decrypt messages encrypted according to security profile A or B (mode 5 and 7).
|
||||
<br><br>
|
||||
<b>Prerequisites</b><br>
|
||||
This module requires the perl modules Digest::CRC, Crypt::Mode::CBC and Crypt::Mode::CTR (Crypt modules only if encrypted messages should be processed).<br>
|
||||
This module requires the perl modules Digest::CRC, Crypt::Mode::CBC, Crypt::Mode::CTR and Digest::CMAC (last three only if encrypted messages should be processed).<br>
|
||||
On a debian based system these can be installed with<br>
|
||||
<code>
|
||||
sudo apt-get install libdigest-crc-perl<br>
|
||||
sudo cpan -i Crypt::Mode::CBC Crypt::Mode:CTR
|
||||
sudo cpan -i Crypt::Mode::CBC Crypt::Mode:CTR Digest::CMAC
|
||||
</code>
|
||||
<br><br>
|
||||
<a name="WMBUSdefine"></a>
|
||||
<b>Define</b>
|
||||
<ul>
|
||||
<code>define <name> WMBUS [<manufacturer id> <identification number> <version> <type> [<MessageEncoding>]]|<bHexCode></code> <br>
|
||||
<code>define <name> WMBUS [<manufacturer id> <identification number> <version> <type> [<MessageEncoding>]]|<b[<MessageEncoding>]HexCode></code> <br>
|
||||
<br>
|
||||
Normally a WMBus device isn't defined manually but automatically through the <a href="#autocreate">autocreate</a> mechanism upon the first reception of a message.
|
||||
<br>
|
||||
For a manual definition there are two ways.
|
||||
<ul>
|
||||
<li>
|
||||
By specifying a raw WMBus message as received by a CUL. Such a message starts with a lower case 'b' and contains at least 24 hexadecimal digits.
|
||||
By specifying a raw WMBus message as received by an IODev. Such a message starts with a lower case 'b' and contains at least 24 hexadecimal digits.
|
||||
The WMBUS module extracts all relevant information from such a message.
|
||||
</li>
|
||||
<li>
|
||||
Explictly specify the information that uniquely identifies a WMBus device. <br>
|
||||
The manufacturer code, which is is a three letter shortcut of the manufacturer name. See
|
||||
<a href="http://dlms.com/organization/flagmanufacturesids/index.html">dlms.com</a> for a list of registered ids.<br>
|
||||
<a href="https://www.dlms.com/flag-id/flag-id-list">dlms.com</a> for a list of registered ids.<br>
|
||||
The identification number is the serial no of the meter.<br>
|
||||
version is the version code of the meter<br>
|
||||
type is the type of the meter, e.g. water or electricity encoded as a number.<br>
|
||||
MessageEncoding is either CUL or AMB, depending on which kind of IODev is used.
|
||||
MessageEncoding is either CUL or AMB, depending on which kind of IODev is used. The default encoding is CUL.
|
||||
</li>
|
||||
<br>
|
||||
</ul>
|
||||
@ -525,25 +525,31 @@ WMBUS_Attr(@)
|
||||
<a name="WMBUSattr"></a>
|
||||
<b>Attributes</b>
|
||||
<ul>
|
||||
<a name="IODev"></a>
|
||||
<li><a href="#IODev">IODev</a><br>
|
||||
Set the IO or physical device which should be used for receiving signals
|
||||
for this "logical" device. An example for the physical device is a CUL.
|
||||
</li><br>
|
||||
<li>AESKey<br>
|
||||
<a name="AESkey"></a>
|
||||
<li>AESkey<br>
|
||||
A 16 byte AES-Key in hexadecimal digits. Used to decrypt messages from meters which have encryption enabled.
|
||||
</li><br>
|
||||
<li>
|
||||
<a name="ignore"></a>
|
||||
<a href="#ignore">ignore</a>
|
||||
</li><br>
|
||||
<a name="rawmsg_as_reading"></a>
|
||||
<li>rawmsg_as_reading<br>
|
||||
If set to 1, received raw messages will be stored in the reading rawmsg. This can be used to log raw messages to help with debugging.
|
||||
</li>
|
||||
</li><br>
|
||||
<a name="ignoreUnknownDataBlocks"></a>
|
||||
<li>ignoreUnknownDataBlocks<br>
|
||||
If set to 1, datablocks containing unknown/manufacturer specific data will be ignored. This is useful if a meter sends data in different
|
||||
formats of which some can be interpreted and some not. This prevents the unknown data overwriting the readings of the data that can be
|
||||
interpreted.
|
||||
</li>
|
||||
<li>ignoreMasterMessages
|
||||
</li><br>
|
||||
<a name="ignoreMasterMessages"></a>
|
||||
<li>ignoreMasterMessages<br>
|
||||
Some devices (e.g. Letrika solar inverters) only send data if they have received a special message from a master device.
|
||||
The messages sent by the master are ignored unless explictly enabled by this attribute.
|
||||
</li>
|
||||
@ -596,20 +602,20 @@ WMBUS_Attr(@)
|
||||
Minutentakt gesendet werden.
|
||||
<br>
|
||||
WMBus Nachrichten können optional verschlüsselt werden. Bei verschlüsselten Nachrichten muss der passende Schlüssel mit dem Attribut AESkey angegeben werden.
|
||||
Andernfalls wird die Entschlüsselung fehlschlagen und es können keine relevanten Daten ausgelesen werden.
|
||||
Andernfalls wird die Entschlüsselung fehlschlagen und es können keine relevanten Daten ausgelesen werden. Das Modul kann mit Security Profile A oder B (Mode 5 und 7) verschlüsselte Nachrichten entschlüsseln.
|
||||
<br><br>
|
||||
<b>Voraussetzungen</b><br>
|
||||
Dieses Modul benötigt die perl Module Digest::CRC, Crypt::Mode::CBC und Crypt::ModeL::CTR (die Crypt Module werden nur benötigt wenn verschlüsselte Nachrichten verarbeitet werden sollen).<br>
|
||||
Dieses Modul benötigt die perl Module Digest::CRC, Crypt::Mode::CBC, Crypt::ModeL::CTR und Digest::CMAC (die letzten drei Module werden nur benötigt wenn verschlüsselte Nachrichten verarbeitet werden sollen).<br>
|
||||
Bei einem Debian basierten System können diese so installiert werden<br>
|
||||
<code>
|
||||
sudo apt-get install libdigest-crc-perl<br>
|
||||
sudo cpan -i Crypt::Mode::CBC Crypt::Mode::CTR
|
||||
sudo cpan -i Crypt::Mode::CBC Crypt::Mode::CTR Digest::CMAC
|
||||
</code>
|
||||
<br><br>
|
||||
<a name="WMBUSdefine"></a>
|
||||
<b>Define</b>
|
||||
<ul>
|
||||
<code>define <name> WMBUS [<manufacturer id> <identification number> <version> <type> [<MessageEncoding>]]|<bHexCode></code> <br>
|
||||
<code>define <name> WMBUS [<manufacturer id> <identification number> <version> <type> [<MessageEncoding>]]|<b[<MessageEncoding>]HexCode></code> <br>
|
||||
<br>
|
||||
Normalerweise wird ein WMBus Device nicht manuell angelegt. Dies geschieht automatisch bem Empfang der ersten Nachrichten eines Gerätes über den
|
||||
fhem <a href="#autocreate">autocreate</a> Mechanismus.
|
||||
@ -624,11 +630,11 @@ WMBUS_Attr(@)
|
||||
<li>
|
||||
Durch explizite Angabe der Informationen die ein WMBus Gerät eindeutig identfizieren.<br>
|
||||
Der Hersteller Code, besteht aus drei Buchstaben als Abkürzung des Herstellernamens. Eine Liste der Abkürzungen findet sich unter
|
||||
<a href="http://dlms.com/organization/flagmanufacturesids/index.html">dlms.com</a><br>
|
||||
<a href="https://www.dlms.com/flag-id/flag-id-list">dlms.com</a><br>
|
||||
Die Idenitfikationsnummer ist die Seriennummer des Zählers.<br>
|
||||
Version ist ein Versionscode des Zählers.<br>
|
||||
Typ ist die Art des Zählers, z. B. Wasser oder Elektrizität, kodiert als Zahl.<br>
|
||||
MessageEncoding ist entweder CUL oder AMB, je nachdem welche Art von IODev verwendet wird
|
||||
MessageEncoding ist entweder CUL oder AMB, je nachdem welche Art von IODev verwendet wird. Wird kein Encoding angegeben so wird CUL verwendet.
|
||||
</li>
|
||||
<br>
|
||||
</ul>
|
||||
@ -643,24 +649,29 @@ WMBUS_Attr(@)
|
||||
<a name="WMBUSattr"></a>
|
||||
<b>Attributes</b>
|
||||
<ul>
|
||||
<a name="IODev"></a>
|
||||
<li><a href="#IODev">IODev</a><br>
|
||||
Setzt den IO oder physisches Gerät welches für den Empfang der Signale für dieses 'logische' Gerät verwendet werden soll.
|
||||
Ein Beispiel für ein solches Gerät ist ein CUL.
|
||||
</li><br>
|
||||
<a name="AESkey"></a>
|
||||
<li>AESKey<br>
|
||||
Ein 16 Bytes langer AES-Schlüssel in hexadezimaler Schreibweise. Wird verwendet um Nachrichten von Zählern zu entschlüsseln bei denen
|
||||
die Verschlüsselung aktiviert ist.
|
||||
</li><br>
|
||||
<li>
|
||||
<a name="ignore"></a>
|
||||
<a href="#ignore">ignore</a>
|
||||
</li><br>
|
||||
<li>rawmsg_as_reading<br>
|
||||
Wenn auf 1 gesetzt so werden empfangene Nachrichten im Reading rawmsg gespeichert. Das kann verwendet werden um Rohnachrichten zu loggen und beim Debugging zu helfen.
|
||||
</li>
|
||||
</li><br>
|
||||
<a name="rawmsg_as_reading"></a>
|
||||
<li>ignoreUnknownDataBlocks<br>
|
||||
Wenn auf 1 gesetzt so werden Datenblocks die unbekannte/herstellerspezifische Daten enthalten ignoriert. Das ist hilfreich wenn ein Zähler Daten in unterschiedlichen
|
||||
Formaten sendet von denen einige nicht interpretiert werden können. Es verhindert, dass die unbekannten Daten die Readings der interpretierbaren Daten überschreiben.
|
||||
</li>
|
||||
</li><br>
|
||||
<a name="ignoreUnknownDataBlocks"></a>
|
||||
<li>ignoreMasterMessages
|
||||
Einige Geräte (z. B. Letrika Wechselrichter) senden nur dann Daten wenn sie eine spezielle Nachricht von einem Mastergerät erhalten haben.
|
||||
Die Nachrichten von dem Master werden ignoriert es sei denn es wird explizit mit diesem Attribut eingeschaltet.
|
||||
|
Loading…
x
Reference in New Issue
Block a user