TA CMI UVR16x2 UVR1611
TA_CMI_JSON | |
---|---|
Zweck / Funktion | |
Auslesen von Ein- und Ausgabestatuswerten über das CMI der Firma Technische Alternative | |
Allgemein | |
Typ | Gerätemodul |
Details | |
Dokumentation | EN / DE Thema |
Modulname | 72_TA_CMI_JSON.pm |
Ersteller | DelMar (Forum /Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Das C.M.I. ist ein Zusatzmodul für mehrere "frei programmierbare Universalregler" der Firma Technische Alternative. Damit können die Steuerungen UVR1611, UVR16x2, RSM610, CAN-I/O45, CAN-EZ2, CAN-MTx2 und CAN-BC2 ins lokale Netzwerk eingebunden werden.
Das C.M.I. bietet eine JSON-Schnittstelle an, über die Input, Output und DL-Bus Werte der angeschlossenen Steuerungen abgefragt werden können.
Die Dokumentation zur hier verwendeten JSON-API des C.M.I. befindet sich hier: https://www.ta.co.at/download/dokumente/ unter "Regelgeräte & Erweiterungen"
Hinweise zum Betrieb mit FHEM
Die JSON-API erlaubt maximal eine Abfrage pro Minute. Darüber hinausgehende Versuche werden mit der Meldung TOO_MANY_REQUESTS
abgewiesen.
Wird ein Gerät nicht unterstützt, beantwortet das CMI die Anfrage mit dem Status DEVICE NOT SUPPORTED
.
Die folgenden Geräte werden laut API Dokumentation Version 3 unterstützt (Quelle siehe oben).
Device | ID (HEX) | Supported |
---|---|---|
CoE | 7F | No |
UVR1611 | 80 | Yes |
CAN-MT | 81 | No |
CAN-I/O44 | 82 | No |
CAN-I/O35 | 83 | No |
CAN-BC | 84 | No |
CAN-EZ | 85 | No |
CAN-TOUCH | 86 | No |
UVR16x2 | 87 | Yes |
RSM610 | 88 | Yes |
CAN-I/O45 | 89 | Yes |
CMI | 8A | No |
CAN-EZ2 | 8B | Yes |
CAN-MTx2 | 8C | Yes |
CAN-BC2 | 8D | Yes |
CUVR65 | 8E | Yes |
CAN-EZ3 | 8F | Yes |
UVR610 | 91 | Yes |
UVR67 | 92 | Yes |
BL-NET | A3 | No |
Welches Gerät erkannt wurde, wird in FHEM außerdem im Internal CAN_DEVICE
angezeigt.
Die Inoffizielle API
Zusätzlich zur Anbindung an die offizielle API verwendet dieses Modul auch einige der Schnittstellen, die das CMI Web-Interface verwendet.
Zum Beispiel um den Status der Ausgänge zeigen. Die Abfrage davon ist nicht an das 60 Sekunden Limit gebunden. Auch das CMI Webinterface fragt diese URL zB alle 5 Sekunden ab.
Außerdem ist das direkte Setzen von Fixwerten über Set-Befehle möglich.
Einbindung in FHEM
Definition:
defmod <name> TA_CMI_JSON <ip> <nodeId> [<queryParams>]
Konkretes Beispiel:
defmod cmi TA_CMI_JSON 192.168.4.250 1 I,O,D
Die nodeId
verweist auf die UVR16x2. Im CMI Web-Interface im Punkt CAN Bus wird ein Bild der UVR gezeigt. Daneben findet sich auch die Information, welcher Node das ist. Bei mir ist es die 1
.
queryParams
kann entweder I
, O
oder D
für Input, Output oder DL-Bus sein.
Damit wird angegeben, welche Informationen vom CMI abgefragt werden sollen.
Diese Abfrage kann, durch Komma getrennt, auch kombiniert erfolgen: I,O,D
. Achtung: keine Leerzeichen verwenden.
Falls nur der Status der Ausgänge (Hand-Ein, Hand-Aus, Auto-Ein, Auto-Aus) abgefragt werden soll, können die queryParams weggelassen werden.
Die Gerätedefinition ist komplett, die Konfiguration aber noch nicht vollständig.
Um Werte tatsächlich als Readings in FHEM zu speichern, müssen noch Namen für eben jene Readings vergeben werden.
Dies erfolgt mit Hilfe der Attribute readingNamesInputs
, readingNamesOutputs
und readingNamesDL-Bus
.
So wird mittels Index ein Name für jeden Wert definiert. Beispiel:
attr cmi readingNamesDL-Bus 1:Durchfluss_Solar 2:T.Solar_RL
Die Reihenfolge der Werte ist im UI der UVR16x2 sichtbar. Bitte beachten: bei dem hier verlangten Index handelt es sich nicht um die Absolute Nummer des Wertes, sondern nur um seine Reihenfolge:
Im hier gezeigten Beispiel muss Ladepumpe-Warmwasser
als Index 3
angegeben werden, da es der dritte Wert ist - nicht als 6
, was der Nummer des Ausgangs entsprechen würde.
Das konkrete Beispiel für die Outputs sieht so aus:
attr cmi readingNamesOutputs 1:UWP_FBH 2:UWP_Sonde 3:UWP_WW 4:UWP_Solar
Mit richtig konfigurierten Attributen werden die Readings wie im Screenshot angezeigt.
Anzeige des Status der Ausgänge
Das CMI Webinterface zeigt am oberen Bildschirmrand eine Statusübersicht über alle Ausgänge in beinahe Echtzeit.
Dafür müssen die Attribute outputStatesInterval
und readingNamesOutputs
gesetzt sein.
Zur Einmaligen Abfrage kann außerdem get readOutputStates
aufgerufen werden.
Damit werden dann zu den normalen Readings auch welche angelegt, die mit _State
enden. Diese können die Werte 0, 1, 3, 5 und 7 annehmen.
Wer es gern etwas sprechender hat, kann außerdem das Attribut prettyOutputStates
auf 1 setzen, dann werden auch _State_Pretty
Readings angelegt, die sprechende Werte, wie zB Auto-On
, enthalten.
01_Pumpe_FBH_State | 1 | 2021-02-20 18:10:47 |
01_Pumpe_FBH_State_Pretty | Auto-Off | 2021-02-20 18:10:47 |
Fixwerte setzen
Das Setzen von Fixwerten funktioniert über die Set Befehle fixwertAnalog
, fixwertDigital
und fixwertImpuls
.
Außerdem können regelmäßig verwendete Befehle über setList
konfiguriert und direkt ausgeführt werden.
attr cmi_rsm610 setList \ Licht_WC_Ein:noArg fixwertImpuls 3 1\ Licht_WC_Aus:noArg fixwertImpuls 4 1\ Freigabe_Pumpe_ein:noArg fixwertDigital 5 1\ Freigabe_Pumpe_aus:noArg fixwertDigital 5 0\ TempFrei fixwertAnalog 7\ TempWarm fixwertAnalog 7 60.0\ TempKalt fixwertAnalog 7 10.0
Licht_WC_Ein
und Licht_WC_Aus
sendet Impuls-Befehle (1 für Ein-Impuls, 0 für Aus-Impuls), wie sie zB für die Start-Stop Funktion oder Timer-Funktionen als Trigger verwendet werden.
Freigabe_Pumpe_ein
und Freigabe_Pumpe_aus
setzt einen digitalen Fixwert auf Ein/Ja oder Aus/Nein.
TempFrei
sendet einen Wert an Fixwert 7, der Wert selber kann aber über das Textfeld vergeben werden, da kein :noArg angegeben wurde.
TempWarm
sendet den analogen Wert 60.0 and Fixwert 7.
TempKalt
sendet den analogen Wert 10.0 and Fixwert 7.
Direktes Setzen von Ausgängen
Ausgänge direkt zu setzen (zB Hand-Ein, Hand-Aus) wird von diesem Modul nicht unterstützt.
Es wäre sehr einfach umzusetzen, weil es genauso wie das Setzen von Fixwerten funktioniert.
Allerdings sollte das manuelle Setzen von Ausgängen nicht automatisiert erfolgen (wie es über FHEM ja der Fall wäre).
Der richtige Weg, einen Ausgang über FHEM zu schalten, ist das Anlegen einer Logik-Funktion, welche auf Basis eines Fixwertes einen Ausgang schaltet.
Und dieser Fixwert kann ja wiederum über dieses Modul gesetzt werden.
Authentifizierung
Dieses Modul verwendet die Default-Zugangsdaten, um auf die CMI zuzugreifen.
Sollen andere verwendet werden, kann das über die Attribute username
und / oder password
konfiguriert werden.
Bitte beachten, dass zur Abfrage der JSON-API entweder ein admin oder user account verwendet werden muss. gast accounts dürfen keine Daten abfragen.
Ab Version 5 der API muss laut Doku ein admin Account zum Aufrufen der API verwendet werden.
Installation des Moduls
Das Modul ist seit 2.11.2018 Teil der FHEM Distribution.
Unterstützte Geräte
Obwohl das CMI mehrere Geräte am CAN-Bus unterstützt, wurde nur das UVR 16x2 vom Autor getestet, weil auch nur dieses zur Verfügung steht. Das UVR1611 wurde von Benutzern erfolgreich getestet. Berichte über weitere erfolgreiche Integrationen sind herzlich willkommen. Bei Interesse weiterer Integrationen ist eine Anfrage im Forum oder auch ein Pull-Request auf GitHub herzlich willkommen.
Alternative zu diesem Modul
Dieses Modul ist zwar sehr einfach zu konfigurieren, allerdings kann man damit unter Umständen nicht alle Werte auslesen, die man möchte. Es gibt nun ein zweites Modul, welches per Can-Over-Ethernet Werte empfangen kann; die Konfiguration gestaltet sich allerdings etwas aufwändiger. Weitere Informationen dazu gibt es hier: CanOverEthernet
Links
- Webseite der Herstellers Technische Alternative RT GmbH