FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Lars am 28 Dezember 2012, 09:02:02

Titel: externes Perl Skript ausführen
Beitrag von: Lars am 28 Dezember 2012, 09:02:02
Hallo zusammen,

ich bin FHEM und vor allem Perl Neuling aber durchaus lernbereit.
Wichtige Aktionen möchte ich von einem notify ausgelöst über Prowl an mein iPhone pushen. Dabei möchte ich auf den Umweg E-Mail verzichten und die API von Prowl nutzen. Es gibt hierzu auch bereits ein fertiges eigenständiges Perl Programm (hinter dem Link nach unten scrollen), ich habe nur leider keinen Schimmer, wie ich dieses aus FHEM heraus aufrufen kann. Wenn ich das richtig verstehe lassen sich in die 99_*.pm Dateien nur Routinen(!?(//images/smiley_icons/icon_wink.gif) - sub - einbinden, keine ganzen Programme?

Hier der Link zu Prowl: http://www.prowlapp.com/api.php (//www.prowlapp.com/api.php)

Vielen Dank & Gruß
Lars
Titel: Aw: externes Perl Skript ausführen
Beitrag von: kud am 28 Dezember 2012, 10:54:21
In der fhem.cfg kann man so externe Programme aufrufen:

Beispielcode:
define Bewegung_Piri_2 notify Piri_2:.*on* {\
    if (Value("HomeStatus") > 0 (//images/smiley_icons/icon_wink.gif) {\
       Log 3, "Wohnzimmer PIRI_2 mit ALARM";;\
       fhem("set PIRI_ALARM on");;\
       fhem("set PIRI_ORT Wohnzimmer");;\
       `/usr/bin/aplay /Soundfiles/Sirene.wav `;;\
       `/usr/bin/mpg123 /Soundfiles/Einbruch_wohnzimmer.mp3 `;;\
    }  else {\
   Log 3, "Wohnzimmer PIRI_2 ohne ALARM";;\
}\
}

oder

in die 99_myUtils.pm das einbinden per Funktion

sub Spiele_Sound((//images/smiley_icons/icon_wink.gif) {
   system "aplay /Soundfiles/dingdong3.wav";
}

Vielleicht helfen Dir diese Ansätze weiter.

Gruss Kai-Uwe

Titel: Aw: externes Perl Skript ausführen
Beitrag von: kud am 28 Dezember 2012, 10:55:30
Warum jetzt die Smilys drin sind weiss ich auch nicht.
Titel: Aw: externes Perl Skript ausführen
Beitrag von: ilmtuelp0815 am 28 Dezember 2012, 11:03:17
Hi kud!
Die Smilies kommen in den Text hinein, wenn eine Zeichenkombination der Textversion des Smilies entspricht. Also bei ProgrammCode entweder die Box "Smilies in diesem Text deaktivieren" anhaken oder "code einfügen" nutzen!
Titel: Aw: externes Perl Skript ausführen
Beitrag von: MarkusN am 28 Dezember 2012, 11:53:15
Hallo,

anbei ist ein Code-Beispiel in dem ich die Prowl-Notifications für meinen Trockner nutze. Da es sich um einen Ablufttrockner handelt habe ich einfach einen 1-Wire-Temperatursensor in den Abluftschlauch gehängt. Sobald die Temperatur unter 20C absinkt wird der Trockner auf "off" gesetzt und eine Prowl-Notification auf das iPhone meiner Frau geschickt. Das ganze habe ich bereits zu einem Notify umgebaut, dann funktioniert allerdings das Auslesen und Splitten der Temperatur nicht mehr. Für mich als nicht-Programmierer sind sowas immer schwer zu verstehende Probleme. Aber dir sollte dieser Codeschnippsel weiterhelfen:

define Job_check_Trockner at +*00:05:00 { \
  my @a = split (" ",ReadingsVal("temp_trockner","temperature","10"));; \
  if($a[0] > 20.0) { \
    if ( Value("Trockner") eq "off") { \
      fhem("set Trockner on");; \
    } \
  } else { \
    if (Value("Trockner") eq "on") { \
      fhem("set Trockner off");; \
      system("/home/biomann/scripts/fhem/prowl_franziska.sh 'Trockner ist fertig :)'");; \
    } \
  } \
}
Titel: Aw: externes Perl Skript ausführen
Beitrag von: MarkusN am 28 Dezember 2012, 11:54:54
Die Notifications habe ich übrigens mit prowl.pl (//www.prowlapp.com/static/prowl.pl) realisiert.
Titel: Aw: externes Perl Skript ausführen
Beitrag von: Tobias am 28 Dezember 2012, 12:55:05
Zur Info: Das gibts auch für Android: http://www.notifymyandroid.com/ (//www.notifymyandroid.com/)
Titel: Aw: externes Perl Skript ausführen
Beitrag von: kud am 28 Dezember 2012, 13:45:43
Dumme Zwischenfrage.
Was macht Prowl und die Androidapp anders als Googlemail?
Wenn ich eine mir eine Mail schicke, piept es auf meinem Note ein paar Sekunden später.

Gruss KUD
Titel: Aw: externes Perl Skript ausführen
Beitrag von: Zrrronggg! am 28 Dezember 2012, 14:26:12
Zitat von: ilmtuelp0815 schrieb am Fr, 28 Dezember 2012 11:03Hi kud!
Die Smilies kommen in den Text hinein, wenn eine Zeichenkombination der Textversion des Smilies entspricht. Also bei ProgrammCode entweder die Box "Smilies in diesem Text deaktivieren" anhaken oder "code einfügen" nutzen!


Das stimmt leider nicht immer.  Ich habe inzwischen bemerkt, das einen geschlossene Klammer oft in ;-)  umgewandelt wird auch wenn kein Semikolon oder Minus davor steht.

Ich weiss nicht ob das geht, aber ich denke es würde weniger Ärger geben, wenn man die Smiley default mässig ausschaltet, also "Smileys in diesem Beitrag deaktivieren" normalerweise angekreuzt ist.
Titel: Aw: externes Perl Skript ausführen
Beitrag von: Zrrronggg! am 28 Dezember 2012, 14:27:14
im obigen Beitrag habe ich übrigens die Umwandlung in Smileys nicht dektiviert, trotzdem wurde ;-) nicht umgewandelt.  Da ist schon noch was faul an der Sache.
Titel: Aw: externes Perl Skript ausführen
Beitrag von: Lars am 28 Dezember 2012, 15:13:34
Hallo zusammen,

vielen Dank für die Hilfestellung, das Perl Skript kann ich nun ausführen und erhalte damit die Prowl Benachrichtigungen?
Was daran anders ist als Mail? Prowl sendet die Information direkt auf den Homescreen! Ich muss nicht erst eine E-Mail öffnen um die Information lesen zu können.
Außerdem kann man Prioritäten vergeben und sich so z.B. von einem Dauerton wecken lassen wenn etwas ganz kritisches passiert!

Gruß
Lars
Titel: Aw: externes Perl Skript ausführen
Beitrag von: Lars am 28 Dezember 2012, 15:19:04
Jetzt habe ich aber leider die nächste Frage...

Ich möchte zum Programmstart die Dummy Variable LastTempWarnSZ mit einem alten Datum initialisieren. Dafür möchte ich mich der Lib DateTime bedienen.
Das ganze habe ich so gemacht:

define LastTempWarnSZ dummy
attr LastTempWarnSZ room Schlafzimmer
set LastTempWarnSZ { \
use DateTime;; \
DateTime->new( year => 2012, month => 2, day => 23 );; \
}


Anstelle der Funktionsrückgabe - sprich dem Zeitstempel - hat die Var nun aber den State:
{ \ use DateTime; \ DateTime->new( year => 2012, month => 2, day => 23 ); \ }

Was mache ich falsch?

Gruß
Lars
Titel: Aw: externes Perl Skript ausführen
Beitrag von: Svenson am 01 Januar 2013, 15:22:44
Wie ruft Du das prowl.pl auf?
Titel: Aw: externes Perl Skript ausführen
Beitrag von: Lars am 01 Januar 2013, 18:48:58
Über das Kommando:

perl /usr/bin/fhem.pl /etc/fhem.cfg
Titel: Aw: externes Perl Skript ausführen
Beitrag von: WiKa am 01 Januar 2013, 22:36:51
Zitat von: Lars schrieb am Fr, 28 Dezember 2012 15:19Jetzt habe ich aber leider die nächste Frage...

Ich möchte zum Programmstart die Dummy Variable LastTempWarnSZ mit einem alten Datum initialisieren.

Hallo Lars,
bitte erstelle für die neue Frage einen neuen Beitrag im Forum.
Wie bereits von anderen usern in anderen Beiträgen angemerkt, geht sonst sehr shnell der Überblick über ungelöste Fragen verloren.

VG,
WiKa