Hallo Zusammen,
ich möchte gerne meine Funksteckdosen 2x Homematic HM-ES-PMSw1-Pl und 3x Fritz!DEC200 in einer readingsGroup zusammenfassen.
Prinzipiell funktioniert das auch schon mal
define Steckdosen readingsGroup <%message_socket>,<Leistung>,<Spannung>,<Energie>,<Status> Steckdose.*:power,voltage,energy,state
attr Steckdosen cellStyle {"r:1" => 'style="text-align:center"',"c:1" => 'style="text-align:left"'}
attr Steckdosen mapping { return '' if( $READING eq 'status' );; return '%ALIAS' }
attr Steckdosen room Test
attr Steckdosen valueFormat {"voltage" => " %.1f V","power" => " %.1f W","energy" => " %.0f Wh"}
attr Steckdosen valuePrefix  
attr Steckdosen valueStyle style="text-align:right"
attr Steckdosen valueSuffix  
aber es gibt da ein paar Punkte die ich noch verbessern wollte.
1) Ich würde gerne den Status der Steckdosen on/off als Icon anzeigen
-> Problem dass dies in verschiedenen Readings und bei Homematic in verschiedenen Devices steckt
2) Ich würde gerne den Status über commands on/off schaltbar haben wollen
Im Anhang mal das Bild als Original und als Fotomontage wie ich es gerne hätte.
Des weiteren auch die Readings von HM-ES-PMSw1-Pl und DECT200.
Hat mir jemand einen Tipp.
Grüße
Zitat1) Ich würde gerne den Status der Steckdosen on/off als Icon anzeigen
-> Problem dass dies in verschiedenen Readings und bei Homematic in verschiedenen Devices steckt
Im Abschnitt der readinggroup einfügen:
attr Steckdosen valueIcon {'state.on' => 'general_an@green', 'state.off' => 'general_aus@red'}
general_an@green kann dabei gegen jedes icon (z.B. lampenicon) und farbe getauscht werden.
Mit dem Hinweis bin ich nun schon deutlich weiter gekommen.
Allerdings habe ich nun
3) ein Formatproblem, denn
attr Steckdosen valueFormat { 'power' => "%.1f W", 'voltage' => "%.0f V", 'energy' => "%.0f Wh" }
liefert mir zurecht Perl-Warnungen, da ein Teil der Werte bereits formatiert ist.
Zitat
2014.12.21 17:33:21 1: PERL WARNING: Argument "0.71 W" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 712.
2014.12.21 17:33:21 1: PERL WARNING: Argument "21.74 W" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 712.
2014.12.21 17:34:23 1: PERL WARNING: Argument "0.71 W" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 1009.
2014.12.21 17:35:32 1: PERL WARNING: Argument "1.43 W" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 1009.
2014.12.21 17:35:54 1: PERL WARNING: Argument "232.186 V" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 712.
2014.12.21 17:35:54 1: PERL WARNING: Argument "693 Wh" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 712.
2014.12.21 17:35:54 1: PERL WARNING: Argument "231.802 V" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 712.
2014.12.21 17:35:54 1: PERL WARNING: Argument "76325 Wh" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 712.
2014.12.21 17:35:54 1: PERL WARNING: Argument "229.776 V" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 712.
2014.12.21 17:35:54 1: PERL WARNING: Argument "44763 Wh" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 712.
2014.12.21 17:35:57 1: PERL WARNING: Argument "231.446 V" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 1009.
2014.12.21 17:35:57 1: PERL WARNING: Argument "76326 Wh" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 1009.
habe schon diverse Varianten probiert, komm aber da nicht weiter
attr Steckdosen valueFormat { if ($Value=~ /W/) {substr($Value,0,-1)} {$Value}}
attr Steckdosen valueFormat { 'power' => "{ if ($VALUE=~ /W/) {$VALUE} {%.0f W}}" }
nach einigem rumprobieren habe ich für mich eine Lösung gefunden
attr Steckdosen valueFormat {return "%0.1f W" if ($READING eq "power" && substr($VALUE,-1,1) ne "W");;;; {return "%0.1f V" if ($READING eq "voltage" && substr($VALUE,-1,1) ne "V");;;; {return "%0.0f Wh" if ($READING eq "energy" && substr($VALUE,-2,2) ne "Wh");;;; {return sprintf("%.1f", substr($VALUE,0,-1))." W" if ($READING eq "power" && substr($VALUE,-1,1) eq "W");;;; {return sprintf("%.1f", substr($VALUE,0,-1))." V" if ($READING eq "voltage" && substr($VALUE,-1,1) eq "V");;;; return $VALUE;;;; } } } }}
sorry finales Bilder vergessen