devStateIcon zurück erhalten

Begonnen von Steffen@Home, 12 Januar 2018, 09:16:03

Vorheriges Thema - Nächstes Thema

Steffen@Home

Hallo Miteinander,

mein Dummy hat 2 devStateIcons für die Zustände on & off was auch funktioniert.

Nun habe ich ein UserReading und stateFormat erstellt um auch den verknüpften Wert anzeigen zu können erstellt.
Leider funktioniert dadurch das devStateIcon nicht mehr und es steht jetzt dann 48.2 % off da, ich hätte aber gerne den Wert plus das richtige devStateIcon für den Zustand on bzw. off dahinter.
Der dummy wird per notify auf on oder off gestellt.

Hat jemand einen Tip für mich? Danke!

Internals:
NAME d_GaOstHumAlarm
NR 170
STATE <span style="color:blue">48.2 % </span><span style="color:green">off</span>
TYPE dummy
READINGS:
2018-01-11 19:35:44 humidity 48.2
2018-01-11 19:35:44 state off
2018-01-11 19:46:24 temperature 0
Attributes:
DbLogExclude .*
alias Luftfeuchte Alarm GaOst
devStateIcon on:temperature_humidity@red off:temperature_humidity@grey
group Garage Ost
icon humidity
room GarageOst
setList state: on off
stateFormat <span style="color:blue">humidity % </span><span style="color:green">state</span>
userReadings humidity { ReadingsVal("GaOstHum","state",0);; }
webCmd :

Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

rudolfkoenig

ZitatHat jemand einen Tip für mich?
Ja, stateFormat nicht zum HTML-Formatieren missbrauchen, das hat ein haufen Nebeneffekte, z.Bsp. dass HTML in FileLog/DbLog landet, list in telnet kaputt ist, devStateIcon spezifizieren aufwendiger wird, usw. Fuer die Umwandlung von STATE in HTML-Elemente ist devStateIcon zustaendig.

Steffen@Home

Ok. Html habe ich entfernt.
Aber es funktioniert leider trotzdem nicht.
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

rudolfkoenig

Wenn im STATE "48.3 % off" steht, dann musst man im devStateIcon auch danach pruefen, und nicht nur nach off. Nein, es gibt kein Feature "nur off ersetzen, aber 48.3 % lassen", es sei denn, man programmiert es selbst (devStateIcon kann {}).

Steffen@Home

So weit sind meine Künste der Programmierung leider noch nicht vorgeschritten  :o

Habe in einem anderen Beitrag etwas ähnliches gefunden das vielleicht zur Lösung führen könnte?... verstehe aber bisher noch nicht wie das funktioniert  ::)

{
  my $state = ReadingsVal($name, "state", "off");
  return '<div><img src="/fhem/images/default/on.png">'." ".(split " ",ReadingsVal("Bad_PowerPlug_Waschmaschine","power","0 W previous: 0 delta_time: 301 s"))[0]." ".ReadingsVal($name,"running","off").'</div>' if($state eq "on");
  return '<div><img src="/fhem/images/default/off.png">'." ".(split " ",ReadingsVal("Bad_PowerPlug_Waschmaschine","power","0 W previous: 0 delta_time: 301 s"))[0]." ".ReadingsVal($name,"running","off").'</div>' if($state eq "off");
}


https://forum.fhem.de/index.php/topic,56067.15.html
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

Steffen@Home

#5
Vielleicht könnte das jemand vereinfachen/erklären damit ich einen Anhaltspunkt habe um etwas weiter zu kommen? ???

{
  my $state = ReadingsVal($name, "state", "off");
  return '<div><img src="/fhem/images/default/on.png">'." ".(split " ",ReadingsVal("Bad_PowerPlug_Waschmaschine","power","0 W previous: 0 delta_time: 301 s"))[0]." ".ReadingsVal($name,"running","off").'<>' if($state eq "on");
  return '<div><img src="/fhem/images/default/off.png">'." ".(split " ",ReadingsVal("Bad_PowerPlug_Waschmaschine","power","0 W previous: 0 delta_time: 301 s"))[0]." ".ReadingsVal($name,"running","off").'<>' if($state eq "off");
}


bisher ist mein Ansatz: (irgendwie müssen noch die vielen Hochkomma, Punkte, Split und Klammern weg)

{
  my $state = ReadingsVal($name, "state", "off");
return '<div><img src="/fhem/images/default/on.png">'." ".ReadingsVal($name,"humidity",0)." ".ReadingsVal($name,"state","off").'<>' if($state eq "on");
  return '<div><img src="/fhem/images/default/off.png">'." ".ReadingsVal($name,"humidity",0)." ".ReadingsVal($name,"state","off").'<>' if($state eq "off");
}
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

Steffen@Home

Soweit funktioniert es nur wie bekomme ich die <> weg? Alles was ich seither versucht habe endete darin dass nichts mehr ging  ;D

Außerdem würde ich statt on.png gerne temperature_humidity@red und für off &gray verwenden.
Wie bekomme ich das in den HTML Code?

Danke!
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

nils_

Zitat von: Steffen@Home am 18 Januar 2018, 13:54:34
Soweit funktioniert es nur wie bekomme ich die <> weg?
indem du sie nicht mehr zurückgibst.

(hab mal quote-tags verwendet, damit ich sie markieren konnte)
Zitatreturn '<div><img src="/fhem/images/default/on.png">'." ".ReadingsVal($name,"humidity",0)." ".ReadingsVal($name,"state","off").'<>' if($state eq "on");


Zitat von: Steffen@Home am 18 Januar 2018, 13:54:34
Außerdem würde ich statt on.png gerne temperature_humidity@red und für off &gray verwenden.
Wie bekomme ich das in den HTML Code?

hast du schon den abschnitt zu devStateIcon in https://fhem.de/commandref_DE.html#FHEMWEB gelesen??
viele Wege in FHEM es gibt!

Steffen@Home

Zitat von: nils_ am 18 Januar 2018, 15:14:27
indem du sie nicht mehr zurückgibst.

Hallo Nils, ja das habe ich ja versucht und habe .'<>' durch ." " ersetzt aber dann funktioniert es nicht mehr.

Zitat von: nils_ am 18 Januar 2018, 15:14:27hast du schon den abschnitt zu devStateIcon in https://fhem.de/commandref_DE.html#FHEMWEB gelesen??
ja habe ich gelesen. Laut dem Abschnitt müssten die <> bestehen bleiben damit er den zurückgelieferten Code als HTML verarbeitet oder?
Weiterhin ist mir unklar wie ich das @red und @grey verarbeite. Ich kann ja wohl kaum
return '<div><img src="/fhem/images/default/on.png@red"> schreiben
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

nils_

#9
guck dir mal den von dir erwähnten beitrag an, den du als "vorlage" benutzt hast.


die <> nicht entfernen, sondern das schließende tag für dein <div> muss das werden.
also </div> anstatt <>

so evtl.?
{
  my $state = ReadingsVal($name, "state", "off");
  return '<div><img src="/fhem/images/default/on.png">'." ".ReadingsVal($name,"humidity",0)." ". $state .'</div>' if($state eq "on");
  return '<div><img src="/fhem/images/default/off.png">'." ".ReadingsVal($name,"humidity",0)." ". $state .'</div>' if($state eq "off");
}
viele Wege in FHEM es gibt!

Steffen@Home

Aaah, ok super jetzt hab ich verstanden. Das div Tag muss wieder geschlossen werden. Aber dann war das ja schon in dem anderen Beitrag falsch?

Habe das on/off jetzt noch durch % ersetzt. Jetzt sieht es so aus wie ich es wollte.
return '<div><img src="/fhem/images/default/on.png">'." ".ReadingsVal($name,"humidity",0)." %".'</div>' if($state eq "on");
(Für was steht denn der Punkt eigentlich ? )

Jetzt fehlt mir nur noch das mit der Farbe für die png´s ....wo kann ich das nachlesen?
Danke!
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

rudolfkoenig

ZitatJetzt fehlt mir nur noch das mit der Farbe für die png´s ....wo kann ich das nachlesen?
In der Gimp/Photoshop/etc Dokumentation.

FHEM kann nur SVG's neu faerben, das ist einfach, weil man nur in einer Textdatei (.svg) ein String austauschen muss.

Steffen@Home

#12
Oh das hab ich gar nicht bemerkt dass es ja png anstatt der svg´s sind.

Ich könnte doch auch ein svg (auch eingefärbt @red?) zurück geben? Wo kann ich das @Farbe setzen?

{my $state = ReadingsVal($name, "state", "off"); return '<div><img src="/fhem/www/images/fhemSVG/temperature_humidity.svg" height="32" width="32">'." ".ReadingsVal($name,"humidity",0)." %".'</div>' if($state eq "on");   return '<div><img src="/fhem/www/images/fhemSVG/temperature_humidity.svg" height="32" width="32">'." ".ReadingsVal($name,"humidity",0)." %".'</div>' if($state eq "off");}
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

Steffen@Home

Keiner eine Idee wie man das @Farbe mit einbringen kann?
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

KernSani

#14
Ich erzeuge Images grundsätzlich mit
FW_makeImage("iconname","tooltip")

da geht dann auch
FW_makeImage("iconname\@color","tooltip")

Grüße,

Oli

Edit: @ escapen ;-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...