Aufruf einer PERL Routine aus Floorplan (Onclick)

Begonnen von sam50, 27 Februar 2015, 15:37:57

Vorheriges Thema - Nächstes Thema

sam50

Hallo Zusammen
Ich habe folgendes Problem wo ich nicht weiterkomme. Und zwar möchte ich aus meinem Floorplan heraus über einen Button über die Onclick Methode ein Perl Script direkt aufrufen.
Der Aufruf über die UR funktioniert schon allerdings schaltet er mir immer die Webseite um, was ich eigentlich nicht möchte.
Meinjetziger Aufruf sieht folgendermaßen aus:
<a href="#" onclick="self.location='/fhem?cmd.fhem={fhem%20myUtils_HeizungUpDown(&quot;ST_Dach_1&quot;,&quot;up&quot;)}'; return false;">

Die Perl Funktion die ich aufrufen möchte heist 'myUtils_HeizungUpDown' und liegt in der 99_myutils.pm. Es funktioniert soweit alles, sobald ich den Button drücke wird die Funktion ausgelöst und ausgeführt, aber es wird wie gesagt auch mein Floorplan auf die 'Homewebpage' umgeschaltet.

Wie muss ich die Perl Funktion aus HTML Sicht aufrufen ohne diese Umschaltung zu bekommen.
Ach so ja. Dieser HTML Code wird dynamisch bei einer Temperaturänderung erzeugt und schreibt mir die Werte per HTML auf den Floorplan.
;)

rudolfkoenig

Wg. generierten HTML-Code: ist das jetzt FLOORPLAN oder nicht?
Wenn ja: Im FLOORPLAN ein dummy anzeigen, diesem dummy per setList/webCmd/devStateIcon die notwendigen Befehle/Stati definieren, und per notify auf dummy die Perl-Funktion aufrufen.
Wenn nicht, dann FHEM-Befehl per JS-Aufruf (XHR & so) und nicht via location= ausloesen, details stehen in fhemweb.js.

sam50

Im Floorplan benutze ich ein SVG Bild und in dem SVG unter 'Interaktion' den Befehl onclick nutzen möchte, was muss ich dort eintragen um die Perl Funktion direkt aufzurufen.
Den Weg über das notify mit dem Dummy möchte ich nicht nutzen um dieses Dummy und das notify einzusparen.
Es funktioniert ja auch schon, nur das umschalten der Webseite möchte ich nicht.
Wo muss ich das mit dem fhemweb.js nachlesen. Bin leider nicht so firm mit dem ganzen Thema.
Was bedeutet (XHR & so)

Danke schon mal vorab für die Hilfe, ich denke ich brauche nur die richtige Richtung wo ich suchen muss.
:)

mele

@sam50: Hast Du eine Lösung ohne Dummy/notify gefunden?

Ich habe das gleiche Problem.
FHEM auf NUC/Proxmox (Rpi 2 / Rpi Zero W mit FHEM2FHEM, RFHEM)
Homematic/LaCrosse/PCA301/Shelly, Rollladen, Batterieaktor + Relais zur Schaltung Garagentor (Promatic 2), Xiaomi FlowerSens, Bewässerungssteuerung Garten und Gewächshaus, Weatherman und Landroid

sam50

Hi
Ja habe eine Möglichkeit gefunden. Im SVG File unter dem Button Objekteigenschaften 'Interaktivät' habe bei 'Onclick' ich den folgenden Befehl eingetragen und abgespeichert.
'FW_cmd('/fhem?XHR=1&cmd.fhem={fhem%20myUtils_HeizungUpDown("ST_Dach_1","up")}')'

Hiermit rufe ich die Perl Routine myUtils_HeizungUpDown auf und übergebe die beiden Parameter 'ST_Dach_1 und up.

mele

Würdest Du hier das ganze SVG-File veröffentlichen? Würde mir und vielleicht auch anderen das Leben erleichtern.

Gruß
Manuel
FHEM auf NUC/Proxmox (Rpi 2 / Rpi Zero W mit FHEM2FHEM, RFHEM)
Homematic/LaCrosse/PCA301/Shelly, Rollladen, Batterieaktor + Relais zur Schaltung Garagentor (Promatic 2), Xiaomi FlowerSens, Bewässerungssteuerung Garten und Gewächshaus, Weatherman und Landroid

sam50

Kein Problem.
Mache ich gerne. Wenn es allerdings nicht erlaubt ist bitte wieder entfernen. Der Perl Aufruf steckt in den Heizungsbuttons und es funktioniert noch nicht alles.
Aber als Vorlage ist es ok denke ich.

mele

Vielen Dank!

Ich habe mal ein wenig rumgespielt. Dabei habe ich vermutlich einen grundlegenden Unterschied zwischen uns festgestellt.

Du arbeitest mit einer Website mit SVG-Elementen und ich mit einzelnen define weblink-Anweisungen in FHEm, um den Floorplan zu bauen.

Debei verwende ich beispielsweise folgenden Code für einen Button:
define text_PCA301_1_an weblink htmlCode <a href="http://192.168.178.250:8083/fhem?cmd.PCA301_Zeitschaltuhr1=set%20PCA301_Zeitschaltuhr1%20on"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" height="40px" width="140px"><g><rect x ="00" y ="00" width ="140" height ="40" rx ="0" ry ="0" fill="rgb(255,204,153)"/><text x="70" y="34" text-anchor="middle" font-size="36" font-family="lcars" fill="rgb(0,0,0)">an</text></g></svg></a>
attr text_PCA301_1_an fp_pca 203,170,0,,


Die onclick-Anweisung ist meines Erachtens nach eine java-Anweisung. Wenn ich diese in der CFG speicher, dann erscheint der Button nicht mehr im Floorplan.

Der Google-SVG-Editor schmeißt die onclick-Anweisung immer aus dem Code raus.

Ich erst einmal habe auf dummy/notify umgeschwenkt, bin aber weiterhin zu jedem Test bereit.

Gruß
Manuel
FHEM auf NUC/Proxmox (Rpi 2 / Rpi Zero W mit FHEM2FHEM, RFHEM)
Homematic/LaCrosse/PCA301/Shelly, Rollladen, Batterieaktor + Relais zur Schaltung Garagentor (Promatic 2), Xiaomi FlowerSens, Bewässerungssteuerung Garten und Gewächshaus, Weatherman und Landroid

sam50

Hi
So wie ich das sehe, erzeugst du den button ja erst. Ich zeichne mit Inkscape meine gesamte Webseit plus Buttons und hinterlege im SVG File auf meinem Button die onclick Anweisung.
deinen weg mit dem dynamischen erzeugen der html Anweisung habe ich auch schon probiert, bin aber wieder davon abgekommen. Ich tue mich mit meinem Weg etwas leichter.
Jeder so wie es ihm gefällt (:-)