Schalten mit Abfrage des Status

Begonnen von Mitch, 29 November 2012, 09:34:45

Vorheriges Thema - Nächstes Thema

Mitch

                                                     

Hallo,

ich bin seit drei Tagen am basteln und mitlerweile am Ende.

Ich checke in fhem alle 5 Min. die Anwesenheit bestimmter Systeme und
schalte in Abhängigkeit davon bestimmte Dinge.
u.a. auch die Kamera im Eingangsbereich.
Nun wird aber alle 5 Min. natürlich auch die Kamera geschalten.
grundsätzlich kein Problem, wenn sie an ist bleibt si an ja und umgekehrt.
Aber ich möchte eigentlich nicht ale 5 Min. einen Befehl senden.

Jetzt hab ich schon zick if Schleifen mit und ohne Dummys etc. getestet,
aber komm auf keinen grünen Zweig :-(

So sieht meine Abfrage aus:

*define HaustuerMailerChecker notify HaustuerMailerChecker {\
  if (ReadingsVal("Sepp", "state", "") eq "Anwesend" ||
ReadingsVal("Simone", "state", "") eq  "Anwesend" ||
ReadingsVal("SamsungLCD", "state", "") eq  "Anwesend" ||
ReadingsVal("Blackberry", "state", "") eq "Anwesend" ||
ReadingsVal("Leoni", "state", "") eq "Anwesend" ||
ReadingsVal("SamsungHTS", "state", "") eq  "Anwesend" ||
ReadingsVal("simonelappy", "state", "") eq  "Anwesend") {\
    fhem("set HaustuerMailer nein ;; set AlleWeg nein ;; set Kamera off");;\
  }\
  else {\
    fhem("set HaustuerMailer ja ;; set AlleWeg ja ;; set Kamera on");;\
  }\

*Jetzt hatte ich z.B. statt der Kamera direkt einen Dummy schalten lassen,
dazu einen ntify der checkt, ob die Kamera bereits an ist.
Hat aber auch nicchts bewirkt, ich habe es eher schlimmer gemacht, dass die
kamera z.B. "verdreht" geschalten hat (Zuhause, Kamer ein und umgekehrt).

Wo liegt denn mein Denkfehler??
*}*

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
FHEM im Proxmox Container

Tobias

                                                   

Bei der Batterie an if´s mit den Chacks auf "Anwesend" fällt mir ein ev.
mit einer Structure zu arbeiten.
Dann muss man nur noch die Structure abfragen und gut ist. Ev. löst das
schon dein Problem aufgrund Komplexitätsreduktion

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Guest

Originally posted by: <email address deleted>

schon mal was in der Art versucht, dann bleiben die defines etwas
Übersichtlicher und es wird nur geschaltet wenn umzuschalten ist:

define HaustuerMailerChecker at +*00:05:00 {checkAnwesend("Sepp", "Simone",
...)}


in 99_myUtils.pm
######## checkAnwesend ###############################################
# What  : Prüft auf Anwesenheit von xxx und schaltet verschiedene Sachen an
oder aus
# Call  : { checkAnwesend($recner,$telefon1,$telefon2,...) }
#

sub checkAnwesend(@) {
    my @checks = @_;
    my $chesckStatus = "Anwesend";
    my $Kamera = fhem("getstate Kamera");
    my $AlleWeg = fhem("getstate AlleWeg");
    my $Haustuermailer = fhem("getstate Haustuermailer");
   
    foreach my $check (@checks) {
        if (ReadingsVal($check, "state", "") ne "Anwesend") {
            $chesckStatus = "Abwesend";
        }
    }
    if ($checkStatus eq "Anwesend") {
        if ($Haustuermailer eq "ja") {
            {fhem("set HaustuerMailer nein")};
        }
        if ($AlleWeg eq "ja") {
            {fhem("set AlleWeg nein")};
        }
        if ($Kamera eq "on") {
            {fhem("set Kamera off")};
        }
    }
    else {
        if ($Haustuermailer eq "nein") {
            {fhem("set HaustuerMailer ja")};
        }
        if ($AlleWeg eq "nein") {
            {fhem("set AlleWeg ja")};
        }
        if ($Kamera eq "off") {
            {fhem("set Kamera on")};
        }
    }
}



Meine Perl Kentnisse sind eher rudimentär. Verbesserungsvorschläge herzlich
willkommen. Wenn ich da völligen Blödsinn fabriziert habe, teilt mir das
bitte mit.

Gruß
Jörg

Am Donnerstag, 29. November 2012 09:34:45 UTC+1 schrieb Mitch:
>
> Hallo,
>
> ich bin seit drei Tagen am basteln und mitlerweile am Ende.
>
> Ich checke in fhem alle 5 Min. die Anwesenheit bestimmter Systeme und
> schalte in Abhängigkeit davon bestimmte Dinge.
> u.a. auch die Kamera im Eingangsbereich.
> Nun wird aber alle 5 Min. natürlich auch die Kamera geschalten.
> grundsätzlich kein Problem, wenn sie an ist bleibt si an ja und umgekehrt.
> Aber ich möchte eigentlich nicht ale 5 Min. einen Befehl senden.
>
> Jetzt hab ich schon zick if Schleifen mit und ohne Dummys etc. getestet,
> aber komm auf keinen grünen Zweig :-(
>
> So sieht meine Abfrage aus:
>
> *define HaustuerMailerChecker notify HaustuerMailerChecker {\
>   if (ReadingsVal("Sepp", "state", "") eq "Anwesend" ||
> ReadingsVal("Simone", "state", "") eq  "Anwesend" ||
> ReadingsVal("SamsungLCD", "state", "") eq  "Anwesend" ||
> ReadingsVal("Blackberry", "state", "") eq "Anwesend" ||
> ReadingsVal("Leoni", "state", "") eq "Anwesend" ||
> ReadingsVal("SamsungHTS", "state", "") eq  "Anwesend" ||
> ReadingsVal("simonelappy", "state", "") eq  "Anwesend") {\
>     fhem("set HaustuerMailer nein ;; set AlleWeg nein ;; set Kamera
> off");;\
>   }\
>   else {\
>     fhem("set HaustuerMailer ja ;; set AlleWeg ja ;; set Kamera on");;\
>   }\
>
> *Jetzt hatte ich z.B. statt der Kamera direkt einen Dummy schalten
> lassen, dazu einen ntify der checkt, ob die Kamera bereits an ist.
> Hat aber auch nicchts bewirkt, ich habe es eher schlimmer gemacht, dass
> die kamera z.B. "verdreht" geschalten hat (Zuhause, Kamer ein und
> umgekehrt).
>
> Wo liegt denn mein Denkfehler??
> *}*
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com