Autor Thema: Buderus KM200 Kommunikationsmodul  (Gelesen 413026 mal)

Offline DLindner

  • Full Member
  • ***
  • Beiträge: 112
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #555 am: 02 März 2015, 19:20:31 »
Meine ReadingGroups für das setting:

heizung müsst ihr durch eure eigene Definition ersetzen. Kesselwerte habe ich nur in der Hoffnung reingenommen, dass ich den Wert für die maximale Leistung anpassen kann ohne ans BC10 dackeln zu müssen (geht aber nicht).


######################### Heizung #########################################
define heizung km200 xxxxxxx.......
attr heizung ConsoleMessage 0
attr heizung IntervalDynVal 300
attr heizung IntervalStatVal 3600
attr heizung PollingTimeout 20
attr heizung room Übersicht


################################### Settings Warmwasser ################################################
define 00_AussenTemp readingsGroup heizung:<%temp_temperature>,/system/sensors/temperatures/outdoor_t1\

attr 00_AussenTemp alias Außentemperatur
attr 00_AussenTemp cellStyle { "r:1"=>'style="font-weight:bold;;;;font-size:20px"'}
attr 00_AussenTemp group Ein1
attr 00_AussenTemp room Einstellungen
attr 00_AussenTemp valueStyle {if($VALUE<=10){'style="color:lightblue;;;;"'}elsif($VALUE<=20){'style="color:yellow;;;;"'}else{'style="color:red;;;;"'}}
attr 00_AussenTemp valueSuffix {'/system/sensors/temperatures/outdoor_t1'=>' °C'}

define 01_Warmwasser readingsGroup <>,<Aktuell>,<%sani_water_hot@yellow>,<Ist>,<neu>,<>,<>\
 heizung:/dhwCircuits/dhw1/setTemperature,<>,/dhwCircuits/dhw1/actualTemp,<sollsetz>,<°C>\
 <>,<>,<Modi>,<Auto>,<Manuell>,<>,<>\
 heizung:/dhwCircuits/dhw1/operationMode,<>,<%time_automatic@lightgreen>,<%time_manual_mode@yellow>,<>
attr 01_Warmwasser alias Warmwasser
attr 01_Warmwasser cellStyle { "r:1"=>'style="font-weight:bold;;;;font-size:18px"',"r:3"=>'style="color:white;;;;font-weight:bold;;;;font-size:16px"'}
attr 01_Warmwasser commands { '01_Warmwasser.sollsetz'=>'-dhwCircuits-dhw1-setTemperature:50,55,60,65,70,75,80','01_Warmwasser.time_automatic@lightgreen'=>'set %DEVICE /dhwCircuits/dhw1/operationMode auto','01_Warmwasser.time_manual_mode@yellow'=>'set %DEVICE /dhwCircuits/dhw1/operationMode on'}
attr 01_Warmwasser group Ein1
attr 01_Warmwasser mapping { heizung=>""}
attr 01_Warmwasser room Einstellungen
attr 01_Warmwasser valueFormat { '/dhwCircuits/dhw1/setTemperature'=>'%.1f &deg;;C','/dhwCircuits/dhw1/actualTemp'=>'%.1f &deg;;C'}
attr 01_Warmwasser valueIcon {'/dhwCircuits/dhw1/operationMode.on' => 'time_manual_mode@yellow','/dhwCircuits/dhw1/operationMode.auto' => 'time_automatic@lightgreen'}
attr 01_Warmwasser valueStyle {if($READING eq "/dhwCircuits/dhw1/actualTemp"){my $t=$VALUE;;;;my $d=ReadingsVal($DEVICE,'/dhwCircuits/dhw1/setTemperature',0);;;;if($d-$t>=30){'style="color:lightblue;;;;text-align:center;;;;font-weight:bold;;;;"'}elsif($t-$d>=1){'style="color:yellow;;;;text-align:center;;;;font-weight:bold;;;;"'}else{'style="color:lightgreen;;;;text-align:center;;;;font-weight:bold;;;;"'}}else{'style="color:white;;;;text-align:center";;;;'}}
################################## Settings Kessel #####################################
define 02_Kessel readingsGroup <>,<%scene_stove@yellow>,<Nennleist.>,<Aktuell>,<neu>,<> \
heizung:<>,<25Kw>,/system/appliance/powerSetpoint,<sollsetz>,<'%'>
attr 02_Kessel alias Heizkessel
attr 02_Kessel cellStyle { "r:1"=>'style="font-weight:bold;;;;font-size:18px"'}
attr 02_Kessel commands { '02_Kessel.sollsetz'=>'-system-appliance-powerSetpoint:20,25,30,35,40,45,50,55,60,65,70,75,80,85,90'}
attr 02_Kessel group Ein1
attr 02_Kessel mapping { heizung=>""}
attr 02_Kessel room Einstellungen
attr 02_Kessel valueFormat {if($READING eq "/system/appliance/powerSetpoint"){$VALUE=(0.25*$VALUE)}}
attr 02_Kessel valueStyle style="color:white;;;;text-align:left"
attr 02_Kessel valueSuffix {'/system/appliance/powerSetpoint'=>' Kw'}
################################### Settings Wohnzimmer ################################################
define 03_Fussboden readingsGroup <>,<Aktuell>,<%sani_floor_heating@yellow>,<Ist>,<>,<neu>,<>\
 \
 heizung:/heatingCircuits/hc2/temperatureLevels/day,<Tag>,/heatingCircuits/hc2/roomtemperature,<>,<sollsetz>,<°C>\
 heizung:/heatingCircuits/hc2/temperatureLevels/night,<Nacht>,<>,<>,<sollsetz2>,<°C>\
 <>,<>,<Modi>,<Auto>,<Tag>,<Nacht>,<>\
 heizung:/heatingCircuits/hc2/operationMode,<>,<%time_automatic@lightgreen>,<%scene_day@yellow>,<%scene_night@lightblue>,<>
attr 03_Fussboden alias Fußbodenkreis
attr 03_Fussboden cellStyle { "r:1"=>'style="font-weight:bold;;;;font-size:18px"',"r:4"=>'style="color:white;;;;font-weight:bold;;;;font-size:16px"'}
attr 03_Fussboden commands { '03_Fussboden.sollsetz'=>'-heatingCircuits-hc2-temperatureLevels-day:15.0,16.0,17.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,25.0,26.0,27.0,28.0,29.0,30.0','03_Fussboden.sollsetz2'=>'-heatingCircuits-hc2-temperatureLevels-night:15.0,16.0,17.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,25.0,26.0,27.0,28.0,29.0,30.0','03_Fussboden.time_automatic@lightgreen'=>'set %DEVICE /heatingCircuits/hc2/operationMode auto','03_Fussboden.scene_day@yellow'=>'set %DEVICE /heatingCircuits/hc2/operationMode day','03_Fussboden.scene_night@lightblue'=>'set %DEVICE /heatingCircuits/hc2/operationMode night'}
attr 03_Fussboden group Ein2
attr 03_Fussboden mapping { heizung=>""}
attr 03_Fussboden room Einstellungen
attr 03_Fussboden valueFormat { '/heatingCircuits/hc2/temperatureLevels/day'=>'%.1f &deg;;C','/heatingCircuits/hc2/temperatureLevels/night'=>'%.1f &deg;;C','/heatingCircuits/hc2/roomtemperature'=>'%.1f &deg;;C'}
attr 03_Fussboden valueIcon {'/heatingCircuits/hc2/operationMode.day' => 'scene_day@yellow','/heatingCircuits/hc2/operationMode.auto' => 'time_automatic@lightgreen','/heatingCircuits/hc2/operationMode.night' => 'scene_night@lightblue'}
attr 03_Fussboden valueStyle {if($READING eq "/heatingCircuits/hc2/roomtemperature"){my $t=$VALUE;;;;my $d=ReadingsVal($DEVICE,'/heatingCircuits/hc2/temperatureLevels/day',0);;;;if($d-$t>=2){'style="color:lightblue;;;;text-align:center;;;;font-weight:bold;;;;"'}elsif($t-$d>=2){'style="color:red;;;;text-align:center;;;;font-weight:bold;;;;"'}else{'style="color:lightgreen;;;;text-align:center;;;;font-weight:bold;;;;"'}}else{'style="color:white;;;;text-align:left";;;;'}}

################################### Heizkoerper Sonstige ################################################
define 04_Heizkoerper readingsGroup <>,<Aktuell>,<%sani_heating@Yellow>,<>,<>,<neu>,<>\
 heizung:/heatingCircuits/hc1/temperatureLevels/day,<Tag>,<>,<>,<sollsetz>,<°C>\
 heizung:/heatingCircuits/hc1/temperatureLevels/night,<Nacht>,<>,<>,<sollsetz2>,<°C>\
 <>,<>,<Modi>,<Auto>,<Tag>,<Nacht>,<>\
 heizung:/heatingCircuits/hc1/operationMode,<>,<%time_automatic@lightgreen>,<%scene_day@yellow>,<%scene_night@lightblue>,<>
attr 04_Heizkoerper alias Heizkörperkreis
attr 04_Heizkoerper cellStyle { "r:1"=>'style="font-weight:bold;;;;font-size:18px"',"r:4"=>'style="color:white;;;;font-weight:bold;;;;font-size:16px"'}
attr 04_Heizkoerper commands { '04_Heizkoerper.sollsetz'=>'-heatingCircuits-hc1-temperatureLevels-day:15.0,16.0,17.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,25.0,26.0,27.0,28.0,29.0,30.0','04_Heizkoerper.sollsetz2'=>'-heatingCircuits-hc1-temperatureLevels-night:15.0,16.0,17.0,18.0,19.0,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,25.0,26.0,27.0,28.0,29.0,30.0','04_Heizkoerper.time_automatic@lightgreen'=>'set %DEVICE /heatingCircuits/hc1/operationMode auto','04_Heizkoerper.scene_day@yellow'=>'set %DEVICE /heatingCircuits/hc1/operationMode day','04_Heizkoerper.scene_night@lightblue'=>'set %DEVICE /heatingCircuits/hc1/operationMode night'}
attr 04_Heizkoerper group Ein2
attr 04_Heizkoerper mapping { heizung=>""}
attr 04_Heizkoerper room Einstellungen
attr 04_Heizkoerper valueFormat { '/heatingCircuits/hc1/temperatureLevels/day'=>'%.1f &deg;;C','/heatingCircuits/hc1/temperatureLevels/night'=>'%.1f &deg;;C'}
attr 04_Heizkoerper valueIcon {'/heatingCircuits/hc1/operationMode.day' => 'scene_day@yellow','/heatingCircuits/hc1/operationMode.auto' => 'time_automatic@lightgreen','/heatingCircuits/hc1/operationMode.night' => 'scene_night@lightblue'}
attr 04_Heizkoerper valueStyle style="color:white;;;;text-align:left"

#########################################################################################

Offline DLindner

  • Full Member
  • ***
  • Beiträge: 112
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #556 am: 02 März 2015, 19:27:38 »
Noch etwas:
Wenn ihr über folgendes stolpert
attr 01_Warmwasser commands { '01_Warmwasser.sollsetz'=>'-dhwCircuits-dhw1-setTemperature:50,55,60,65,70,75,80','01_Warmwasser.time_auto...
dann ist das schon richtig. Ich habe die Slash durch ein Bindestrich erstzt, denn sonst funktioniert die Funktion nicht (siehe einige Postings weiter vorne). Ihr müsst zwei z zusätzliche eine Zeile in 73_km200.pm eintragen, die die Bindestriche wieder in Slash tauscht.
Sonst funktioniert nicht.
################################################################################
sub km200_Set($@)
{
        my ( $hash, @a ) = @_;

        ### If not enough arguments have been provided
        if ( @a < 2 )
        {
                return "\"set km200\" needs at least one argument";
        }

        my $name = shift @a;
        my $opt  = shift @a;
        my $value = join("", @a);
        my %km200_sets;

        ### Get the list of possible services and create a hash out of it
        my @WriteableServices = @{$hash->{Secret}{KM200WRITEABLESERVICES}};
######### Test  ################################################################
        $opt =~ s/-/\//g;
##################################################################################
        foreach my $item(@WriteableServices)
        {
                $km200_sets{$item} = ("1");
        }

        ### If service chosen in GUI does not exist
        if(!$km200_sets{$opt})
        {
                my @cList = keys %km200_sets;
                return "Unknown argument $opt, choose one of " . join(" ", @cList);
        }

        ### Save chosen service and value into hash
        $hash->{temp}{service}  = $opt;
        if (($value*1) == 0) {
                ##### String ####################
                $hash->{temp}{postdata} = $value;
        } else {
                ##### Number ####################
                $hash->{temp}{postdata} = $value*1;
        }

.............

Offline AndiL

  • Jr. Member
  • **
  • Beiträge: 90
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #557 am: 02 März 2015, 19:50:55 »
Hallo DLindner,

ich dachte Reload des Moduls reicht. Habe jetzt noch Restart von FHEM gemacht.
Hat sich leider nicht positiv ausgewirkt.

Was mir vor dem Restart und nach meinem letzten Post aufgefallen ist als ich frustriert mal alle Temperaturen durchprobiert habe:
z.B. set myKM200 /heatingCircuits/hc1/temperatureLevels/night 5
und set myKM200 /heatingCircuits/hc1/temperatureLevels/day 11   funktionieren 

z.B  set myKM200 /heatingCircuits/hc1/temperatureRoomSetpoint 21
und set myKM200 /dhwCircuits/dhw1/setTemperature 51  funktionieren nicht 

Das scheint ja dann kein Problem mehr von "string" und "zahl" zu sein?

Gruß
Andi

PS: Danke für die Readings, muß ich mir mal gleich ansehen. In der Hoffnung meine Heizung versteht mich irgend wann mal.....




FHEM 5.8 auf RasPi 3
***********************************
FB 7390, FS20, HM mit USB-CFG, 1-wire (DS1820 und DS2408), Buderus KM200 mit GB 152, Phillips HUE und Bastelkram....

Offline DLindner

  • Full Member
  • ***
  • Beiträge: 112
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #558 am: 02 März 2015, 20:25:42 »
Hallo AndiL,
-----------------------------------------------------------------------------------------------------------
z.B  set myKM200 /heatingCircuits/hc1/temperatureRoomSetpoint 21
-----------------------------------------------------------------------------------------------------------
->temperatureRoomSetPoint ist nicht beschreibbar, kann man nur lesen. Gesetzt werden die Werte nur über temperatureLevels/day oder night.

-----------------------------------------------------------------------------------------------------------
und set myKM200 /dhwCircuits/dhw1/setTemperature 51  funktionieren nicht 
-----------------------------------------------------------------------------------------------------------
-> funktioniert bei mir einwandfrei, die neue Temperatur wird bei mir auch sofort im Reading angezeigt. Hab's auch am RC35 kontrolliert!

Dumme Frage, was für einen Controller hast Du, RC35 oder anderen? Versuchs mal mit  /dhwCircuits/dhw1/temperatureLevels/on 51, geht bei mir auch und setzt die Soll-Temperatur auf den vorgegeben Wert.

Was mir beim Setzen von /dhwCircuits/dhw1/operationMode auf "on" aufgefallen ist, dass er das Programm ändert. Hatte immer Desinfektion auf ja eingeschaltet, die nach dem Setzen von operationMode auf nein gewechselt ist und ich musste die Desinfektion neu programmieren.

Da ist noch viel zu tun, was das Protokoll angeht. :P
« Letzte Änderung: 02 März 2015, 20:44:42 von DLindner »

Offline DLindner

  • Full Member
  • ***
  • Beiträge: 112
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #559 am: 02 März 2015, 20:38:36 »
Hallo AndiL,

hast Du in 73_km200.pm vielleicht "use warnings" auskommentiert? Dann geht's nicht! Habe ich gerade mal ausprobiert.
« Letzte Änderung: 02 März 2015, 20:42:44 von DLindner »

Offline AndiL

  • Jr. Member
  • **
  • Beiträge: 90
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #560 am: 02 März 2015, 21:46:05 »
Hallo DLindner,

das ist ja fast ein Buderus-Chat ;D

Zitat
hast Du in 73_km200.pm vielleicht "use warnings" auskommentiert? Dann geht's nicht! Habe ich gerade mal ausprobiert.

Nein, nur Deine If-Abfrage eingefügt, sonst noch alles original.

Zitat
was für einen Controller hast Du, RC35 oder anderen?

Ich habe einen GB152T (Gas) mit RC35 und ein KM200.

Zitat
->temperatureRoomSetPoint ist nicht beschreibbar, kann man nur lesen. Gesetzt werden die Werte nur über temperatureLevels/day oder night.

Bei mir ist der Wert in der Set-Liste der schreibbaren Befehle.
Wenn Du am RC35-Drehrad drehst und die Raumtemperatur bis zum nächsten Schaltpunkt änderst (Im RC35 steht dann Raumtemperatur geändert) steht dieser Wert im Reading temperatureRoomSetPoint.
Dieser der Wert wird beim nächsten Programmschaltpunkt z.B. Tag auf Nacht wieder auf temperatureLevels/day oder night gesetzt. Wird temperatureLevels/day über temperatureRoomSetPoint geändert rutscht temperatureRoomSetPoint natürlich automatisch mit.
Dieser Wert ist nach meiner Meinung der interessanteste von allen, weil man da von FHEM aus am einfachsten "mal kurz Gas" geben könnte.
Bei mir schiebt die Heizung eigentlich eine ruhige Kugel. Nur Warmwasser vorhalten und wenn es knacke kalt ist den Kaminofen unterstützen, ansonsten im Frostschutzbetrieb abhängen. Oder wenn ich keinen Bock auf Holz schleppen habe, mal spontan zu übernehmen. Das habe ich bis jetzt immer mir dem Drehrad am RC35 über temperatureRoomSetPoint geregelt.

Zitat
Versuchs mal mit  /dhwCircuits/dhw1/temperatureLevels/on 51, geht bei mir auch und setzt die Soll-Temperatur auf den vorgegeben Wert.

Hab ich natürlich gleich probiert, auf die Idee bin ich noch gar nicht gekommen.
Die Änderung ist mir wie sonst auch brav bestätigt worden, allerdings hat es die Heizung nicht geändert  :o

Wo Du gerade Desinfektion erwähnst. Ich hatte mir kürzlich nachmittags fast die Flossen abgekocht. Sollte sich da was verstellt haben? Sind dann wohl die berühmten Seiteneffekte  ;D

Zitat
Da ist noch viel zu tun, was das Protokoll angeht.
Mit Sicherheit, aber das Kollektiv bekommt alles hin.
In diesem Sinne bedanke ich mich schon mal für Deine Hilfe, denn ich kann jetzt schon mal zwei Werte manipulieren. Damit komme ich schon mal weiter.
Der Rest kommt vielleicht auch noch......

Gruß
Andi
« Letzte Änderung: 03 März 2015, 10:03:26 von AndiL »
FHEM 5.8 auf RasPi 3
***********************************
FB 7390, FS20, HM mit USB-CFG, 1-wire (DS1820 und DS2408), Buderus KM200 mit GB 152, Phillips HUE und Bastelkram....

Offline DLindner

  • Full Member
  • ***
  • Beiträge: 112
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #561 am: 03 März 2015, 08:23:51 »
Hab's nochmal verfeinert, da String * 1 ein Warning in Perl auswirft.
sub km200_Set($@)
{
        my ( $hash, @a ) = @_;

        ### If not enough arguments have been provided
        if ( @a < 2 )
        {
                return "\"set km200\" needs at least one argument";
        }

        my $name = shift @a;
        my $opt  = shift @a;
        my $value = join("", @a);
        my %km200_sets;

        ### Get the list of possible services and create a hash out of it
        my @WriteableServices = @{$hash->{Secret}{KM200WRITEABLESERVICES}};
######### Test "-" durch "/" ersetzen ############################################
        $opt =~ s/-/\//g;
##################################################################################

        foreach my $item(@WriteableServices)
        {
                $km200_sets{$item} = ("1");
        }

        ### If service chosen in GUI does not exist
        if(!$km200_sets{$opt})
        {
                my @cList = keys %km200_sets;
                return "Unknown argument $opt, choose one of " . join(" ", @cList);
        }

        ### Save chosen service and value into hash
        $hash->{temp}{service}  = $opt;
######################### test prüfen ob Wert numerisch ist #####################
        if ( $value =~ /^\d.+$/) {
                ##### Number ####################
                $hash->{temp}{postdata} = ($value*1);
        } else {
                ##### String ####################
                $hash->{temp}{postdata} = $value;
        }
################################################################################

 
« Letzte Änderung: 03 März 2015, 09:17:02 von DLindner »

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1748
  • und es werden immer mehr...
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #562 am: 03 März 2015, 11:04:03 »
Nochmal Hallo,

anbei die aktuellen Services für die WPS-1 (siehe pdf-Anhang).

Grüsse.

Grossi33
Grossi

was soll ich sagen.... DANKE!!!  :)

Wird in Version 0042 eingearbeitet.

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

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1748
  • und es werden immer mehr...
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #563 am: 03 März 2015, 11:07:12 »
Hallo Dlindner,

ich wäre erfreut wenn es so einfach wäre.
Werde die Änderung im Modul mal testen.

Würde doch bedeuten, daß das Senden von "Zahlen" auch bei anderen noch nie funktionieren konnte??????

Bin gespannt.
Gruß
Andi

Hallo Andi,

ich fürchte da hast Du Recht.   :o
Ich werde das in Version 0042 testen und aufnehmen... Ich berichte.

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

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1748
  • und es werden immer mehr...
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #564 am: 03 März 2015, 11:11:36 »
Habe einfach mal folgendes geändert:
        if (($value)*1 == 0) {
                $hash->{temp}{postdata} = $value;
        } else {
                $hash->{temp}{postdata} = $value*1;
        }
Scheint zu funktionieren. Ich kann alle Temperaturen über Fhem setzen und die Modi-Umschaltungen von Auto auf Day/Night funktionieren auch. Was nicht funtioniert ist das Ändert von Programmen z.B. von Eigen1 auf Familie1, wie ich bereits erwähnt habe.

Hallo

das halte ich für keine gute Idee, wenn der Wert tatsächlich numerisch 0 sein sollte übergibt er einen String und ändert wieder nix.

Aber ich bin dran...
Das muss ich mit einer schlauen Perl RegExp Abfrage ran...

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

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1748
  • und es werden immer mehr...
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #565 am: 03 März 2015, 11:15:24 »
Hallo DLindner,

ich dachte Reload des Moduls reicht. Habe jetzt noch Restart von FHEM gemacht.
Hat sich leider nicht positiv ausgewirkt.

Was mir vor dem Restart und nach meinem letzten Post aufgefallen ist als ich frustriert mal alle Temperaturen durchprobiert habe:
z.B. set myKM200 /heatingCircuits/hc1/temperatureLevels/night 5
und set myKM200 /heatingCircuits/hc1/temperatureLevels/day 11   funktionieren 

z.B  set myKM200 /heatingCircuits/hc1/temperatureRoomSetpoint 21
und set myKM200 /dhwCircuits/dhw1/setTemperature 51  funktionieren nicht 

Das scheint ja dann kein Problem mehr von "string" und "zahl" zu sein?

Gruß
Andi

PS: Danke für die Readings, muß ich mir mal gleich ansehen. In der Hoffnung meine Heizung versteht mich irgend wann mal.....

Achtung:
Der JSON String gibt für beschreibbare Werte einen erlaubten Wertebereich (MaxVal  / MinVal) zurück, den ich noch nicht verarbeitet habe.
Versuche außerhalb dieses Bereiches Werte zu beschreiben funktioniert nicht.

Aber auch da bin ich dran....

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

Offline AndiL

  • Jr. Member
  • **
  • Beiträge: 90
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #566 am: 03 März 2015, 12:25:54 »
Hallo Sailor,

Zitat
...als ich frustriert mal alle Temperaturen durchprobiert habe:
Ja, war missverständlich formuliert. Meinte natürlich alle schreibbaren Temperatursettings.
Meine Eingaben bewegten sich auch in den Bereichen die mit dem RC35 einstellbar sind.
Wollte ja keine Kernfusion auslösen  ;D

Ich halte mich dann mal zurück bis die 0042 kommt.
Wünsche gutes Gelingen.

Gruß
Andi
FHEM 5.8 auf RasPi 3
***********************************
FB 7390, FS20, HM mit USB-CFG, 1-wire (DS1820 und DS2408), Buderus KM200 mit GB 152, Phillips HUE und Bastelkram....

Offline DLindner

  • Full Member
  • ***
  • Beiträge: 112
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #567 am: 03 März 2015, 12:26:19 »
Hallo Sailor,

Zitat
if (($value)*1 == 0) {
                $hash->{temp}{postdata} = $value;
        } else {
                $hash->{temp}{postdata} = $value*1;
        }
Funktioniert in allen Situationen: Eigen1 => 0 => String; 24 => 24 => Zahl (Auch am RC35 kontrolliert)
Löst in Perl nur eine Warning aus, was nicht gut ist.

Besser:
Zitat
        if ( $value =~ /^\d.+$/) {
                ##### Number ####################
                $hash->{temp}{postdata} = ($value*1);
        } else {
                ##### String ####################
                $hash->{temp}{postdata} = $value;
        }
Ergebnis wie oben ohne Perl-Warning, aber ein negativer Wert wird als String erkannt.
Du kannst da aber sicher noch was Besseres anbieten.

Zu der positiven Rückmeldung nach einem Set:
gib mal "set km200 /heatingCircuits/hc1/temperatureRoomSetpoint Teddibär" ein. Ergebnis "The service /heatingCircuits/hc1/temperatureRoomSetpoint has been changed to: Teddibär".
Es scheint so als ob nur der gecachte Wert zurückgegeben wird. Muss da vielleicht eine neue Http-Session aufgebaut werden???

Warum wird die ID der KM200 nicht mitübergeben? Braucht man die nicht für die ServiceTechniker-Funktionen?

Gruß DLindner
« Letzte Änderung: 03 März 2015, 12:53:07 von DLindner »

Offline Sailor

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1748
  • und es werden immer mehr...
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #568 am: 03 März 2015, 13:05:05 »
Hallo DLindner

Zu der positiven Rückmeldung nach einem Set:
gib mal "set km200 /heatingCircuits/hc1/temperatureRoomSetpoint Teddibär" ein. Ergebnis "The service /heatingCircuits/hc1/temperatureRoomSetpoint has been changed to: Teddibär".
Es scheint so als ob nur der gecachte Wert zurückgegeben wird. Muss da vielleicht eine neue Http-Session aufgebaut werden???

Mein Fehler, habe ich in 0042 korrigiert




"if ( $value =~ /^\d.+$/) {"

Funktioniert in allen Situationen: Eigen1 => 0 => String; 24 => 24 => Zahl (Auch am RC35 kontrolliert)
Löst in Perl nur eine Warning aus, was nicht gut ist.

Besser:Ergebnis wie oben ohne Perl-Warning, aber ein negativer Wert wird als String erkannt.
Du kannst da aber sicher noch was Besseres anbieten.

Ich bin dran....
3.14 würde damit auch nicht erkannt werden...

Aber die Wandlung ist ein numerisches Perl-Problem.
Es gibt leider keinen direkten RegEx dafür...

Gruß
    Matthias

Gruss
    Sailor
« Letzte Änderung: 03 März 2015, 13:38:28 von Sailor »
******************************
Man wird immer besser...

Offline DLindner

  • Full Member
  • ***
  • Beiträge: 112
Antw:Buderus KM200 Kommunikationsmodul
« Antwort #569 am: 03 März 2015, 13:18:50 »
Eigendlich doch:
Zitat
#!/usr/bin/perl

use strict;
use warnings;
my $number="3.14";
if ( $number =~ /^\d.+$/) {
        print "Zahl: $number\n";
} else {
        print "String: $number\n";
}
Zitat
root@MediaBox:~# perl test.pm
Zahl: 3.14
root@MediaBox:~#

Zitat
String: b3.14

Zitat
String: -3.14

« Letzte Änderung: 03 März 2015, 13:21:32 von DLindner »

 

decade-submarginal