Neues Modul: CanOverEthernet

Begonnen von delMar, 19 Januar 2019, 21:29:47

Vorheriges Thema - Nächstes Thema

delMar

Hallo,

Steuerungen des Herstellers 'Technische Alternative' können über UDP-Pakete Daten austauschen, wenn man ein CMI sein eigen nennt:
https://www.ta.co.at/fernwartung/cmi/
Dort sind viele Informationen zu Protokollen, etc verfügbar.

Das Protokoll ist so offen, dass auch FHEM Empfänger (und in Zukunft wohl auch Sender) sein kann.

Ich habe mit einer Arbeit an einem Modul begonnen, welches solche UDP-Pakete empfängt und als Readings ablegen kann.
Zu finden gibts das hier:
https://github.com/delmar43/FHEM
Es handelt sich um 70_CanOverEthernet.pm und 71_COE_Node.pm
Das Modul ist noch nicht fertig. Bisher funktionieren nur Analoge Werte (Digitale werden nicht ausgelesen) und auch Fehler können noch vorkommen (zB Nachkommastellen, etc)

Dieses Modul ist eng verwant mit dem Modul TA_CMI_JSON, welches allerdings maximal 1x pro Minute Daten abfragen kann.
Und dann auch nur jene, die von der CMI exportiert werden.

Dieses Modul bekommt Daten über Netzwerk-Push, hat also mehr oder weniger Daten in Echtzeit zur Verfügung.
Außerdem können nicht nur Ein- oder Ausgänge, sondern auch Fixwerte, etc damit empfangen werden.

Was ist Can Over Ethernet?

CanOverEthernet erlaubt es, an einer bestimmten IP-Adresse virtuelle CAN-Knoten anzusprechen.
Jeder dieser virtuellen CAN-Knoten hat (wie auch echte CAN-Knoten) mehrere "Speicherplätze" (im CMI-UI als 'Netzwerkausgang' bezeichnet)

Die Vorarbeiten gestalten sich leider etwas aufwändig.

Damit Metriken von einer Steuerung über CanOverEthernet exportiert werden, sind die folgenden Schritte nötig:

  • An der Steuerung (zB dem UVR16x2) muss man unter Umständen mit der Berechtigung "Experte" angemeldet sein.
  • Auf der Steuerung unter CAN -> CAN-Analogausgänge die zu exportierenden Metriken konfigurieren. (siehe Anleitung der Steuerung)
  • Am CMI unter Einstellungen -> Eingänge -> CAN-BUS -> Analog die vorher exportierten Metriken eintragen. Das CMI hat diese Metriken nun zur Verfügung.
  • Am CMI muss man nun unter Einstellungen -> Ausgänge -> CoE -> Analog rechts im Dropdown Eingang dein Eintrag CAN-Bus auswählen und darunter eine Metrik auswählen, die man im vorigen Schritt importiert hat.
  • Das CMI schickt dann die gewählte Metrik an die angegebene IP (die von FHEM), unter dem festgelegten Knoten und Netzwerkausgang.

Unter einer IP können mehrere virtuelle CAN-Knoten existieren.

Und hier kommt FHEM nun ins Spiel.

  • Als IP-Adresse muss die von FHEM eingegeben werden.
  • FHEM hört auf alle Knoten, die unter dieser IP Daten erhalten.
  • Für jeden Knoten wird ein FHEM COE_Node device angelegt. (autocreate muss aktiviert sein)
  • In diesen wird im Attribut readingsConfig angegeben, welche Metrik unter welchem Reading gespeichert werden soll.

So wird in FHEM das CanOverEthernet device angelegt

define coe CanOverEthernet


Und das reicht schon. Hiermit horcht FHEM am Port 5441 auf UDP-Nachrichten.
Dieser Wert ist fix festgelegt und kann auch nicht verändert werden.
Somit macht es auch keinen Sinn (bzw ist nicht nötig), mehrere CanOverEthernet devices anzulegen (außer evtl, man hätte mehrere Ethernet interfaces)

Wie schon erwähnt, wird für jeden Knoten ein device angelegt. Dieses muss wie folgt konfiguriert werden.

attr coe_node_5 readingsConfig 1=Fuehler 5=UWP_WW 9=Solar_Stellung 13=Solar_Durchfluss


In dem hier gezeigten Beispiel wird also für Knoten 5 ein COE_Node device von FHEM angelegt.
Was im CMI unter Knoten 5 und Netzwerkausgang 1, 5, 9 und 13 konfiguriert wurde, wird im FHEM-Device entsprechend als Reading abgelegt.
Achtung: Readings dürfen wie immer keine Leerzeichen enthalten.

CanOverEthernet als Protokoll hat so seine Eigenheiten. Ich empfehle, das "Zusatz Manual CoE" von der Herstellerseite https://www.ta.co.at/fernwartung/cmi/ zu studieren.

Ich weiß, diese Anleitung ist sehr textlastig. Eine Wiki-Seite mit Screenshots ist schon in Planung.
Je nach Interesse werde ich das schneller oder langsamer angehen :-)

Freue mich wie immer über Feedback.
Sobald das Modul stabil ist, wird es natürlich ins SVN wandern.

schöne Grüße
Martin

Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

silvkat

Hallo delmar,

dies ist mein erstes Posting hier, aber ich habe schon sehr viel gelesen und ein sehr umfangreiches FHEM mittlerweile. Die Wohnung läuft komplett über Fhem mit Homematic, MAX, Enocean, MQTT, aber die gesamte Heizung läuft über 2xUVR1611 und auch ein CAN-IO45 von der neuen x2 Serie. Mit den UVRs kenn ich mich sehr gut aus, da ich mindestens schon 20 Kundenanlagen zum Teil ziemlich komplex programmiert habe und betreue. CanOverEthernet habe ich auch schon einmal eingerichtet und freue mich, dass es mit deinen beiden Modulen nun endlich möglich ist die UVR einfach in FHEM einzubinden. Das JSON-Modul habe ich bereits eingerichtet und es lief auf Anhieb, das CanOverEthernet probier ich jetzt mal am WE. Allerdings wäre die Senderichtung von FHEM in Richtung CMI/UVR für mich wesentlich sinnvoller, da man dann z.B. auch eine Fußbodenheizung Pumpenlogik, oder den Start des BHKW bei entsprechender Anforderung von Waschmaschine oder E-Herd gut realisieren könnte.

Wie gesagt, ich freu mich sehr über deine Arbeit und hoffe bald etwas neues zum aktuellen Stand zu hören, es wird dann auf alle Fälle schnell getestet (ich kann auch gern mal die anderen Module ranhängen, wie CAN-BC, oder CAN-IO usw. hab eigentlich alles da)

Danke

Silvio

delMar

Hi Silvio,

danke für das positive Feedback!

Zitat von: silvkat am 25 Januar 2019, 16:50:01
Allerdings wäre die Senderichtung von FHEM in Richtung CMI/UVR für mich wesentlich sinnvoller, da man dann z.B. auch eine Fußbodenheizung Pumpenlogik, oder den Start des BHKW bei entsprechender Anforderung von Waschmaschine oder E-Herd gut realisieren könnte.

Ja, das hab ich am Radar. Ich möchte selber auch die Rücklauf-Soll-Temperatur von der Wärmepumpe an die UVR schicken.

Zumindest für zB Freigaben (als Fixwerte realisiert) nutze ich derzeit einen Workaround:
Ich hab mir aus den Browser-Tools den request vom CMI WebUI rauskopiert und ein HTTPMOD eingerichtet. So kann ich zumindest die Fixwerte für Freigaben ändern.
Aber wie gesagt: ist nur ein Workaround. (wichtig: den Referrer im Header setzen, sonst akzeptiert das CMI wohl keine solchen requests.)

defmod httpUvr16x2_FBH HTTPMOD none 0
attr httpUvr16x2_FBH userattr requestHeader.1 requestHeader1 requestHeader2 set01Name set01NoArg:0,1 set01URL set02Name set02NoArg:0,1 set02URL setHeader1 setHeader2
attr httpUvr16x2_FBH alias UVR 16x2 FBH
attr httpUvr16x2_FBH httpVersion 1.1
attr httpUvr16x2_FBH room Heizung
attr httpUvr16x2_FBH set01Name Freigabe_Ein
attr httpUvr16x2_FBH set01NoArg 1
attr httpUvr16x2_FBH set01URL http://usr:pwd@192.168.4.xxx/INCLUDE/change.cgi?changeadrx2=01000144141100&changetox2=1
attr httpUvr16x2_FBH set02Name Freigabe_Aus
attr httpUvr16x2_FBH set02NoArg 1
attr httpUvr16x2_FBH set02URL http://usr:pwd@192.168.4.xxx/INCLUDE/change.cgi?changeadrx2=01000144141101&changetox2=0
attr httpUvr16x2_FBH setHeader1 Referer: http://192.168.4.xxx/menupagex.cgi?nodex2=01005800
attr httpUvr16x2_FBH webCmd Freigabe_Ein:Freigabe_Aus


Zitat von: silvkat am 25 Januar 2019, 16:50:01
das CanOverEthernet probier ich jetzt mal am WE
Danke dass du dir die Zeit nimmst.
Das Modul ist noch in einem sehr frühen Zustand. zB stimmen Temperaturen nur, solang sie im positiven Bereich sind.
(nur damit du weißt, mit welchen Unzulänglichkeiten du noch rechnen musst).

Ich wollte aber grundsätzlich mal rausfinden, ob die Art der Einrichtung Sinn macht, und ob es generell Interesse am Modul gibt.

Die nächsten beiden Wochen bin ich beruflich unterwegs, da wird die Zeit zum programmieren knap sein.
Über Rückmeldungen und Anregungen hier im Forum bin ich aber trotzdem auch in der Zwischenzeit dankbar.
Nichts motiviert mehr, als zu wissen, dass man das Zeug nicht nur für sich selber coded :-)

schöne Grüße
Martin

Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

Sailor

Hallo delmar

ich schreibe parallel ain Modul für die DoorBird Türeinheit.
Diese sendet UDP datagramme ab, die ich auswerten muss.

Dabei bin ich auf deine https://github.com/delMar43/FHEM/blob/master/70_CanOverEthernet.pm gestossen.

Ich habe die Anteile für die UDP Auslesung meiner Meinung nach herauskopiert und übertragen.

Nun habe ich 2 Probleme:

a) Nach Neu-Definition des Device stürzt mir das gesammte fhem mit dem Log-Eintrag "Can't call method "fileno" on an undefined value at ./FHEM/73_DoorBird.pm line 176." ab.
b) Nach einem Neustart scheint alles hochzufahren aber ich erhalte keine UDP-Einträge im Log-File.

Paralleldiskussion hier: https://forum.fhem.de/index.php/topic,96399.msg895433.html#msg895433
Hast Du bereits schon Erfahrung mit dem UDP datagrammen sammeln können?

Danke

Gruss
    Sailor
******************************
Man wird immer besser...

delMar

Hi Sailor

Sorry, ich seh auf den ersten Blick auch nicht, was dein problem ist.
Funktionieren die anderen UDP module denn bei dir?

Schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

nagelauge

Hallo Delmar,

vielen Dank für das neue Modul basierend auf CanOverEthernet. Den Ansatz finde ich sehr interessant, da man – wie Du ja bereits geschrieben hast – nicht an dem 1 minütigen Aktualisierungstakt hängt, Daten nur gesendet werden wenn sie verändert wurden und es möglich ist – trotz einer älteren UVR1611 – an fast alle Daten heran zukommen. Ich hatte jetzt 8 Jahre lang ein BL-Net am laufen, möchte aber auf das komfortablere C.M.I wechseln.

Dein Modul ist eingehängt und liefert fleißig alle gewünschten analogen Daten und das – so möglich und sinnvoll - im festgelegten 10s Takt. Das etwas aufwendige Konfigurieren lohnt sich in meinen Augen, da das Online-Schema des C.M.I für die Visualisierung parallel betrieben werden kann, da es den 1-Minutentakt für sich ganz allein beanspruchen kann.

Nun zur vorsichtigen Frage, wann hast Du wieder "Lust" und Zeit das Parsen der digitalen Werte einzubauen? Oder hast Du neben der Doku auf der TA Seite eine zusätzliche Quelle, wie das Format aussieht, das ich es gegebenenfalls einbauen könnte.

Das Senden auf diesem Wege wäre natürlich langfristig auch eine feine Sache, für mich aber eher Prio2.

Schöne Grüße Stephan

RaspberryPi 3B, FHEM v5.9

delMar

Hallo Stephan,

freut mich, dass es soweit funktioniert.

Zitat von: nagelauge am 11 Februar 2019, 19:55:07
wann hast Du wieder "Lust" und Zeit das Parsen der digitalen Werte einzubauen?

An der Lust scheiterts nicht :-)
Ich hab leider keine Doku gefunden, die das Format der digitalen Daten erläutert.
Das analoge Format war einerseits schon wo anders implementiert, und andererseits beinahe schon selbsterklärend, wenn man den Einstieg gefunden hatte.
Beim digitalen Format waren 1, 2 Ungereimtheiten und mir hat noch die Zeit gefehlt, mich tiefer reinzugraben.

Wenn du mit Infos aushelfen kannst, oder sogar einen Patch liefern könntest, würde mir das die Sache unheimlich erleichtern.

Danke!

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

Sailor

Hallo Martin

Zitat von: delmar am 12 Februar 2019, 07:19:10
Ich hab leider keine Doku gefunden, die das Format der digitalen Daten erläutert.
Wenn du mit Infos aushelfen kannst, oder sogar einen Patch liefern könntest, würde mir das die Sache unheimlich erleichtern.

Unter https://www.ta.co.at/fernwartung/cmi/#software bieten die doch die LINUX Pakete für deren Auswerte-Software an.

Als ersten Schritt hätte ich dort mal geschaut, ob es irgendwo lesbare Bibliotheken gibt, die Aufschluss über deren Auswertung geben.
Aber ich gebe zu: Das wäre eine üble Fleißarbeit...

Gruß
    Sailor
******************************
Man wird immer besser...

delMar

Grundsätzliche Frage:
wie hättet ihr euch das Senden von Daten vorgestellt?
Mir würde einfallen, am CanOverEthernet-Device (also *nicht* auf den Node devices) mittels SET Ziel-IP, Ziel-Knoten, Ziel-Kanal und Wert anzugeben.

also zB

set CanOverEthernet sendData x.x.x.x 2 1=33.0 2=5 3=0

Was haltet ihr davon?
Alternativen sind herzlich willkommen.

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

thhoe

Hallo,

ich habe funktionierende PERL-skripte für COE mit digital-analog-senden-empfangen.
Mit Fhem habe ich gerade angefangen. Die Skripte sind für andere Projekte getestet, als Denkanstoß aber vielleicht hilfreich. Hat jemand interesse?

Thomas   

delMar

Hallo Thomas

Ja, sehr gern

Schöne grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

thhoe

#11
Hallo Martin,

https://github.com/thhoe/coe-mi

Programmieren kann ich eigendlich nicht. Das ist alles copy and past nach g*****.
coe-mi.pl läuft bei mir schon länger.  Es war geplant mit nagios verschiedene Werte zu überwachen. Ist aber nie fertig geworden.
udp.pl war mein 1. Test Daten zu senden. Meine Regelung kann jetzt Wettervorschau.
coe1.pl und coe2.pl läuft seid ein paar Tagen. Die Werte werden nicht verarbeidet.
coed.pl habe ich nur kurz zum Test geschrieben. Im CMI>Status>COE werden die Daten richtig angezeigt.

Dein Problem mit negativen Themperaturen hatte ich auch.
Der Trick ist : das CMI spricht Big Endian.
Danach war alles recht einfach.

Thomas

delMar

Danke Thomas. Kann es kaum erwarten, die Zeit dafür zu finden ;)

Schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

delMar

Hallo zusammen,

auf GitHub hab ich jetzt ein Update veröffentlicht, welches hoffentlich das Problem mit negativen Werten löst.
Danke Thomas, dein Hinweis mit big/little endian hat den Nagel auf den Kopf getroffen.
Mein Problem war, dass ich einen unsigned short verwendet habe. Es muss aber ein signed short sein.

Vielleicht schaff ich's auch noch, die Digitalen Werte abzudecken, dann wär das Modul eigentlich reif fürs SVN.

Test-Feedback herzlich willkommen

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

Bualicher

Hallo zusammen,

hat das schon jemand von Euch an der UVR1611 umgesetzt?
Ich wollte das heute mal ausprobieren.
Tu mich aber an folgendem Punkt in der Anleitung schwer:

Zitat von: delmar am 19 Januar 2019, 21:29:47
...
  • Auf der Steuerung unter CAN -> CAN-Analogausgänge die zu exportierenden Metriken konfigurieren. (siehe Anleitung der Steuerung)
...

schöne Grüße
Martin

Ich finde diese Menüpunkte dort nicht und will mein eigentlich gut funktionierendes "Heizung- und Loggingsystem" nicht abschiessen.

Im Voraus vielen Dank für Eure Tipps