TA CMI UVR16x2 UVR1611

Aus FHEMWiki
Version vom 21. März 2021, 17:00 Uhr von DelMar (Diskussion | Beiträge) (neue Features zum Setzen von Fixwerten dokumentiert)
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

User Interface der UVR16x2

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
Readings

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