neuer FHEM-Befehl IF

Begonnen von Damian, 25 Dezember 2013, 23:50:06

Vorheriges Thema - Nächstes Thema

Michi240281

Hab den Fehler entdeckt. Das Reading "light" wird wohl nur dann aktualisiert, wenn es sich ändert. Da muss ich nochmal schauen.

Habe das notify jetzt geändert und nutze das reading "twilight" und damit gehts jetzt! :)

Habe auch meine Klingel mit dem neuen IF Modul realisiert, ging auch erst, aber jetzt aus unerklärlichem Grund nicht mehr:

define Klingelsignal notify Klingeltaster IF (($hms gt "07:30" and $hms lt "22:30") and Klingeltaster eq "gedrueckt") (set Funk_Gong_Ton press long,set Funk_Gong_LED led greenS)

Wenn ich nur den IF Ausdruck in die Kommandozeile einfüge, kommt folgender Fehlermeldung:



Bareword "Klingeltaster" not allowed while "strict subs" in use at (eval 3529) line 1.

Was heißt das?
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9

Damian

Zitat von: Michi240281 am 09 März 2014, 21:25:40
define Klingelsignal notify Klingeltaster IF (($hms gt "07:30" and $hms lt "22:30") and Klingeltaster eq "gedrueckt") (set Funk_Gong_Ton press long,set Funk_Gong_LED led greenS)

Wenn ich nur den IF Ausdruck in die Kommandozeile einfüge, kommt folgender Fehlermeldung:

Bareword "Klingeltaster" not allowed while "strict subs" in use at (eval 3529) line 1.

Du hast vergessen Klingeltaster mit seinem Reading in eckige Klammern zu setzen, wahrscheinlich [Klingeltaster:state]

Siehe deine anderen notifys mit IF und Reading-Angaben.

Gruß

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

Michi240281

Achso, es muss immer ein Reading verwendet werden?
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9

Damian

Zitat von: Michi240281 am 09 März 2014, 21:33:43
Achso, es muss immer ein Reading verwendet werden?

ja und alles, was in Perl geht, wie z. B. Variablen, die belegt sind, wie $hms

Gruß

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

Michi240281

Es geht!!!!!!!! :)

Besten Dank!!!!!!!!!!
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9

Michi240281

Hi Damian,

wie könnte ich denn Sunrise und Sunset in das IF Modul mit einbauen?

MIt dem Twilight Modul bin ich nämlich nicht 100% glücklich. Ich würde nun gerne sowas realisieren:

Wenn Sonne untergegangen ist und DM500HD:power eq on, dann set xy.

Hast du da ne Idee?

Also man müsste

define Ambientelicht_TV notify My_Twilight IF (([My_Twilight:twilight] < 3) and [DM500HD:power] eq "on") (set Alle_Steckdosen_EG:FILTER=STATE!=an an)

mit

{sunset_abs("HORIZON=-2",0,"16:00","19:30")}

kombinieren!?!?

Also statt des Twilight-Ausdrucks eben Sunset nutzen.
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9

Damian

Das machst du besser mit dem at-Befehl:

define Ambientelicht_TV at *{sunset_abs("HORIZON=-2",0,"16:00","19:30")} IF ([DM500HD:power] eq "on") (set Alle_Steckdosen_EG:FILTER=STATE!=an an)


Gruß

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

Michi240281

Ahhhhhhhhh, wieder was gelernt! War nicht darauf gekommen, dass ich auch ein at vor das IF setzen kann! Sehr cool! Immer mehr Möglichkeiten tun sich auf! :)

Besten Dank!!!!!!!
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9

Damian

Zitat von: Michi240281 am 13 März 2014, 09:21:29
War nicht darauf gekommen, dass ich auch ein at vor das IF setzen kann!

Im ersten Post sind diverse Beispiele zur Nutzung von IF, davon sind alleine acht in Kombination mit at.


Gruß

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

satprofi

Zitat von: Michi240281 am 13 März 2014, 09:21:29
Ahhhhhhhhh, wieder was gelernt! War nicht darauf gekommen, dass ich auch ein at vor das IF setzen kann! Sehr cool! Immer mehr Möglichkeiten tun sich auf! :)

Besten Dank!!!!!!!

andersrum wäre es noch besser . einen at-befehl erst abgeben wenn IF erfüllt.
so eine lösung suche ich noch
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Damian

Zitat von: satprofi am 13 März 2014, 20:32:24
andersrum wäre es noch besser . einen at-befehl erst abgeben wenn IF erfüllt.
so eine lösung suche ich noch

Es kommt darauf an, was du willst.

Willst du genau einmal zum Zeitpunkt des Sonnenuntergangs Lampen einschalten, wenn der Schalter an ist, dann ist das die passende Lösung.

Willst du dagegen jedes mal, wenn Schalter an geht, nach Sonnenuntergang die Lampen einschalten, dann machst du das im notify mit Abfrage des Sonnenuntergangs, hier also:

define Ambientelicht_TV notify DM500HD.power.on IF ($hms gt sunset_abs("HORIZON=-2",0,"16:00","19:30")) (set Alle_Steckdosen_EG:FILTER=STATE!=an an)


Die Eventabfrage  "DM500HD.power.on"  muss natürlich zum tatsächlichen Event passen.

Gruß

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

Michi240281

#176
Das ist sehr interessant, ich möchte nämlich folgendes erreichen:

Das Ambientelicht soll angehen, sobald es dunkel wird und die DM500HD läuft. Es soll aber auch angehen, wenn es bereits dunkel ist und dann erst die DM500HD eingeschaltet wird. Daher wird das mit dem at wohl leider nichts, da nur einmal geprüft wird. Schalte ich die DM500HD 1s später ein, passiert nix mehr!

Ich will einfach, dass in jeder Situation, in der es dunkel ist und ich fernsehe (DM500HD power on), das Ambientelicht angeht.

Würde das mit deinem zuletzt geposteten Notify klappen?

EDIT: Hab das notify mal eingebaut, scheint nicht zu funzen???
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9

Damian

Zitat von: Michi240281 am 13 März 2014, 20:59:24
Würde das mit deinem zuletzt geposteten Notify klappen?

Klar, dann lässt du den define at und machst den notify mit einem anderen Namen noch dazu. Mit "set Alle_Steckdosen_EG:FILTER=STATE!=an an" wird ja nie zu viel geschaltet, wenn Lampe schon an ist.

Gruß

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

Michi240281

#178
Der IF Ausdruck funktikoniert, es scheint also an dem DM500HD.power.on zu liegen?!?!?!?

Hier mal ein List von DM500HD:



Internals:
   CHANGED   
   DEF        192.168.188.33 80 5 root ******
   INTERVAL   5
   NAME       DM500HD
   NR         136
   STATE      an
   TYPE       ENIGMA2
   model      dm500hd
   Readings:
     2014-03-13 21:18:20   acg             
17
     2014-03-13 21:15:14   apid            515
     2014-03-13 21:18:20   ber             
0

     2014-03-13 21:15:14   channel         VOX_HD
     2014-03-13 21:15:14   currentMedia    1:0:19:EF11:421:1:C00000:0:0:0:
     2014-03-13 21:15:14   currentTitle    Stirb langsam: Jetzt erst recht
     2014-02-08 12:44:40   enigmaversion   2012-03-27-3.2
     2014-03-13 21:18:19   eventcurrenttime 1394741897.27
     2014-03-13 21:18:19   eventcurrenttime_hr 21:18:17
     2014-03-13 21:18:19   eventcurrenttime_next 1394741897.32
     2014-03-13 21:18:19   eventcurrenttime_next_hr 21:18:17
     2014-03-12 17:56:49   eventdescription -
     2014-03-12 17:56:49   eventdescription_next -
     2014-03-13 21:15:14   eventduration   9000
     2014-03-13 21:15:14   eventduration_hr 02:30:00
     2014-03-13 21:15:14   eventduration_next 6900
     2014-03-13 21:15:14   eventduration_next_hr 01:55:00
     2014-03-13 21:15:14   eventname       Stirb langsam: Jetzt erst recht
     2014-03-13 21:15:14   eventname_next  Tango & Cash
     2014-03-13 21:18:19   eventremaining  5203
     2014-03-13 21:18:19   eventremaining_hr 01:26:43
     2014-03-13 21:15:14   eventremaining_next 6900
     2014-03-13 21:15:14   eventremaining_next_hr 01:55:00
     2014-03-13 21:15:14   eventstart      1394738100
     2014-03-13 21:15:14   eventstart_hr   20:15:00
     2014-03-13 21:15:14   eventstart_next 1394747100
     2014-03-13 21:15:14   eventstart_next_hr 22:45:00
     2014-03-13 21:15:14   eventtitle      Stirb langsam: Jetzt erst recht
     2014-03-13 21:15:14   eventtitle_next Tango & Cash
     2014-02-08 12:44:40   fpversion       None
     2014-02-08 12:44:40   imageversion    Experimental 2012-04-02
     2014-03-13 21:01:47   input           tv
     2014-02-08 11:44:22   iswidescreen    -
     2014-02-08 12:44:40   lanmac          00:09:34:2a:b8:8f
     2014-02-08 12:44:40   model           dm500hd
     2014-03-13 21:15:14   mute            off
     2014-03-13 21:15:14   nextTitle       Tango & Cash
     2014-03-13 21:15:14   onid            1
     2014-03-13 21:15:14   pcrpid          511
     2014-03-13 21:15:14   pmtpid          97
     2014-03-13 21:15:12   power           on
     2014-03-13 21:01:45   presence        present
     2014-03-13 21:15:14   providername    CBC
     2014-03-13 20:17:05   recordings      0
     2014-03-13 21:15:14   servicename     VOX HD
     2014-03-13 21:15:14   servicereference 1:0:19:EF11:421:1:C00000:0:0:0:
     2014-03-13 21:15:14   servicevideosize 1920x1080
     2014-03-13 21:15:14   sid             61201
     2014-03-13 21:18:20   snr             
86
     2014-03-13 21:18:20   snrdb           
13.86
     2014-03-13 21:15:12   state           on
     2014-03-13 21:15:14   tsid            1057
     2014-02-08 12:44:40   tuner_a         BCM4505 (DVB-S2)
     2014-03-13 21:15:14   txtpid          33
     2014-03-13 21:15:14   videoheight     1080
     2014-03-13 21:15:14   videowidth      1920
     2014-03-13 21:15:14   volume          45
     2014-03-13 21:15:14   vpid            511
     2014-02-08 12:44:40   webifversion    1.7.1
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9

Damian

Zitat von: Michi240281 am 13 März 2014, 21:16:07
Der IF Ausdruck funktikoniert, es scheint also an dem DM500HD.power.on zu liegen?!?!?!?

Dann musst du schauen, was genau beim Event Monitor kommt. Der Punkt steht für ein beliebiges Zeichen.

Gruß

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