Unterschiedliche Ergebnisse bei sub Aufruf

Begonnen von KarlHeinz2000, 16 November 2015, 10:53:04

Vorheriges Thema - Nächstes Thema

KarlHeinz2000

Hallo,

ich bastel an meiner Viessmann Steuerung, aktuell die Programmierung der AN/AUS Zeiten.
Dazu habe ich eine Readingsgroup mit einem dummy-Device für jeden Wochentag. Jedes Device hat entsprechende Readings für AN und AUS.
Die Zeiten sollen über drop down eingestellt werden und bei click auf ein Icon an die Heizung geschickt werden. Zuvor soll jedoch ein kleiner Plausibilitätscheck durchgeführt werden. Das schreiben der drop down Zeiten in die Readings geschieht mit bekanntem notify:
d_.* { if( ($EVENT ~~ / /) and ($EVENT !~ /: /) ) {fhem("setreading $NAME $EVENT")}}
Jetzt zu meinem Problem. Ich habe 2 Varianten für die Plausi probiert. Beide liefern unterschiedliche Ergebisse.
Einmal wird über commands der rg ein notify getriggert, dass die sub aufruft. Das funktioniert so wie gewollt:
{'chk' => 'trigger ntfy_HZ_TIMER_0_SA_chk $DEVICE' , 'AN1_h' => 'AN1_h:' , 'AN1_m' => 'AN1_m:' , 'AN2_h' => 'AN2_h:' , 'AN2_m' => 'AN2_m:' , 'AN3_h' => 'AN3_h:' , 'AN3_m' => 'AN3_m:' , 'AN4_h' => 'AN4_h:' , 'AN4_m' => 'AN4_m:' , 'AUS1_h' => 'AUS1_h:' , 'AUS1_m' => 'AUS1_m:' , 'AUS2_h' => 'AUS2_h:' , 'AUS2_m' => 'AUS2_m:' , 'AUS3_h' => 'AUS3_h:' , 'AUS3_m' => 'AUS3_m:', 'AUS4_h' => 'AUS4_h:' , 'AUS4_m' => 'AUS4_m:'}

Das notify dazu:
DEF
ntfy_HZ_TIMER_0_SA_chk {chk_HZ_Timer($EVENT)}


Die sub:
sub
chk_HZ_Timer($)
{
my ($DEVICE) = @_;

my $temp1;
my $temp2;
my $status=0;                 #0=kein Fehler

$temp1= ReadingsVal($DEVICE,"AN1_h","");
$temp2= ReadingsVal($DEVICE,"AN1_m","");

fhem("set $DEVICE dummy 1");
fhem("set $DEVICE AN1_h_t $temp1");
fhem("set $DEVICE AN1_m_t $temp2");   
fhem("set $DEVICE Device $DEVICE");
fhem("set $DEVICE chk $status");

}


Variante 2:
Ein notify auf die "AN"/"AUS" Readings für jedes Wochentags-Device triggert die gleiche sub wie oben.

DEF
d_HZ_TIMER_0_SA:A.* {chk_HZ_Timer("d_HZ_TIMER_0_SA")}


Problem: bei Variante 2 werden in der sub mit
$temp1= ReadingsVal($DEVICE,"AN1_h","");
$temp2= ReadingsVal($DEVICE,"AN1_m","");


nicht die gleichen Readings zurückgeliefert wie mit Variante 1 (siehe Bild) AN1_m und AN1_m_t sollten gleich sein.

Woran kann das liegen? Kommen sich die beiden notify für das Schreiben der Readings und den Aufruf der sub in die Quere?
Mir gefällt eigentlich die Variante 2 besser, das es gleich bei der Eingabe über die drop down Rückmeldung bzgl. Plausi gibt.