Hauptmenü

If .. funktioniert nicht

Begonnen von Holger S, 06 Dezember 2015, 14:13:33

Vorheriges Thema - Nächstes Thema

Holger S

Bin am Verzweifeln oder einfach nur ...?

Das If liefert True wenn:

AT=8
IT=23
MT=25.3
dürfte doch eigentlich nicht, da MT>IT ???!!

Hier der Code:
my $AT; #Aussentemp
my $IT; #Wunsch Innenttemp
my $MT; #gemessene Innentemp

$AT=Value("AussenTemp");
$IT={fhem("get Heizung_Bad_Clima regVal dayTemp")};
$MT=ReadingsVal('Heizung_Bad', 'measured-temp', 0);

if ((Value("Fenster_Bad") ne "closed") and ($AT < $IT) and ($MT < $IT))

Irgenwas ist falsch

Danke

viegener

Ich würde mal die Werte per debug im Log ausgeben, denn vermutlich sind sie nicht genauso wie von Dir erwartet und deshalb liefern die Vergleiche falsche Werte?

Am besten in dem Du so etwas wie
Debug "AT= :$AT:"
Damit Anfang und Ende genau erkennbar sind...

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Bennemannc

Hallo,

nach der commandref ist ReadingsVal("Gerät","Reading",0) - also doppelt " statt '. Wenn das Auslesen schief geht ist MT = 0 und damit das ganze "true"

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

viegener

Zitat von: Bennemannc am 06 Dezember 2015, 19:50:14
Hallo,

nach der commandref ist ReadingsVal("Gerät","Reading",0) - also doppelt " statt '. Wenn das Auslesen schief geht ist MT = 0 und damit das ganze "true"


Das sollte hier keine Rolle spielen, der Unterschied zwischen " und ' spielt in perl eigentlich nur dann eine ROlle, wenn man Variablen innerhalb der Anführungszeichen hat. Bei doppelten Anführungszeichen wird in perl die Variable $var durch ihren Wert ersetzt. Bei einfachen Anführungszeichen bleibt er unverändert.

Hier sind ja keine Variablen enthalten, deshalb solltendie Anführungsstriche keinen Unterschied machen. Trotzdem kann natürllich ein entsprechend anderer Wert das Problem verursachen.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Ellert

Mit einem DOIF geht es einfacher, Du kannst direkt auf Status und Readings zugreifen und verknüpfen.

define meinDOIF ([Fenster_Bad] ne "closed" and [AussenTemp] < [Heizung_Bad_Clima:R-dayTemp] and [Heizung_Bad:measured-temp] < [Heizung_Bad_Clima:R-dayTemp]) (set sagEs tts Das Fenster muss zu) DOELSE


siehe:http://fhem.de/commandref_DE.html#DOIF