Neues Modul readingsGroup

Begonnen von Niko, 24 August 2013, 11:59:11

Vorheriges Thema - Nächstes Thema

justme1968

das mit den attributen schaue ich mir an und die änderung für aus dem anderen post kommt auch noch.

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

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

Elektrolurch

Uii. Das wäre super. Bin nämlich auf den Geschmack gekommen und versuche alles eher jetzt so modulmässig zu programmieren. So manche Steuerungswerte habe ich dann in dummys als readings hinterlegt, aber eigentlich wäre es schon schicker, da Attribute draus zu machen.

configDB und Windows befreite Zone!

justme1968

für die attribute habe ich eine lösung. rudi muss noch einen drei zeiler am fhemweb javascript file einbauen und dann kommt das readingsGroup update demnächst.

für die value suffix geschichte habe ich auch eine lösung. dazu muss ich aber erst die änderungen zur 'tabellen kalkulation' einchecken. da habe ich intern auch die werte vor dem ersetzen zur verfügung.

magst du mir für die set geschichten vom 6.mai vielleicht doch noch ein beispiel machen? dann würde ich eine lösung dafür auch noch einchecken.

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

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

Elektrolurch

Hallo Andre,
Zitat:
magst du mir für die set geschichten vom 6.mai vielleicht doch noch ein beispiel machen? dann würde ich eine lösung dafür auch noch einchecken.


Klar. Ist ja ganz einfach:


define myrg readingsGroup myrg:<Ansicht>,Ansicht global:?verbose
attr myrg commands {'Ansicht' => 'Ansicht:Normal,Fachmann', 'verbose' => 'verbose:'}
attr myrg room myrgtest
define myrg_not notify myrg:.* {Log(1,"$NAME $EVENT bei Ansicht -> per modify Anzeige der rg aendern");;}


"Ansicht" ist ein reading von myrg und soll per notify und "modify" die Anzeige der myrg umschalten. Hier gibt es nur die Meldung im Log (reicht ja zum Testen :D).

Derzeit führt das reading der myrg dazu, dass der set-Befehl aufgerufen wird, es dort aber nicht bekannt ist und am Ende auf die Fehlerbehandlung (Ausgabe wie bei set myrg ?) aufläuft.


Ich denke, es gibt zwei Lösungen:

1. readingsGroup_set
...

return undef if(exists($hash->{READINGS}{$cmd}));

  return "Unknown argument $cmd, choose one of $list";
}


Nachteil: Das reading muss auf alle Fälle schon einmal mit
setreading myrg Ansicht Fachmann
erzeugt worden sein.

2. habe ich aber noch nicht ausprobiert
a) attrlist wird um setList erweitert
b)   return "Unknown argument $cmd, choose one of $list " . AttrVal($name,'setList','');

Habe ich noch nicht ausprobiert, sollte aber funktionieren.
Um eine Anzeige zu erzwingen, wenn das reading noch nicht existiert, sollte man es dann als:

myrg:<Anzeige>,!Anzeige

definieren.

Ich habe derzeit 9 readingsGroups im Einsatz, bei denen ich die Anzeige über eine Auswahlliste modifiziere.

Gruß

Elektrolurch

configDB und Windows befreite Zone!

justme1968

ab morgen gibt es eine version in der dein valueSuffix problem behoben sein sollte, es setList und setFn attribute gibt und die commands für attribute geht.

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

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

Elektrolurch

Na, dann sage ich schon mal herzlichen Dank. Ich hoffe, dass sich viele Nutzer der readingsGroup "bereichert" fühlen. Das mit den einstellbaren Attributen halte ich für eine sehr gute Sache. Und wenn man es z.B. dazu nutzt, per disable etwas ein oder auszuschalten.

Gruß
configDB und Windows befreite Zone!

justme1968

sollte ab morgen behoben sein.

gruß
  andre

ps: nur zum einheiten anhängen gibt es inzwischen valueSuffix. das sollte nicht mehr über valueFormat gemacht werden.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

spikeh1

Zitat von: justme1968 am 19 Juni 2015, 14:10:56
sollte ab morgen behoben sein.

gruß
  andre

ps: nur zum einheiten anhängen gibt es inzwischen valueSuffix. das sollte nicht mehr über valueFormat gemacht werden.

Ich glaube das ist auf meinen Post bezogen, welchen ich gleich wieder gelöscht habe. Du bist schnell.  :)
Habe gesehen das in einem anderen Post, ein ähnliches Problem besteht. Habe es mit $NUM lösen können.
Fehler erscheint nicht mehr.
valueSuffix schaue ich mir an.

Danke.

Invers

Vor einigen Tagen wurde dieses Modul geändert. Seitdem bekomme ich fehlermeldungen, ohne Änderungen vorgenommen zu haben.
Ich habe die neueste Version des Dashboards installiert. Vielleicht gibt es auch dabei einen Zusammenhang

Meine RG

define rg_Temperaturen readingsGroup <%temp_temperature>,<Temperatur>,<Luftfeuchte> TMP_Aussen:,temperature,humidity TMP_WZ:,temperature,humidity TMP_Ku:,temperature,humidity TMP_SZ:,temperature,humidity TMP_Bu:,temperature,humidity TMP_Bad:,temperature,humidity TMP_Ko:,temperature,humidity TMP_HF:,temperature,<>
attr rg_Temperaturen cellStyle {'style="color:yellow"'}
attr rg_Temperaturen fp_Thermometer 18,182,0,,
attr rg_Temperaturen group Temperaturen
attr rg_Temperaturen nameStyle style="color:yellow"
attr rg_Temperaturen noheading 1
attr rg_Temperaturen room Temperatur
attr rg_Temperaturen valueFormat {temperature => "%.1f °C", humidity =>"%.1f %%" }
attr rg_Temperaturen valueStyle {if($DEVICE eq "TMP_Aussen" && $READING eq "temperature" && $VALUE > 30) { 'style="color:red"'} elsif($DEVICE eq "TMP_Aussen" && $READING eq "temperature" && $VALUE > 20)  { 'style="color:orange"'} elsif($DEVICE eq "TMP_Aussen" && $READING eq "temperature" && $VALUE < 5) { 'style="color:lightblue"'} elsif($DEVICE eq "TMP_Ku" && $READING eq "temperature" && $VALUE > 30) { 'style="color:red"'} elsif($DEVICE eq "TMP_Ku" && $READING eq "temperature" && $VALUE > 20) { 'style="color:orange"'} elsif($DEVICE eq "TMP_Ku" && $READING eq "temperature" && $VALUE < 5) { 'style="color:lightblue"'} elsif($DEVICE eq "TMP_Bad" && $READING eq "temperature" && $VALUE > 30)  { 'style="color:red"'} elsif($DEVICE eq "TMP_Bad" && $READING eq "temperature" && $VALUE > 20)  { 'style="color:orange"'} elsif($DEVICE eq "TMP_Bad" && $READING eq "temperature" && $VALUE < 5) { 'style="color:lightblue"'} elsif($DEVICE eq "TMP_SZ" && $READING eq "temperature" && $VALUE > 30) { 'style="color:red"'} elsif($DEVICE eq "TMP_SZ" && $READING eq "temperature" && $VALUE > 20) { 'style="color:orange"'} elsif($DEVICE eq "TMP_Kuehl" && $READING eq "temperature" && $VALUE > 7.5) { 'style="color:red"'} elsif($DEVICE eq "TMP_Kuehl" && $READING eq "temperature" && $VALUE > 6.4) { 'style="color:lightgreen"'} elsif($DEVICE eq "TMP_Kuehl" && $READING eq "temperature" && $VALUE < 6.5) { 'style="color:lightblue"'} elsif($DEVICE eq "TMP_SZ" && $READING eq "temperature" && $VALUE < 5) { 'style="color:lightblue"'} elsif($READING eq "humidity" && $VALUE > 65) { 'style="color:red"'} elsif($READING eq "humidity" && $VALUE > 60) { 'style="color:orange"'} else{'style="color:lightgreen"'} }



Die Fehlermeldungen lauten auszugsweise:
2015.06.19 23:47:48 1: PERL WARNING: Argument "22.8 M-BM-0C" isn't numeric in numeric gt (>) at (eval 640) line 1.
2015.06.19 23:47:48 1: PERL WARNING: Argument "48.0 %" isn't numeric in numeric gt (>) at (eval 643) line 1.
2015.06.19 23:47:48 1: PERL WARNING: Argument "21.5 M-BM-0C" isn't numeric in numeric gt (>) at (eval 646) line 1.
2015.06.19 23:47:48 1: PERL WARNING: Argument "43.0 %" isn't numeric in numeric gt (>) at (eval 649) line 1.
2015.06.19 23:47:48 1: PERL WARNING: Argument "44.0 %" isn't numeric in numeric gt (>) at (eval 655) line 1.
2015.06.19 23:47:48 1: PERL WARNING: Argument "23.8 M-BM-0C" isn't numeric in numeric gt (>) at (eval 658) line 1.
2015.06.19 23:47:48 1: PERL WARNING: Argument "45.0 %" isn't numeric in numeric gt (>) at (eval 661) line 1.
2015.06.19 23:47:48 1: PERL WARNING: Argument "44.0 %" isn't numeric in numeric gt (>) at (eval 667) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "14.7 M-BM-0C" isn't numeric in numeric gt (>) at (eval 704) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "62.0 %" isn't numeric in numeric gt (>) at (eval 707) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "42.0 %" isn't numeric in numeric gt (>) at (eval 713) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "22.8 M-BM-0C" isn't numeric in numeric gt (>) at (eval 716) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "48.0 %" isn't numeric in numeric gt (>) at (eval 719) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "21.5 M-BM-0C" isn't numeric in numeric gt (>) at (eval 722) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "43.0 %" isn't numeric in numeric gt (>) at (eval 725) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "44.0 %" isn't numeric in numeric gt (>) at (eval 731) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "23.8 M-BM-0C" isn't numeric in numeric gt (>) at (eval 734) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "45.0 %" isn't numeric in numeric gt (>) at (eval 737) line 1.
2015.06.19 23:47:53 1: PERL WARNING: Argument "44.0 %" isn't numeric in numeric gt (>) at (eval 743) line 1.
2015.06.19 23:48:28 1: PERL WARNING: Use of uninitialized value $v in sprintf at fhem.pl line 1972.


und:

2015.06.19 23:43:29 1: PERL WARNING: Use of uninitialized value $NUM in substitution (s///) at ./FHEM/33_readingsGroup.pm line 336.

Es stören offenbar die Zeichen hinter den Zahlen.

Für einen trottelsicheren, konkreten Hinweis zur Lösung des Problemes wäre ich dankbar. 

Danke im Voraus.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

justme1968

die probleme sollten morgen alle behoben sein.

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

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

Invers

Das ist mir die liebste Antwort. Danke.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Elektrolurch

Hallo Andre,

ich kämpfe mit der setList / setFn - Erweiterung.
Zuerst habe ich eine zeitlang gebraucht, bis ich herausgefunden habe, dass es nicht reicht, nur die gewünschte setList - Erweiterung anzugeben, sondern es muss auch eine setFn - Funktion vorhanden sein und zwar auch noch in {} eingeschlossen.
(Ich hatte ursprünglich ein notify an die rg gehängt)
Bei Dir im Code sind dann $CMD und $ARGS belegt.
Das Attr sieht bei mir jetzt so aus:
setFn {Alle_Liste_rg_not($CMD,$ARGS)}

Aber wie kann ich jetzt den hash oder den Namen des devices an die Funktion durchreichen?

Elektrolurch
configDB und Windows befreite Zone!

justme1968

der name der readingsGroup steckt in $name

du kannst in der setFn alles machen was du möchtest. ein reading setzen und damit ein event für ein notify auslösen, mit trigger ein event auslösen, ein attribut setzen oder direkt eine funktion aufrufen die dann macht was du möchstest.

eben weil es so viele möglichkeiten gibt wird nichts automatisch gemacht.

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

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

Elektrolurch

Zitat:
der name der readingsGroup steckt in $name

-> also der eval-Aufruf nimmt alle lokal in der sub definierten Variablen mit, gut zu wissen. $CMD und $ARGS sind also nur so aus Gründen der Konvention vorhanden.... aber die lokalen Variablen kennt man ja nur, wenn man den Code anschaut.
Eigentlich müsste es ja nicht $name sondern $DEVICE heissen, damit die commandref stimmt.

Zitat:
du kannst in der setFn alles machen was du möchtest. ein reading setzen und damit ein event für ein notify auslösen, mit trigger ein event auslösen, ein attribut setzen oder direkt eine funktion aufrufen die dann macht was du möchstest.

Ok, das war schon klar. Ich hhatte das vorher als notify dran, habe die sub jetzt aber an den setFn - Aufruf angepasst. Setze darin das reading  "Ansicht" und lasse den Bildschirm neu aufbauen, da sich ja der Anzeigeinhalt der rg geändert hat.

Noch eine kleine Anektote:
valueStyle und $NUM:
Ich hatte ja so Werte wie 45.345,1
Da Du ja $NUM nicht durch abschneiden, sondern durch weglassen aller Nichtziffern erzeugst ->

Wenn die Solaranlage bei mir läuft, wird die aktuelle Puffertemperatur und die Starttemperatur im gleichen Feld angezeigt:

45.5 / 43,3 C

Daher der Wert.
Ich habe wieder auf $VALUE umgestellt, in der Routine, die in Abhängigkeit vom reading  und der Temperatur die Farbe umschaltet, war es sowieso so implementiert, dass ich hinten den Rest abschneide.

Jetzt läuft alles wieder.... :D

Elektrolurch
configDB und Windows befreite Zone!

justme1968

nicht nur aus gründen der konvention sondern auch als garantie das sie sich nicht ändern wenn ich am code etwas umbaue. also besser nicht im quelltext schauen was es noch alles gibt :)

nein. $DEVICE ist jeweils der name eines device dessen reading angezeigt wird. $name ist der name der readingsGroup selber.

da fällt mir ein ich wollte ja noch einbauen das man eine komplette readingsGroup refreshen kann. ohne das die komplette seite aktualisiert wird. kommt noch ...
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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