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, ...

Steffen@Home

Hallo Oli, das klappt bei mir nicht und kommt ein Fehler:

{my $state = ReadingsVal($name, "state", "off"); return FW_makeImage("temperature_humidity@grey","tooltip")." ".ReadingsVal($name,"humidity",0)." %" if($state eq "on"); return FW_makeImage("temperature_humidity@red","tooltip")." ".ReadingsVal($name,"humidity",0)." %" if($state eq "off");}

attr d_GaOstHumAlarm devStateIcon: Unrecognized character \xE2; marked by <-- HERE after midity@red<-- HERE near column 276 at (eval 291) line 1.
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

Ich glaube da waren irgendwelche falsche Hochkommas im spiel, leider kommt jetzt eine andere Meldung:

{my $state = ReadingsVal($name, "state", "off"); return FW_makeImage("temperature_humidity@grey","tooltip")." ".ReadingsVal($name,"humidity",0)." %" if($state eq "on"); return FW_makeImage("temperature_humidity@red","tooltip")." ".ReadingsVal($name,"humidity",0)." %" if($state eq "off");}

attr d_GaOstHumAlarm devStateIcon: Global symbol "@grey" requires explicit package name at (eval 339) line 1.
Global symbol "@red" requires explicit package name at (eval 339) line 1.
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

Sorry, das @ muß natürlich escaped werden. Hab's oben angepasst.

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Steffen@Home

Funktioniert leider irgendwie nicht. Es erscheint nur die standard Lampe.

{my $state = ReadingsVal($name, "state", "off"); return FW_makeImage("temperature_humidity\@grey","tooltip")." ".ReadingsVal($name,"humidity",0)." %" if($state eq "on"); return FW_makeImage("temperature_humidity\@red","tooltip")." ".ReadingsVal($name,"humidity",0)." %" 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

KernSani

siehe commandref:

Zitatwird ein String in <> zurück geliefert, wird dieser als HTML String interpretiert

Du lieferst am Ende kein > zurück. Und lagere das Ganze mal in die myUtils aus, zur besseren Übersichtlichkeit ;-)
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Steffen@Home

Hallo Meister,

ich habe doch alles HTML Tags entfernt und möchte doch stattdessen die Funktion FW_makeImage verwenden.... ???
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

FW_makeImage liefert ja auch nur HTML zurück. Einfach um den gesamten Rückgabewert nochmal ein DIV und das sollte klappen
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Steffen@Home

Ah ok.

Das gibts doch nicht. Jetzt kommt als Ausgabe:
FW_makeImage("temperature_humidity\@grey","tooltip") 47.9 %
und ich kann sogar anklicken und es wechselt dann den Staus zwischen grey und red  ;D

{my $state = ReadingsVal($name, "state", "off"); return '<div>FW_makeImage("temperature_humidity\@red","tooltip")'." ".ReadingsVal($name,"humidity",0)." %".'</div>' if($state eq "on"); return '<div>FW_makeImage("temperature_humidity\@grey","tooltip")'." ".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

KernSani



{my $state = ReadingsVal($name, "state", "off"); return "<div>".FW_makeImage("temperature_humidity\@red","tooltip")'." ".ReadingsVal($name,"humidity",0)." %</div>"

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Steffen@Home

da glaube da stimmt was nicht mit den einfachen und doppelten Hochkomma nicht..

{my $state = ReadingsVal($name, "state", "off"); return "<div>".FW_makeImage("temperature_humidity\@red","tooltip")'." ".ReadingsVal($name,"humidity",0)." %</div>" if($state eq "on"); return "<div>".FW_makeImage("temperature_humidity\@grey","tooltip")'." ".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

Bekomme es nicht hin.

Kann mir jemand erklären wann einzelne und wann doppelte Hochkomma zu setzen sind?
Am Anfang waren an den <DIV> immer ' , jetzt sind aber " ???

Vielleicht so ?

{my $state = ReadingsVal($name, "state", "off"); return '<div>".FW_makeImage("temperature_humidity\@red","tooltip")'." ".ReadingsVal($name,"humidity",0)." %</div>" if($state eq "on"); return '<div>".FW_makeImage("temperature_humidity\@grey","tooltip")'." ".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

Ellert

#26
Hochkommas sind paarweise zu verwenden.
Sie umschliessen Zeichenketten.
Wenn ein Hochkommatyp eine Zeichenkette umschliesst und in der Zeichenkette der gleiche Hochkommatyp verwendet werden soll, dann muss man das Hochkomma escapen. Wenn man nicht escapen will, nimmt man den anderen Hochkommatyp.
Wenn Variablennamen zwischen "" angegeben werden, dann wird ihr Inhalt angezeigt, zwischen '' der Variablenname. Zwischen "" kann das den Variablennamen einleitende Zeichen escapt werden, dann verält sich die Angabe des Variablennamen wie zwischen ''.

'<div>".FW_ma : Hier wird z.B. die Zeichenkette nicht vom gleichen Hochkommatyp eingeschlossen.
." %</div>" if($ : Hier z.B. wird % nicht escaped, es ist aber das einleitende Zeichen eines Hashes.

nils_

versuch mal:

return "<div>" . FW_makeImage( (ReadingsVal($name, "state", "off") eq "on" ? "temperature_humidity\@red" : "temperature_humidity\@grey"), "tooltip") . " " . ReadingsVal($name,"humidity",0) . " %</div>";
viele Wege in FHEM es gibt!

Steffen@Home

Hallo Hr. Ellert,

- Grundsätzlich verstehe ich nicht warum hier überhaupt einzelne ' verwendet sind und dann mal wieder doppelte und das alles ohne System oder ich verstehe es noch nicht. Erst wurde '<Div> geschrieben jetzt so "<div> ...was ist denn jetzt richtig?  :o
Benötige ich hier die einzelnen ' überhaupt? Ist es für HTML, also die <div> Angabe nötig?
Sonst würde ich nur " verwenden.
{my $state = ReadingsVal($name, "state", "off"); return "<div>".FW_makeImage("temperature_humidity\@red","tooltip")"." ".ReadingsVal($name,"humidity",0)." %</div>" if($state eq "on"); return "<div>".FW_makeImage("temperature_humidity\@grey","tooltip")"." ".ReadingsVal($name,"humidity",0)." %</div>" if($state eq "off");}

- für was wird der Punkt (.) verwendet ?



Soweit ich weiss Ergibt "variable" die Ausgabe: variable (Den Text zwischen den Hochkommas)
$variable Ausgabe: den Inhalt der Variablen


'<div>".FW_ma : Hier wird z.B. die Zeichenkette nicht vom gleichen Hochkommatyp eingeschlossen.
Würde ich so schreiben:
"<div>".FW_ma....

." %</div>" if($
Das % soll doch als Text Dargestellt sein ist für mich also kein einleitendes Zeichen für etwas  ???

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 24 Januar 2018, 08:43:20
- Grundsätzlich verstehe ich nicht warum hier überhaupt einzelne ' verwendet sind und dann mal wieder doppelte und das alles ohne System oder ich verstehe es noch nicht. Erst wurde '<Div> geschrieben jetzt so "<div> ...was ist denn jetzt richtig?  :o

Benötige ich hier die einzelnen ' überhaupt? Ist es für HTML, also die <div> Angabe nötig?
für was die doppelten und einzelnen Hochkommas da sind hat dir ellert ja beschrieben!
für das HTML-Tag ist es egal welche du nimmst, haptsache sie werden wieder _abgeschlossen_ (so wie bei der klammersetzung!)

Zitat von: Steffen@Home am 24 Januar 2018, 08:43:20
Sonst würde ich nur " verwenden.
{my $state = ReadingsVal($name, "state", "off"); return "<div>".FW_makeImage("temperature_humidity\@red","tooltip")"." ".ReadingsVal($name,"humidity",0)." %</div>" if($state eq "on"); return "<div>".FW_makeImage("temperature_humidity\@grey","tooltip")"." ".ReadingsVal($name,"humidity",0)." %</div>" if($state eq "off");}
wenn du nur "" sprich doppelte verwendest, musst du halt etwas anders auf deine variablen zugreifen und den ...... (gleich gehts weiter!)

Zitat von: Steffen@Home am 24 Januar 2018, 08:43:20
- für was wird der Punkt (.) verwendet ?
.... Text verketten, denn dafür wird hier der Punkt verwendet!

Zitat von: Steffen@Home am 24 Januar 2018, 08:43:20
Soweit ich weiss Ergibt "variable" die Ausgabe: variable (Den Text zwischen den Hochkommas)
$variable Ausgabe: den Inhalt der Variablen
siehe erklärung von Ellert wann daraus der Inhalt und wann der Variablenname ausgegeben wird!

Zitat von: Steffen@Home am 24 Januar 2018, 08:43:20
'<div>".FW_ma : Hier wird z.B. die Zeichenkette nicht vom gleichen Hochkommatyp eingeschlossen.
Würde ich so schreiben:
"<div>".FW_ma....

ok, würde passen!

Zitat von: Steffen@Home am 24 Januar 2018, 08:43:20
." %</div>" if($
Das % soll doch als Text Dargestellt sein ist für mich also kein einleitendes Zeichen für etwas  ???
doch könnte als hash interpretiert werden, nämlich durch das durcheinander an Hochkommaverwendung. (ich hab es nicht kontrolliert!)
viele Wege in FHEM es gibt!

Ellert

Zitat von: Steffen@Home am 24 Januar 2018, 08:43:20
Hallo Hr. Ellert,

- Grundsätzlich verstehe ich nicht warum hier überhaupt einzelne ' verwendet sind und dann mal wieder doppelte und das alles ohne System oder ich verstehe es noch nicht. Erst wurde '<Div> geschrieben jetzt so "<div> ...was ist denn jetzt richtig?  :o
Benötige ich hier die einzelnen ' überhaupt? Ist es für HTML, also die <div> Angabe nötig?
Sonst würde ich nur " verwenden.
{my $state = ReadingsVal($name, "state", "off"); return "<div>".FW_makeImage("temperature_humidity\@red","tooltip")"." ".ReadingsVal($name,"humidity",0)." %</div>" if($state eq "on"); return "<div>".FW_makeImage("temperature_humidity\@grey","tooltip")"." ".ReadingsVal($name,"humidity",0)." %</div>" if($state eq "off");}

- für was wird der Punkt (.) verwendet ?



Soweit ich weiss Ergibt "variable" die Ausgabe: variable (Den Text zwischen den Hochkommas)
$variable Ausgabe: den Inhalt der Variablen


'<div>".FW_ma : Hier wird z.B. die Zeichenkette nicht vom gleichen Hochkommatyp eingeschlossen.
Würde ich so schreiben:
"<div>".FW_ma....

." %</div>" if($
Das % soll doch als Text Dargestellt sein ist für mich also kein einleitendes Zeichen für etwas  ???

Ich sehe, dass Dir nicht nur das Wissen zu den Hochkommas fehlt, sondern Grundwissen zu Perl.
Daher würde ich vorschlagen, dass Du Dein Perl-Grundwissen im Selbststudium erweiterst, dann hast Du mehr davon, als wenn Du  nur Einzelaspekte nachfragst und die Antworten zu mehr Verwirrung führen, da hier kein Perl-Tutorial nacherzählt werden kann..

Steffen@Home

ja da hast du absolut Recht. Perl ist leider völliges Neuland ja und wenn dann noch unterschiedliche Vorgehensweisen verwendet werden ist das total verwirrend für mich.

Das Beispiel von nils werde ich noch testen.
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

Bekomme leider eine Fehlermeldung von FHEM zurück:
Argument FW_makeImage( for attr d_GaOstHumAlarm devStateIcon is not a valid regexp: Unmatched ( in regex; marked by <-- HERE in m/^FW_makeImage( <-- HERE $/ at fhem.pl line 2777.

Zitat von: nils_ am 24 Januar 2018, 08:42:38
versuch mal:

return "<div>" . FW_makeImage( (ReadingsVal($name, "state", "off") eq "on" ? "temperature_humidity\@red" : "temperature_humidity\@grey"), "tooltip") . " " . ReadingsVal($name,"humidity",0) . " %</div>";
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

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Steffen@Home

Perfekt! Super, Danke dafür!  8)
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_

sorry, die {} hatte ich nicht mitgepostet. (für mich war klar das die da hin kommen....  ??? )


funktioniert alles soweit?
viele Wege in FHEM es gibt!

Steffen@Home

Hallo Nils, ja funktioniert perfekt Danke!
Könnte man eigentlich den hinteren Teil (ReadingsVal($name,"humidity",0) . " %) auch separat formatieren z.b. Schriftfarbe ... ?

{return "<div>" . FW_makeImage( (ReadingsVal($name, "state", "off") eq "on" ? "temperature_humidity\@red" : "temperature_humidity\@grey"), "tooltip") . " " . ReadingsVal($name,"humidity",0) . " %</div>";}
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 26 Januar 2018, 11:52:38
Hallo Nils, ja funktioniert perfekt Danke!
ok. gut!

Zitat von: Steffen@Home am 26 Januar 2018, 11:52:38
Könnte man eigentlich den hinteren Teil (ReadingsVal($name,"humidity",0) . " %) auch separat formatieren z.b. Schriftfarbe ... ?
geht das bei html einfach so? oder muss man dafür das css anpacken??
das weiß ich nicht genau.
falls es da was gibt, musst du es nur an die richtige stelle in deinem string setzen ;)
viele Wege in FHEM es gibt!

Steffen@Home

Müsste ich mal versuchen ob das funktioniert...

{return "<div style=\"color:#0000FF\">" . FW_makeImage( (ReadingsVal($name, "state", "off") eq "on" ? "temperature_humidity\@red" : "temperature_humidity\@grey"), "tooltip") . " " . ReadingsVal($name,"humidity",0) . " %</div>";}

oder ein 2. <div> im <div> vielleicht.
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

Zitat von: Steffen@Home am 26 Januar 2018, 12:34:31
{return "<div style=\"color:#0000FF\">" . FW_makeImage( (ReadingsVal($name, "state", "off") eq "on" ? "temperature_humidity\@red" : "temperature_humidity\@grey"), "tooltip") . " " . ReadingsVal($name,"humidity",0) . " %</div>";}

funktioniert  :)

Allerdings was mir aufgefallen ist, ist dass das UserReading des dummy leider nicht aktualisiert wird.
Folgend ist das humidity nicht aktuell.

Das DOIF das den meinen dummy auf on oder off setzt löst leider keinen Event auf das ReadingsProxy aus damit sich dieses auch den neuen Wert holt.


DOIF:
Internals:
   DEF        ([GaOstHum:humidity] > 50) (set d_GaOstHumAlarm on) DOELSE (set d_GaOstHumAlarm off)
   NAME       doif_GaOstHumAlarm
   NR         171
   NTFY_ORDER 50-doif_GaOstHumAlarm
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2018-01-31 19:00:11   Device          GaOstHum
     2018-01-25 18:19:19   cmd             2
     2018-01-25 18:19:19   cmd_event       set_cmd_2
     2018-01-25 18:19:19   cmd_nr          2
     2018-01-31 19:00:11   e_GaOstHum_humidity 47.7
     2018-01-25 18:19:19   state           cmd_2
   condition:
     0          ReadingValDoIf($hash,'GaOstHum','humidity') > 50
   devices:
     0           GaOstHum
     all         GaOstHum
   do:
     0:
       0          set d_GaOstHumAlarm on
     1:
       0          set d_GaOstHumAlarm off
   helper:
     event      temperature: 12.1,absFeuchte: 5.1,dewpoint: 1.3
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   GaOstHum
     timerevent temperature: 12.1,absFeuchte: 5.1,dewpoint: 1.3
     triggerDev GaOstHum
     timerevents:
       temperature: 12.1
       absFeuchte: 5.1
       dewpoint: 1.3
     timereventsState:
       temperature: 12.1
       absFeuchte: 5.1
       dewpoint: 1.3
     triggerEvents:
       temperature: 12.1
       absFeuchte: 5.1
       dewpoint: 1.3
     triggerEventsState:
       temperature: 12.1
       absFeuchte: 5.1
       dewpoint: 1.3
   internals:
   itimer:
   readings:
     0           GaOstHum:humidity
     all         GaOstHum:humidity
   regexp:
     0:
     all:
   state:
     STATE:
   trigger:
Attributes:
   DbLogExclude .*
   room       GarageOst
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 31 Januar 2018, 19:29:20
Allerdings was mir aufgefallen ist, ist dass das UserReading des dummy leider nicht aktualisiert wird.
Folgend ist das humidity nicht aktuell.
welches userreading??
welcher dummy??

Bitte bitte bitte gewöhn dir an, ein list von den devices zu posten!!! (in code-tags!)
so ist es wieder nur raten und nachfragen....

Zitat von: Steffen@Home am 31 Januar 2018, 19:29:20
Das DOIF das den meinen dummy auf on oder off setzt löst leider keinen Event auf das ReadingsProxy aus damit sich dieses auch den neuen Wert holt.
wie oft und wann soll das passieren??
dein doif triggert nur bei über/unterschreiten des schwellwertes (bei dir 50)
momentan ist es im DOELSE-Zweig (cmd_2) weil hum 47.7 ist !
und da bleibt es bis hum mal irgendwann über 50 ist (das kann unter umständen auch mal 2 bis 3 jahre dauern!!!)
viele Wege in FHEM es gibt!

Steffen@Home

#41
Hallo Nils,

das List ist auf Seite 1 / 1. Post. Wollte ich nicht noch einmal posten, aber ok.

Ok, Ich dachte das DOIF löst immer bei einer Änderung der Luftfeuchtigkeit aus und startet entweder den cmd1 oder cmd2.
Aber du hast recht die Readings im Ziel Dummy sind auch vom 25.01.2018

D.h. ich müsste das DOIF durch ein notify ersetzen das auf humidity.* reagiert und den cmd1 oder cmd2 ausführt.
Somit würde der auslösende Event im Ziel dummy sein UserReading auch aktualisieren.

Richtig?

aus DOIF:
([GaOstHum:humidity] > 50) (set d_GaOstHumAlarm on) DOELSE (set d_GaOstHumAlarm off)
wird notify:
define n_GaOstHumAlarm notify GaOstHum:humidity.* IF ($EVENT > 50) (set d_GaOstHumAlarm on) ELSE (set d_GaOstHumAlarm 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

nils_

Zitat von: Steffen@Home am 01 Februar 2018, 11:56:13
das List ist auf Seite 1 / 1. Post. Wollte ich nicht noch einmal posten, aber ok.
ok, hab da nochmal reingeschaut.

Zitat von: Steffen@Home am 01 Februar 2018, 11:56:13
Ok, Ich dachte das DOIF löst immer bei einer Änderung der Luftfeuchtigkeit aus und startet entweder den cmd1 oder cmd2.
nein, so funktioniert doif nicht. um das zu erreichen musst du das attribut 'do always' setzen. (siehe commendref!)

Zitat von: Steffen@Home am 01 Februar 2018, 11:56:13
Aber du hast recht die Readings im Ziel Dummy sind auch vom 25.01.2018
kann sein. wenn deine humi seitdem nicht über 50 war ?!


Zitat von: Steffen@Home am 01 Februar 2018, 11:56:13
D.h. ich müsste das DOIF durch ein notify ersetzen das auf humidity.* reagiert und den cmd1 oder cmd2 ausführt.
Somit würde der auslösende Event im Ziel dummy sein UserReading auch aktualisieren.
du kannst auch DOIF nehmen (siehe oben)

notify sollte so passen, wenn du es denn verwenden willst...

viele Wege in FHEM es gibt!

Steffen@Home

Hallo Nils,

Danke für den Tipp mit do always. Habe es so umgesetzt. Kommt ja eigentlich auf´s gleiche raus wie das notify von den Aktivitäten denk ich.
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