Autor Thema: Neues Modul Heizungssteuerung OEG-KMS/KSF | Seltron-KXD | Solarbayer-D30  (Gelesen 2305 mal)

Offline WumpE

  • Jr. Member
  • **
  • Beiträge: 64
    • Mein Youtube-Channel
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
« Letzte Änderung: 29 Mai 2018, 14:17:29 von 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

Offline WumpE

  • Jr. Member
  • **
  • Beiträge: 64
    • Mein Youtube-Channel
Update
Ü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

Offline WumpE

  • Jr. Member
  • **
  • Beiträge: 64
    • Mein Youtube-Channel
*update
Ü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

Offline TorstenF

  • New Member
  • *
  • Beiträge: 3
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

Offline TorstenF

  • New Member
  • *
  • Beiträge: 3
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

Offline WumpE

  • Jr. Member
  • **
  • Beiträge: 64
    • Mein Youtube-Channel
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

Offline TorstenF

  • New Member
  • *
  • Beiträge: 3
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