Neues Buderus KM Modul mit neuen Features 79_BDKM.pm

Begonnen von arnoaugustin, 15 Februar 2016, 12:54:20

Vorheriges Thema - Nächstes Thema

arnoaugustin

Hallo zusammen,

es gibt ein neues Modul für Buderus KM Gateways. Ich hänge das hier zum Testen an. Ich würde mich über Rückmeldung und Fehlermeldungen freuen.   :)

Das Modul macht im Grunde genommen das was das km200 Modul auch macht. Der Code wurde aber komplett neu Geschrieben.
Zusätzliche Features:

  • Die langen Gateway-IDs lassen sich auf kurze anwenderfreundliche Readings mappen (alias), so dass Logfiles kürzer werden und man in readingsGroup etc. nicht mit den langen Namen hantieren muss.
  • Es kann genau festgelegt werden welche IDs zyklisch vom Gateway geholt werden.
  • Es kann für jede ID festgelegt werden alle wie viel Zyklen eine ID geholt wird.
  • Ob und bei welcher Differenz zu vorherigen Readings ein neues Reading getriggert wird => Logfiles kürzer.
  • mit "get <DEVICE> INFO" können detaillierte INFOs über alle Dienste des Gateways abgerufen werden.
  • Das Modul liefert für FHEMWEB alle Infos, so dass Drop-Down-Menüs mit den einstellbaren Temperaturen erscheinen.
  • Mit get/set lassen sich auch IDs holen oder setzen, ohne das diese permanent gepollt werden. Z.B. Abfrage Version usw.

Normalerweise dauert ein voller Poll-Zyklus 25-30 Sekunden (Braucht man 73_km200.pm immer wenn man auf alle Werte mit get/set Zugriff haben will). Dadurch, dass beim 79_BDKM.pm für einzelne IDs festgelegt werden kann wann und wie oft diese geholt werden reduziert sich diese Zeit auf ca. 3 Sekunden (Vorlauf,Rücklauf, Wassertemperatur, etc. und was man eben zyklisch loggen will).
Werte, die nur Gesetzt, oder im FHEMWEB angezeigt werden sollen brauchen gar nicht gepollt zu werden.

Das Einrichten des Gateways selbst ist im FHEM Wiki für km200 beschrieben (Bitte vorher lesen).
Zum Testen:
1) 79_BDKM.pm ins ./FHEM Verzeichnis kopieren
2) Doku erzeugen mit: perl ./contrib/commandref_join.pl
3) FHEM neu starten.
4) Device anlegen:

define Buderus BDKM IP-Adresse Gatewaypassword Privatepassword [MD5-Salt]
attr   Buderus PollIds RC300DEFAULTS


danach können bereits im FHEMWEB Einstellungen gemacht werden.

Wer gleich damit Steuern will:
1) buderus.cfg: Passwort etc. anpasssen, dann neben die fhem.cfg legen und in fhem.cfg ein "include buderus.cfg" einfügen.
2) buderus.gplot nach www/gplot kopieren. Dann gibts auch gleich Temperaturgraphen.

Nachdem der erste Poll gelaufen ist (ca. 30 Sekunden) kann man sämtliche IDs und Infos schön in einer Liste sehen, wenn man folgendes eingibt:

get Buderus INFO

Alles weitere in der Doku.

Das Modul läuft bei mir für meinen Anwendungsfall bisher stabil (Logfile für Temperaturen und SVGs, Einstellungen und Darstellung der Temperaturen über readingsGroup).

Code-Änderungen werde ich vorerst immer an dieser Stelle aktuell halten, also die Anhänge entsprechend austauschen.
Wenn bedarf besteht, werde ich die Sachen, wie bereits mit Rudi abgesprochen ins FHEM-Repository einbringen.

Das MD5 salt wird über kurz oder lang aus dem Modul selber raus fliegen und muss in der fhem.cfg eingetragen werden.

Viele Grüße,
   Arno

Letzte Moduländerungen:
18.2.2016 12:22 attr PollIds im FHEMWEB-Editor editierbar (attr   WEB JavaScripts codemirror/fhem_codemirror.js)
18.2.2016 21:16 Neben IP-Adresse auch Hostname zulässig
20.2.2016 13:40 Modul ohne salt im svn eingecheckt und somit über updates verfügbar

Jorge3711

Läuft bei mir, danke für das Teil!

Auch die Umsetzung mit den Deltas für bestimmte Readings, allerdings hätte ich hier einen Wunsch: Wäre es irgendwie möglich die Deltas einstellbar zu machen? Habe schon in die Moduldateien geschaut, aber selbst nicht gefunden wo z.B. das Delta für die Außentemperatur festgelegt ist. Soweit reichen meine Perlkenntnisse dann doch nicht. Oder ich bin Blind, auch sehr gut möglich :)

Grüße Carsten

Jorge3711

Ich nochmal,

Zitat von: arnoaugustin am 15 Februar 2016, 12:54:20

Das Einrichten des Gateways selbst ist im FHEM Wiki für km200 beschrieben (Bitte vorher lesen).
Zum Testen:
1) 79_BDKM.pm ins ./FHEM Verzeichnis kopieren
2) Doku erzeugen mit: perl ./contrib/commandref_join.pl ./FHEM/98_version.pm
3) FHEM neu starten.
4) Device anlegen:

Punkt 2 hat bei mir irgendwie nicht funktioniert, habe in der commandref keine Doku zu Deinem Modul.

arnoaugustin

Hallo Jörg,

Zitat von: Jorge3711 am 16 Februar 2016, 11:49:19
Ich nochmal,

Punkt 2 hat bei mir irgendwie nicht funktioniert, habe in der commandref keine Doku zu Deinem Modul.
Hmm, das ist komisch, weil das eigentlich von der Standartinstallation kommt und gehen sollte.
Wenn du im fhem Verzeichnis selber bist (also auf dem FHEM-Host im Verzeichnis), dann sollte bei dem Aufruf Doku erzeugt werden:

         perl ./contrib/commandref_join.pl

oder du kannst im FHEMWEB ins Kästchen mit Gänsefüßchen wie geschrieben eingeben:

         "perl ./contrib/commandref_join.pl"

Nach 1-2 Minuten ist die Doku fertig und kann gesehen werden unter

http://<FHEM-IP>:8083/fhem/docs/commandref.html#BDKM

8083 oder auf welchem Port du FHEMWEB erreichst.
Wenn die dann nicht aktuell ist mal auf der FHEM-Maschine im FHEM-Verzeichns nachgucken. z.B:
cd /<pfad_zu_fhem>
ls -l docs
da sollten dann neue Doku liegen und auch ganz normal wie andere module sichtbar sein.

Was die Deltas angeht. Die sind bereits einstellbar. Wenn es genau um die Außentemperatur oder z.B. Warmwasser geht:
In deine fhem.cfg:

attr   Buderus PollIds \
   RC300DEFAULTS \
  /system/sensors/temperatures/outdoor_t1:1:0.5:OutdoorTemp \
  /dhwCircuits/dhw1/actualTemp:1:0.2:WaterTemp \
  usw.

Die 1 bedeutetet jeden Zyklus die Temperatur holen. Die 0.5 heißen, dass ein (Trigger, Reading) etc. nur gesetzt wird, wenn die Temperaturdifferenz zum letzten Reading >= 0.5 Grad ist. Das Reading wird als OutdoorTemp erzeugt (Im Log und readingsGroup usw.).
Gleiches hier für die Wassertemperatur: Reading ist dann WaterTemp, geholt wird jeden Zylklus(=1), Logtrigger etc. wenn Delta >= 0.2 Grad....

So kannst Du das für alle IDs definieren wie du magst. Die RC300DEFAULTS geben nur "sinnvolle" Werte vor (werden von Deinen Einstellungen überschreiben). Die Liste dazu steht oben im Modul selbst falls die Defaults interessieren. Einstellungen sollten natürlich immer in der eigenen fhem.cfg vorgenommen werden. Du kannst dir auch die ganze Liste in dein PollIds Attribut übernehmen und einfach anpassen.

Oder hab ich das jetzt falsch verstanden?
Wenn du genau sehen willst was er wann holt - Im FHEMWEB:
attr Buderus verbose 4
Zum zugucken am fhemhost einloggen und:
taill -f log/fhem.log

Wenn noch was unklar ist einfach fragen.



furban

Hi,

sieht so aus das dieses
perl ./contrib/commandref_join.pl
sich nur die Module greift die im Unterverzeichnis FHEM liegen. Also das Modul nach ./fhem/FHEM verschieben und schon wird auch die Doku erzeugt.

Was mich irritiert hat ist der Parameter <MD5-Salt>. Der ist wohl optional. Bei mir geht es zumindest auch ohne

Ansonsten brummt das Modul bei mir hier auch mal parallel zum KM200 Modul.

Aktuell scheint sich aber nichts zu aktualisieren. Wenn ich ein "get myBDKM INFO" mache, sehe ich jedenfalls noch immer die Werte von vor 30min

Gruß
Frank

arnoaugustin

#5
Zitat von: furban am 16 Februar 2016, 21:38:36
Hi,

sieht so aus das dieses
perl ./contrib/commandref_join.pl
sich nur die Module greift die im Unterverzeichnis FHEM liegen. Also das Modul nach ./fhem/FHEM verschieben und schon wird auch die Doku erzeugt.

Was mich irritiert hat ist der Parameter <MD5-Salt>. Der ist wohl optional. Bei mir geht es zumindest auch ohne

Ansonsten brummt das Modul bei mir hier auch mal parallel zum KM200 Modul.

Aktuell scheint sich aber nichts zu aktualisieren. Wenn ich ein "get myBDKM INFO" mache, sehe ich jedenfalls noch immer die Werte von vor 30min

Gruß
Frank

Hi Frank,
da stand ja oben
"79_BDKM.pm ins ./FHEM Verzeichnis kopieren"
Sonst geht das nicht.
Zum Punkt mit dem MD5 Salt. Ja, das geht noch so, aber das wollte ich raus nehmen und es soll ins Config mit rein (Einfach mal dazu etwas rum googeln. Könnte wohl Probleme geben ;-)
Daher habe ich es so in die Doku so geschrieben wie es dann sein soll.

Zu "get myBDKM INFO"
sollte aber da wo "always" steht schon aktuelle Werte haben.
Also z.B. diese hier:
/system/sensors/temperatures/supply_t1             SupplyTemp                57.6 C                  f-                                always     Δ >= 0.5
Diese sollten schon aktuell sein, alle anderen haben sich nicht geändert oder sind so konfiguriert, dass dass sie nicht gepollt werden.
Wenn nicht, dann kommt auch nichts mehr vom Gateway. Lässt Du was in eine Logdatei laufen? Da sollte sich auch was ändern......
z.B. sowas hier

define BuderusLog FileLog ./log/Buderus-%Y-%m.log Buderus:[^A-z]*(SupplyTemp|ReturnTemp|DesiredSupplyTemp|WaterTemp|SystemPressure|WaterDesiredTemp|RoomDesiredTemp|OutdoorTemp|PumpModulation|PowerModulation).*

Mit dem get INFO sieht man ja genau wie man was konfiguriert hat.
Event Monitor sollte auch anzeigen, wenn sich die Readings ändern (In den Defaults sind Vorlauf,Rücklauf, Wassertemperatur usw. so eingestellt, dass sie immer geholt werden und bei Änderung auch ein Reading generieren).

Viele Grüße,
Arno



Jorge3711

Zitat von: arnoaugustin am 16 Februar 2016, 13:20:23
Hallo Jörg,
Hmm, das ist komisch, weil das eigentlich von der Standartinstallation kommt und gehen sollte.
Wenn du im fhem Verzeichnis selber bist (also auf dem FHEM-Host im Verzeichnis), dann sollte bei dem Aufruf Doku erzeugt werden:

         perl ./contrib/commandref_join.pl

oder du kannst im FHEMWEB ins Kästchen mit Gänsefüßchen wie geschrieben eingeben:

         "perl ./contrib/commandref_join.pl"

Nach 1-2 Minuten ist die Doku fertig und kann gesehen werden unter

Wenn man es ohne diesen Zusatz ./FHEM/98_version.pm ausführt funktioniert es auch. Hast es ja inzwischen im Eingangspost korrigiert. :-)

Zitat
Was die Deltas angeht. Die sind bereits einstellbar. Wenn es genau um die Außentemperatur oder z.B. Warmwasser geht:
In deine fhem.cfg:

attr   Buderus PollIds \
   RC300DEFAULTS \
  /system/sensors/temperatures/outdoor_t1:1:0.5:OutdoorTemp \
  /dhwCircuits/dhw1/actualTemp:1:0.2:WaterTemp \
  usw.

Die 1 bedeutetet jeden Zyklus die Temperatur holen. Die 0.5 heißen, dass ein (Trigger, Reading) etc. nur gesetzt wird, wenn die Temperaturdifferenz zum letzten Reading >= 0.5 Grad ist. Das Reading wird als OutdoorTemp erzeugt (Im Log und readingsGroup usw.).

OK, d.h. ich kann neben RC300DEFAULTS zusätzlich Readings/IDs nach meinem Gusto eintragen ohne dass es sich in die Quere kommt?

Einen Wunsch hätte ich noch, keine Ahnung mit welchem Aufwand das Umsetzbar ist:

Könnte man das Eingabefeld für das Attr PollIds bei Klick mit dem Editor editierbar machen, ähnlich dem Attribut userReadings. Anbei ein Bild, damit vielleicht verständlicher ist, was ich meine.

Ansonsten habe ich mit Deinem Modul 100% mehr Funktionalität als mit dem KM200 Modul von Sailor (sorry Sailor :/). Hier kann ich Steuern und Werte verändern, im anderen Modul war das leider nicht möglich. Allerings habe ich gestern folgendes Beobachtet:

Ich hatte zum testen das Warmwasser von Auto -> Aus gestellt. Hat meine Heizung problemlos angenommen. Allerdings konnte ich anschließend nicht mehr zurück aut Auto schalten. Im FHEM Log sah das dann so aus:


2016.02.16 14:05:09 3: set Buderus WaterMode ownprogram :

2016.02.16 14:05:09 3: buderusDummyNotify return value:



Da ich in der Firma war und Frauchen zuhause und ich vermeiden wollte dass Sie ohne Warmwasser dasitzt, habe ich FHEM neu gestartet und danach lies sich dann auch der WaterMode auf Auto stellen. Allerdings stelle ich gerade fest, dass ich nach dem Neustart von FHEM keine Logzeilen ala "set Buderus WaterMode ownprogram" finde, dafür aber


2016.02.16 14:17:24 4: Buderus update reading WaterMode ownprogram
2016.02.16 14:17:24 3: buderusSetNotify return value: WaterMode: Auto


Ich probier das bei Gelegenheit nochmal und Berichte ggf.

Viele Grüße
Carsten (nicht Jörg ;))

arnoaugustin

#7
Zitat von: Jorge3711 am 17 Februar 2016, 10:04:47

OK, d.h. ich kann neben RC300DEFAULTS zusätzlich Readings/IDs nach meinem Gusto eintragen ohne dass es sich in die Quere kommt?
Ja. Genau genommen geht es so. Da wo RC300Defaults steht wird die Defaultliste eingehängt. Wenn du was zusätzlich danach schreibst, oder selber einträge Mehrfach hast, dann gilt immer der letzte. Du kannst also alles überschreiben, auch deine eigenen Einträge, die weiter oben in der Liste auftauchen.

Zitat von: Jorge3711 am 17 Februar 2016, 10:04:47
Einen Wunsch hätte ich noch, keine Ahnung mit welchem Aufwand das Umsetzbar ist:

Könnte man das Eingabefeld für das Attr PollIds bei Klick mit dem Editor editierbar machen, ähnlich dem Attribut userReadings. Anbei ein Bild, damit vielleicht verständlicher ist, was ich meine.
Ich hab hier ein paar Module mit userReadings. Bei mir ploppt da kein Editor hoch. In der Eingabezeile kannst Du es ja jetzt auch schon editieren (Musst evtl. die "\" weg lassen und alles in eine Zeile schreiben.)
Wenn ich den Editor aktiviere:
attr   <DEIN_FHEMWEB_NAME> JavaScripts codemirror/fhem_codemirror.js
dann kann ich auf DEF klicken und die Definition ändern. Für attribute tut das nicht (bei mir) auch nicht für userReadings. Das ist ja ein Feature von FHEMWEB. Weiß hier jemand was dazu?
Bei welchem Modul geht das bei Dir? Würde weiter helfen, weil ich denke, dass es wenn dann nur ein Flag ist oder so (Das kommt dann praktisch auf irgend eine Weise von selber.)

Zitat
Ansonsten habe ich mit Deinem Modul 100% mehr Funktionalität als mit dem KM200 Modul von Sailor (sorry Sailor :/). Hier kann ich Steuern und Werte verändern, im anderen Modul war das leider nicht möglich. Allerings habe ich gestern folgendes Beobachtet:
Das freut mich. So war es gedacht. Ich wollte auch nur einige für mich wichtige Features haben. Da mir der andere Code nicht flexibel genug war hab ich alles komplett neu geschrieben.

Zitat
Ich hatte zum testen das Warmwasser von Auto -> Aus gestellt. Hat meine Heizung problemlos angenommen. Allerdings konnte ich anschließend nicht mehr zurück aut Auto schalten. Im FHEM Log sah das dann so aus:

2016.02.16 14:05:09 3: set Buderus WaterMode ownprogram :
2016.02.16 14:05:09 3: buderusDummyNotify return value:


Ja, das hatte ich auch schon. Für mich sieht das aber irgendwie nach dem Gateway aus. Ich probiere deshalb jetzt 3x den Wert zu setzen und zu lesen (Hattest du neuste Version? 15.2.2016 15:40?). Mir kommt es so vor als müsste da erst irgendwas auf wachen. Denn wenn ich ihn einmal gesetzt habe, dann reagiert da Gateway plötzlich sofort. So ganz sauber tut das da nicht. Sobald ich das aber nachvollziehen kann werd ich das versuchen, z.B. durch Verzögerungen etc. zu umgehen. Wenn das wieder auftritt, dann könnte man zumindest feststellen, ob das Gateway selber nicht antwortet. Ich habe aber bemerkt, dass das Gateway den Wert schon richtig bekommen hat. Beim nächsten Poll ist das Reading auch ok.
Bitte mit der neusten Version testen.
log level auf 5 drehen
set Buderus WaterMode ownprogram
Dann siehst Du was er vom Gateway abholt und schickt. Da kommen die Rohdaten in Klartext.
Bei mir war es so, dass nach dem Setzen das Gateway einfach auf das Lesen keine Antwort liefert.

Ich werd das Modul am Wochenende mal in die offiziellen Quellen einspielen. Dann liegt es auf dem Server. Genehmigung habe ich schon. Da ist das Salt aber dann draußen.....
Viele Grüße,

Arno

Nachtrag:
Hab nochmal ein neues Modul hin gehängt.
Mit verbose 3 siehst du dann die händischen requests incl. der HTTP-Status vom Gateway. Verbose 5 ist nicht nötig. Mit 5 siehst du auch die Polls
Das sollte weiter helfen, falls es nochmal auftritt.


furban

Also bei mir liest er die Werte vom KM200 nur genau ein mal nach dem Neustart von FHEM und dann kommt nichts mehr
Ein Logfile habe ich wie beschrieben angelegt, aber das wurde nur erzeugt und nichts rein geschrieben
Im allgemeinen Logfile finde ich nur meine zwei FHEM Neustarts

2016.02.16 21:17:43 3: myBDKM using AES-Key: xxxxxxxx
2016.02.17 12:43:23 3: myBDKM using AES-Key: xxxxxxxx

arnoaugustin

Zitat von: furban am 17 Februar 2016, 12:52:41
Also bei mir liest er die Werte vom KM200 nur genau ein mal nach dem Neustart von FHEM und dann kommt nichts mehr
Ein Logfile habe ich wie beschrieben angelegt, aber das wurde nur erzeugt und nichts rein geschrieben
Im allgemeinen Logfile finde ich nur meine zwei FHEM Neustarts

2016.02.16 21:17:43 3: myBDKM using AES-Key: xxxxxxxx
2016.02.17 12:43:23 3: myBDKM using AES-Key: xxxxxxxx

Was hast du für eine Config, das kann irgendwie nicht sein.
Kannst Du mir die mal schicken? Bzw. den Teil fürs BDKM?
Was sagt er  im fhem.log wenn du auf verbose 5 stellst?


furban

Echte Profis bekommen alles kaputt :).
Das ist bisher alles was ich eingebaut habe

attr global verbose 3
....

define myBDKM BDKM 192.168.178.21 xxxxxx xxxx
attr   Buderus PollIds RC300DEFAULTS
define BuderusLog FileLog ./log/Buderus-%Y-%m.log myBDKM:[^A-z]*(SupplyTemp|ReturnTemp|DesiredSupplyTemp|WaterTemp|SystemPressure|WaterDesiredTemp|RoomDesiredTemp|OutdoorTemp|PumpModulation|PowerModulation).*

arnoaugustin

Zitat von: furban am 17 Februar 2016, 14:33:28
Echte Profis bekommen alles kaputt :).
Das ist bisher alles was ich eingebaut habe

attr global verbose 3
....

define myBDKM BDKM 192.168.178.21 xxxxxx xxxx
attr   Buderus PollIds RC300DEFAULTS
define BuderusLog FileLog ./log/Buderus-%Y-%m.log myBDKM:[^A-z]*(SupplyTemp|ReturnTemp|DesiredSupplyTemp|WaterTemp|SystemPressure|WaterDesiredTemp|RoomDesiredTemp|OutdoorTemp|PumpModulation|PowerModulation).*

Und ich kann Hellsehen. Guck mal in dein fhem.cfg rein. Da wird er gemeckert haben, das Buderus gar nicht definiert ist!
Du machst ein BDKM Namens myBDKM auf, willst aber das das Attribut auf ein Gerät namens Buderus setzen.
Folglich hast Du für Dein myBDKM, keine PollIds gesetzt und es wird dann nur einmal das Gateway gefragt was es denn so kennt. Also verhält sich alles wie es soll.
mach aus den beiden "myBDKM" einfach "Buderus"
Also auch beim Logfile, dann gehts.

1977er

Bist Du an einem get Buderus INFO Dump von einem RC35 / KM200 interessiert?

arnoaugustin

Zitat von: 1977er am 17 Februar 2016, 15:24:31
Bist Du an einem get Buderus INFO Dump von einem RC35 / KM200 interessiert?
Klar, dann kann ich mal die RC35 Defaults ausfüllen, falls die anders sind.
Kannst Du mir auch per PM schicken wenn du willst.
Momentan sind die RC35DEFAULTS ja noch leer (Auch wenn man sie schon mit rein schreiben kann)

furban

Zitat von: arnoaugustin am 17 Februar 2016, 15:06:39
Und ich kann Hellsehen. Guck mal in dein fhem.cfg rein. Da wird er gemeckert haben, das Buderus gar nicht definiert ist!
Du machst ein BDKM Namens myBDKM auf, willst aber das das Attribut auf ein Gerät namens Buderus setzen.
Folglich hast Du für Dein myBDKM, keine PollIds gesetzt und es wird dann nur einmal das Gateway gefragt was es denn so kennt. Also verhält sich alles wie es soll.
mach aus den beiden "myBDKM" einfach "Buderus"
Also auch beim Logfile, dann gehts.

Ja wenn man es richtig macht klappt es besser. An der Stelle hatte ich das glatt übersehen. Beim Logfile hatte ich es ja schon richtig
Jetzt sieht das schon richtig gut aus.

Nun habe ich aber den Effekt das sich z.B. die Uhrzeit nicht verändert.
DateTime 2016-02-17T15:21:18 2016-02-17 15:22:10
Das war genau die Zeit als ich FHEM neu gestartet hatte

Noch komischer bei der Außentemperatur
OutdoorTemp 3.4 2016-02-17 17:19:17
Die hat sich also angeblich seit 4 Stunden nicht verändert.
Richtig ist aber aktuell eigentlich
/system/sensors/temperatures/outdoor_t1 3 2016-02-17 21:33:13

Die Raumtemperatur fehlt ganz
/heatingCircuits/hc1/roomtemperature 24.3 2016-02-17 21:38:23