[Gelöst] Wie kann man einen Hyperlink im state formatieren?

Begonnen von Gisbert, 16 November 2020, 15:11:07

Vorheriges Thema - Nächstes Thema

Gisbert

Hallo zusammen,

ich habe einige ESP8266-Geräte, die ich per Wlan mit ihrer IP-Adresse ansprechen kann.
Diese habe ich im state per stateFormat wie folgt dargestellt (alles nicht relevante habe ich weggelassen):


...
attr DEVICE stateFormat IPaddress
attr DEVICE userReadings IPaddress {"<html><a href='http://192.168.xx.yy'>http://192.168.xx.yy</a></html>"}
...


Der Hyperlink wird im state angezeigt und funktioniert, soweit alles prima.
Ich würde allerdings den Hyperlink im state gerne farbig (nach meiner Wahl) und unterstrichen darstellen wollen, was mir aber nicht gelingen will wie bei anderen Devices.
Hier nur mal ein Beispiel, wo es gelingt, mit Farbe und Formatierungen:
attr Ueberwachung stateFormat ΔT<i><span style="vertical-align: -3px;; font-size: 75%;;">EG</span></i>: <span style='color:{(ReadingsVal('$name','UeberwachungEG','') < 0 ? "red":"#2e5e87")}'>[$name:UeberwachungEG:r1]</span>°C</br>\
ΔT<i><span style="vertical-align: -3px;; font-size: 75%;;">OG</span></i>: <span style='color:{(ReadingsVal('$name','UeberwachungOG','') < 0 ? "red":"#2e5e87")}'>[$name:UeberwachungOG:r1]</span>°C


Bei unterschiedlichen Styles kommen auch unterschiedliche Darstellungen heraus, von keine Änderung (=schwarz) bis grüne Schrift.
Mein Wunsch wäre noch, dass ein neues Fenster aufgemacht wird, anstatt den Hyperlink im gerade geöffneten Fenster zu starten.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

yersinia

#1
Woher (iSv Reading, Internal, Attribut) hast du die IP-Adresse?
Ein stateFormat könnte, wenn IPaddress als n.n.n.n vorliegt, in etwa so aussehen (RAW):
attr DEVICE stateFormat { my $ret = '<div style="text-align: left;;">';;\
$ret .= '<a href="'.ReadingsVal($name,IPaddress,"-").'" ';;\
$ret .= 'title="klick mich" rel="noopener noreferrer" target="_blank" ';;\
$ret .= 'style="color: limegreen;; text-decoration: underline;;">';;\
$ret .= ReadingsVal($name,IPaddress,"-");;\
$ret .= '</a>';;\
$ret .= '</div>';;\
return $ret;;\
}

Oder als C&P für FHEMWEB:
{ my $ret = '<div style="text-align: left;">';
$ret .= '<a href="'.ReadingsVal($name,IPaddress,"-").'" ';
$ret .= 'title="klick mich" rel="noopener noreferrer" target="_blank" ';
$ret .= 'style="color: limegreen; text-decoration: underline;">';
$ret .= ReadingsVal($name,IPaddress,"-");
$ret .= '</a>';
$ret .= '</div>';
return $ret;
}
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Gisbert

Hallo yersinia,

vielen Dank für deine Unterstützung.

die IP-Adresse des ESPs ist natürlich bekannt, und in Fhem-Device habe ich sie per userReadings festgelegt:
attr DEVICE userReadings IPaddress {"<html><a href='http://192.168.2.55'>klick mich</a></html>"}

Deinen Vorschlag für das stateFormat verstehe ich, allerdings wird diese Definition bei mir dann sehr lang, da ich etliche Readings darstelle, was jetzt einfach durch das Schreiben der Readingnamens erledigt ist. Mit deinem Vorschlag muss ich viel mehr Text/Zeilen/Verbindungen etc. bemühen, was die Lesbarkeit des Befehls erschwert.

Deshalb möchte ich den 2. Vorschlag auch verstehen, vielleicht fällt das dann nur einmalig an und ist damit kürzer.
Hier weiß ich allerdings nicht, wo ich diesen Code bei FHMWEB unterbringen kann, durch c(opy)&p(aste) - nehme an das steht für C&P.

Mein FHEMWEB sieht so aus, etwas länglich, da ich den flex-style benutze:
defmod WEBtablet FHEMWEB IPV6:8085 global
attr WEBtablet Css .SVGlabel:not([data-name=svgZoomControl]) a { font-weight: normal;;;; font-size: 0.7em;;;; }\
.SVGplot text.title { font-weight: normal }\
.roomoverview .odd > td.containsPlot .SVGlabel,.roomoverview .even > td.containsPlot .SVGlabel { width: -webkit-fill-available;; }\
.SVGlabel[data-name=svgZoomControl] { max-width: -webkit-fill-available;; }
attr WEBtablet HTTPS 1
attr WEBtablet allowfrom 192.168.1.*|127.0.0.1
attr WEBtablet comment Das Attribut Css (so wie es hier definiert ist) definiert die Größe und Stärke der Unterschrift unter dem Diagramm:\
attr Css .SVGlabel:not([data-name=svgZoomControl]) a { font-weight: normal;;;; font-size: 0.75em;;;; }\
style:\
min width: 340px\
max width: 35%\
plot size: 480,185
attr WEBtablet editConfig 1
attr WEBtablet endPlotNow 1
attr WEBtablet endPlotToday 1
attr WEBtablet iconPath fhemSVG:openautomation:default:IcoMoon:IconFontAwesomeSVG
attr WEBtablet plotEmbed 0
attr WEBtablet plotfork 1
attr WEBtablet plotsize 480,185
attr WEBtablet sortRooms AMAD netatmo Finance Traffic Network Haus Corona CUL_HM Rollladen Heizung Weather Unsorted Mobile Everything
attr WEBtablet sslVersion TLSv12:!SSLv3
attr WEBtablet styleData {\
"flex": {\
  "colorPreset": {\
   "mystyle": {\
    "HeaderBG": "#2E5E87",\
    "HeaderIcon": "#FFF",\
    "HeaderText": "#FFF",\
    "HeaderBorder": "#2E5E87",\
    "MenuBG": "#222222",\
    "MenuBorder": "#2E5E87",\
    "MenuIcon": "#FFF",\
    "MenuIconBG": "#222222",\
    "MenuRoomIcon": "#FFF",\
    "MenuText": "#FFF",\
    "MenuHoverLink": "#2E5E87",\
    "MainBG": "#dddddd",\
    "TableHeaderBG": "#2E5E87",\
    "TableHeaderText": "#FFF",\
    "TableBorder": "#2E5E87",\
    "TableOdd": "#EEE",\
    "TableEven": "#DDD",\
    "TableText": "#000",\
    "TableLink": "#000000",\
    "TableLinkFirstCol": "#000",\
    "TableHoverRow": "#AAA",\
    "TableHoverLink": "#2E5E87",\
    "TableNewEvent": "#F00",\
    "TableIcon": "#2E5E87",\
    "TableShadow": "#000",\
    "SetGetAttrBG": "#CCC",\
    "SubmitButtonBG": "#2E5E87",\
    "SubmitButtonBorder": "#555",\
    "SubmitButtonText": "#FFF",\
    "WidgetBorder": "#555",\
    "WidgetText": "#000",\
    "WidgetHighlight": "#2E5E87",\
    "LogDate": "#000",\
    "LogTime": "#000",\
    "LogVerbose0": "#000",\
    "LogVerbose1": "#F00",\
    "LogVerbose2": "#FFA500",\
    "LogVerbose3": "#008000",\
    "LogVerbose4": "#1E90FF",\
    "LogVerbose5": "#00F",\
    "plotBG": "#eeeeee",\
    "plotBGgradient": "#dddddd",\
    "plotBorder": "#2E5E87",\
    "plotText": "#000",\
    "plotGrid": "#555",\
    "plotMarker": "#F00",\
    "plotLine0": "#F00",\
    "plotLine1": "#008000",\
    "plotLine2": "#0000b2",\
    "plotLine3": "#d675d6",\
    "plotLine4": "#a52a2a",\
    "plotLine5": "#000",\
    "plotLine6": "#808000",\
    "plotLine7": "#808080",\
    "plotLine8": "#e6e600",\
    "plotLinePasted": "#000"\
   }\
  },\
  "menuOrder": {},\
  "title": "",\
  "myUtilsFileName": "",\
  "plotMinWidth": "340px",\
  "plotMaxWidth": "60%",\
  "scalePage": "1",\
  "showClock": false,\
  "showRebootButton": false,\
  "showUpdateButton": false,\
  "showUpdateCheckButton": false,\
  "showRereadIconsButton": false,\
  "showRawInputButton": true,\
  "showSaveButton": true,\
  "showRoomDeviceName": true,\
  "showMenuAlways": true,\
  "enableCommandHistory": true,\
  "enableDeviceSearch": true,\
  "showReadingsGroupAsTable": true,\
  "hideWebcmdOnSmallScreen": false,\
  "colorOptionsDetailed": true,\
  "showTablesSideBySide": false,\
  "enableAnimations": false,\
  "improvePerformance": false,\
  "enableLogLineWrap": true,\
  "color": {\
   "HeaderBG": "#2E5E87",\
   "HeaderIcon": "#FFF",\
   "HeaderText": "#FFF",\
   "HeaderBorder": "#2E5E87",\
   "MenuBG": "#222222",\
   "MenuBorder": "#2E5E87",\
   "MenuIcon": "#FFF",\
   "MenuIconBG": "#222222",\
   "MenuRoomIcon": "#FFF",\
   "MenuText": "#FFF",\
   "MenuHoverLink": "#2E5E87",\
   "MainBG": "#dddddd",\
   "TableHeaderBG": "#2E5E87",\
   "TableHeaderText": "#FFF",\
   "TableBorder": "#2E5E87",\
   "TableOdd": "#EEE",\
   "TableEven": "#DDD",\
   "TableText": "#000",\
   "TableLink": "#000",\
   "TableLinkFirstCol": "#000",\
   "TableHoverRow": "#AAA",\
   "TableHoverLink": "#2E5E87",\
   "TableNewEvent": "#F00",\
   "TableIcon": "#2E5E87",\
   "TableShadow": "#000",\
   "SetGetAttrBG": "#CCC",\
   "SubmitButtonBG": "#2E5E87",\
   "SubmitButtonBorder": "#555",\
   "SubmitButtonText": "#FFF",\
   "WidgetBorder": "#555",\
   "WidgetText": "#000",\
   "WidgetHighlight": "#2E5E87",\
   "LogDate": "#000",\
   "LogTime": "#000",\
   "LogVerbose0": "#000",\
   "LogVerbose1": "#F00",\
   "LogVerbose2": "#FFA500",\
   "LogVerbose3": "#008000",\
   "LogVerbose4": "#1E90FF",\
   "LogVerbose5": "#00F",\
   "plotBG": "#eeeeee",\
   "plotBorder": "#2E5E87",\
   "plotText": "#000",\
   "plotGrid": "#555",\
   "plotMarker": "#F00",\
   "plotLine0": "#F00",\
   "plotLine1": "#008000",\
   "plotLine2": "#0000b2",\
   "plotLine3": "#d675d6",\
   "plotLine4": "#a52a2a",\
   "plotLine5": "#000",\
   "plotLine6": "#808000",\
   "plotLine7": "#808080",\
   "plotLine8": "#e6e600",\
   "plotLinePasted": "#000"\
  },\
  "enableRoundedEdges": true,\
  "enableTableShadow": true,\
  "enableSortableGroups": false,\
  "showLogoButton": true,\
  "showFirstColBold": false,\
  "showRoomIconsRight": true,\
  "enableCodeMirror": true,\
  "enableDayTimeStyle": false,\
  "enableExperimental": false,\
  "dayStyle": "bright",\
  "nightStyle": "dark",\
  "newSettings": {},\
  "enableTouchDragging": false,\
  "multiColumnLayout": "single",\
  "devices": {\
   "863120284cfe691772e05bfbbba99dba": {\
    "color": {\
     "HeaderBG": "#2E5E87",\
     "HeaderIcon": "#FFF",\
     "HeaderText": "#FFF",\
     "HeaderBorder": "#2E5E87",\
     "MenuBG": "#222222",\
     "MenuBorder": "#2E5E87",\
     "MenuIcon": "#FFF",\
     "MenuIconBG": "#222222",\
     "MenuRoomIcon": "#FFF",\
     "MenuText": "#FFF",\
     "MenuHoverLink": "#2E5E87",\
     "MainBG": "#dddddd",\
     "TableHeaderBG": "#2E5E87",\
     "TableHeaderText": "#FFF",\
     "TableBorder": "#2E5E87",\
     "TableOdd": "#EEE",\
     "TableEven": "#DDD",\
     "TableText": "#000",\
     "TableLink": "#000",\
     "TableLinkFirstCol": "#000",\
     "TableHoverRow": "#AAA",\
     "TableHoverLink": "#2E5E87",\
     "TableNewEvent": "#F00",\
     "TableIcon": "#2E5E87",\
     "TableShadow": "#000",\
     "SetGetAttrBG": "#CCC",\
     "SubmitButtonBG": "#2E5E87",\
     "SubmitButtonBorder": "#555",\
     "SubmitButtonText": "#FFF",\
     "WidgetBorder": "#555",\
     "WidgetText": "#000",\
     "WidgetHighlight": "#2E5E87",\
     "LogDate": "#000",\
     "LogTime": "#000",\
     "LogVerbose0": "#000",\
     "LogVerbose1": "#F00",\
     "LogVerbose2": "#FFA500",\
     "LogVerbose3": "#008000",\
     "LogVerbose4": "#1E90FF",\
     "LogVerbose5": "#00F",\
     "plotBG": "#eeeeee",\
     "plotBGgradient": "#dddddd",\
     "plotBorder": "#2E5E87",\
     "plotText": "#000",\
     "plotGrid": "#555",\
     "plotMarker": "#F00",\
     "plotLine0": "#F00",\
     "plotLine1": "#008000",\
     "plotLine2": "#0000b2",\
     "plotLine3": "#d675d6",\
     "plotLine4": "#a52a2a",\
     "plotLine5": "#000",\
     "plotLine6": "#808000",\
     "plotLine7": "#808080",\
     "plotLine8": "#8b4513",\
     "plotLinePasted": "#000"\
    },\
    "title": "",\
    "myUtilsFileName": "",\
    "plotMinWidth": "340px",\
    "plotMaxWidth": "60%",\
    "fontFamily": "Arial",\
    "showClock": false,\
    "showLogoButton": true,\
    "showRebootButton": false,\
    "showUpdateButton": false,\
    "showUpdateCheckButton": false,\
    "showRereadIconsButton": false,\
    "showRawInputButton": true,\
    "showSaveButton": true,\
    "showRoomDeviceName": true,\
    "showMenuAlways": true,\
    "showFirstColBold": false,\
    "enableCommandHistory": true,\
    "enableDeviceSearch": true,\
    "hideWebcmdOnSmallScreen": false,\
    "colorOptionsDetailed": true,\
    "multiColumnLayout": "single",\
    "enableAnimations": false,\
    "improvePerformance": false,\
    "enableLogLineWrap": true,\
    "enableRoundedEdges": true,\
    "enableTableShadow": true,\
    "showRoomIconsRight": true,\
    "enableCodeMirror": true,\
    "enableDayTimeStyle": false,\
    "enableExperimental": false,\
    "dayStyle": "bright",\
    "nightStyle": "dark",\
    "currentStyle": "unsaved",\
    "newSettings": {},\
    "scalePage": "1",\
    "enableTableBehaviour": false\
   },\
   "280d408a828ffbd66c6a9192929aefdf": {\
    "color": {\
     "HeaderBG": "#2E5E87",\
     "HeaderIcon": "#FFF",\
     "HeaderText": "#FFF",\
     "HeaderBorder": "#2E5E87",\
     "MenuBG": "#222222",\
     "MenuBorder": "#2E5E87",\
     "MenuIcon": "#FFF",\
     "MenuIconBG": "#222222",\
     "MenuRoomIcon": "#FFF",\
     "MenuText": "#FFF",\
     "MenuHoverLink": "#2E5E87",\
     "MainBG": "#dddddd",\
     "TableHeaderBG": "#2E5E87",\
     "TableHeaderText": "#FFF",\
     "TableBorder": "#2E5E87",\
     "TableOdd": "#EEE",\
     "TableEven": "#DDD",\
     "TableText": "#000",\
     "TableLink": "#000000",\
     "TableLinkFirstCol": "#000",\
     "TableHoverRow": "#AAA",\
     "TableHoverLink": "#2E5E87",\
     "TableNewEvent": "#F00",\
     "TableIcon": "#2E5E87",\
     "TableShadow": "#000",\
     "SetGetAttrBG": "#CCC",\
     "SubmitButtonBG": "#2E5E87",\
     "SubmitButtonBorder": "#555",\
     "SubmitButtonText": "#FFF",\
     "WidgetBorder": "#555",\
     "WidgetText": "#000",\
     "WidgetHighlight": "#2E5E87",\
     "LogDate": "#000",\
     "LogTime": "#000",\
     "LogVerbose0": "#000",\
     "LogVerbose1": "#F00",\
     "LogVerbose2": "#FFA500",\
     "LogVerbose3": "#008000",\
     "LogVerbose4": "#1E90FF",\
     "LogVerbose5": "#00F",\
     "plotBG": "#eeeeee",\
     "plotBGgradient": "#dddddd",\
     "plotBorder": "#2E5E87",\
     "plotText": "#000",\
     "plotGrid": "#555",\
     "plotMarker": "#F00",\
     "plotLine0": "#F00",\
     "plotLine1": "#008000",\
     "plotLine2": "#0000b2",\
     "plotLine3": "#d675d6",\
     "plotLine4": "#a52a2a",\
     "plotLine5": "#000",\
     "plotLine6": "#808000",\
     "plotLine7": "#808080",\
     "plotLine8": "#e6e600",\
     "plotLinePasted": "#000"\
    },\
    "title": "",\
    "myUtilsFileName": "",\
    "plotMinWidth": "340px",\
    "plotMaxWidth": "60%",\
    "fontFamily": "Arial",\
    "showClock": false,\
    "showLogoButton": true,\
    "showRebootButton": false,\
    "showUpdateButton": false,\
    "showUpdateCheckButton": false,\
    "showRereadIconsButton": false,\
    "showRawInputButton": true,\
    "showSaveButton": true,\
    "showRoomDeviceName": true,\
    "showMenuAlways": true,\
    "showFirstColBold": false,\
    "enableCommandHistory": true,\
    "enableDeviceSearch": true,\
    "hideWebcmdOnSmallScreen": false,\
    "colorOptionsDetailed": true,\
    "multiColumnLayout": "single",\
    "enableAnimations": false,\
    "improvePerformance": false,\
    "enableLogLineWrap": true,\
    "enableRoundedEdges": true,\
    "enableTableShadow": true,\
    "showRoomIconsRight": true,\
    "enableCodeMirror": true,\
    "enableDayTimeStyle": false,\
    "enableExperimental": false,\
    "dayStyle": "bright",\
    "nightStyle": "dark",\
    "currentStyle": "mystyle",\
    "newSettings": {},\
    "scalePage": "1",\
    "enableTableBehaviour": false\
   }\
  },\
  "fontFamily": "Arial"\
}\
}
attr WEBtablet stylesheetPrefix flex
attr WEBtablet title { if ($FW_room) { "Live: $FW_room" } elsif ($FW_detail) { "Live: $FW_detail" } else { "Live: FHEM" } }
attr WEBtablet verbose 3


Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

yersinia

#3
Zitat von: Gisbert am 16 November 2020, 21:29:42
die IP-Adresse des ESPs ist natürlich bekannt, und in Fhem-Device habe ich sie per userReadings festgelegt:
attr DEVICE userReadings IPaddress {"<html><a href='http://192.168.2.55'>klick mich</a></html>"}
Warum baust du das userReading genauso zusammen? So ganz ist mir der Sinn nicht ersichtlich, du könntest genauso ein user Attribut nehmen, oder das ESP-Device gibt es bereits mit. Wie ist der ESP als Device eingebunden? Via ESPBridge?
Bei Letzterem ist die IP ein Internal und erhälst du via
InternalVal(ESPDEVICE,"HOST","none")

Zitat von: Gisbert am 16 November 2020, 21:29:42Deinen Vorschlag für das stateFormat verstehe ich, allerdings wird diese Definition bei mir dann sehr lang, da ich etliche Readings darstelle, was jetzt einfach durch das Schreiben der Readingnamens erledigt ist. Mit deinem Vorschlag muss ich viel mehr Text/Zeilen/Verbindungen etc. bemühen, was die Lesbarkeit des Befehls erschwert.

Deshalb möchte ich den 2. Vorschlag auch verstehen, vielleicht fällt das dann nur einmalig an und ist damit kürzer.
Hier weiß ich allerdings nicht, wo ich diesen Code bei FHMWEB unterbringen kann, durch c(opy)&p(aste) - nehme an das steht für C&P.
Der Code ist identisch, oder sollte es sein, der Erste liegt als RAW vor und der Zweite zum Kopieren via des FHEMWEB user interfaces -> sprich: wenn du das Attribut stateFormat auswählst, kannst du den zweiten Vorschlag in die Textzeile kopieren (und speichern).
Und ja, das hier vorgeschlagene stateFormat baut nur etwas HTML Code um die Readings herum, die Readings, die man angezeigt bekommen möchte, muss man natürlich definieren - je mehr Readings, umso mehr Code. Je nach dem, was du mit stateFormat anzeigen lassen willst, könnte man dies auch über eine Schleife lösen. Ja, das ist auch aufwendig aber wenn man es einmal hat...

Ich nutze das zB auch für den firmware update check via github api, hier werden die gefundenen Devices tabellarisch aufgelistet, im stateFormat.



Edit: ich habe deinen Eingangspost nochmal gelesen und ich glaube es nun besser zu verstehen:  ::)
Zitat von: Gisbert am 16 November 2020, 15:11:07
Diese habe ich im state per stateFormat wie folgt dargestellt (alles nicht relevante habe ich weggelassen):


...
attr DEVICE stateFormat IPaddress
attr DEVICE userReadings IPaddress {"<html><a href='http://192.168.xx.yy'>http://192.168.xx.yy</a></html>"}
...


Der Hyperlink wird im state angezeigt und funktioniert, soweit alles prima.
Ich würde allerdings den Hyperlink im state gerne farbig (nach meiner Wahl) und unterstrichen darstellen wollen, was mir aber nicht gelingen will wie bei anderen Devices.
Versuchs mal so (das <html>-Tag kannst du weg lassen):
attr DEVICE stateFormat IPaddress
attr DEVICE userReadings IPaddress {"<a href=\"http://192.168.xx.yy\" style=\"color: limegreen; text-decoration: underline;\">http://192.168.xx.yy</a>"}

Das sollte einen limegreen, unterstrichenen Link geben. Aber wenn du nur
attr DEVICE userReadings IPaddress {"<a href='http://192.168.xx.yy'>http://192.168.xx.yy</a>"}
nimmst, sollte der Browser dies eigentlich automatisch anzeigen. Mit dem style Attribut (inline Stylesheet) überschreibst du die Webseiten/Browser style Definition.
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Gisbert

Hallo yersinia,

ich bin begeistert, es funktioniert.
Ich habe diese Lösung umgesetzt, die noch zusätzlich das Öffnen des Hyperlinks in einem neuen Fenster durchführt:
attr DEVICE stateFormat IPaddress
attr DEVICE userReadings IPaddress {"<a href=\"http://192.168.xx.yy\" style=\"color: green; text-decoration: underline;\" target=\"_blank\" rel=\"noopener noreferrer\">http://192.168.xx.yy</a>"}

noopener und noreferrer sind wahrscheinlich überflüssig, da ich ja auf eine eigene Seite umleite.

Auch wenn es funktioniert, würde mich die Bedeutung der ganzen doppelten Anführungszeichen und Back-Slaches interessieren.

Viele​n Dank und viele Grüße​
Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

yersinia

Die \ escaped das Zeichen dahinter. Da dein String durch " definiert wird, wäre es ziemlich doof wenn mittendrin ein" vorkommt und den String abrupt beendet. Daher wird es durch \" maskiert und erscheint als 'normales' " im Inhalt des Strings. Du könntest aber auch mit ' arbeiten:
my $string = 'Wichtiger "Text" im String';
https://www.perltutorial.org/perl-string/

Zitat von: Gisbert am 18 November 2020, 08:25:49noopener und noreferrer sind wahrscheinlich überflüssig, da ich ja auf eine eigene Seite umleite.
Korrekt.
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

rudolfkoenig

Alternative zu \" ist ', in JavaScript bzw. HTML sind die beiden mW equivalent.
In Perl gibt es dagegen Unterschiede.

Gisbert

Hallo yersinia,
hallo Rudi,

vielen Dank für die Erklärung für das Escapen von Zeichen.
Die Alternative (' statt \") funktioniert.

Damit bin ich wunschlos glücklich - bis zum nächsten Mal :) ;)
Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome