FHEM > Automatisierung

Perl Script über Browser aufrufen

(1/2) > >>

Johannes:
Hallo,

Perl Anfängerfrage:
Ich habe ein Script geschrieben, welches ich über den Webbrowser aufrufen will. Dabei sollen angehängte Argumente in dem Script ausgewertet werden.
Meine Frage, wo sollte das Script abgelegt werden und wie kann ich es im Kontext von FHEM aufrufen?
Über Apache könnte man ja cgi(-bin) nutzen, aber wie das in FHEM klappt ist mir nicht ganz klar.
Danke schonmal für Antwort...

Johannes:
Achja, das Script produziert eine Antwort, die ich ungefiltert zurück bekommen muss

UliM:
Hi,
das script in 99_myUtils.pm ablegen, zB meinScript()

Einen dummy definieren, der nur als "trojanisches Pferd" zum Aufruf benutzt wird, zB
define meinScriptTrigger dummy

Ein notify definieren, das Dein script jedes mal aufruft,, wenn ein event für meinScriptTrigger ausgelöst wird:
define losgehts notify meinScriptTrigger.* { meinScript() }

Von aussen den Link zum (ein)schalten des dummy absetzen, um das script aufzurufen:
http://ip:8083/fhem?cmd.meinScriptTrigger=set%20meinScriptTrigger%20on&room=all

Wenn Dein script html-code mittels return zurückgibt, wird dies auf der zurückgegebenen html-Seite ausgegeben und Du kannst es rausparsen.


Geht's damit?

Gruß, Uli

Johannes:
Hallo Uli,

Bisher stellt sich leider kein Erfolg ein.

Meine fhem.cfg am Ende:

define meinScriptTrigger dummy
define losgehts notify meinScriptTrigger.* { 99_Utils() }

FHEM Neustart und Aufruf von
http://192.168.0.111:8083/fhem?cmd.meinScriptTrigger=set%20meinScriptTrigger%20on&room=all

bringt mich wieder auf die Startsteite von FHEM. In der Webkonsole sehe ich, dass die GET Anfrage nicht beantwortet wurde.
Das Script auf Konsole aufgerufen bringt aber Output.

Hier ein einfaches Beispiel:

--- Code: ---
package main;

use strict;
use warnings;
use POSIX;

sub
Utils_Initialize()
{
  return "hallo";
}
print &Utils_Initialize;
1;

--- Ende Code ---


Gibt es eigentlich auch andere Methoden, ein Modul / Script über Browser zu triggern oder ist das der "way to go" in FHEM?

UliM:
Hi,

--- Zitat ---define losgehts notify meinScriptTrigger.* { 99_Utils() }
--- Ende Zitat ---

Wenn Dui ein leeres Programm aufrufst, ist klar, dass nix zurückkommt.

Du musst eine Routine INNERHALB 99_myUtils.pm aufrufen, die fehlt bei Dir noch.

Schau Dir mal den Wiki-Beitrag dazu an:
http://www.fhemwiki.de/wiki/99_myUtils_anlegen

Ob es andere Wege gbt, weiss ich nicht...

Gruß, Uli

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln