FHEM Forum

FHEM => Automatisierung => Thema gestartet von: betateilchen am 06 Oktober 2025, 13:09:11

Titel: [02_HTTPAPI.pm] patch - Erweiterung um 'trigger'
Beitrag von: betateilchen am 06 Oktober 2025, 13:09:11
Hallo Klaus,

anbei ein patch, mit dem man über die API auch trigger-Befehle schicken kann. Im Prinzip ist das identisch zu 'set', deshalb beschränkt sich die Änderung auf die Erweiterung der Befehlsabfrage selbst.

Index: 02_HTTPAPI.pm
===================================================================
--- 02_HTTPAPI.pm       (Revision 30353)
+++ 02_HTTPAPI.pm       (Arbeitskopie)
@@ -107,7 +107,7 @@
   my $link;
   return($hash, 503, 'close', "text/plain; charset=utf-8", encode($encoding, "error=503 Service Unavailable")) if(IsDisabled($name));
 
-  if($request =~ m/^(\/$infix)\/(set|get|read|readtimestamp|readinternal|write)\?(.*)$/) {
+  if($request =~ m/^(\/$infix)\/(set|get|read|readtimestamp|readinternal|write|trigger)\?(.*)$/) {
     $link = $1;
     $apiCmd = $2;
     $apiCmdString = $3;
@@ -166,7 +166,7 @@
           } else {
             return($hash, 400, 'close', "text/plain; charset=utf-8", encode($encoding, "error=400 Bad Request, $request > attribute reading or internal is missing"))
           }
-        } elsif ($apiCmd eq 'set') {
+        } elsif ($apiCmd eq 'set' || $apiCmd eq 'trigger') {
           my $setCmd;
           if ($apiCmdString =~ /&action(\=[^&]*)?(?=&|$)|^action(\=[^&]*)?(&|$)/) {
             $setCmd = substr(($1 // $2), 1);
@@ -174,7 +174,7 @@
             $setCmd =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;
             #my $ret = CommandSet(undef, "$fhemDevName $setCmd");
             #my $ret = AnalyzeCommand($defs{$hash->{SNAME}}, "set $fhemDevName $setCmd");
-            my $ret = AnalyzeCommand($defs{$name}, "set $fhemDevName $setCmd");
+            my $ret = AnalyzeCommand($defs{$name}, "$apiCmd $fhemDevName $setCmd");
             if ($ret) {
               return($hash, 400, 'close', "text/plain; charset=utf-8", encode($encoding, "error=400 Bad Request, $request > $ret"))
             } else {
@@ -365,7 +365,7 @@
 <a id="HTTPAPI"></a>
 <h3>HTTPAPI</h3>
 <ul>
-  HTTPAPI is a compact HTML API server that performs http requests to execute set and get commands
+  HTTPAPI is a compact HTML API server that performs http requests to execute set, get and trigger commands
   and reads and writes readings.<br><br>
 
   <a id="HTTPAPI-define"></a>
@@ -435,6 +435,22 @@
   </ul>
   <br><br>
 
+  <a id="HTTPAPI-trigger"></a>
+  <b>Trigger</b>
+  <ul>
+    <li>API command line for executing a trigger command<br>
+      Request:
+      <ul>
+        <code>http://&lt;ip-addr&gt;:&lt;port&gt;/&lt;apiName&gt;/trigger?device=&lt;devname&gt;&action=&lt;cmd&gt;</code><br>
+      </ul>
+      Response:
+      <ul>
+        <code>&lt;device&gt;=&lt;cmd&gt;|error=&lt;error message&gt;</code><br>
+      </ul>
+    </li>
+  </ul>
+  <br><br>
+
   <a id="HTTPAPI-events"></a>
   <b>Generated events</b>
   <ul>
Titel: Aw: [02_HTTPAPI.pm] patch - Erweiterung um 'trigger'
Beitrag von: betateilchen am 01 April 2026, 12:06:13
Hallo Klaus,

Deine jüngste Erweiterung bezüglich "exec" ist prima, aber dadurch ist meine bisher nur lokal vorhandene Anpassung um Trigger verlorengegangen  :)

Magst Du meinen Vorschlag oben bitte prüfen und ggf. auch in das Modul einbauen?

Danke!
Titel: Aw: [02_HTTPAPI.pm] patch - Erweiterung um 'trigger'
Beitrag von: klaus.schauer am 01 April 2026, 19:20:05
Zitat von: betateilchen am 01 April 2026, 12:06:13Deine jüngste Erweiterung bezüglich "exec" ist prima, aber dadurch ist meine bisher nur lokal vorhandene Anpassung um Trigger verlorengegangen  :)
Magst Du meinen Vorschlag oben bitte prüfen und ggf. auch in das Modul einbauen?
Hab es selbstverständlich entsprechend erweitert und hochgeladen. Die Anregung ist ja schon Monate alt. Sorry ich habe das auch heute eher zufällig gesehen. Falls ich wieder einmal nicht reagieren sollte, habe ich nichts gegen eine private Mitteilung.
Titel: Aw: [02_HTTPAPI.pm] patch - Erweiterung um 'trigger'
Beitrag von: Prof. Dr. Peter Henning am 01 April 2026, 21:08:22
Das Modul ist interessant, vor allem für meine derzeitigen asynchronen Rückmeldungen an FHEM. Aber ich verstehe nicht so ganz, warum ich HTTPAPI benutzen sollte statt eines Aufrufs

http://<IP>:<PORT>/fhem?XHR=1&cmd=...

LG

pah
Titel: Aw: [02_HTTPAPI.pm] patch - Erweiterung um 'trigger'
Beitrag von: betateilchen am 01 April 2026, 21:39:48
@pah:
Motivation und Historie zur Entwicklung kannst Du hier nachlesen:

https://forum.fhem.de/index.php?topic=128374.0
Titel: Aw: [02_HTTPAPI.pm] patch - Erweiterung um 'trigger'
Beitrag von: klaus.schauer am 02 April 2026, 06:40:57
Zitat von: Prof. Dr. Peter Henning am 01 April 2026, 21:08:22Das Modul ist interessant, vor allem für meine derzeitigen asynchronen Rückmeldungen an FHEM. Aber ich verstehe nicht so ganz, warum ich HTTPAPI benutzen sollte statt eines Aufrufs

http://<IP>:<PORT>/fhem?XHR=1&cmd=...
Das Standard WEB-Interface wollte ich anfangs auch nutzen. HTTPAPI ist für einfache Steuerungs- und Abfragefunktionen aber schneller und weniger ressourcenhungrig.
Titel: Aw: [02_HTTPAPI.pm] patch - Erweiterung um 'trigger'
Beitrag von: betateilchen am 02 April 2026, 08:01:50
Zitat von: klaus.schauer am 01 April 2026, 19:20:05Hab es selbstverständlich entsprechend erweitert und hochgeladen.

Danke!
Titel: Aw: [02_HTTPAPI.pm] patch - Erweiterung um 'trigger'
Beitrag von: JoWiemann am 15 April 2026, 08:05:32
Zitat von: klaus.schauer am 01 April 2026, 19:20:05Hab es selbstverständlich entsprechend erweitert und hochgeladen.

Hallo Klaus,

nach dem update wollte ich mit 02_HTTPAPI.pm einmal ansehen. Dabei hat mir mein Editor mitgeteilt, dass das Modul ANSI und nicht UTF-8 kodiert ist. Magst Du das noch ändern.

Grüße Jörg