Autor Thema: Abschalten der Device Replace Automatik  (Gelesen 564 mal)

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3459
  • ~ Challenging Innovation ~
Abschalten der Device Replace Automatik
« am: 11 März 2019, 10:08:02 »
Ich habe jetzt eine ganze Weile gesucht, aber ich finde nichts darüber, wie man FHEMWEB abgewöhnen kann in der Ausgabe von Get/Set Befehlen nach Devicenamen zu suchen und diese zu verlinken.


Gibt es diese Möglichkeit schon und wie geht das? ;-)




Danke & Gruß
Julian
FHEM-Module: ENIGMA2, GEOFANCY, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM-Docker auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs, LG OLED 65C8, Sonos Playbar+2xOne+Sub, 2x Sonos One, 1x Sonos Play:1

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15913
  • s/fhem\.cfg/configDB/g
Antw:Abschalten der Device Replace Automatik
« Antwort #1 am: 11 März 2019, 11:23:33 »
Sieht nicht so aus, als könne man das derzeit abschalten...

    } else {             # "linkify" output (e.g. for list)
      $FW_cmdret = FW_addLinks(FW_htmlEscape($FW_cmdret));
      $FW_cmdret =~ s/:\S+//g if($FW_cmdret =~ m/unknown.*choose one of/i);
      $FW_cmdret = "<pre>$FW_cmdret</pre>" if($FW_cmdret =~ m/\n/);
    }

...

sub
FW_addLinks($)
{
  my ($txt) = @_;
  return undef if(!defined($txt));
  $txt =~ s,\b([a-z0-9._]+)\b,
            $defs{$1} ? "<a href='$FW_ME$FW_subdir?detail=$1'>$1</a>" : $1,gei;
  return $txt;
}
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 14.06.2019

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3459
  • ~ Challenging Innovation ~
Antw:Abschalten der Device Replace Automatik
« Antwort #2 am: 11 März 2019, 12:58:44 »
Danke dir! Ich habs wirklich nicht gefunden


Die betreffende Codestelle in FHEMWEB ist wohl die andere:

  #If we are in XHR or json mode, execute the command directly
  if($FW_XHR || $FW_jsonp) {
    $FW_cmdret = $docmd ? FW_fC($cmd, $cmddev) : undef;
    $FW_RETTYPE = $FW_chash->{contenttype} ?
        $FW_chash->{contenttype} : "text/plain; charset=$FW_encoding";
    delete($FW_chash->{contenttype});

    if($FW_jsonp) {
      $FW_cmdret =~ s/'/\\'/g;
      # Escape newlines in JavaScript string
      $FW_cmdret =~ s/\n/\\\n/g;
      FW_pO "$FW_jsonp('$FW_cmdret');";

    } else {
      $FW_cmdret = FW_addLinks($FW_cmdret) if($FW_webArgs{addLinks});
      FW_pO $FW_cmdret;

    }
    return 0;
  }

Dort wird <html></html> weder berücksichtigt noch entfernt. Soll das tatsächlich so sein?
Angehängter Patch würde das beheben. Wäre das was?


Trotzdem begegnet mir auch wieder, dass sich der get/set Button in der Detailansicht unterschiedlich zum get Textbefehl verhält. Wenn ich den get Button benutze, dann funktioniert alles wie es soll. Wenn ich aber get als Textkommando eingebe, dann ist im sich öffnenden Popup Window immer das allererste HTML Kommando als Text dargestellt, also nicht vom Browser gerendert. Alle folgenden Tags werden rerendert, aber die Anzeige ist natürlich trotzdem falsch, wenn der nicht gerenderte, erste Tag ein Tabellenanfang war...  :(
Kann dabei noch jemand helfen?
« Letzte Änderung: 11 März 2019, 13:54:03 von Loredo »
FHEM-Module: ENIGMA2, GEOFANCY, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM-Docker auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs, LG OLED 65C8, Sonos Playbar+2xOne+Sub, 2x Sonos One, 1x Sonos Play:1

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3459
  • ~ Challenging Innovation ~
Antw:Abschalten der Device Replace Automatik
« Antwort #3 am: 13 März 2019, 09:38:50 »
Kann das jemand nachvollziehen?


@Rudi, hattest du Gelegenheit über die geänderten Zeilen in FHEMWEB zu philosophieren? ;-)
FHEM-Module: ENIGMA2, GEOFANCY, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM-Docker auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs, LG OLED 65C8, Sonos Playbar+2xOne+Sub, 2x Sonos One, 1x Sonos Play:1

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20459
Antw:Abschalten der Device Replace Automatik
« Antwort #4 am: 13 März 2019, 09:47:51 »
Ich habe damit noch nicht angefangen, weil ich nur eine Loesung fuer ein grob beschriebenes Problem, was ich nicht wirklich verstanden habe, gesehen habe. Wenn ich etwas machen soll, dann brauche ich ein HOWTO fuers Nachstellen des Problems.

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3459
  • ~ Challenging Innovation ~
Antw:Abschalten der Device Replace Automatik
« Antwort #5 am: 13 März 2019, 10:11:54 »
Ok, das nachzustellen ist ganz einfach:

1. FHEM Demo starten
2. define fhemInstaller Installer
3. auf der Detailseite des Devices fhemInstaller auf "get showModuleInfo FHEM" klicken.
4. Die Links unter "Wiki" und "Command Reference" haben beide am Ende den Modulnamen "global" stehen, welcher aber dann durch den HTML Anker ersetzt wird. Dadurch sind die beiden <a></a> Anweisungen ineinander verschachtelt und es wird nicht auf die richtige externe Seite verlinkt (z.B. https://wiki.fhem.de/wiki/%3Ca%20href='/fhem?detail=global%27%3Eglobal%3C/a%3E anstatt https://wiki.fhem.de/wiki/global)
5. Den gleichen Aufruf 'get fhemInstaller showModuleInfo FHEM' nun über die Texteingabezeile oben eingeben. Das Ergebnis ist, dass hier oben <html> als Text mit angezeigt wird.
6. Nun den Patch für FHEMWEB aus diesem Post anwenden. Das Verhalten aus Punkt 4 ist damit korrigiert. Gleichzeitig bleibt das Verhalten aus Punkt 5 dennoch erhalten, jedoch wird statt <html> nun <table> als Klartext angezeigt und die Formatierung der Seite ist nicht mehr korrekt.
FHEM-Module: ENIGMA2, GEOFANCY, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM-Docker auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs, LG OLED 65C8, Sonos Playbar+2xOne+Sub, 2x Sonos One, 1x Sonos Play:1

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20459
Antw:Abschalten der Device Replace Automatik
« Antwort #6 am: 14 März 2019, 13:59:03 »
Zitat
3. auf der Detailseite des Devices fhemInstaller auf "get showModuleInfo FHEM" klicken.
Bitte meine Emailadresse umgehend entfernen.
Ich weiss auch nicht, ob der Link auf dem Verein "rechtens" ist, abgestimmt ist es jedenfalls nicht.
Die Privacy Erklaerung ist fraglich: auf der verlinkten Seite geht es um die fhem.de Seiten, und nicht um FHEM als Software.
Und ob man diese Version von fhem.pl als "stable" bezeichnen kann, muss auch noch nachgewiesen werden.


Zitat
5. Den gleichen Aufruf 'get fhemInstaller showModuleInfo FHEM' nun über die Texteingabezeile oben eingeben. Das Ergebnis ist, dass hier oben <html> als Text mit angezeigt wird.
html sollte die Funktion nur dann zurueckliefern, wenn sie sicher ist, dass die Ausgabe im Browser landet.
Das kriegt man ueber $hash->{CL} raus, was fuer SetFn, GetFn, etc auf die Quell-Instanz des Befehls gesetzt ist.

Zitat
6. Nun den Patch für FHEMWEB aus diesem Post anwenden.
Der Haken mit dem Patch ist, dass er nicht rueckwaertskompatibel ist, und ich weiss nicht, ob jetzt schon Module gibt, die sich darauf verlassen, dass trotz <html> FHEMWEB die Geraete verlinkt.
Eine rueckwaertskompatible Alternative (mit anderen Nachteilen) ist, $FW_webArgs{addLinks} zu entfernen, wenn man sicher ist, dass man diese Behandlung nicht haben will.
Nach etwas Gruebeln bin ich fuer diese Alternative, bin aber fuer Argumente offen.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20459
Antw:Abschalten der Device Replace Automatik
« Antwort #7 am: 14 März 2019, 14:12:49 »
Zitat
5. Den gleichen Aufruf 'get fhemInstaller showModuleInfo FHEM' nun über die Texteingabezeile oben eingeben. Das Ergebnis ist, dass hier oben <html> als Text mit angezeigt wird.

Sorry, das habe ich nicht aufmerksam gelesen.
War ein Bug in fhemweb.js, was mehrzeilige <html> nicht erkannt hat, und sie deswege in <pre> gepackt hat, was wiederum <html> Tags nicht ignoriert, sondern anzeigt.
Das habe ich jetzt gefixt.

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3459
  • ~ Challenging Innovation ~
Antw:Abschalten der Device Replace Automatik
« Antwort #8 am: 14 März 2019, 16:05:06 »
Bitte meine Emailadresse umgehend entfernen.

Ich habe dir dazu hier geantwortet:

html sollte die Funktion nur dann zurueckliefern, wenn sie sicher ist, dass die Ausgabe im Browser landet.
Das kriegt man ueber $hash->{CL} raus, was fuer SetFn, GetFn, etc auf die Quell-Instanz des Befehls gesetzt ist.

Danke, das mache ich auch schon so.

Der Haken mit dem Patch ist, dass er nicht rueckwaertskompatibel ist, und ich weiss nicht, ob jetzt schon Module gibt, die sich darauf verlassen, dass trotz <html> FHEMWEB die Geraete verlinkt.
Eine rueckwaertskompatible Alternative (mit anderen Nachteilen) ist, $FW_webArgs{addLinks} zu entfernen, wenn man sicher ist, dass man diese Behandlung nicht haben will.
Nach etwas Gruebeln bin ich fuer diese Alternative, bin aber fuer Argumente offen.

Wie entferne ich denn $FW_webArgs{addLinks}? Oder meinst du, dass du das aus FHEMWEB entfernen würdest? Ich verstehe dann nicht ganz den Unterschied zum vorgeschlagenen Patch?


Sorry, das habe ich nicht aufmerksam gelesen.War ein Bug in fhemweb.js, was mehrzeilige <html> nicht erkannt hat, und sie deswege in <pre> gepackt hat, was wiederum <html> Tags nicht ignoriert, sondern anzeigt.Das habe ich jetzt gefixt.


Super gut, danke!  :)
FHEM-Module: ENIGMA2, GEOFANCY, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM-Docker auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs, LG OLED 65C8, Sonos Playbar+2xOne+Sub, 2x Sonos One, 1x Sonos Play:1

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20459
Antw:Abschalten der Device Replace Automatik
« Antwort #9 am: 14 März 2019, 17:09:18 »
Zitat
Wie entferne ich denn $FW_webArgs{addLinks}?
delete($FW_webArgs{addLinks});
Zitat
Ich verstehe dann nicht ganz den Unterschied zum vorgeschlagenen Patch?
Dein Patch bewirkt, dass bei <html> Ausgaben existierender Module keine Links eingebaut werden. Wenn ich das einbaue, dann habe ich vermutlich uebermorgen die Beschwerden diverser Anweder am Hals.
Wenn Du addLinks in deinem Modul selbst entfernst, dann sollte kein Anwender einen Grund fuer eine Beschwerde haben.

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3459
  • ~ Challenging Innovation ~
Antw:Abschalten der Device Replace Automatik
« Antwort #10 am: 14 März 2019, 17:27:30 »
Wenn Du addLinks in deinem Modul selbst entfernst, dann sollte kein Anwender einen Grund fuer eine Beschwerde haben.


Vielen Dank, dann mache ich das so. Hatte übersehen ob FW_webArgs ein globaler Hash ist.


War ein Bug in fhemweb.js, was mehrzeilige <html> nicht erkannt hat, und sie deswege in <pre> gepackt hat, was wiederum <html> Tags nicht ignoriert, sondern anzeigt.
Das habe ich jetzt gefixt.


Jetzt scheint die Ausgabe jedoch auf eine andere Weise unterschiedlich. Beim anklicken des Buttons wird mit <pre></pre> gearbeitet, bei der Javascript Variante jedoch nicht. Ich bin nicht sicher, welche Variante mir besser gefällt, aber es sollte wenn möglich zumindest konsistent sein. Könntest du da bei Gelegenheit bitte nochmals nachsehen?
FHEM-Module: ENIGMA2, GEOFANCY, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM-Docker auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs, LG OLED 65C8, Sonos Playbar+2xOne+Sub, 2x Sonos One, 1x Sonos Play:1

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20459
Antw:Abschalten der Device Replace Automatik
« Antwort #11 am: 14 März 2019, 19:33:43 »
Zitat
Jetzt scheint die Ausgabe jedoch auf eine andere Weise unterschiedlich. Beim anklicken des Buttons wird mit <pre></pre> gearbeitet, bei der Javascript Variante jedoch nicht.
Danke fuer den Hinweis, das Problem kam nicht mit dem vorherigen Fix rein, das war schon frueher so.
Ist aber mAn ein Fehler (wer <html> schreibt, der soll bei Bedarf <pre> hinzufuegen), und ich habe es gefixt: beim <html> wird kein <pre> eingebaut. Hoffentlich gibt es keine unbebsichtigte Nebenwirkungen.

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3459
  • ~ Challenging Innovation ~
Antw:Abschalten der Device Replace Automatik
« Antwort #12 am: 14 März 2019, 19:41:29 »
Klasse, danke! Ich hätte nämlich nicht gewusst, wie ich zwischen den beiden Aufrufen hätte unterscheiden sollen, um einmal <pre></pre> noch hinzuzufügen und einmal nicht :-)
FHEM-Module: ENIGMA2, GEOFANCY, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM-Docker auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs, LG OLED 65C8, Sonos Playbar+2xOne+Sub, 2x Sonos One, 1x Sonos Play:1

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3459
  • ~ Challenging Innovation ~
Antw:Abschalten der Device Replace Automatik
« Antwort #13 am: 14 März 2019, 19:46:13 »
Einen hab ich noch (sorry!  :-[ )


Die Änderungen an fhemweb.js werden scheinbar erst wirksam, wenn ich den Browser Cache leere. Ist das so gewollt und hätte ich nur warten müssen?
FHEM-Module: ENIGMA2, GEOFANCY, PHTV, RESIDENTS, ROOMMATE, GUEST, HP1000, Pushover, THINKINGCLEANER, Wunderground | FHEM-Befehl: msg

FHEM-Docker auf Intel NUC mit Proxmox VE
Homematic via HMCCU, Hue Color Bulbs, LG OLED 65C8, Sonos Playbar+2xOne+Sub, 2x Sonos One, 1x Sonos Play:1

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20459
Antw:Abschalten der Device Replace Automatik
« Antwort #14 am: 14 März 2019, 19:49:35 »
Die FHEMWEB Cache-Timeouts sind 15 Minuten, Zeile 2129 in 01_FHEMWEB.pm: "Expires: ".FmtDateTimeRFC1123($now+900)
Informativ Informativ x 1 Liste anzeigen

 

decade-submarginal