Seltsames Verhalten beim Auslesen des Reading controlMode bei HM-CC-TC

Begonnen von herman, 10 Februar 2014, 17:24:12

Vorheriges Thema - Nächstes Thema

herman

Hallo Martin,

ich versuche gerade abhängig vom Modus des TC Aktionen durchzuführen.

Bei einem TC habe ich Probleme. Der Wert von Reading controlMode ist scheinbar "central". Jedoch nur in der Anzeige. Beim Vergleichen auf den Wert kommt ein false raus.

folgende Reaktion erhalte ich im Telnet


{ReadingsVal("DG_WZ_Heizung","controlMode","notdef")}
central


Bei dem Vergleich auf den String bekomme ich keine 1 als Rückgabe


{(ReadingsVal("DG_WZ_Heizung","controlMode","notdef") eq "central")}



An einem anderen TC funktioniert die Abfrage mit dem modus "auto".


{(ReadingsVal("DG_SZ_Heizung","controlMode","notdef") eq "auto")}
1


Was kann hier das Problem sein?
Danke & Viele Grüße,
Merhan



martinp876

passt alles.
wenn du das Reading "controlMode" ausliest bekommst du dessen Wert, also "central"

was für einen wert willst du bei der Bedingung erhalten?

probiere
{(ReadingsVal("DG_SZ_Heizung","controlMode","notdef") eq "auto")?"true":"false"}{(ReadingsVal("DG_SZ_Heizung","controlMode","notdef") eq "central")?"true":"false"}

herman

naja bei dem ersten TC (DG_WZ_Heizung) ist der Wert central. Wenn ich auf eq "central" prüfe bekomme ich keine 1.

bei dem zweiten TC (DG_SZ_Heizung) ist der Wert auto. Wenn ich hier auf "auto" prüfe bekomme ich eine 1. Irgendetwas scheint mit dem Reading nicht in Ordnung zu sein.

list controlMode=auto liefert mir alle TCs die auf auto stehen.

Dieser eine steht auf central.

list controlMode=central ist leer

seltsam...

FilliFairy

Hallo Merhan,

ich meine auch bei der Auswertung mal Leerzeichen im Reading gesehen zu haben. Ich verwende folgende Routine:

Zitat
sub
GetThermostatStatus() {
   Log 5, "GetThermostatStatus()";
   my $GesamtStatus =  "Smily";
   my $EinzelStatus = "Unbekannt";
   my @Messpunkte = ("TC1", "TC2");

   foreach(@Messpunkte) {
      $EinzelStatus = trim(ReadingsVal($_, "controlMode", "Lesefehler"));
      if ( $EinzelStatus ne "auto" ) {
         Log 3, "GetThermostatStatus: $_ steht auf ($EinzelStatus)";
         if ( $GesamtStatus eq "Smily" ) {
            $GesamtStatus = "$_($EinzelStatus)";
         } else {
            $GesamtStatus .= ", $_($EinzelStatus)";
         }
      }
   }
   Log 4, "GetThermostatStatus() - return $GesamtStatus";
   return($GesamtStatus);
}
#End GetThermostatStatus()

Viel Erfolg!

Gerhard
FHEM auf Raspi mit
HMLAN: HM-CC-RT-DN,HM-CC-TC,HM-CC-VD,HM-LC-BL1-FM,HM-LC-SW1-PL2,HM-LC-SW2-FM,HM-LC-Sw1PBU-FM,HM-RC-4-B,HM-SCI-3-FM,HM-SEC-MDIR,HM-SEC-MDIR-2,HM-SEC-SC-2,HM-SEC-TIS,HM-Sen-MDIR-O,HM-WDS10-TH-O,HM-WDS40-TH-I
OWDevice: DS18B20,DS2408,DS2413,DS2438

herman

In der Tat. Bei genau einem TC hängt immer ein Leerzeichen hintendran. Egal in welchem Modus (auto, manual, central) der Kollege ist.

Folgendes liefert gerade eine 1:


{(ReadingsVal("DG_WZ_Heizung","controlMode","nix") eq "auto "}
1


Egal, ob ich den Modus über die FHEMWEB oder Telnet absetze - und aktuell fällt es mir nur bei diesem TC auf.
Seltsam.

FilliFairy

FHEM auf Raspi mit
HMLAN: HM-CC-RT-DN,HM-CC-TC,HM-CC-VD,HM-LC-BL1-FM,HM-LC-SW1-PL2,HM-LC-SW2-FM,HM-LC-Sw1PBU-FM,HM-RC-4-B,HM-SCI-3-FM,HM-SEC-MDIR,HM-SEC-MDIR-2,HM-SEC-SC-2,HM-SEC-TIS,HM-Sen-MDIR-O,HM-WDS10-TH-O,HM-WDS40-TH-I
OWDevice: DS18B20,DS2408,DS2413,DS2438

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

herman

Vielen Dank damit komme ich erst mal zurecht. Trotzdem ist es seltsam, oder?

z.B. funktioniert

list controlMode=auto auch nicht. Da muss dann auch ein Workaround her

list trim(controlMode)=auto geht schon mal nicht ;-)

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!