Zitat von: Marko1976 am 06 Oktober 2025, 10:47:03Also nichts für ungut, aber ich frage mich gerade wer dumm und wer dümmer ist, dass wir so im Kreis reden. Genau das schreibe ich seit etlichen Tagen. Doch es gibt Leute hier im Forum die das eben nicht akzeptieren können und meinen nur weil Sie Perl kennen und Fhem damit erweitern MUSS das jeder andere auch können/tun.Zu dumm und dümmer sage ich jetzt nichts...
Zitat von: Marko1976 am 06 Oktober 2025, 10:47:03Beispiel 1: In jeder mir bekannten Programmiersprache muss eine Variable vor benutzung deklariert werden, einzige Ausnahme ist VBA wo es eine Art Autodeklaration gibt. In Fhem wurde erst gestern hier oder dem anderen Threat geschrieben wo zu, das ginge ja auch anders.Das ist keine Logik, das ist "Vereinbarung".
Zitat von: Marko1976 am 06 Oktober 2025, 10:47:03Beispiel 2: In jeder mir bekannten Programmiersprache bedeutet Variable1 = Variable1 "+" Variable2 (Inhaltanführungszeichen ist unterschiedlich je nach Sprache), dass der Inhalt einer zweiten Variable an eine erste angehangen und diese mit dem neuen Inhalt überschrieben wird, in Fhem funktioniert das nicht.Das ist Syntax.
Zitat von: Marko1976 am 06 Oktober 2025, 10:47:03Beispiel 3: Es gibt keine einheitliche Syntex, je nach Einsatzort wird mal mit einem Semikolon, mal mit zwei Semikolon und mal mit Komma statt Semikolon ein Befehl beendet - in jeder anderen Sprache bleibt die Syntext egal wann und wo sie gebraucht wird immer gleich. Das sind nur 3 einfache Beispiele, es gibt sicherlich noch mehr.Das ist fhem bzw. fhem-Eingabe
Zitat von: Marko1976 am 06 Oktober 2025, 10:47:03Und wenn eine Sache ohne Perl nicht geht bleibt eben die Frage ob und wie man vorgeht.Dann geht es nicht (in fhem mit fhem Mitteln ohne Perl). Punkt.
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://<ip-addr>:<port>/<apiName>/trigger?device=<devname>&action=<cmd></code><br>
+ </ul>
+ Response:
+ <ul>
+ <code><device>=<cmd>|error=<error message></code><br>
+ </ul>
+ </li>
+ </ul>
+ <br><br>
+
<a id="HTTPAPI-events"></a>
<b>Generated events</b>
<ul>
ZitatNa ja, so unvermittelt wie sie verschwunden sind, werden sie dann wieder irgendwann auftauchen.Ehrlich gesagt bezweifle ich das. Man hat sich wieder tolle Security Features einfallen lassen, welche vermutlich die Einbettung von SVG-Dateien in eine SVG-Grafik verhindern.
($scale, $cicon) = __normIconScale ($name, $cicon);
my $inner = $cicon;
$inner =~ s{^\s*<svg[^>]*>}{}i; # öffnendes svg entfernen
$inner =~ s{</svg>\s*$}{}i; # schließendes svg entfernen
$ret .= qq{<g id="consumer_${c}_$stna" transform="translate($cons_left $y_pos) scale($scale)">};
$ret .= "<title>$calias</title>" . $inner;
$ret .= '</g> ';
Zitat von: DS_Starter am 06 Oktober 2025, 12:04:29Habe jetzt mal upgedated und Edge ist jetzt auf der Version 141.0.3537.57 (Offizielles Build) (64-Bit).Na ja, so unvermittelt wie sie verschwunden sind, werden sie dann wieder irgendwann auftauchen. Danke für die Unterstützung.
Nun sind die Icons wie bei dir weg. Liegt also definitiv an der Chromium Engine. Tja ... tolle Sache....
Zitat von: DS_Starter am 06 Oktober 2025, 10:41:01Ich nutze Microsoft Edge Version 141.0.3537.57 (Windows 11 64-Bit).ZitatGleiches Problem wie bei mir und Damian?Könnte sein. Mit den von mir getesteten / genutzten Browsern Firefox, Edge und Chrome 140.0.xxx auf Android gibt es keine Probleme.
Zitat von: JudgeDredd am 05 Oktober 2025, 14:20:34Ist diese Funktion denn bereits mit dem original Programm von GitHub möglich ? Dann schaue ich gerne mal das in FHEM aufzunehmen.Bei mac-zhou hab ich nichts greifbares gefunden. Aber hier hat einer die Arbeit aufgegriffen und weiter entwickelt.