Fritzbox Gerät bei Anruf schalten

Begonnen von vw2audi, 13 Oktober 2015, 00:09:44

Vorheriges Thema - Nächstes Thema

vw2audi

Hallo Leute ich schaffe es nicht einen ELSE Befehlz zu implementieren.....
Das Licht soll eingeschaltet werden, wenn die Nummer **751 intern angerufen wird.
Soweit geht auch alles (Code1) in Code 2 möchte ich gerne, dass wenn das Licht bereits an ist dass es wieder ausgeschaltet wird.
Leider funktioniert es nicht, nur warum?

(Code1)
# **751 FritzBox_Licht_Wohnzimmer an/aus
define not_FritzBox_Licht_Wohnzimmer notify FritzBox {\
fhem ("set WZ.LAMPE1 on")\
if (ReadingsVal("FritzBox","external_number","") eq "**751") && (Value("WZ.LAMPE1") eq "off")\
}

(Code2)
# **751 FritzBox_Licht_Wohnzimmer an/aus
define not_FritzBox_Licht_Wohnzimmer notify FritzBox {\
fhem ("set WZ.LAMPE1 on")\
if (ReadingsVal("FritzBox","external_number","") eq "**751") && (Value("WZ.LAMPE1") eq "off")\
    else {\
    fhem ("set WZ.LAMPE1 off")\
    }\
}

Fhem auf Raspberry PI3, sonoff: RFBridge, PIR, Basic, POW, Dual.... , FS20: FHT 80TF-2 (3x); FS20-Piri2 (1x)
S300TH (1x); FS20-ST (6x); FS20-SU (3x); FS20 WS1 (2x); Fritz: DECT200 (3x), Z-Wave: diverse Schalter.... , HomeMatic: Heizungsregler

Ellert

Bist Du sicher, dass das nachgestellte if mit else-Zweig eine gültige Perl-Syntax ist.

C0mmanda

Es fehlt auch das Event würde ich sagen.

define not_FritzBox_Licht_Wohnzimmer notify FritzBox {\

Muss doch eher sowas wie

define not_FritzBox_Licht_Wohnzimmer notify FritzBox:external_number {\
sein.

Ansonsten sieht mir der Rest auch nicht ganz sauber aus. Ich würde zuerst die if-Bedingung schreiben, dann den Befehl, Klammern sind doch auch zuviel?

Ich würde es eher so machen:


(Code1)
# **751 FritzBox_Licht_Wohnzimmer an/aus
define not_FritzBox_Licht_Wohnzimmer notify FritzBox:external_number {\
if (ReadingsVal("FritzBox","external_number","") eq "**751" && Value("WZ.LAMPE1") eq "off") {\
fhem ("set WZ.LAMPE1 on");}\
}


Mit der else-Bedingung in Code2 bin ich mir auch nicht sicher....

grtz
C0mmanda

CoolTux

Event hat er ja. Es wird state genommen. Scheint ja wohl auch zu klappen


define not_FritzBox_Licht_Wohnzimmer notify FritzBox {\
if (ReadingsVal("FritzBox","external_number","") eq "**751") && (Value("WZ.LAMPE1") eq "off")\
    fhem ("set WZ.LAMPE1 on")\
else {\
    fhem ("set WZ.LAMPE1 off")\
    }\
}


Alerdings ist der Code oder Besser die Logik Blödsin. Er fragt ob die Lampe aus ist. wenn ja mach sie an wenn sie nicht aus ist mach sie aus. HALLO  ???
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

marvin78

Naja. Das nennt man toogle. Das kann schon eine sinnvolle Steuerung sein.

CoolTux

Sinnvoll aber doch nur wenn der Zustand ein anderer ist wie aus. Oder übersehe ich da was. Ok es gubt noch mehr wie an und aus. Kann ja auch ein Dimmer sein.
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

marvin78

Hm. Nein. Ist die Lampe aus, wird sie eingeschaltet, ist sie an (oder was anderes), wird sie aus geschaltet. Der "Fehler" liegt hier woanders. Es löst jede external-number ein off aus. Ich würde hier mit FILTER=STATE=off u.ä. arbeiten

Ich würde hier auch das event aus FB_CALLMONITOR noch verfeinern und das Reading event als Trigger verwenden.

CoolTux

Gut habe eben noch mal gaaaaanz lange auf den Schirm gestarrt und meinen Denkfehler gesehen. Das else gehört zum if wird also das if nicht erfüllt also die Lampe ist nicht aus erfolgt das else, nämlich mache sie aus.
Mein Fehler. Ist wohl noch zu frü für mich. Sorry fürs verwirren.


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

vw2audi

Hallo und danke für die Vielen Ideen,

ich habe auch noch einmal etwas versucht.

Die Logik dahinter ist die, dass ich mit meinem Telefon die Lampe im Wohnzimmer an und ausschalten kann.
Was mich etwas wunder it folgendes.....

Ich habe es jetzt auch einmal mit dem Befehl "toggle" versucht. Leider mit einem merkwürdigen Verhalten .....

# **751 FritzBox_Licht_Wohnzimmer an/aus
define not_FritzBox_Licht_Wohnzimmer notify FritzBox {\
fhem ("set WZ.LAMPE1 toggle")\
if (ReadingsVal("FritzBox","external_number","") eq "**751") && (Value("WZ.LAMPE1") eq "off")\
}

Wenn ich jetzt anrufe wird die Lamoe auch so, wie ich es wollte geschaltet, jedoch, wenn ich wieder auflege geht die Lampe gerade wieder in den vorherigen Zustand zurück ?????????????

Was das?????
Fhem auf Raspberry PI3, sonoff: RFBridge, PIR, Basic, POW, Dual.... , FS20: FHT 80TF-2 (3x); FS20-Piri2 (1x)
S300TH (1x); FS20-ST (6x); FS20-SU (3x); FS20 WS1 (2x); Fritz: DECT200 (3x), Z-Wave: diverse Schalter.... , HomeMatic: Heizungsregler

marvin78

#9
Logisch. Du toggelst ja auch bei jedem Event der FritzBox die Lampe. Beschäftige dich ein wenig mit Events. Dazu solltest du dir ansehen, wie man sie einschränkt, wie man darauf triggert usw. Ich hatte ja schon geschrieben, dass man hier das notify besser auf das Event "event" einschränkt. Das toggle ist gut, aber wofür brauchst du das off?


FritzBox:event:.call {
  fhem ("set WZ.LAMPE1 toggle") if (ReadingsVal("FritzBox","external_number","") eq "**751");
}


sollte den Trick machen. Keine Garantie, dass das Event 100%ig richtig ist. Aber das findest du ja leicht im Eventmonitor heraus.

Bitte verwende Code Tags. Deine Codes kann so niemand lesen. Danke!