Autor Thema: If mit param state Homematic  (Gelesen 12142 mal)

Offline prime1009

  • Jr. Member
  • **
  • Beiträge: 85
If mit param state Homematic
« am: 06 Oktober 2013, 20:23:51 »
Hi,
leider funktioniert die Funktion nicht. Ich bin leider nicht so tief in perl um den Fehler zu finden oder seh den Wald vor lauter Bäumen nicht.

Der Code define Test3 notify Tuer {if ({fhem("get Eingang param state") eq "off"})   {fhem("set Treppe on-for-timer 30")} } funktioniert leider nicht.

Im direktmodus gibt die Funktion {fhem("get Eingang param state") eq "off"} den Wert 1 zurück wenn Eingang off ist. Bei Eingang on gibt es keinen Returnwert.

Sieht jemand den Fehler?

Vielen Dank im Vorraus!
FHEM 5.7 auf RasPi3
Homematic, IT, FS20, Cams (SSCAM), CUL, HueBridge, HarmonyHub, LIGHTIFY, TelegramBot, Homebridge (Siri), DBLog mit MySQL, Text2Speech, ...

Ganneff

  • Gast
Aw: If mit param state Homematic
« Antwort #1 am: 07 Oktober 2013, 15:55:35 »
Zitat von: prime1009 schrieb am So, 06 Oktober 2013 20:23
Hi,
leider funktioniert die Funktion nicht. Ich bin leider nicht so tief in perl um den Fehler zu finden oder seh den Wald vor lauter Bäumen nicht.

Der Code define Test3 notify Tuer {if ({fhem("get Eingang param state") eq "off"})   {fhem("set Treppe on-for-timer 30")} } funktioniert leider nicht.


Check mal deine Klammern, du hast ein paar viele {}, wären meine 2¢. Du hast die äusseren {} ums Perl zu starten, gefolgt von dann nochmal {} rund um die if condition. Aber da bist Du bereits in perl und brauchst die nicht mehr.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16025
  • s/fhem\.cfg/configDB/g
Aw: If mit param state Homematic
« Antwort #2 am: 07 Oktober 2013, 16:11:00 »
eigentlich willst Du doch nur das Licht anmachen, wenn die Tür aufgeht, oder?

define Test3 notify Tuer.off.* set Treppe on-for-timer 30
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline prime1009

  • Jr. Member
  • **
  • Beiträge: 85
Aw: If mit param state Homematic
« Antwort #3 am: 08 Oktober 2013, 11:00:34 »
Zitat
eigentlich willst Du doch nur das Licht anmachen, wenn die Tür aufgeht, oder?


Nicht so ganz!

Wenn ich das Licht(Eingang) eingeschaltet habe und dann geht die Tür(Tuer) auf, wird das Licht nach dem Timer ausgeschaltet was aber nicht darf da ich es ja manuell eingeschaltet habe.

Daher soll der Timer nur starten, wenn das Licht(Eingang) aus ist.

Mit den Klammer werde ich heute Abend mal testen.
FHEM 5.7 auf RasPi3
Homematic, IT, FS20, Cams (SSCAM), CUL, HueBridge, HarmonyHub, LIGHTIFY, TelegramBot, Homebridge (Siri), DBLog mit MySQL, Text2Speech, ...

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16025
  • s/fhem\.cfg/configDB/g
Aw: If mit param state Homematic
« Antwort #4 am: 08 Oktober 2013, 11:04:59 »
Ich glaube, Du denkst viel zu kompliziert.

Beschreibe doch bitte mal den logischen zeitlichen Ablauf zwischen Lichtschalten und Türöffnen und wann genau was passieren soll.

-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline prime1009

  • Jr. Member
  • **
  • Beiträge: 85
Aw: If mit param state Homematic
« Antwort #5 am: 08 Oktober 2013, 13:13:04 »
Das Licht(Eingang) wird über einen Bewegungsmelder(Tuer) gesteuert, der bei Auslösung den Timer für das Licht startet. Das Funktioniert auch Problemlos.

Wenn ich allerdings abends mal weg gehe, möchte ich das das Licht nicht nur bei Bewegung angeht, sondern wären meiner Abwesenheit permanent an ist.

Das kann ich auch einschalten und es brennt solange ohne Probleme bis der Bewegungsmelder ausgelöst wird und den Timer für das Licht startet. Nach Ablauf des Times ist es dann aus mit dem Licht, obwohl ich noch nicht zu Hause bin.

Zum Testen habe ich allerding nicht Eingang selber schalten lassen sondern Ersatzweise die Treppe. Im Programmcode muss Treppe noch durch Eingang ersetzt werden (also wenn Licht schon an ist dann mache nichts)

Ich hoffe jetzt ist es klarer.
FHEM 5.7 auf RasPi3
Homematic, IT, FS20, Cams (SSCAM), CUL, HueBridge, HarmonyHub, LIGHTIFY, TelegramBot, Homebridge (Siri), DBLog mit MySQL, Text2Speech, ...

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16025
  • s/fhem\.cfg/configDB/g
Aw: If mit param state Homematic
« Antwort #6 am: 08 Oktober 2013, 13:24:06 »
define Test3 notify Tuer.off.* {if(Value('irgendeinLichtschalter') ne 'on') {fhem('set Treppe on-for-timer 30')}

Also nur wenn der Lichtschalter nicht schon "on" ist, wird er auf "on-for-timer" geschaltet. Anderenfalls passier gar nix.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg Stammtisch am 20.09.2019

Offline prime1009

  • Jr. Member
  • **
  • Beiträge: 85
Aw: If mit param state Homematic
« Antwort #7 am: 08 Oktober 2013, 14:19:43 »
Genau so soll es sein!
FHEM 5.7 auf RasPi3
Homematic, IT, FS20, Cams (SSCAM), CUL, HueBridge, HarmonyHub, LIGHTIFY, TelegramBot, Homebridge (Siri), DBLog mit MySQL, Text2Speech, ...

Offline prime1009

  • Jr. Member
  • **
  • Beiträge: 85
Aw: If mit param state Homematic
« Antwort #8 am: 08 Oktober 2013, 19:35:14 »
Das ändern der Klammern in define Test3 notify Tuer {if (fhem("get Eingang param state") eq "off") fhem("set Treppe on-for-timer 10")} hat leider auch nichts gebracht.

Wenn ich allerdings die Prüfung eq in ne ändere findet die Schaltung immer statt.
define Test3 notify Tuer {if ({fhem("get Eingang param state")} ne "off") {fhem("set Treppe on-for-timer 10")}}

Irgendwie schein der Vergleich auf > eq "off" < nicht zu funktionieren.

Im Direktmodus bring der Aufruf {({fhem("get Eingang param state")} ne "off")} als Rückgabewert eine
1 wenn Eingang = off und
nichts wenn Eingang = on!
FHEM 5.7 auf RasPi3
Homematic, IT, FS20, Cams (SSCAM), CUL, HueBridge, HarmonyHub, LIGHTIFY, TelegramBot, Homebridge (Siri), DBLog mit MySQL, Text2Speech, ...

Offline MisterEltako

  • Sr. Member
  • ****
  • Beiträge: 524
Aw: If mit param state Homematic
« Antwort #9 am: 09 Oktober 2013, 07:00:51 »
Dann versuche es einmal so:

define Test3 notify Tuer {\
    my $Status = Value("Eingang");;\
    Log 3, "Der Status von Eingang ist: $Status";;\
    if ($Status != 1) {fhem("set Treppe on-for-timer 10")}}


So findest du den Fehler vielleicht leichter!

Wenn das dann funktioniert, kannst du wieder zu:

define Test3 notify Tuer {if (Value("Eingang") != 1) {fhem("set Treppe on-for-timer 10")}}

zurückkehren.

MfG, MisterEltako
HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

Offline prime1009

  • Jr. Member
  • **
  • Beiträge: 85
Aw: If mit param state Homematic
« Antwort #10 am: 09 Oktober 2013, 08:48:37 »
Vielen Dank für den Hinweis!

so funktioniert es jetzt:define Test3 notify Tuer {if (Value("Eingang") eq "off") {fhem("set Treppe on-for-timer 10")}}
FHEM 5.7 auf RasPi3
Homematic, IT, FS20, Cams (SSCAM), CUL, HueBridge, HarmonyHub, LIGHTIFY, TelegramBot, Homebridge (Siri), DBLog mit MySQL, Text2Speech, ...
Hilfreich Hilfreich x 1 Liste anzeigen

 

decade-submarginal