[gelöst] Template für Sonoff POW R2 funktioniert nicht vollständig

Begonnen von Mihca, 06 Juni 2020, 17:04:14

Vorheriges Thema - Nächstes Thema

Beta-User

Hmm, also der letzte Code war so gemeint, dass wir wieder auf die alte "html-free" Version von stateFormat zurückgehen und diesen Code nur für devStateIcon verwenden. Da sollte html nicht in den Internals auftauchen?
Die Zeile ist doch ausdrücklich devStateIcon...?

(sobald man das über stateFormat löst, scheint es praktisch unmöglich zu sein, das individuell klickbar zu bekommen... Daher habe ich jetzt doch versucht, das @devStateIcon zu fixen).

[OT]
Was das substr-Thema angeht: Evtl. kannst du vorab mit lenght prüfen, wie lange das ist und dann ggf. die drei Punkte nur dann anhängen, wenn du wirklich kürzen mußt (bitte bei Bedarf an anderer Stelle vertiefen)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

TomLee

#16
ZitatDie Zeile ist doch ausdrücklich devStateIcon...?

Sry, ich war in Gedanken so bei stateformat, hatte mich nur über die div plötzlich gewundert, gesehen das viel HTML in STATE steht und nicht weiter mit beschäftigt, dann gleich hier geschrieben.

Mihca

@Beta-User: das sieht dann so wie in der Grafik aus. War vorher besser.
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 24.04 Perl 5.38.2, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

Beta-User

*kopfkratz*

Solche Effekte kommen wohl hin und wieder vor, k.A., woher im Detail. Nur um sicher zu gehen:
- Bitte den stateFormat-Code entsorgen oder auf eine ungefährliche reine Text-Variante zurückbiegen;
- Browser-Cache löschen (vermutlich ist das alleine schon ausreichend) bzw. die Seite mal neu laden; notfalls FHEM mal neu starten.

Erst wenn das auch nicht fruchtet, bitte nochmal melden.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Mihca

#19
Die Änderung hatte ich weisungsgemäß bei "devStateIcon" und nicht bei  "stateFormat"gemacht. Habe bei "devStateIcon" auf meine Version:

Online:10px-kreis-gruen Offline:10px-kreis-rot on:light_light_dim_90@orange off:light_light_dim_00

zurückgespielt und es geht alles bis auf die Anzeige der IP.
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 24.04 Perl 5.38.2, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

Beta-User

Die Änderung wieder in Richtung Perl sollte schon auf devStateIcon, nur die eventuelle Doppelung bei stateFormat sollte noch sicherheitshalber raus.
Dann sollte eigentlich nach einem Browser-Refresh alles ordnungsgemäß laufen (und die IP-Adresse nur bei mouse-over zu sehen sein).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Mihca

Die Änderung bei "devStateIcon" gemacht und "stateFormat" komplett gelöscht. Sieht jetzt wie in der Grafik aus.

1. Wenn ich mit der Maus über das LWT-Symbol gehe zeigt sich "10px-kreis-gruen". Wenn ich dann auf LWT klicke, wird nicht die IP des Device angezeigt, sondern es öffnet sich das Tasmota-Web des Devices. Ist das so gedacht?

2. Die Farbe des Icons wechselt beim Toggeln nicht, sondern nur das Symbol. Wie kriege ich das "orange", wenn es an ist?
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 24.04 Perl 5.38.2, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

Beta-User

Danke.

Für mich sieht das so aus, als könnte/sollte man das so einchecken. Ob man den direkten Aufruf des Web-Interfaces des ESP braucht, darüber kann man streiten (ich bin selbst nicht so der Riesenfan davon, und hier ist das der einzige Grund, warum der Code so kompliziert ist; aber andere wollen das so, und so ist es dann eben einheitlich). Die verlinkte IP ist bei mouse-over unten im Browser zu sehen.

Was die Farbe angeht, funktioniert das mit "orange durchscheindend" hier auf dem Testsystem (win32, f18, Perl 5.28), das scheint also an Flex zu liegen (auch andere hatten dazu bisher nichts gemeldet bei anderen Varianten dieser Sache).

Wenn du Farbe erzwingen willst (und die IP im Klartext reicht), würde ich stateFormat-multiline-Perl (oder eine "set magic"-Schreibweise) empfehlen, zusammen mit deiner regex-Variante von devStateIcon. Ich hoffe, das ist jetzt halbwegs klar, wie es funktioniert? sonst müßtest du on/off noch mit Perl auswerten und die Farbvorgaben mit an FW_makeImage() übergeben, ginge auch (wie gesagt: im template will ich Farben möglichst vermeiden).

Danke auf alle Fälle für's testen, hatte wegen der Ursache für dieses Phänomen schon eine Zeitlang erfolglos rumgerätselt...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Mihca

#23
Hallo Beta-User,

gerne, ich habe mal wieder zu danken. Und wie immer hat es mir mit Dir Spaß gemacht, Dinge zu lösen.

Das mit der IP unten im Browser stimmt; hatte ich übersehen.

Das mit dem Orange ist tatsächlich ein Flex-Problem. Mit f18 ist alles ok. Das für Flex werde ich wohl so lassen müssen, da das eine Nummer zu hoch für meine Perl-Kenntnisse ist :) Damit kann ich aber leben.

VG
Achim
Viele Grüße
Achim
__________
Kein Fehler ist so dumm, dass man ihn nicht machen könnte.
Raspi Ubuntu 24.04 Perl 5.38.2, Rollo-, Sonnen-, Licht-, Heizungs-, Poolsteuerung, Energiebilanzen -- HomeMatic, FS20, ESP/Tasmota/ESPEasy, CUL868v3 USB, MAX! Cube LAN mit CUL-Firmware HomeMatic

TomLee

zu 1. ja das sich die Tasmota-Oberfläche in einem neuen Fenster öffnet, das "10px-kreis-gruen" bei Mouseover angezeigt wird ist bei mir auch so.

zu 2. komm ich nicht ganz mit, bei mir wechselt das Glühlampensymbol die Farbe beim Statuswechsel und das Icon vorne zeigt wie gewollt Online-Status in den Farben grün/rot an.

Andere Frage:

Was soll das öffnende div da am Ende machen ?

Zitatattr DEVICE devStateIcon {my $text = ' uptime: '.ReadingsVal($name,"Uptime","unknown").sprintf(" aktuell: %.1f W Tag: %.2f kWh Gestern: %.3f kWh Gesamt: %.4f kWh", ReadingsVal($name,"ENERGY_Power","-1"), ReadingsVal($name,"ENERGY_Today","-1"), ReadingsVal($name,"ENERGY_Yesterday","-1"), ReadingsVal($name,"ENERGY_Total","-1")); my $onl = ReadingsVal($name,"LWT","false") eq "Online"?"10px-kreis-gruen":"10px-kreis-rot"; my $light = ReadingsVal($name,"state","off");"<a href=\"http://".ReadingsVal($name,"IPAddress","none")." \"target=\"_blank\">".FW_makeImage($onl).'</a> <a href="/fhem?cmd.dummy=set '.$name.' toggle&XHR=1">'.FW_makeImage($light)."</a>$text<div>"}

Wars nicht eher so gemeint ?

Zitat{my $text = ' uptime: '.ReadingsVal($name,"Uptime","unknown").sprintf(" aktuell: %.1f W Tag: %.2f kWh Gestern: %.3f kWh Gesamt: %.4f kWh", ReadingsVal($name,"ENERGY_Power","-1"), ReadingsVal($name,"ENERGY_Today","-1"), ReadingsVal($name,"ENERGY_Yesterday","-1"), ReadingsVal($name,"ENERGY_Total","-1")); my $onl = ReadingsVal($name,"LWT","false") eq "Online"?"10px-kreis-gruen":"10px-kreis-rot"; my $light = ReadingsVal($name,"state","off");"<div><a href=\"http://".ReadingsVal($name,"IPAddress","none")." \"target=\"_blank\">".FW_makeImage($onl).'</a> <a href="/fhem?cmd.dummy=set '.$name.' toggle&XHR=1">'.FW_makeImage($light)."</a>$text</div>"}

Beta-User

schließend ist wohl richtiger...
Oder noch besser wäre vermutlich irgendwas, was gar keine Funktion hat? <p> oder </p>? Macht aber optisch einen kleinen Unterschied. Oder ein (ansonsten) völlig "unsinniges" "<b></b>"?
(Oder man versteckt das "<" irgendwie am Anfang der zurückgelieferten Zeichenkette? Aber wie?)

Falls jemand zweckdienliche Hinweise auf die "beste" Lösung liefern kann: feel free.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

TomLee

Zitatschließend ist wohl richtiger...

Wenn ich ne Tür nicht öffne brauch ich sie auch nicht schliessen  ;D

Seh in deinem Code keines welches zuvor öffnet.

Beta-User

Wir brauchen eigentlich nur ein unsichtbares ">"... Der Rest vorher ist sch..egal. Das hat damit zu tun, dass sonst die Rückgabe nicht als html erkannt wird. (Mir ist nur schleierhaft, warum das grade hier das erste Mal auftaucht).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

TomLee

sicher das das egal ist ? Du willst tricksen !? Kann nur das Html was ich mir selbst bei gebracht habe, wir klinken uns doch hier in HTML von FHEMWEB ein und wenn man das nicht richtig macht, dazu gehören für mich einleitende und schliessende tags, geht irgendwo an anderer Stelle wieder was schief, meine laienhafte Meinung.

Beta-User

Na ja, kann schon sein, dass ich was übersehe, aber es ist alles ok, bis der Text dazukommt, also glaube ich, korrekt gezählt zu haben.
Dazu kommt, das das hier (aus https://fhem.de/commandref_modular.html#FHEMWEB) mMn. eindeutig ist:
Zitat

       
  • devStateIcon
    First form:
    [...]

            
    • Perl code enclosed in {}. If the code returns [...], if it retuns a string enclosed in <>, then it is interpreted as an html string. Else [...]
  • Note: The above is valid for each line of STATE. If STATE (through stateFormat) is multilined, multiple icons (one per line) will be created.
Ergo: gibt man (in einer Zeile) ein < am Anfang einer Zeile zurück, braucht man am Ende der Zeile das Gegenstück...
ABER: das verhält sich irgendwie anders wie beschrieben, denn wenn man das wirklich in devStateIcon mit \n macht und z.B. schreibt:

{my $text = '\n uptime: '.ReadingsVal($name,"Uptime","unknown").sprintf(" aktuell: %.1f W Tag: %.2f kWh Gestern: %.3f kWh Gesamt: %.4f kWh", ReadingsVal($name,"ENERGY_Power","-1"), ReadingsVal($name,"ENERGY_Today","-1"), ReadingsVal($name,"ENERGY_Yesterday","-1"), ReadingsVal($name,"ENERGY_Total","-1")); my $onl = ReadingsVal($name,"LWT","false") eq "Online"?"10px-kreis-gruen":"10px-kreis-rot"; my $light = ReadingsVal($name,"state","off");"<a href=\"http://".ReadingsVal($name,"IPAddress","none")." \"target=\"_blank\">".FW_makeImage($onl).'</a> <a href="/fhem?cmd.dummy=set '.$name.' toggle&XHR=1">'.FW_makeImage($light)."</a>$text"}

geht das auch nicht, obohl hier das schließende > vor der \n landet...

Wie dem auch sei, solange mir nichts mehr besseres einfällt, mache ich da ggf. einfach das ein-aus-Fett hin?.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors