Buderus KM200 Kommunikationsmodul

Begonnen von Sailor, 21 Juli 2014, 12:39:47

Vorheriges Thema - Nächstes Thema

obb20a

Mein Code im Tablet UI sieht so aus:

Zitat<li data-row="2" data-col="5" data-sizex="2" data-sizey="1">
        <header>Betriebsart Heizung</header>
        <div class="inline">
           <div data-type="switch" data-device="Buderus"
                data-get="/heatingCircuits/hc2/operationMode"
      data-set="/heatingCircuits/hc2/operationMode"
                data-get-on="night" data-get-off="((?!night).)*"
                data-set-off="" class="blue"
                data-icon="fa-moon-o"
                data-background-icon="fa-square"
                class="big"></div>
         <div data-type="label" class="cell">Nacht</div>
   </div>
   <div class="inline">
                <div data-type="switch" data-device="Buderus"
                data-get="/heatingCircuits/hc2/operationMode"
      data-set="/heatingCircuits/hc2/operationMode"
                data-get-on="day" data-get-off="((?!day).)*"
                data-set-off="" class="red"
                data-icon="fa-sun-o"
         data-background-icon="fa-square"
         class="big" ></div>
              <div data-type="label" class="cell">Tag</div>
   </div>
   <div class="inline">
                <div data-type="switch" data-device="Buderus"
      data-get="/heatingCircuits/hc2/operationMode"
      data-set="/heatingCircuits/hc2/operationMode"
                data-get-on="auto" data-get-off="((?!auto).)*"
                data-set-off="" class="green"
                data-icon="fa-clock-o"
         data-background-icon="fa-square"
         class="big" ></div>
              <div data-type="label" class="cell">Auto</div>
         </div>
</li>

Damit erhalte ich drei Buttons nebeneinander, die die Betriebsart der Heizung steuern können - siehe angehängte Grafik.

stratege-0815

Zitat von: MrF am 05 März 2017, 17:04:16
stratege-0815 schrieb:

dem möchte ich mich anschließen.

Ich fange gerade an mich in FHEM und km200 einzulesen. Ich habe auf einem alten Raspberry Pi nach der Anleitung im Wiki Debian installiert und das neuste FHEM, welches auch erst einmal läuft. Ich habe die Schnipsel zum km200 aus dem Wiki in eine km200cfg geschrieben und diese in der fhem.cfg includiert - es erscheint im linken Menü Heizung und wenn man drauf klickt auch Temperatur - aber die schönen Bildchen, wie im Wiki als Bild rechts daneben, die erscheinen bei mir nicht.

Ich habe auch nur nach der Anleitung im Wiki gearbeitet und alles wird mit den Bildchen dargestellt. Ich verwende allerdings auch Raspbian Jessie und nicht Debian wie du.

achim-e

#1397
Hallo zusammen,

ich setze das Modul seit 3 Monaten für meine Junkers Heizung ein. Hat bisher problemlos geklappt. In den letzten Wochen habe ich aber Probleme, die sich nicht in der  eigentlichen Nutzung bzw. den Readings wirklich zeigen, aber das Logfile kontinuierlich füllen. Es sind immer Meldungen wie
ERROR: Service: /system/bus: No proper Communication with Gateway: http://192.168.19.201/system/bus: empty answer received
Mal nur 2, mal auch 25 am Stück, erkennbar am Timestamp.
Da es immer unterschiedliche Readings sind, gehe ich mal von einem Timingproblem aus. Ich habe IntervalDynVal auf 300 stehen, PollingTimeout auf 10.

Heizung und FHEM-Pi (neuestes OS, neuestes FHEM) sind per LAN an den Router/Switch angeschlossen.

Habt Ihr eine Idee, was hier schief gehen könnte? Alle anderen FHEM-Devices verhalten sich unauffällig, haben aber auch deutlich weniger Readings.

Danke und VG
Achim


Sailor

#1398
Hallo Achim

Zitat von: achim-e am 07 März 2017, 21:18:19
aber das Logfile kontinuierlich füllen. Es sind immer Meldungen wie
ERROR: Service: /system/bus: No proper Communication with Gateway: http://192.168.19.201/system/bus: empty answer received
Mal nur 2, mal auch 25 am Stück, erkennbar am Timestamp.
Da es immer unterschiedliche Readings sind, gehe ich mal von einem Timingproblem aus.

Selbst ich habe das identische Problem.

Tatsache ist, dass die Gründe vielfältiger nicht sein können:
- fhem Sytem ist blockiert und kann die Antwort nicht verarbeiten
- KM200 ist mit Anfrage in Richtung Heizung blockiert
- Traffic im Netz
etc. etc. pp.

Die von dir veränderten Attribute sind schon mal ein guter Schritt in die richtiger Richtung.
Ansonsten kann man nur den verbose-Level des km200-device hochsetzen und schon sind die Meldungen weg.

Beim hochfahren vom fhem-System ist die Meldung allerdings normal, da fhem noch zu sehr mit sich selbst beschäftigt ist.

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

achim-e


achim-e

#1400
Hallo zusammen,

nachdem das Auslesen der Heizungswerte prima klappt, wollte ich mich nun an die Steuerung machen, sprich mit set Werte auch mal setzen. Leider scheitere ich dabei genau wie slowfinger (siehe vorhergehende Seite). FHEM ist aktuell (V5.8).

Ich habe eine Junkers Heizung CerapurModul 9000i mit zugehörigem Kommunikationsmodul MBLANi. Die Daten, die FHEM ausliest sind:
/gateway/versionFirmware  04.01.06
/gateway/versionHardware  iCom_Low_NSC_v1
/system/info/01/Ver       01.04

(Die Firmware wurde vor kurzem von 04.00.04 automatisch auf die 04.01.06 geupdatet, mit der alten Version ging es aber auch nicht)

Wenn ich nun versuche, z.B. den operationMode eines Heizkreises von manual auf auto zu setzen, dann bekomme ich folgende Fehlermeldung:
ERROR - The service /heatingCircuits/hc1/operationMode could not changed.
Oder beim Versuch die Temperatur zu ändern:
ERROR - The service /heatingCircuits/hc1/temperatureLevels/eco could not changed to: 18
The value is: 16

Dabei ist es egal, ob ich den Befehl via Befehlszeile oder Dropdown auslöse.

Setze ich verbose=0, so kann ich im Log keine Problemursache erkennen:
2017.04.14 11:34:16 5: Junkers_MBLANikm200_Set - Writing value: auto to the service                     : /heatingCircuits/hc1/operationMode

2017.04.14 11:34:16 5: Junkers_MBLANi : km200 - GetSingleService - service            : /heatingCircuits/hc1/operationMode
2017.04.14 11:34:16 5: Junkers_MBLANi : km200 - GetSingleService - url                : http://192.168.7.20/heatingCircuits/hc1/operationMode
2017.04.14 11:34:17 5: Junkers_MBLANi : km200 - GetSingleService - err                :
2017.04.14 11:34:17 5: Junkers_MBLANi : km200 - GetSingleService - data               :
E4we/WBHwptkEDbqkfRSjnnJHTvZujceluk8Ri/YIZ0yQe2+aLdEPxY601EUCIf5yHAHBcXkAzauqN0Ng0ACJvB8sa/N2ywkYCzEXwYVHMDJSIf3vHesHr4kTt3QarnNduOpgJPCiKhpBaEvTkdzT6qgY87xDymx0JHczQHssZa4YUmpKjUGsjVizwml1wiu
2017.04.14 11:34:17 5: Junkers_MBLANi : km200 - decryptData1 - decipher_len                : 144
2017.04.14 11:34:17 5: Junkers_MBLANi : km200 - decryptData1 - deciphertext                : {"id":"/heatingCircuits/hc1/operationMode","type":"stringValue","writeable":1,"recordable":0,"value":"manual","allowedValues":["auto","manual"]}
2017.04.14 11:34:17 5: Junkers_MBLANikm200_Set - String value
2017.04.14 11:34:17 5: Junkers_MBLANi : km200 - GetSingleService - service            : /heatingCircuits/hc1/operationMode
2017.04.14 11:34:17 5: Junkers_MBLANi : km200 - GetSingleService - url                : http://192.168.7.20/heatingCircuits/hc1/operationMode
2017.04.14 11:34:17 5: Junkers_MBLANi : km200 - GetSingleService - err                :
2017.04.14 11:34:17 5: Junkers_MBLANi : km200 - GetSingleService - data               :
E4we/WBHwptkEDbqkfRSjnnJHTvZujceluk8Ri/YIZ0yQe2+aLdEPxY601EUCIf5yHAHBcXkAzauqN0Ng0ACJvB8sa/N2ywkYCzEXwYVHMDJSIf3vHesHr4kTt3QarnNduOpgJPCiKhpBaEvTkdzT6qgY87xDymx0JHczQHssZa4YUmpKjUGsjVizwml1wiu
2017.04.14 11:34:17 5: Junkers_MBLANi : km200 - decryptData1 - decipher_len                : 144
2017.04.14 11:34:17 5: Junkers_MBLANi : km200 - decryptData1 - deciphertext                : {"id":"/heatingCircuits/hc1/operationMode","type":"stringValue","writeable":1,"recordable":0,"value":"manual","allowedValues":["auto","manual"]}
2017.04.14 11:34:17 5: Junkers_MBLANikm200_Set - Writing /heatingCircuits/hc1/operationMode was NOT successful


Habt Ihr eine Idee, was da schief gehen könnte?

Danke & VG
Achim

OWL-Winki

Moin,

nahdem ich vor 1 1/2 Jahren noch am Fehler "encrypt: datasize not multiple of blocksize" gescheitert bin, habe ich jetzt das KM200 mit meinem "Junkers MB Lan" zum Laufen gebracht.

Jetzt suche ich nach einer Möglichkeit mit FHEM zwischen den Betriebsarten "Frost", "Absenkung", "Heizen" und "Automatik" wählen kann, analog den Möglichkeiten der JunkersApp "JunkersHome" oder der BuderusApp "EasyControl", aber eben ereignisgesteuert durch FHEM. Hat das schon jemand realisiert?

Gruß

Winki aus Ostwestfalen-Lippe
******************************
Raspberry Pi mit FS20 und HomeMatic,
7x HM-LC-Sw1-FM, 16x HM-LC-Sw2-FM, 16x HM-LC-Sw1-Pl-2, 3x HM-Sec-SC-2, 4x HM-Sec-SC, 4x HM-Sec-SCo, 2x HM-OU-CFM-Pl, 5x HM-CC-RT-DN, 2x HM-Sec-MDIR-2, 6x HM-LC-Bl1PBU-FM, 1x HM-CCU2 u.a.

Sailor

Hallo Einki

Zitat von: OWL-Winki am 25 April 2017, 21:57:18
nahdem ich vor 1 1/2 Jahren noch am Fehler "encrypt: datasize not multiple of blocksize" gescheitert bin, habe ich jetzt das KM200 mit meinem "Junkers MB Lan" zum Laufen gebracht.

Man soll die Hoffnung nie aufgeben!  ;)

Zitat von: OWL-Winki am 25 April 2017, 21:57:18
Jetzt suche ich nach einer Möglichkeit mit FHEM zwischen den Betriebsarten "Frost", "Absenkung", "Heizen" und "Automatik" wählen kann, analog den Möglichkeiten der JunkersApp "JunkersHome" oder der BuderusApp "EasyControl", aber eben ereignisgesteuert durch FHEM. Hat das schon jemand realisiert?

Funktioniert der entsprechende "set" - Befehl?

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

hartwiga

Hallo,

bei mir funktioniert die Sortierung der "/notifications/" nicht. Nach jeder Aktualisierung der Readings ändert sich die Reihenfolge.


2017-04-30 09:10:50.819 km200 KG_Heizung /notifications/Error-01: Time: 2016-10-29T14:02:00 -ErrorCode: A01 -AddCode: 800  -Category: A
2017-04-30 09:10:50.843 km200 KG_Heizung /notifications/Error-02: Time: 2017-04-24T09:42:00 -ErrorCode: 6A  -AddCode: 227  -Category: B
2017-04-30 09:10:50.867 km200 KG_Heizung /notifications/Error-03: Time: 2016-01-01T01:06:00 -ErrorCode: 6A  -AddCode: 227  -Category: L
2017-04-30 09:10:50.891 km200 KG_Heizung /notifications/Error-04: Time: 2017-01-01T00:05:00 -ErrorCode: 6A  -AddCode: 227  -Category: L


Im Code gibt es hierzu drei Stellen, wo die einzelnen Fehlereinträge erzeugt werden. An zwei davon, ist aber die Sortierfunktion nur für den Timestamp auskommentiert.


2332 ### Sort list by timestamps descending
2333 my $TempServiceIndex = 0;
2334# my @TempSortedErrorList =  sort { $b->{t} <=> $a->{t} } @{ $json->{values} };
2335 my @TempSortedErrorList =  sort ( @{ $json->{values} } );



2831 ### Sort list by timestamps descending
2832# my @TempSortedErrorList =  sort { $b->{t} <=> $a->{t} } @{ $json->{values} };
2833 my @TempSortedErrorList =  sort ( @{ $json->{values} } );


nach dem Reaktivieren hat es dann funktioniert, aber es war noch die Sortierreihenfolge falsch, was ich durch Ändern des "sort" Befehls "cmp" anstelle "<=>" beheben konnte.


my @TempSortedErrorList =  sort { $b->{t} cmp $a->{t} } @{ $json->{values} };


@Sailor
Kannst Du bitte prüfen, ob man das so oder ähnlich übernehmen kann  :)

Gruß Andreas

Sailor

Hallo Andreas

Zitat von: hartwiga am 30 April 2017, 11:50:27
nach dem Reaktivieren hat es dann funktioniert, aber es war noch die Sortierreihenfolge falsch, was ich durch Ändern des "sort" Befehls "cmp" anstelle "<=>" beheben konnte.


my @TempSortedErrorList =  sort { $b->{t} cmp $a->{t} } @{ $json->{values} };


@Sailor
Kannst Du bitte prüfen, ob man das so oder ähnlich übernehmen kann  :)

Was hat sich der Sailor bloß wieder dabei gedacht???

Eingecheckt! Danke!

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

hartwiga

Hallo Sailor,

danke für die schnelle Hilfe, aber ich glaube das reicht noch nicht  8) Wenn ich es richtig gesehen habe, hast Du nur die Zeile 2832 geändert, die eine Zeile weiter schon wieder durch eine neue Zuweisung überschrieben wird.. oder?

Müssen nicht auch die Zeilen 1780 und für mich ganz wichtig die Zeile 2334 angepasst werden !? Wobei dann 2335 auskommentiert sein muss  :)


1779                                 ### Sort list by timestamps descending
1780                                 my @TempSortedErrorList =  sort { $b->{t} <=> $a->{t} } @{ $json->{values} };
.
.
.
2332                         ### Sort list by timestamps descending
2333                         my $TempServiceIndex = 0;
2334 #                       my @TempSortedErrorList =  sort { $b->{t} <=> $a->{t} } @{ $json->{values} };
2335                         my @TempSortedErrorList =  sort ( @{ $json->{values} } );
2336
2337
2338                         foreach my $item (@TempSortedErrorList)
.
.
.
2831                         ### Sort list by timestamps descending
2832                         my @TempSortedErrorList =  sort { $b->{t} cmp $a->{t} } @{ $json->{values} };
2833                         my @TempSortedErrorList =  sort ( @{ $json->{values} } );



SORRY

Gruß Andreas

Starkstrombastler

#1406
Hallo,

ich habe die Sortierung in den Zeilen 2832 und 2833 versuchsweise auskommentiert und übernehme die "Rohwerte" in die Sort-Liste:


# my @TempSortedErrorList =  sort { $b->{t} <=> $a->{t} } @{ $json->{values} };
# my @TempSortedErrorList =  sort ( @{ $json->{values} } );
my @TempSortedErrorList =  @{ $json->{values} } ;


Zumindest bei mir kommen dann die Fehlermeldungen sortiert nach Fehlerart und Fehlerzeitpunkt an. Es kommen erst acht Meldungen "Locked", dann eine Meldung "Blocked" und dann noch vier "A-Meldungen":

/notifications/Error-01  Time: 2017-03-05T18:19:00 -ErrorCode: 3Y -AddCode: 215 -Category: L  2017-05-01 00:02:40
/notifications/Error-02  Time: undefined-ErrorCode: 7C -AddCode: 231 -Category: L             2017-05-01 00:02:40
/notifications/Error-03  Time: 2017-01-15T11:32:00 -ErrorCode: 4U -AddCode: 222 -Category: L  2017-05-01 00:02:40
/notifications/Error-04  Time: 2016-05-15T06:58:00 -ErrorCode: 3Y -AddCode: 215 -Category: L  2017-05-01 00:02:40
/notifications/Error-05  Time: 2016-01-16T09:39:00 -ErrorCode: 9H -AddCode: 267 -Category: L  2017-05-01 00:02:40
/notifications/Error-06  Time: 2016-01-16T09:36:00 -ErrorCode: 9P -AddCode: 239 -Category: L  2017-05-01 00:02:40
/notifications/Error-07  Time: 2016-01-16T06:19:00 -ErrorCode: 6A -AddCode: 227 -Category: L  2017-05-01 00:02:40
/notifications/Error-08  Time: 2015-10-14T05:29:00 -ErrorCode: 6C -AddCode: 228 -Category: L  2017-05-01 00:02:40
/notifications/Error-09  Time: 2017-04-28T12:13:00 -ErrorCode: 6A -AddCode: 227 -Category: B  2017-05-01 00:02:40
/notifications/Error-10  Time: 2015-03-25T18:13:00 -ErrorCode: AA0 -AddCode: 800 -Category: A  2017-05-01 00:02:40
/notifications/Error-11  Time: 2015-03-25T18:12:00 -ErrorCode: AA1 -AddCode: 815 -Category: A  2017-05-01 00:02:40
/notifications/Error-12  Time: 2012-10-27T12:08:00 -ErrorCode: AA0 -AddCode: 809 -Category: A  2017-05-01 00:02:40
/notifications/Error-13  Time: 2012-08-18T12:22:00 -ErrorCode: AA0 -AddCode: 828 -Category: A  2017-05-01 00:02:40

Der zweite Eintrag ist tatsächlich ohne Zeitstempel so im System hinterlegt.

Diese Reihenfolge der Notifications ist meiner Meinung nach auch sinnvoll, so könnte ich für jede Fehlerart ein eigenes Notify definieren.
Wie verhält sich das bei den anderen Usern? Vielleicht sollte Sortieren ja/nein über ein Attribut auswählbar sein.
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

Sailor

Hallo Andreas

Zitat von: hartwiga am 30 April 2017, 19:06:35
danke für die schnelle Hilfe, aber ich glaube das reicht noch nicht  8) Wenn ich es richtig gesehen habe, hast Du nur die Zeile 2832 geändert, die eine Zeile weiter schon wieder durch eine neue Zuweisung überschrieben wird.. oder?

Da war ich wohl zu schnell...

OK, habe jetzt an den Stellen
1780
2335
2832

Folgenden Code stehen:

### Sort list by timestamps descending
my @TempSortedErrorList =  sort { $b->{t} cmp $a->{t} } @{ $json->{values} };
# my @TempSortedErrorList =  @{ $json->{values} } ;


Ob wir das später mit einem Attribut versehen, könne wir dann immer noch entscheiden.

Bitte testet das jetzt mal, da ich irgendwie keine Fehlermeldung in meinem System habe...

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

hartwiga

Hallo Sailor,

das Sortieren funktioniert ....

Danke für Deine Unterstützung !!!!

Gruß Andreas

Starkstrombastler

Hallo Sailor,

das Sortieren funktioniert  -  allerding rutscht das Reading, bei dem kein Zeitstempel hinterlegt ist, an das Ende der Liste. Dieser Fall lässt sich dann eher nicht mit einem Notify abfangen:

/notifications/Error-01  Time: 2017-05-03T11:35:00 -ErrorCode: 6A -AddCode: 227 -Category: B  2017-05-03 22:19:35
/notifications/Error-02  Time: 2017-03-05T18:19:00 -ErrorCode: 3Y -AddCode: 215 -Category: L  2017-05-03 22:19:35
/notifications/Error-03  Time: 2017-01-15T11:32:00 -ErrorCode: 4U -AddCode: 222 -Category: L  2017-05-03 22:14:02
/notifications/Error-04  Time: 2016-05-15T06:58:00 -ErrorCode: 3Y -AddCode: 215 -Category: L  2017-05-03 22:14:02
/notifications/Error-05  Time: 2016-01-16T09:39:00 -ErrorCode: 9H -AddCode: 267 -Category: L  2017-05-03 22:14:02
/notifications/Error-06  Time: 2016-01-16T09:36:00 -ErrorCode: 9P -AddCode: 239 -Category: L  2017-05-03 22:14:02
/notifications/Error-07  Time: 2016-01-16T06:19:00 -ErrorCode: 6A -AddCode: 227 -Category: L  2017-05-03 22:14:02
/notifications/Error-08  Time: 2015-10-14T05:29:00 -ErrorCode: 6C -AddCode: 228 -Category: L  2017-05-03 22:14:02
/notifications/Error-09  Time: 2015-03-25T18:13:00 -ErrorCode: AA0 -AddCode: 800 -Category: A  2017-05-03 22:19:35
/notifications/Error-10  Time: 2015-03-25T18:12:00 -ErrorCode: AA1 -AddCode: 815 -Category: A  2017-05-03 22:19:35
/notifications/Error-11  Time: 2012-10-27T12:08:00 -ErrorCode: AA0 -AddCode: 809 -Category: A  2017-05-03 22:19:35
/notifications/Error-12  Time: 2012-08-18T12:22:00 -ErrorCode: AA0 -AddCode: 828 -Category: A  2017-05-03 22:19:35
/notifications/Error-13  Time: -ErrorCode: 7C -AddCode: 231 -Category: L  2017-05-03 22:19:35


Außerdem führt dieser Fall zu Meldungen im Log:

Use of uninitialized value in string comparison (cmp) at ./FHEM/73_km200.pm line 2832.
Use of uninitialized value $TempTime in substitution (s///) at ./FHEM/73_km200.pm line 2843.
Use of uninitialized value $TempTime in concatenation (.) or string at ./FHEM/73_km200.pm line 2850.

Das lässt sich mit folgender Änderung in Zeile 2345 vermeiden:

if ($TempTime) {    $TempTime      =~ s/^(.+)$/sprintf("%s%s", $1, ' 'x(20-length($1)))/e  ;  }


VG
Starkstrombastler
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200