devStateIcon und stateFormat

Begonnen von Florian_GT, 27 Juli 2016, 22:11:48

Vorheriges Thema - Nächstes Thema

lin_win

Danke, super Vorlage für mich als Laie !

carlos

Interessant, ich habe es jetzt mit deinem Code probiert und damit geht es tatsächlich.
Ich verstehe es zwar nicht, den der Pfad zum Icon sieht im OS anders aus.
Gruß
Carlos
FHEM svn auf Intel NUC mit proxmox, 3 Raspberry Pi, signalduino, nanoCUL,  toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

DeeSPe

#17
Zitat von: carlos am 26 April 2017, 23:34:03
Interessant, ich habe es jetzt mit deinem Code probiert und damit geht es tatsächlich.
Ich verstehe es zwar nicht, den der Pfad zum Icon sieht im OS anders aus.
Gruß
Carlos

/fhem steht in der Adresszeile hinter dem Port, richtig?
/opt/fhem/www/ ist der Default Webserver Pfad für FHEM, also wird nur der Unterordner /images angegeben.

Ergibt zusammen: /fhem/images/...............

EDIT: In Real steht da noch die Webserveradresse davor, also:
http(s)://xxx.xxx.xxx.xxx:8083/fhem/images/...............

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

carlos

Womit du Recht hast. Danke für die Erklärung-
Gruß
Carlos
FHEM svn auf Intel NUC mit proxmox, 3 Raspberry Pi, signalduino, nanoCUL,  toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Stippy19

Nachtrag: Der Vorschlag weiter oben zwar funktioniert, bringt aber dennoch Fehlermeldungen im Log:
PERL WARNING: Argument " 0 W previous: 0 delta_time: 301 s" isn't numeric in sprintf at (eval 48295) line 3.

Mit Hilfe im anderen Thread (Link: https://forum.fhem.de/index.php/topic,71194.0.html) habe ich jetzt einen, der dieses Problem nicht hat:
{
  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");
}

misux

Hallo! Ich versuche anhand dieser Einträge den Selben Effekt... Leider klappt es nicht weil mein ReadingsVal irgendwie keine $name akzeptiert und andere Probleme hat...: Fehlermeldung als Bild...

Könnte bitte mir jemand behilflich sein wie ich meine devStateIcon und meine eventMap in der Device Overviev nebeneinander hin bekomme... :-\

Hier meine List vom Device. Ich kann nur mit dem basicSet aus den Readings arbeiten weil das irgendwie der einzige Wert ist der sich ändert wenn ich mein Modul schalte...

Internals:
   DEF        cedf06ff 769
   IODev      ZWDongle
   LASTInputDev ZWDongle
   MSGCNT     169
   NAME       SENSOR_1_Tor
   NR         41
   STATE      OPEN
   TYPE       ZWave
   ZWDongle_MSGCNT 169
   ZWDongle_RAWMSG 0004000307600d01012001ff
   ZWDongle_TIME 2018-02-13 16:39:26
   ZWaveSubDevice yes
   endpointParent SENSOR_1
   homeId     cedf06ff
   isWakeUp   
   nodeIdHex  0301
   READINGS:
     2018-02-13 16:39:26   basicSet        255
     2018-02-12 10:49:05   reportedState   open
     2018-02-12 10:49:05   state           open
Attributes:
   IODev      ZWDongle
   classes    SENSOR_BINARY SENSOR_ALARM
   devStateIcon 255:secur_open@red 0:secur_locked@green
   eventMap   255:OPEN 0:CLOSED
   room       ZWave
   stateFormat basicSet

mfhotdog

Hallo,

irgendwie stehe ich auf dem Schlauch.

Ich habe einen Sonoff POW, dieser funktioniert und ist angebunden mit folgendem stateFormat:

{sprintf("Aktuell: %.1f W Tag: %.2f Kw/h Total: %.3f Kw/h", ReadingsVal($name,"ENERGY_Power",undef), ReadingsVal($name,"ENERGY_Today",undef), ReadingsVal($name,"ENERGY_Total",undef))}

Ich würde nun gerne, wenn der Sonoff ansich ein- oder ausgeschaltet ist eine Steckdose einblenden, ich habe es mit folgendem Code ohne Erfolg versucht:


{
  my $state = ReadingsVal($name, "state", "off");
  return '<div><img src="/fhem/images/default/on.png">'.sprintf(" &NBSP;&NBSP; Aktuell: %.2f W Tag: %.3f Kw/h Total: %.4f Kw/h", ReadingsVal($name,"ENERGY_Power",undef), ReadingsVal($name,"ENERGY_Today",undef), ReadingsVal($name,"ENERGY_Total",undef)).'</div>' if($state eq "on");
  return '<div><img src="/fhem/images/default/off.png">'.sprintf(" &NBSP;&NBSP; Aktuell: %.2f W Tag: %.3f Kw/h Total: %.4f Kw/h", ReadingsVal($name,"ENERGY_Power",undef), ReadingsVal($name,"ENERGY_Today",undef), ReadingsVal($name,"ENERGY_Total",undef)).'</div>' if($state eq "off");
}



Hat jemand zufällig gerade eine Idee parat, wie das  klappt, dass alle 3 Werte sowie der Status des Sonoff POW angezeigt werden kann?

LG
Marc

mfhotdog

Hallo,

habe eine Lösung an anderer Stelle bekommen. Hier ein funktionierendes stateFormat für Sonoff POW und POW R2 mit Tasmota:

{my $state = lc ReadingsVal($name, "state", "off");
my $devStateIcon = 'black_Steckdose.on.png';
if ($state eq "off")
{
$devStateIcon = 'black_Steckdose.off.png';
}
"<div><img width='25px' height='25px' src='/fhem/images/default/" . $devStateIcon . "'>" . sprintf(
"&nbsp;&nbsp;[Aktuell: %.1f W / Tag: %.3f Kw/h / Total: %.2f kW/h]",
ReadingsVal($name,"ENERGY_Power",-1),
ReadingsVal($name,"ENERGY_Today",-1),
ReadingsVal($name,"ENERGY_Total",-1)
)
}


Grüße

tschonder

#23
Hallo,

wenn ich den Sonoff POW über das Steckdosen Icon schalten will,  kann ich nur einschalten aber nicht mehr aus .

über on : off kann ich das devStateIcon schalten .

was mache ich da falsch .


ZitatHallo,

habe eine Lösung an anderer Stelle bekommen. Hier ein funktionierendes stateFormat für Sonoff POW und POW R2 mit Tasmota:

Code: [Auswählen]

{my $state = lc ReadingsVal($name, "state", "off");
my $devStateIcon = 'black_Steckdose.on.png';
if ($state eq "off")
{
$devStateIcon = 'black_Steckdose.off.png';
}
"<div><img width='25px' height='25px' src='/fhem/images/default/" . $devStateIcon . "'>" . sprintf(
"&nbsp;&nbsp;[Aktuell: %.1f W / Tag: %.3f Kw/h / Total: %.2f kW/h]",
ReadingsVal($name,"ENERGY_Power",-1),
ReadingsVal($name,"ENERGY_Today",-1),
ReadingsVal($name,"ENERGY_Total",-1)
)
}


Grüße

schwatter

Das geht viel einfacher als immer so Konstrukte.
So nutze ich das.

devStateIcon
on:rc_GREEN:off off:rc_RED:on offline:rc_BLUE:off

stateFormat
state
Strom: ENERGY_Current
| Energie heute: ENERGY_Today
| Energie total: ENERGY_Total
| <a href='http://192.168.178.43' target='_blank'>192.168.178.43</a


Schaltbar und übersichtlich.

tschonder

Danke  :)  für die Antwort , funktioniert   :)

fritzla

Zitat von: schwatter am 28 September 2019, 11:00:28
Das geht viel einfacher als immer so Konstrukte.
So nutze ich das.

devStateIcon
on:rc_GREEN:off off:rc_RED:on offline:rc_BLUE:off

stateFormat
state
Strom: ENERGY_Current
| Energie heute: ENERGY_Today
| Energie total: ENERGY_Total
| <a href='http://192.168.178.43' target='_blank'>192.168.178.43</a


Schaltbar und übersichtlich.

Die Anzeige funktioniert bei mir damit. Wenn ich auf das Icon klicke wechselt der Status zwischen an und aus, aber wenn ich auf den Text klicke welchselt der Status immer zu an? Was mache ich falsch?