Neues Modul Heizungssteuerung OEG-KMS/KSF/KSW | Seltron-KXD | Solarbayer-D30

Begonnen von WumpE, 07 November 2016, 14:11:17

Vorheriges Thema - Nächstes Thema

WumpE

Hallo Leute, ich habe ein Modul für die Anbindung folgender Heizungs- / Solarthermiesteuerungen geschrieben:

OEG KMS, OEG KMS+, OEG KSFpro
Seltron KXD
Solarbayer D30

Das Modul ist noch im Alphastadium kann aber schon alle Relais Ein und Ausgänge, Analog Ein und Ausgänge sowie Betriebsarten, Zeitprogramme und Sonderfunktionen anzeigen.

Bei den set Befehlen für Betriebsarten, Zeitprogramme und Sonderfunktionen bin ich gerade dran.

Vielleicht finden sich ja einige die eine der Steuerung im Einsatz haben und mir beim debuggen helfen können.

Install:


  • fhem mit Steuerung per usb verbinden
  • 98_KMS.pm downloaden und ins Verzeichnis fhem-home/FHEM kopieren (leserechte setzen nicht vergessen)
  • define gerätename KMS /dev/ttyACMX@9600

und los geht's

Update 27.11.2016
KMS Beta v0.2

Bugfixing

  • Fehler mit negativen Temperaturen wurde behoben

Neue Funktionen

  • Betriebsarten können jetzt geschalten werden
    Example: set Device HK1_Betriebsart Tag
    Erlaubte Parameter Automatik|Tag|Nacht|Aus
  • Zeitprogramme können jetzt geschalten werden
    Example: set Device WW_Zeitprogramm 2
    Erlaubte Parameter 1|2
  • Sonderprogramme können jetzt geschalten werden
    Example1: set Device HK2_Sondermodus Party 19:32 25.0
    Example2: set Device HK1_Sondermodus Eco +300 17
    Example3: set Device HK2_Sondermodus Urlaub 30.04. 12
    Erlaubte Parameter Party|Eco|Urlaub|Aus
    Party [AbsoluteZeit/Minutenabjetzt] [Temp]
    Eco [AbsoluteZeit/Minutenabjetzt] [Temp]
    Urlaub [Datum] [Temp]

Update 27.05.2018
KMS Beta v0.5

Bugfixing

  • Fehler mit falschen Tages und Monatswerten beim Urlaubsmodus behoben
  • Wenn das Attribut useHK2 0 ist, werden auch die Readings entfernt
  • Wenn das Attribut updateTime 0 ist, wird auf die Zeit kein Event mehr gefeuert

Danke und Grüße
WumpE
Über Mich: Stefan, Informatiker, Systementwicklung Prozessleittechnik
Server: NUC7i5 - Debian Docker
Container: FHEM,DEBMATIC,EMQX,NODERED,SONOS2MQTT,TRAEFIK,HOMEBRIDGE,DECONZ
Aktoren/Sensoren: HM-RF, HM-IP, EnergyCam, Shelly, MiLight, Hue, SONOS, OEG KMS-D+, Echo's, Worx
Frontends: Smartvisu 2.9

WumpE

Über Mich: Stefan, Informatiker, Systementwicklung Prozessleittechnik
Server: NUC7i5 - Debian Docker
Container: FHEM,DEBMATIC,EMQX,NODERED,SONOS2MQTT,TRAEFIK,HOMEBRIDGE,DECONZ
Aktoren/Sensoren: HM-RF, HM-IP, EnergyCam, Shelly, MiLight, Hue, SONOS, OEG KMS-D+, Echo's, Worx
Frontends: Smartvisu 2.9

WumpE

Über Mich: Stefan, Informatiker, Systementwicklung Prozessleittechnik
Server: NUC7i5 - Debian Docker
Container: FHEM,DEBMATIC,EMQX,NODERED,SONOS2MQTT,TRAEFIK,HOMEBRIDGE,DECONZ
Aktoren/Sensoren: HM-RF, HM-IP, EnergyCam, Shelly, MiLight, Hue, SONOS, OEG KMS-D+, Echo's, Worx
Frontends: Smartvisu 2.9

TorstenF

Hallo WumpE,

ich wollte nur mal danke sagen für das Modul.
Es läuft bei mir seit vielen Monaten stabil, wenn auch nur zum Auslesen der Aussentemperatur. Weitergegeben wird das dann an mein Loxone-System.
Ich bin absoluter FHEM-Anfänger. Aber wenn ich irgendwie helfen/testen kann, mache ich das gern.

Torsten

TorstenF

Hallo WumpE,

ich bin gerade dabei, die Kommunikation meiner Smarthome-Komponenten auf MQTT zu vereinheitlichen. Dabei bin ich darauf gestoßen, dass die OEG KMS-D auch MQTT spricht am USB-Port. Hast Du eventuell eine Übersicht der Register? In Deinem FHEM-Modul ist das ja letztendlich alles drin, aber für mich nicht so einfach herauslesbar. Falls Du Deine vermutlich mit hohem Zeitaufwand gefundenen Erkenntnisse teilen magst, wäre ich sehr dankbar.

Danke und Gruß
Torsten

WumpE

Grüße Torsten,

woher hast du die info das die KMS-D MQTT spricht ?

die KMS-D kommuniziert per usb-cdc (serial) mit modbus-ascii


# startIndex, länge, hexwert, zieldatentyp (f=float, d=decimal, b=binär, z=datetime),
# operation (a=addiere,s=subtrahiere,m=multipliziere,d=dividiere,l=minimalestringlänge,p=bitposition,n=nichts,b=byte,sm=sondermodus,zw=Zählwert),
# operationswert, realwert, einheit, readingname
my @kms_array = (
[  7,12, "","z","n",   0,  "",  "","Datum_Zeit"],
[ 31, 4, "","s","b",   1,  "",  "","HK1_Zeitprogramm"],
[ 31, 4, "","s","b",   0,  "",  "","HK1_Betriebsart"],
[ 35, 4, "","f","d",  10,  "","°C","HK1_Tag_Soll"],
[ 39, 4, "","f","d",  10,  "","°C","HK1_Nacht_Soll"],
[ 43,12, "","s","sm",  0,  "",  "","HK1_Sondermodus"],
[ 55, 4, "","s","b",   1,  "",  "","HK2_Zeitprogramm"],
[ 55, 4, "","s","b",   0,  "",  "","HK2_Betriebsart"],
[ 59, 4, "","f","d",  10,  "","°C","HK2_Tag_Soll"],
[ 63, 4, "","f","d",  10,  "","°C","HK2_Nacht_Soll"],
[ 67,12, "","s","sm",  0,  "",  "","HK2_Sondermodus"],
[ 79, 4, "","s","b",   1,  "",  "","WW_Zeitprogramm"],
[ 79, 4, "","s","b",   0,  "",  "","WW_Betriebsart"],
[ 83, 4, "","f","d",  10,  "","°C","WW_Soll"],
[ 87,12, "","s","sm",  0,  "",  "","WW_Sondermodus"],
[159, 4, "","f","d",  10,  "","°C","ZT_T1_Ist"],
[163, 4, "","f","d",  10,  "","°C","ZT_T2_Ist"],
[167, 4, "","f","d",  10,  "","°C","ZT_T3_Ist"],
[171, 4, "","f","d",  10,  "","°C","ZT_T4_Ist"],
[175, 4, "","f","d",  10,  "","°C","ZT_T5_Ist"],
[179, 4, "","f","d",  10,  "","°C","ZT_T6_Ist"],
[183, 4, "","f","d",  10,  "","°C","ZT_T7_Ist"],
[187, 4, "","f","d",  10,  "","°C","ZT_T8_Ist"],
[191, 4, "","f","d",  10,  "","°C","ZT_TR1_Ist"],
[195, 4, "","f","d",  10,  "","°C","ZT_TR2_Ist"],
[203, 4, "","f","d",  10,  "","°C","ZT_T1_Soll"],
[207, 4, "","f","d",  10,  "","°C","ZT_T2_Soll"],
[211, 4, "","f","d",  10,  "","°C","ZT_T3_Soll"],
[215, 4, "","f","d",  10,  "","°C","ZT_T4_Soll"],
[219, 4, "","f","d",  10,  "","°C","ZT_T5_Soll"],
[223, 4, "","f","d",  10,  "","°C","ZT_T6_Soll"],
[227, 4, "","f","d",  10,  "","°C","ZT_T7_Soll"],
[231, 4, "","f","d",  10,  "","°C","ZT_T8_Soll"],
[235, 4, "","f","d",  10,  "","°C","ZT_TR1_Soll"],
[239, 4, "","f","d",  10,  "","°C","ZT_TR2_Soll"],
[149, 2, "","b","l",   8,  "",  "",".ZR_RX"],
[149, 2, "","b","p",   7,  "",  "","ZR_R1"],
[149, 2, "","b","p",   6,  "",  "","ZR_R2"],
[149, 2, "","b","p",   5,  "",  "","ZR_R3"],
[149, 2, "","b","p",   4,  "",  "","ZR_R4"],
[149, 2, "","b","p",   3,  "",  "","ZR_R5"],
[149, 2, "","b","p",   2,  "",  "","ZR_R6"],
[149, 2, "","b","p",   1,  "",  "","ZR_R7"], #Index 42
[149, 2, "","b","p",   0,  "",  "","ZR_R8"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"], #index 50
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  1, 2, "","n", "",   0,  "",  "",".Placeholder"],
[  7, 4, "","zw", "",   0,  "",  "","ZW_R1"],       #index 60
[ 11, 4, "","zw", "",   1,  "",  "","ZW_R2"],
[ 15, 4, "","zw", "",   2,  "",  "","ZW_R3"],
[ 19, 4, "","zw", "",   3,  "",  "","ZW_R4"],
[ 23, 4, "","zw", "",   4,  "",  "","ZW_R5"],
[ 27, 4, "","zw", "",   0,  "",  "","ZW_R6"],
[ 31, 4, "","zw", "",   0,  "",  "","ZW_R7"],
[ 35, 4, "","zw", "",   0,  "",  "","ZW_R8"],
[ 39, 4, "","zw", "",   0,  "",  "","ZW_R9"],
[ 43, 4, "","zw", "",   0,  "",  "","ZW_R0"],
[ 47, 4, "","zw", "",   0,  "",  "","ZW_R1_Starts_Gesamt"],
[ 51, 4, "","zw", "",   0,  "",  "","ZW_R1_Starts_Heute"],
[ 55, 4, "","zw", "",   0,  "",  "","ZW_R1_Betriebsstunden_Gesamt"],
[ 59, 4, "","zw", "",   0,  "",  "","ZW_R0_Starts_Gesamt"],
[ 63, 4, "","zw", "",   0,  "",  "","ZW_R0_Starts_Heute"],
[ 67, 4, "","zw", "",   0,  "",  "","ZW_R0_Betriebsstunden_Gesamt"],
);


anbei meine rückwärts herausgelesenen modbus register (wo steht was drin und in welchem format)


# DebugAnswers
$answer = ":80037809271D0B10070001006E0068100000DC00960001005A00E1100200DC0096000200000000100002F4000000010000000000000000000000000000000100000000000000000000009803C100000C2D00F402960167023F016A0C1C0C25003C003CFE0CFE0C00F40276002802440028FE0CFE0C003C003C002894\r\n" if($pollTimeState != 0 );
$answer = ":8003280000000100010313000000000000031500000000221A000005240003000000000000000000000000AA\r\n" if($pollTimeState == 0 );


und hier hast du mal 2 beispieldatensätze, was die KMS auf anfrage abliefert.

grüße
Über Mich: Stefan, Informatiker, Systementwicklung Prozessleittechnik
Server: NUC7i5 - Debian Docker
Container: FHEM,DEBMATIC,EMQX,NODERED,SONOS2MQTT,TRAEFIK,HOMEBRIDGE,DECONZ
Aktoren/Sensoren: HM-RF, HM-IP, EnergyCam, Shelly, MiLight, Hue, SONOS, OEG KMS-D+, Echo's, Worx
Frontends: Smartvisu 2.9

TorstenF

Sorry, ich meinte auch Modbus ASCII. Das ganze will ich dann zu MQTT wandeln. Darauf gekommen bin ich über diese Python-Skripte:
https://github.com/Yannicflight/oeg_kmsd/blob/master/oegscan_mqtt.py
https://github.com/ced2git/oeg_kmsd/blob/master/oegscan_mqtt.py
Leider bekomme ich die dort beschriebenen Register nicht mit der Tabelle in Deinem Skript zusammen.
Daher die Frage nach den eigentlichen Registernummern.
Hast Du einen Tip für mich?

Gruß Torsten

mynameisfu

Einen wunderschönen Guten Tag,
besteht die Möglichkeit das Modul auf Die OEG KSW-e um zu modeln.

danke im voraus



......
hat sich erledigt geht super
Ich musste nur den USB Port anpassen.

WumpE

Zitat von: mynameisfu am 19 Dezember 2021, 13:15:48
Einen wunderschönen Guten Tag,
besteht die Möglichkeit das Modul auf Die OEG KSW-e um zu modeln.

danke im voraus



......
hat sich erledigt geht super
Ich musste nur den USB Port anpassen.

Super , dann nehme ich sie in der Beschreibung mal mit auf :)
Über Mich: Stefan, Informatiker, Systementwicklung Prozessleittechnik
Server: NUC7i5 - Debian Docker
Container: FHEM,DEBMATIC,EMQX,NODERED,SONOS2MQTT,TRAEFIK,HOMEBRIDGE,DECONZ
Aktoren/Sensoren: HM-RF, HM-IP, EnergyCam, Shelly, MiLight, Hue, SONOS, OEG KMS-D+, Echo's, Worx
Frontends: Smartvisu 2.9