Testen von FHEM-Perl Expressions

Begonnen von Tobias, 30 August 2011, 08:00:46

Vorheriges Thema - Nächstes Thema

Tobias

                                                   

Hi,
gibt es eine effiziente Möglichkeit Fhem Perl Expressions zu testen??
Ich möchte Timer mit mehr oder weniger komplizierten Perl Expressions
aufbauen. Es ist aber mühselig und langwierig den timer 1. zu
modifizieren, 2. die Ausführunfzeit auf die kommenden Minute
umzusetzen, 3. zu warten bis die Timerzeit ran ist und 4. das Fhem Log
zu checken auf entsprechende Fehlermeldungen.

Und oweit ich gelesen habe funktioniert "trigger" auch nur mit notifiy
events...

Bsp:
define a8 at *10:06:00 {\
 if($value{Bodenfeuchtesensor} eq "on") {\
     fhem "set Bewaesserung_Ventil1 on-for-timer 1920";;\
 } else {\
     fhem "set Bewaesserung_Ventil1 off"\
 }\
}

Wie macht ihr das??

--
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

rudolfkoenig

                                                   

> Wie macht ihr das??

- direkt auf der Kommandozeile, siehe http://fhem.de/commandref.html#perl

- wenn es laenger wird, dann notify schreiben, mit trigger testen, und in at
  das trigger ausloesen. Hat den Vorteil, dass man es auch anderweitig
  verwenden kann. Ich sehe in fhem die notify's zunehmend als Unterprogramm
  bzw. Funktion
    define n8 notify n8 { ... }
    define a8 +*10:00 trigger n8

- und wenn es noch laenger wird, dann z.Bsp. nach 99_MyUtils (Kopie von
  99_Utils.pm) als "richtige" perl Funktion auslagern. Sowas kann man mit
  "reload 99_MyUtils" neuladen (die Syntax-Fehler stehen in fhem Log), mit
  { MyFn() } von der fhem Kommandozeile testen, und mit
    define a8 +*10:00 { MyFn() }
  aufrufen.

- und wenn es noch laenger wird :), dann als externes Programm mit beliebige
  Programmiersprache, Aufrufbeispiel:
    define a8 +*10:00 "garden.pl"
  Siehe z.Bsp fhem/contrib/garden.pl. Das Programm liest die fhem-Stati z.Bsp
  mit system("perl fhem.pl localhost:7072 'list device'").

- und wenn es noch laenger wird, dann laeuft das externe Programm als daemon,
  verbindet sich via TCP/IP mit fhem 2-mal. Auf dem ersten wird ein "inform
  timer" abgesetzt, und da kriegt man dann alle Events mit, auf dem zweiten
  sendet man die Befehle.

So. :)

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

Tobias

                                                   

Sehr gut.. Danke für die ausführliche Antwort... so komme ich dann -
glaub ich - erstmal alleine weiter

--
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