Hauptmenü

externes Perl Skript ausführen

Begonnen von Lars, 28 Dezember 2012, 09:02:02

Vorheriges Thema - Nächstes Thema

Lars

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

Vielen Dank & Gruß
Lars
FHEM Hauptsystem auf ESXi VM | dblog | 3 rPi für Nebensysteme | 2 Beaglebone Black Test- / Integrationssystem

kud

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


kud

Warum jetzt die Smilys drin sind weiss ich auch nicht.

ilmtuelp0815

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!
FHEM auf FRITZ!Box 7390, SuSE 12.3 und Cubieboard2
CUL und HM-LAN
FS20: FHT80b, TFK, KSE, FMS, DU-2, ST-4, SM4, S4M, SM8

HM: HM-Sec-SD

MarkusN

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 :)'");; \
    } \
  } \
}

MarkusN

Die Notifications habe ich übrigens mit prowl.pl realisiert.

Tobias

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

kud

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

Zrrronggg!

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.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Zrrronggg!

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.
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Lars

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
FHEM Hauptsystem auf ESXi VM | dblog | 3 rPi für Nebensysteme | 2 Beaglebone Black Test- / Integrationssystem

Lars

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
FHEM Hauptsystem auf ESXi VM | dblog | 3 rPi für Nebensysteme | 2 Beaglebone Black Test- / Integrationssystem

Svenson


Lars

Über das Kommando:

perl /usr/bin/fhem.pl /etc/fhem.cfg
FHEM Hauptsystem auf ESXi VM | dblog | 3 rPi für Nebensysteme | 2 Beaglebone Black Test- / Integrationssystem

WiKa

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

FB7390 FW:FRITZ!OS 05.50 / RFXTRX433 FW:433_64 / ELRO AB440R (modified to IT-Code) - AB440S (IT-Code) - AB440IS (IT-Code) / Oregon THGN132N - THN132N - THGR122N / Intertechno PAR-1000 - PAR1500