Was verursacht diesen "Müll" in STATE in meinem stateFormat ?

Begonnen von GeZi3560, 29 Januar 2026, 14:35:19

Vorheriges Thema - Nächstes Thema

GeZi3560

Hallo zusammen,
ein stateformat eines Fibaro Plugs funktioniert zwar, hat aber , ich nenne es mal Müll als Eintrag in STATE erzeugt.
Kann mir jemand erklären wie es dazu kommt.
Ich räume ein das ich den Syntax von stateformat nur zu etwa 80% verstanden habe.

Speziell diesen Teil verstehe ich nicht: \"target=\"_blank\">".FW_makeImage($onl)."</a> <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">


 stateformat
{my $onl = ReadingsVal($name,"transmit","OK") eq "NO_ACK"?"10px-kreis-rot" : ReadingsVal($name,"new_fw","false") eq "true" ? "10px-kreis-gelb" : "10px-kreis-gruen";; my $light = ReadingsVal($name,"state","off");; my $cons = ReadingsVal($name,"power","unknown");; my $temp = ReadingsVal($name,"temperature","-100");;"<div><a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage($onl)."</a> <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a> Aktuell: $cons <b></b>"}

STATE
<div><a href="http://none "target="_blank"><img class=' 10px-kreis-gruen' src="/fhem/images/default/10px-kreis-gruen.png" alt="10px-kreis-gruen" title="10px-kreis-gruen"></a> <a href="/fhem?cmd.dummy=set ZWave_SWITCH_BINARY_32 toggle&XHR=1"><svg class=" on" data-txt="on" version="1.0" xmlns="http://www.w3.org/2000/svg" width="468pt" height="537pt" viewBox="0 0 468 537" preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007 </metadata> <g transform="translate(0,537) scale(0.181395,-0.181395)" stroke="none"> <path d="M957 2932 c-14 -16 -17 -43 -17 -174 0 -135 2 -157 18 -171 28 -25 72 -26 96 -1 13 13 16 43 16 173 0 140 -2 160 -18 174 -25 22 -75 21 -95 -1z"/> <path d="M1506 2928 c-13 -18 -16 -53 -16 -174 0 -138 2 -152 20 -169 24 -22 77 -22 99 0 13 12 17 44 19 151 4 147 1 174 -24 198 -24 24 -80 20 -98 -6z"/> <path d="M278 2834 c-29 -15 -44 -50 -34 -81 3 -11 73 -85 154 -166 127 -126 153 -147 180 -147 34 0 72 38 72 73 0 34 -312 341 -342 337 -2 -1 -15 -7 -30 -16z"/> <path d="M2235 2840 c-34 -14 -315 -305 -315 -327 0 -35 38 -73 72 -73 27 0 53 21 180 148 82 81 151 157 155 170 12 51 -44 100 -92 82z"/> <path d="M1039 2257 c-70 -20 -136 -63 -174 -115 -65 -87 -65 -91 -65 -643 0 -479 1 -500 21 -553 25 -67 87 -134 160 -173 l54 -28 250 0 c235 0 253 1 296 21 63 29 125 94 158 163 l26 56 0 520 0 520 -28 56 c-32 66 -99 132 -165 162 -43 20 -65 22 -267 24 -153 2 -234 -2 -266 -10z m486 -146 c48 -22 69 -44 90 -94 13 -31 15 -107 15 -517 0 -526 0 -523 -59 -573 -48 -40 -90 -47 -299 -47 -205 0 -226 4 -280 54 -51 46 -50 40 -53 567 l-3 495 23 40 c24 43 64 72 115 85 17 4 117 7 221 8 164 0 195 -2 230 -18z"/> <path d="M2110 2123 c-49 -19 -64 -68 -34 -111 15 -22 19 -22 238 -22 211 0 224 1 241 20 23 25 24 76 1 98 -14 15 -44 17 -224 19 -114 1 -214 -1 -222 -4z"/> <path d="M16 2098 c-22 -31 -20 -71 5 -94 19 -17 39 -19 240 -19 236 0 241 1 254 55 4 18 0 34 -15 53 l-21 27 -224 0 c-220 0 -224 0 -239 -22z"/> <path d="M26 1559 c-32 -25 -35 -70 -6 -99 19 -19 33 -20 238 -20 207 0 220 1 237 20 26 29 24 79 -4 102 -21 16 -44 18 -231 18 -195 0 -209 -1 -234 -21z"/> <path d="M2080 1560 c-23 -23 -26 -68 -6 -96 13 -18 30 -19 233 -22 203 -3 221 -2 243 16 32 26 32 78 1 104 -21 16 -44 18 -237 18 -201 0 -215 -1 -234 -20z"/> <path d="M20 1010 c-29 -29 -26 -74 7 -100 26 -20 36 -21 240 -18 184 3 215 5 229 20 23 22 22 73 -1 98 -17 19 -30 20 -237 20 -205 0 -219 -1 -238 -20z"/> <path d="M2077 1012 c-22 -25 -21 -75 1 -95 16 -15 48 -17 238 -17 120 0 224 4 231 8 32 20 32 94 0 114 -7 4 -111 8 -233 8 -201 0 -222 -2 -237 -18z"/> <path d="M998 693 c-36 -41 -30 -95 11 -108 60 -19 520 -91 539 -84 53 20 66 99 19 119 -28 12 -482 90 -524 90 -16 0 -37 -8 -45 -17z"/> <path d="M1023 530 c-41 -17 -58 -85 -28 -110 15 -12 492 -100 543 -100 33 0 62 34 62 74 0 18 -6 38 -13 44 -6 6 -120 29 -252 51 -132 23 -251 43 -265 46 -14 2 -35 0 -47 -5z"/> <path d="M1023 360 c-46 -18 -59 -90 -20 -114 21 -13 478 -96 531 -96 14 0 35 9 46 20 26 26 27 85 2 99 -10 5 -126 28 -258 51 -131 22 -248 42 -259 44 -11 2 -30 0 -42 -4z"/> <path d="M1101 154 c-26 -33 -27 -55 -3 -82 13 -16 51 -26 176 -47 158 -27 159 -27 185 -7 31 22 41 81 18 101 -16 13 -271 61 -323 61 -23 0 -39 -8 -53 -26z"/> </g> </svg></a> Aktuell: 0.7 W <b></b>
Danke Gerd
Raspberry Pi 4 4GB, MariaDB,2 Cul V3 868 ,1 Cul V3, 433, Zwave-USB, Conbee2, DeConz, MAX WT und Ventile,HM, Somfy, Fibaro, Shellys, Tradfri, Lidl Zigbee

ergerd

#1
Hallo GeZi3560,
da ist einiges im Argen, da fehlen Variablen und das <div ... wird nicht als return zurück gegeben.

Hier meine Version als Beispiel:
{
  my $onl = ReadingsVal($name,"network_connection","offline") eq "online"?"10px-kreis-gruen":"10px-kreis-rot";;
  my $socket = ReadingsVal($name,"state","undefined") eq "on"?"taster_ch_an_gruen":"taster_ch_aus_rot";;
  my $val = ReadingsNum($name, 'network_rssi', 0);;
  my $val2 = 100+$val;;
  my $bargraph = FW_makeImage('bargraph');;
  $bargraph =~ s/(<svg[^>]+style="[^"]*)--rssi:\d{1,3}/$1--rssi:$val2/;;
  $bargraph =~ s/%rssi%/$val/g;;

  return "<div><a href=\"http://".ReadingsVal($name,"network_ip-address","none")."/\" target=\"_blank\">".FW_makeImage($onl).' <a href="/fhem?cmd.dummy=set '.$name.' toggle&XHR=1">'.FW_makeImage($socket)."&nbsp;".$bargraph."</a></div>";;
}

Grüße Rainer
FHEM auf RasPi 4, ZigBee, 1Wire2WLAN, DS2423, EMS-ESP, Button+, LaCrosseGateway, PCA301, ConBee III, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

GeZi3560

Ich hab jetzt mein stateformat nochmal angepasst.

{my $onl = ReadingsVal($name,"transmit","OK") eq "NO_ACK"?"10px-kreis-rot" : "10px-kreis-gruen";;
 my $light = ReadingsVal($name,"state","off");;
 my $cons = ReadingsVal($name,"power","unknown");;
"<a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a>
<div>Verbrauch: $cons Watt </div>"}

immer noch der "Müll" in STATE

<a href="/fhem?cmd.dummy=set ZWave_SWITCH_BINARY_32 toggle&XHR=1"><svg class=" on" data-txt="on" version="1.0"
xmlns="http://www.w3.org/2000/svg"  width="468pt" height="537pt" viewBox="0 0 468 537"  preserveAspectRatio="xMidYMid meet"> <metadata> Created by potrace 1.8, written by Peter Selinger 2001-2007
 </metadata> <g transform="translate(0,537) scale(0.181395,-0.181395)"  stroke="none"> <path d="M957 2932 c-14 -16 -17 -43 -17 -174 0 -135 2 -157 18 -171 28 -25 72 -26 96 -1 13 13 16 43 16 173 0 140 -2 160 -18 174 -25 22 -75 21 -95 -1z"/> <path d="M1506 2928 c-13 -18 -16 -53 -16 -174 0 -138 2 -152 20 -169 24 -22 77 -22 99 0 13 12 17 44 19 151 4 147 1 174 -24 198 -24 24 -80 20 -98 -6z"/> <path d="M278 2834 c-29 -15 -44 -50 -34 -81 3 -11 73 -85 154 -166 127 -126 153 -147 180 -147 34 0 72 38 72 73 0 34 -312 341 -342 337 -2 -1 -15 -7 -30 -16z"/> <path d="M2235 2840 c-34 -14 -315 -305 -315 -327 0 -35 38 -73 72 -73 27 0 53 21 180 148 82 81 151 157 155 170 12 51 -44 100 -92 82z"/> <path d="M1039 2257 c-70 -20 -136 -63 -174 -115 -65 -87 -65 -91 -65 -643 0 -479 1 -500 21 -553 25 -67 87 -134 160 -173 l54 -28 250 0 c235 0 253 1 296 21 63 29 125 94 158 163 l26 56 0 520 0 520 -28 56 c-32 66 -99 132 -165 162 -43 20 -65 22 -267 24 -153 2 -234 -2 -266 -10z m486 -146 c48 -22 69 -44 90 -94 13 -31 15 -107 15 -517 0 -526 0 -523 -59 -573 -48 -40 -90 -47 -299 -47 -205 0 -226 4 -280 54 -51 46 -50 40 -53 567 l-3 495 23 40 c24 43 64 72 115 85 17 4 117 7 221 8 164 0 195 -2 230 -18z"/> <path d="M2110 2123 c-49 -19 -64 -68 -34 -111 15 -22 19 -22 238 -22 211 0 224 1 241 20 23 25 24 76 1 98 -14 15 -44 17 -224 19 -114 1 -214 -1 -222 -4z"/> <path d="M16 2098 c-22 -31 -20 -71 5 -94 19 -17 39 -19 240 -19 236 0 241 1 254 55 4 18 0 34 -15 53 l-21 27 -224 0 c-220 0 -224 0 -239 -22z"/> <path d="M26 1559 c-32 -25 -35 -70 -6 -99 19 -19 33 -20 238 -20 207 0 220 1 237 20 26 29 24 79 -4 102 -21 16 -44 18 -231 18 -195 0 -209 -1 -234 -21z"/> <path d="M2080 1560 c-23 -23 -26 -68 -6 -96 13 -18 30 -19 233 -22 203 -3 221 -2 243 16 32 26 32 78 1 104 -21 16 -44 18 -237 18 -201 0 -215 -1 -234 -20z"/> <path d="M20 1010 c-29 -29 -26 -74 7 -100 26 -20 36 -21 240 -18 184 3 215 5 229 20 23 22 22 73 -1 98 -17 19 -30 20 -237 20 -205 0 -219 -1 -238 -20z"/> <path d="M2077 1012 c-22 -25 -21 -75 1 -95 16 -15 48 -17 238 -17 120 0 224 4 231 8 32 20 32 94 0 114 -7 4 -111 8 -233 8 -201 0 -222 -2 -237 -18z"/> <path d="M998 693 c-36 -41 -30 -95 11 -108 60 -19 520 -91 539 -84 53 20 66 99 19 119 -28 12 -482 90 -524 90 -16 0 -37 -8 -45 -17z"/> <path d="M1023 530 c-41 -17 -58 -85 -28 -110 15 -12 492 -100 543 -100 33 0 62 34 62 74 0 18 -6 38 -13 44 -6 6 -120 29 -252 51 -132 23 -251 43 -265 46 -14 2 -35 0 -47 -5z"/> <path d="M1023 360 c-46 -18 -59 -90 -20 -114 21 -13 478 -96 531 -96 14 0 35 9 46 20 26 26 27 85 2 99 -10 5 -126 28 -258 51 -131 22 -248 42 -259 44 -11 2 -30 0 -42 -4z"/> <path d="M1101 154 c-26 -33 -27 -55 -3 -82 13 -16 51 -26 176 -47 158 -27 159 -27 185 -7 31 22 41 81 18 101 -16 13 -271 61 -323 61 -23 0 -39 -8 -53 -26z"/> </g> </svg></a>
<div>Verbrauch: 0.5 W Watt </div>
Raspberry Pi 4 4GB, MariaDB,2 Cul V3 868 ,1 Cul V3, 433, Zwave-USB, Conbee2, DeConz, MAX WT und Ventile,HM, Somfy, Fibaro, Shellys, Tradfri, Lidl Zigbee

ergerd

FHEM auf RasPi 4, ZigBee, 1Wire2WLAN, DS2423, EMS-ESP, Button+, LaCrosseGateway, PCA301, ConBee III, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

TomLee

#4
Das ist kein Müll, es ist der HTML-Code den FW_makeImage zurückgibt. Wenn dich das stört, dann nutz den Code in devStateIcon, da landet er nicht in STATE.

passibe

Korrekt, das gehört in devStateIcon.
Return braucht man nicht.

Ansonsten kannst du das div auch außen setzen und innen mit br arbeiten. Ergibt irgendwie mehr Sinn für mich, weil dann ist alles im Container.

Außerdem fehlt noch die Statusanzeige.

Hier gesammelt:
{my $onl = ReadingsVal($name,"transmit","OK") eq "NO_ACK"?"10px-kreis-rot" : "10px-kreis-gruen";;
 my $light = ReadingsVal($name,"state","off");;
 my $cons = ReadingsVal($name,"power","unknown");;
"<div>".FW_makeImage($onl)."<a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a>
<br>Verbrauch: $cons Watt</div>"}

Alternativ kann man den toggle-Teil auch ohne escaped " schreiben, vielleicht findest du das übersichtlicher/besser nachvollziehbar?

'<div>'.FW_makeImage($onl).'<a href="/fhem?cmd.dummy=set '.$name.' toggle&XHR=1">'.FW_makeImage($light)."</a>
<br>Verbrauch: $cons Watt</div>"

Oder dann alles ohne Interpolation
'<div>'.FW_makeImage($onl).'<a href="/fhem?cmd.dummy=set '.$name.' toggle&XHR=1">'.FW_makeImage($light).'</a>
<br>Verbrauch: '.$cons.' Watt</div>'

Übrigens: Ich bin mir nicht sicher, was transmit dir zurückgibt, aber wenn NUR der Wert "OK" tatsächlich ok ist, dann sollte die Bedingung anders gefasst sein. Ansonsten kriegst du bei anderen Fehlern als NO_ACK auch den grünen Kreis und sogar, wenn das Reading fehlt.
Deshalb besser so (fail closed):
my $onl = ReadingsVal($name,"transmit","unknown") eq "OK"?"10px-kreis-gruen" : "10px-kreis-rot";;

GeZi3560

Danke für deine Erklärung.
So langsam verstehe ich es Stück um Stück.

Schönen Abend noch.

Gruß Gerd
Raspberry Pi 4 4GB, MariaDB,2 Cul V3 868 ,1 Cul V3, 433, Zwave-USB, Conbee2, DeConz, MAX WT und Ventile,HM, Somfy, Fibaro, Shellys, Tradfri, Lidl Zigbee