FHEM DOIF und AND möglich ??

Begonnen von roadghost, 05 April 2016, 20:26:36

Vorheriges Thema - Nächstes Thema

roadghost

Hallo,

ich bastel zur Zeit an einer möglichkeit, abhängig vom Anwesenheitsstauts zweier Mobiltelefone, eine Lichtquelle über FHEM einschalten zu lassen.

Leider komme ich nicht weiter.

Ich habe es bisher so gelöst:

2 Fritzboxen im Netzwerk werden über die 99myUtils abgefragt nach den MAC-Adressen der beiden Smartphones, daraus ergibt sich der Status für 1 bzw. 2 (die beiden Handys) von absent oder present.

Dieser status wird von einem DOIF abgefragt und schreibt wiederum über setstate den status absent in einen Dummy.

Hinzu kommt noch die verarbeitung von sunset über Twilight, hier wird mittels eines AT der setstate eines weiteren Dummy gesetzt.

Dies in kombination wird von einem DOIF angefragt, wenn also um bspw. 20:10:17 sunset eintritt, der Dummy "Dunkel" den state "ja" bekommt, der Dummy "Anwesenheit" den status "absent" hat (weil beide Handys nicht im Netzwerk sind) soll der zweite DOIF eine Funksteckdose einschalten.

Leider komme ich bei dem DOIF für die Anwesenheit der beiden Handys nicht weiter.

([1:state] eq "absent" and [2:state] eq "absent") (setstate Anwesenheit absent)

Der DOIF bleibt im state cmd2 stehen, ich vermute ich habe in der DEF einen Fehler.

Was mache ich hier falsch ??

Gruß
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

CoolTux

Bitte poste das komplette DOIF und zwar mit list DoIFNAME

Bei Deinen presence Dummys würde ich eine structure bilden dann musste nicht and abfragen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

roadghost

Bei mir wird mit list DOIF NAME nichts angezeigt.
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

CoolTux

Oben in der schwarze Zeile im Browser in gleicher Höhe wie das Haus ist schreibst Du bitte

list NAMEDESDOIF


Wobei NAMEDESDOIF bitte zu ersetzen ist mit dem Wort wie Dein DOIF heisst.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

roadghost

Ahh,

jetzt hab ich es verstanden:

Internals:
   CFGFN
   DEF        ([Veit_G3:state] eq "absent" and [Biene:state] eq "absent") (setstate Anwesenheit absent)
   NAME       Einbrecher
   NR         364
   NTFY_ORDER 50-Einbrecher
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2016-04-06 08:51:35   Device          Biene
     2016-04-06 08:51:35   cmd_event       Biene
     2016-04-06 08:51:35   cmd_nr          1
     2016-04-06 08:51:35   e_Biene_state   absent
     2016-04-04 05:36:31   e_Veit_G3_state absent
     2016-04-06 08:51:35   state           cmd_1
   Condition:
     0          ReadingValDoIf($hash,'Veit_G3','state','','',AttrVal($hash->{NAME},'notexist',undef)) eq "absent" and ReadingValDoIf($hash,'Biene','state','','',AttrVal($hash->{NAME},'notexist',undef)) eq "absent"
   Devices:
     0           Veit_G3 Biene
     all         Veit_G3 Biene
   Do:
     0:
       0          setstate Anwesenheit absent
     1:
   Helper:
     event      absent
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   Biene
     timerevent absent
     triggerDev Biene
     timerevents:
       absent
     triggerEvents:
       absent
   Internals:
   Itimer:
   Readings:
     0           Veit_G3:state Biene:state
     all         Veit_G3:state Biene:state
   Regexp:
     0:
     All:
   State:
   Trigger:
Attributes:
   room       5.0_FritzBox
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC

CoolTux

Ich sehe nur ein cmd1. Wo soll da das zweite cmd herkommen wenn du nur eine Bedingung plus Kommand definierst.

Und noch mal meine Empfehlung. Bilde mit den beiden presence Devices eine Structure.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Ellert

ZitatWo soll da das zweite cmd herkommen
DOIF mit einer Bedingung und ohne "do always"wechselt in den Status cmd_2, wenn die Bedingung nicht wahr ist.

CoolTux

Sicher? Ich bin mir unsicher, kann mich aber erinnern das ohne () nach einem ELSE kein zweiter cmd kommt.

Und bei Dir bleibt er im cmd2 und wechselt nicht mehr zurück?

Und warum gibt es kein present als zweite Bedingung? Oder ist nur absent fur Dich interessant?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Damian

Zitat von: CoolTux am 06 April 2016, 18:54:28
Sicher? Ich bin mir unsicher, kann mich aber erinnern das ohne () nach einem ELSE kein zweiter cmd kommt.

Und bei Dir bleibt er im cmd2 und wechselt nicht mehr zurück?

Und warum gibt es kein present als zweite Bedingung? Oder ist nur absent fur Dich interessant?

Zitat aus der Commandref:

ZitatZu beachten ist, dass bei do always der Zustand "cmd_2" bei Nichterfüllung der Bedingung nicht gesetzt wird. Möchte man dennoch bei Nichterfüllung der Bedingung einen Zustandswechsel auf "cmd_2" erreichen, so muss man am Ende seiner Definition DOELSE ohne weitere Angaben setzen. Wenn das Attribut do always nicht gesetzt ist, wird dagegen bei Definitionen mit einer einzigen Bedingung, wie im obigen Beispiel, der Zustand "cmd_2" bei Nichterfüllung der Bedingung automatisch gesetzt. Ohne diesen automatischen Zustandswechsel, wäre ansonsten die Definition nicht sinnvoll, da der Zustand "cmd_1" ohne do always nur ein einziges Mal ausgeführt werden könnte.

Gruß

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

CoolTux

Ich danke Dir. Das wäre aber nicht nötig gewesen. Wollte mich noch Kind tun, bin aber noch mit Handy in der Badewanne da war es blöd  ;D

Aber DANKE
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

roadghost

Hi,

ka - mich interessiert nur absent.

Wenn das STRUCTURE, welches ich für die beiden Handys gebildet habe, den state absent einnimmt und es draußen Dunkel ist, soll das DOIF einen aktor schalten.

Daher habe ich diese beiden bedingungen.

Ich hab einiges probiert, ich bekomm es aber nicht hin.

Das STRUCTURE funktioniert, das DOIF jedoch nicht.

Gruß
NUC/Ubuntu 22.04 m. FHEM, div. Tasmota-Steckdosen, HMCFGUSB-2 für 12x HM-CC-RT-DN + 8x HM-TC-IT-WW
Rademacher DuoFern für 12 Jalousien, JeeLink für LaCrosse Temp.Sensor, WLAN-smart-Plugs, 
NUKI smartlock, 2xIP-CAM, Pylontech Speicher + Sungrow WR, Unifi-AP´s + Controller auf weiterem NUC