FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ext23 am 24 Februar 2015, 13:31:35

Titel: Notify AT Frage zum Perl/FHEM Syntax
Beitrag von: ext23 am 24 Februar 2015, 13:31:35
Hallo,

ich stehe hier vor einem sicherlich kleinem Problem und hoffe auf eure Hilfe.

Ich habe folgendes in einem Notify:
bz_Fenster:.* {
  if ("%" eq "auf") {
    my $gpio = CommandGet("","az_OW_LCD1 gpio");
    $gpio = substr($gpio,19,2);
    $gpio = switchBit($gpio,0,0);
    fhem ("define Alarm_Bad_GPIO_on_@ at +00:30:00 set az_OW_LCD1 gpio $gpio") if (Value("Alarm_Bad_GPIO_on_@") eq "");
    $gpio = switchBit($gpio,0,1);
    fhem ("define Alarm_Bad_GPIO_off_@ at +00:30:05 set az_OW_LCD1 gpio $gpio") if (Value("Alarm_Bad_GPIO_off_@") eq "");
  }
  if ("%" eq "zu") {
    fhem ("delete Alarm_Bad_GPIO_on_@") if (Value("Alarm_Bad_GPIO_on_@") ne "");
    fhem ("delete Alarm_Bad_GPIO_off_@") if (Value("Alarm_Bad_GPIO_off_@") ne "");
  }
}


Die Zeile
fhem ("define Alarm_Bad_GPIO_on_@ at +00:30:00 set az_OW_LCD1 gpio $gpio") if (Value("Alarm_Bad_GPIO_on_@") eq "");
ist mir zu statisch (ohne weiter auf den Grund einzugehen), ich brauche da mehr dynamik, daher möchte ich an die Stelle set az_OW_LCD1 gpio $gpio Perl Code einsetzen, und zwar folgendes (gpio muss ich vermutlich umdeklarieren da es ja oben schon benutzt ist):
{
    my $gpio = CommandGet("","az_OW_LCD1 gpio");
    $gpio = substr($gpio,19,2);
    $gpio = switchBit($gpio,0,0);
    fhem ("set az_OW_LCD1 gpio $gpio");}


Ist das überhaupt machbar oder baue ich hier gerade Misst? Ich weiß nicht wie ich das syntaktisch richtig zusammenfüge.

Mhh vielleicht doch kurz zum Grund: Ich darf den aktuellen Stand der gpio Ports erst kurz vor dem Auslesen ändern, da in der halben Stunde von dem AT sonst Änderungen auftreten können die ich dann wieder überschreibe.

Gruß und Danke
Daniel