update readingsGroup

Begonnen von justme1968, 03 September 2013, 22:59:01

Vorheriges Thema - Nächstes Thema

chris1284

#90
super erklärung, an typ hatte ich granicht gedacht ....

du hast recht, da die anzahl der reading variable ist geht das sortieren so nicht, leider.

edit: außer man letzt im colview das readingslimit
das thema sortierung ist eh ein leidiges ( zum beispiel das generell readings im frontend immer autom. aufsteugend nach name sortiert werden....)

coolice

Hab es so hinbekommen. Danke. ;D

tpm88

#92
Hallo,

Zitat von: justme1968 am 26 Februar 2014, 16:39:20
ab morgen gibt es in der readingsGroup das neue attribut sortDevices.

sobald es gesetzt ist werden die device zeilen wie an anderer stelle im frontend pro device nach sortby,alias oder name (je nach dem was zuerst definiert ist) sortiert.

Wenn ich das richtig verstehe, müsste ein Device Alias beim Sortieren vor dem Device name berücksichtigt werden, wenn sortby nicht gesetzt ist.

Ich habe eine Readingsgroup, die zwei Devices (WeekdayTimer) anzeigt:


list rg_timer_Wasser

Internals:
   DEF        timer_Wasser_..:active,+DEF,nextUpdate,nextValue
   NAME       rg_timer_Wasser
   NR         213
   NTFY_ORDER 50-rg_timer_Wasser
   STATE      Initialized
   TYPE       readingsGroup
   mayBeVisible 1
   Content:
     timer_Wasser_01 1
     timer_Wasser_02 1
   DEVICES:
     ARRAY(0x14702a8)
     ARRAY(0x14702f8)
   Fhem:
     last_update 1400166765.55631
Attributes:
   alias      Scheduling
   commands   { 'active.enabled' => 'attr $DEVICE disable 1; setreading $DEVICE active disabled', 'active.disabled' => 'attr $DEVICE disable 0; setreading $DEVICE active enabled' }
   group      Bewässerung
   notime     1
   room       Terrasse
   sortDevices 1
   style      style="border:0px;background:none;box-shadow:none"
   valueFormat { my @text = split(" ", $VALUE); shift @text;  if ( $READING =~ m/.*DEF/ ) { return join("*", @text) }; return $VALUE if  (ReadingsVal($DEVICE, "active", "enabled") eq "enabled"); return "disabled"; }
   valueIcon  { 'active.enabled' => 'Restart', 'active.disabled' => 'Shutdown' }


Die beiden Devices haben folgenden Alias:

timer_Wasser_01 => Zeitplan_Garten
timer_Wasser_02 => Zeitplan_Balkon

Egal, ob ich sortDevices setze oder nicht - die RG listet immer "Zeitplan_Garten" vor "Zeitplan_Balkon".

Jemand eine Idee?

Gruss
Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT

justme1968

die sortierung wird zur zeit nicht aktualisiert wenn das attribut gesetzt wird sondern nur wenn sich an der device liste etwas ändert oder fhem neu gestartet wird.

ich habe eben eine version eingecheckt bei der auch dann neu sortiert wird sobald sich das attribut sortDevices ändert.

bis dahin kannst du als workaround einfach ein modify auf die readingsGroup machen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

tpm88

Zitat von: justme1968 am 15 Mai 2014, 19:02:20
die sortierung wird zur zeit nicht aktualisiert wenn das attribut gesetzt wird sondern nur wenn sich an der device liste etwas ändert oder fhem neu gestartet wird.

ich habe eben eine version eingecheckt bei der auch dann neu sortiert wird sobald sich das attribut sortDevices ändert.

bis dahin kannst du als workaround einfach ein modify auf die readingsGroup machen.

Perfekt. Danke.
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT

gero

Hallo,

ich bin gerade dabei mein Frontend etwas schöner zu gestalten. Dabei bin ich über ein Problem gestolpert:

Wenn ich das Attribut sortDevices setze, wird die Überschrift der readingsGroup nach unten sortiert (siehe Snapshot).
Die Devices selbst haben alle das Attribute sortby gesetzt. (Aufsteigend von 00 bis 12)

Wie kann ich das verhindern?

Gruß,
Gero
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

justme1968

hab es eben repariert. mit dem updagte morgen sollte es gehen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

gero

Zitat von: justme1968 am 28 Mai 2014, 14:11:44
hab es eben repariert. mit dem updagte morgen sollte es gehen.

gruss
  andre

Vielen Dank!
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

stromer-12

Hallo Andre,

ich habe heute ein Update gemacht und da werden bei meiner RG bei desired-temp keine DropDown Felder der FHTs mehr angezeigt.
Bei der Version vom 22.5. funktionierte es noch.

Gruß
Gerd
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

justme1968

sorry.

hab es eben repariert.

morgen geht es wieder.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

stromer-12

FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Elektrolurch

#101
Hallo zusammen,

habe einige kleine Ergänzungen an der readingsGroup vorgenommen und hänge das Modul hier mal zum Test an:

1. Zusätzlich zu $DEVICE, %DEVICE usw. wird nun auch $ROW bzw. %ROW (Zeilennummer der Ausgabe) unterstützt.

Beispiele:

Anrufliste mit Zeilennummer:
define Anrufliste readingsGroup <Pos>,<Art>,<Datum>,<Name>,<Nummer>,<Dauer> meineFB:A0,B0,C0,D0,E0 meineFB:A1,B1,C1,D1,E1 meineFB:A2,B2,C2,D2,E2 meineFB:A3,B3,C3,D3,E3 meineFB:A4,B4,C4,D4,E4
attr Anrufliste mapping {'meineFB' => '{sprintf("%d.",$ROW-1);;}'}
attr Anrufliste noheading 0
attr Anrufliste nolinks 1
attr Anrufliste nonames 0
attr Anrufliste nostate 1
attr Anrufliste notime 1
attr Anrufliste room Telefon

Beispiel 2 - Solarstatistik
Hier wird in der ersten Spalte der Monatsnamen ausgegeben. Im mapping - Hash kann jetzt auch wieder ein Perl-Ausdruck stehen. In diesem Fall wird eine sub aufgerufen (ZahlzuMonat), die den Monatsnamen zurückliefert:

define SolarStatistik_rg readingsGroup <Monat>,<Ertrag kWh>,<Sonnentage>,<Brenner kWh>,<Solaranteil %> SolarStatistik:1-Ertrag,1-Sonnentage,1-BrennerkWh,1-SolAnteil SolarStatistik:2-Ertrag,2-Sonnentage,2-BrennerkWh,2-SolAnteil SolarStatistik:3-Ertrag,3-Sonnentage,3-BrennerkWh,3-SolAnteil SolarStatistik:4-Ertrag,4-Sonnentage,4-BrennerkWh,4-SolAnteil SolarStatistik:5-Ertrag,5-Sonnentage,5-BrennerkWh,5-SolAnteil SolarStatistik:6-Ertrag,6-Sonnentage,6-BrennerkWh,6-SolAnteilSolarStatistik:7-Ertrag,7-Sonnentage,7-BrennerkWh,7-SolAnteil SolarStatistik:8-Ertrag,8-Sonnentage,8-BrennerkWh,8-SolAnteil SolarStatistik:9-Ertrag,9-Sonnentage,9-BrennerkWh,9-SolAnteil SolarStatistik:10-Ertrag,10-Sonnentage,10-BrennerkWh,10-SolAnteil SolarStatistik:11-Ertrag,11-Sonnentage,11-BrennerkWh,11-SolAnteil SolarStatistik:12-Ertrag,12-Sonnentage,12-BrennerkWh,12-SolAnteil SolarStatistik:Ges-Ertrag,Ges-Sonnentage,Ges-BrennerkWh,Ges-SolAnteil
attr SolarStatistik_rg alias Solarenergiegewinnung (Jahresstatistik)
attr SolarStatistik_rg mapping {'SolarStatistik' => '{ZahlzuMonat($ROW-1);;}'}
attr SolarStatistik_rg nolinks 1
attr SolarStatistik_rg room Solaranlage
attr SolarStatistik_rg valueFormat {"1-Ertrag" => '%d kWh', "1-BrennerkWh" => '%d kWh', "1-SolAnteil" => '%.1f %%',"2-Ertrag" => '%d kWh', "2-BrennerkWh" => '%d kWh', "2-SolAnteil" => '%.1f %%',"3-Ertrag" => '%d kWh', "3-BrennerkWh" => '%d kWh', "3-SolAnteil" => '%.1f %%', "4-Ertrag" => '%d kWh', "4-BrennerkWh" => '%d kWh', "4-SolAnteil" => '%.1f %%', "5-Ertrag" => '%d kWh', "5-BrennerkWh" => '%d kWh', "5-SolAnteil" => '%.1f %%', "6-Ertrag" => '%d kWh', "6-BrennerkWh" => '%d kWh', "6-SolAnteil" => '%.1f %%',"7-Ertrag" => '%d kWh', "7-BrennerkWh" => '%d kWh', "7-SolAnteil" => '%.1f %%',"8-Ertrag" => '%d kWh', "8-BrennerkWh" => '%d kWh', "8-SolAnteil" => '%.1f %%',"9-Ertrag" => '%d kWh', "9-BrennerkWh" => '%d kWh', "9-SolAnteil" => '%.1f %%',"10-Ertrag" => '%d kWh', "10-BrennerkWh" => '%d kWh', "10-SolAnteil" => '%.1f %%',"11-Ertrag" => '%d kWh', "11-BrennerkWh" => '%d kWh', "11-SolAnteil" => '%.1f %%',"12-Ertrag" => '%d kWh', "12-BrennerkWh" => '%d kWh', "12-SolAnteil" => '%.1f %%', "Ges-Ertrag" => '%d kWh', "Ges-BrennerkWh" => '%d kWh', "Ges-SolAnteil" => '%.1f %%'}


Es wurde ein neues Attribut "nonames" eingeführt. Ist dies auf "1" gesetzt, so wird die erste Spalte mit dem "device-Namen", bzw. dem entsprechenden mapping nicht ausgegeben.  Dies ist immer dann sinnvoll, wenn zu einem Device mehrere Werte ausgegeben werden sollen und man einen "Gruppennamen" voran stellen möchte:

Beispiel:
Für die Solaranlage gibt es die Gruppen Außentemperatur,Kollektor,Puffer usw:

define HzAnlage_SOL_P_rg readingsGroup HzAnlage:<Aktualisiert&nbsp;;um>,UpdateTime-SOL_P HzAnlage:<Außentemperatur>,Aussentemperatur,Min-Aussentemperatur,Max-Aussentemperatur HzAnlage:<Solar&nbsp;;(Start,Ende,Dauer)>,Status-DTR,Sol-Startzeit,Sol-Endzeit,Sol-Dauer HzAnlage:<Kollektor>,Temp-Kollektor,Min-Kollektortemperatur,Max-Kollektortemperatur HzAnlage:<Solar&nbsp;;(VL/Rl/Durchfluss)>,Temp-Solar-Vorlauf,Temp-Solar-Rücklauf,Durchfluss HzAnlage:<Leistung&nbsp;;(akt,max,um)>,Leistung,Max-Leistung,Max-Leistung-Zeit HzAnlage:<Tagesertrag/Gesamt>,Tagesertrag,Ertrag-Gesamt  HzAnlage:<Puffer>,Temp-Puffer-oben,Temp-Puffer-unten,Temp-Solar-unten HzAnlage:<Ww/Hz>,Hk1-Warmwassertemperatur,Hk2-Vorlauftemperatur
attr HzAnlage_SOL_P_rg alias Betriebszustand
attr HzAnlage_SOL_P_rg group Solaranlage
attr HzAnlage_SOL_P_rg mapping {'HzAnlage' => ''}
attr HzAnlage_SOL_P_rg nolinks 0
attr HzAnlage_SOL_P_rg nonames 1
attr HzAnlage_SOL_P_rg notime 1
attr HzAnlage_SOL_P_rg room Solaranlage
attr HzAnlage_SOL_P_rg valueFormat {'HzAnlage.Brennerlaufzeit-heute' => '%d Minuten', 'HzAnlage.Aussentemperatur' => 'akt %.1f °C', 'HzAnlage.Min-Aussentemperatur' =>'min %.1f °C', 'HzAnlage.Max-Aussentemperatur' =>'max %.1f °C', 'HzAnlage.Temp-Kollektor' => 'akt %.1f °C','HzAnlage.Min-Kollektortemperatur' => 'min %.1f °C','HzAnlage.Max-Kollektortemperatur' => 'max %.1f °C', 'HzAnlage.Temp-Solar-Vorlauf' =>'%.1f °C', 'HzAnlage.Temp-Solar-Rücklauf' => '%.1f °C', 'HzAnlage.Durchfluss' => '%.1f l/Min.', 'HzAnlage.Temp-Puffer-oben' => 'oben %s °C', 'HzAnlage.Temp-Puffer-unten' => 'mitte %s °C', 'HzAnlage.Temp-Solar-unten' => 'unten %s °C','HzAnlage.Hk1-Warmwassertemperatur' => '%.1f °C',  'HzAnlage.Hk2-Vorlauftemperatur' =>'%.1f °C', 'HzAnlage.Leistung' => '%.1f kW', 'HzAnlage.Max-Leistung' => '%.1f kW', 'HzAnlage.Tagesertrag' => '%.1f kWh', 'HzAnlage.Ertrag-Gesamt' => '%d kWh'}


Beispiel Wetter:
define Wetter_rg readingsGroup HzAnlage:<Außentemperatur>,Aussentemperatur,Min-Aussentemperatur,Max-Aussentemperatur Wetter:<heute>,fc1_condition Wetter:<Temperatur>,fc1_high_c,fc1_low_c Wetter:<morgen>,fc2_condition Wetter:<Temperatur>,fc2_high_c,fc2_low_c
attr Wetter_rg alias Aktuelles Wetter
attr Wetter_rg noheading 0
attr Wetter_rg nolinks 1
attr Wetter_rg nonames 1
attr Wetter_rg notime 1
attr Wetter_rg room Wetter


Ich habe ca. 20 readingsGroups in Verwendung und da, wo es nötig war, die Umstellungen gemacht, damit sie jetzt besser aussehen.
Bitte die Änderungen mal testen. Im Code habe ich dise mit "Elektrolurch" gekennzeichnet. Wenn das passt, bitte dann einchecken.

Was ich noch machen möchte:

Wenn das Attribut "commands" gesetzt ist, werden wohl das mapping für die Readings und das Attribut valueFormat ignoriert.
Was jedoch wünschenswert wäre, wenn man z.B. noch hinter dem Klappmenü für das Einstellen einer Temperatur " °C" über valueFormat anhängen könnte.
Werde mal sehen, ob es möglich ist, trotz Ausgabe von commands in der gleichen Spalte noch das Ergebnis von "valueFormat" anzuhängen.

Nachtrag: Hatte die letzte Änderung von Andre verpasst und habe meine Ergänzungen nun in die aktuellste Version eingearbeitet.
Leider kriege ich es hier nicht hin, die Datei auszutauschen. Daher die geänderte Version im nächsten Post....

Viel Spaß beim Testen.

Gruß


Elektrolurch
configDB und Windows befreite Zone!

Elektrolurch

configDB und Windows befreite Zone!

justme1968

ich schaue mir gerade deinen patch an.

du hast in lookup2 das eval noch ein zweites mal eingebaut. ein mal sollte eigentlich reichen. zuerst wird der hash ausgewertet und danach das eval. ohne else dazwischen. hat das bei dir nicht funktioniert? wie genau schaut dein hash aus?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

bitte schau mal ob die angehängte version so funktioniert wie du dir das vorstellst.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968