IF Anweisung mit UND-Verknüpfung

Begonnen von Peterson, 05 Mai 2014, 22:06:10

Vorheriges Thema - Nächstes Thema

Peterson

hat keiner eine Idee? Ich bin leider zwischenzeitlich auch nicht weitergekommen.

Gruß,

Peterson
FHEM 5.5 auf RPI + HM-CFG-LAN

Dietmar63

Ein paar Tipps, wie du zum Ziel kommst.

Du bist schon auf dem richtigen Weg. Ich würde es so machen:

1) fhem.cfg
define test notify STATUS:offen define a1 at +00:00:01  { meineVerzoegerteRoutine() }

2) in 99_myUtils.pm

sub meineVerzoegerteRoutine() {
   if( ReadingsVal("Wohnz_Strasse_rechts_Tuerkontakt","state","0") eq "closed" && ReadingsVal("Eingangstuer_Tuerschlosskontakt","state","0") eq "closed") {
      system("<linux Programm> &")
   } else {
      fhem("set TEST_DUMMY off")
   }
}


übersichtlicher:

sub meineVerzoegerteRoutine() {

   my $fensterAufWohnzimmer = ReadingsVal("Wohnz_Strasse_rechts_Tuerkontakt","state","0");
   my $fensterAufTuer       = ReadingsVal("Eingangstuer_Tuerschlosskontakt", "state","0");
   
   if(  $fensterAufWohnzimmer eq "closed" &&  $fensterAufTuer eq "closed") {
      system("<linux Programm> &")
   } else {
      fhem("set TEST_DUMMY off")
   }
}   


Das Ganze hat den Vorteil, dass du dich nicht mit den / am Ende herumschlagen musst, und dass du mit Perl die volle Kontrolle über das ganze fhem hast, und alle umfangreicheren Perlkonstrukte landen in einer Datei 99_myUtiuls(du musst eine eingen anlegen).

Die IF und UND Geräte verwirren meiner Meinung nach mehr als sie helfen. Zu if(Perl) gibt es mit Netze dicke Bücher, zu IF ... nur den Thread hier.

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Damian

Zitat von: Dietmar63 am 07 Mai 2014, 23:06:59
Zu if(Perl) gibt es mit Netze dicke Bücher
ja, die aber hier nicht weiter helfen.
Zitat
zu IF ... nur den Thread hier.

falsch, dafür gibt es die Commandref: http://fhem.de/commandref_DE.html#IF immerhin mit 11 vergleichbaren Beispielen.

Um es kurz zu machen:

define test notify STATUS:offen define a1 at +00:00:01  IF ([Wohnz_Strasse_rechts_Tuerkontakt] eq "closed" and [Eingangstuer_Tuerschlosskontakt] eq "closed") ({system("<linux Programm> &")}) ELSE (set TEST_DUMMY off)

Welcher Code für dich einfacher oder intuitiver erscheint, solltest du selbst beurteilen.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Peterson

Hallo,

ich habe es geschafft.

Ich habe Dietmars Anregungen umgesetzt, weil ich auch interessiert war undes auprobieren wollte wie das mit der 99_MyUtils.pm funktioniert. Ich habe es nun zum laufen bekommen.
Jedoch ist dies eine neue Herausforderung und für einen nicht Perl Anwender (wie ich es bin) nicht so leicht gewesen es zu verstehen. Selbst jetzt bezweifel ich ob ich das richtig verstanden habe. Aber man lernt dazu und wird Step bei Step immer besser.

Ich habe die Version von Damian, auch vielen dank an Dich, auch ausprobiert. Diese funktioniert auch super.
Ich denke für Einsteiger ist diese wohl einfacher zum Ziel zu kommen.

Vielen Dank nochmal.

Gruß,

Peterson
FHEM 5.5 auf RPI + HM-CFG-LAN