readingsGroup Perl Warnungen

Begonnen von Burny4600, 30 Mai 2016, 17:25:03

Vorheriges Thema - Nächstes Thema

ernst1024

Zitat von: CoolTux am 31 Mai 2016, 09:29:49
Es tut mir Leid Ernst, ich Entschuldige mich. Es war in der Tat der Chris in einem anderen Thread mit weit mehr wie 20 include Files.


Entschuldigende Grüße
Leon

Das ist okay, dafür brauchst du dich nicht zu entschuldigen. Letztlich hat es ja, so habe ich es zumindest jetzt verstanden, auch dazu beigetragen dass Problem einzugrenzen.
Gruß Ernst

marvin78

Schon. Aber ich hoffe, dabei ist auch rüber gekommen, dass die Lösung nur auf deiner Seite zu finden ist.

ernst1024

Zitat von: marvin78 am 31 Mai 2016, 09:48:13
Schon. Aber ich hoffe, dabei ist auch rüber gekommen, dass die Lösung nur auf deiner Seite zu finden ist.

Meinst du jetzt mich oder den TE?
Gruß Ernst

CoolTux

Ich finde es bei FHEM unnötig mehrere cfg Files zu haben. Es mag dem Anwender eine bessere Übersicht geben, aber nur wenn man diese von Hand bearbeiten will. Aber genau das ist eigentlich unnötig und nicht erwünscht. Denn was des Usersübersicht ist des Systemsgefahr. Die cfg ist für das System(FHEM) nicht für den User. Man kann alles wunderbar mit FHEMWeb überschauen und bearbeiten, sofern man weiß wie es geht. Weiß man das nicht liest man nach oder fragt einfach.
Ich habe letztens auch überlegt wie ich herausfinde welche Devices ein bestimmtest Reading haben wenn man nur den Readingsnamen kennt. Und siehe da, etwas probieren, logisch denken und keine 10 min später hatte ich es gefunden. Man muß sich nunmal wie mit vielen im Leben so auch mit FHEM beschäftigen und sich nicht nur freuen weil man die Lampen mit dem Handy an schalten kann.


Dieser Text ist an die Allgemeinheit gerichtet.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

marvin78

Zitat von: ernst1024 am 31 Mai 2016, 09:59:14
Meinst du jetzt mich oder den TE?

Je nachdem, wer die Probleme mit dem include und der readingsGroup hat.

Was ich damit sagen möchte, dass man nie genug Informationen geben kann um den Helfern zu helfen, das Problem zu erkennne und damit helfen zu können.

Wichtig zu wissen ist für alle: include kann man machen, es kann aber Probleme machen, die man als Anfänger nicht unbedingt abschätzen kann. Nötig ist es nie. Objektiv gibt es auch keinen (allgemein) guten Grund dafür. Es gibt hier mittlerweile einen vernünftigen Ansatz zum Thema include: https://forum.fhem.de/index.php/topic,54036.msg456541.html#msg456541.

Ich halte es für wichtig, dass Anfänger wissen, welche Probleme include machen kann und dass es wirklich keinerlei Notwendigkeit gibt, die config zu strukturieren, da FHEM ja weiß, wo alles steht.

ernst1024

Zitat von: CoolTux am 31 Mai 2016, 10:02:16
Ich finde es bei FHEM unnötig mehrere cfg Files zu haben.

Aber man muss ja nun erstmal sagen die Möglichkeit ist ja nun mal vorgesehen und man wird sich ja auch was dabei gedacht haben.

Ich habe mit readingGroups experimentiert. So ein readingGroup kann ganz schön umfangreich werden und ich hänge eine meiner jetzt hier auch nur an um das mal zu verdeutlichen. Ich habe halt ein wenig rumgespielt, mehrere Varianten getestet und jeweils in einer .cfg gespeichert die ich dann per include eingebunden habe. Hätte ich das alles jedesmal über die Eingabezeile oder im device ändern müssen wäre ich ja bekloppt geworden. So kann ich mit meinem vertrauten editor mit suchen und ersetzen arbeiten. Also ich finde das ist ein guter Grund mit include zu arbeiten. Sicher muss ich das im späteren Betrieb nicht machen aber bisher sprach für mich auch nichts dagegen.



define myw_Group readingsGroup <Stand>,<aktuell>,<gefühlt>,<Temperatur>,<Luftdruck>,<Luftfeuchte>,<Regen mm>,<Wind>,<Sonne_auf>,<Sonne_unt>,<TL>\
\
myW_Berlin:observation_time,weather,<>,temp_c,pressure_mb,relative_humidity,precip_today_metric,wind_kph,sr,ss,tl\
myW_Bonn:observation_time,weather,<>,temp_c,pressure_mb,relative_humidity,precip_today_metric,wind_kph,sr,ss,tl\
8266_f_Kombi:<Schlafzimmer>,warnmsg,heat-index,temperature,<>,humidity,\
f_Wohn1:<Wohnzimmer>,<>,<>,temperature,<>,<>,<>,<>,<>,<>\
8266_f_Aussen:<AF-Kueche>,<>,<>,temperature,<>,<>,<>,<>,<>,<>\
f_Aussen:<AF-R-Platz>,<>,<>,temperature,<>,<>,<>,<>,<>,<>
attr myw_Group alias Übersicht
attr myw_Group group Wetter Aktuell
attr myw_Group nonames 1
attr myw_Group room Wohnung,myWeather
attr myw_Group valueFormat {"heat-index" =>  "%.0f &deg;;C", "temperature" =>  "%.1f &deg;;C", "temp_c" =>  "%.1f &deg;;C", "pressure_mb" => "%.0f mbar", "relative_humidity" => "%.0f %%", "humidity" => "%.0f %%", "wind_kph" => "%.0f kmh"}
attr myw_Group valueStyle { if($READING eq "temp_c" && $VALUE > 30) { 'style="color:red"'}\
elsif($READING eq "temp_c" && $VALUE > 25) { 'style="color:orange"'}\
elsif($READING eq "temp_c" && $VALUE > 20) { 'style="color:yellow"'}\
elsif($READING eq "temp_c" && $VALUE > 15) { 'style="color:lightgreen"'}\
elsif($READING eq "temp_c" && $VALUE > 10) { 'style="color:lightblue"'}\
elsif($READING eq "temp_c" && $VALUE > 5) { 'style="color:grey"'}\
elsif($READING eq "temp_c" && $VALUE < 0) { 'style="color:white"'}\
elsif($READING eq "temperature" && $VALUE > 30) { 'style="color:red"'}\
elsif($READING eq "temperature" && $VALUE > 25) { 'style="color:orange"'}\
elsif($READING eq "temperature" && $VALUE > 20) { 'style="color:yellow"'}\
elsif($READING eq "temperature" && $VALUE > 15) { 'style="color:lightgreen"'}\
elsif($READING eq "temperature" && $VALUE > 10) { 'style="color:lightblue"'}\
elsif($READING eq "temperature" && $VALUE > 5) { 'style="color:grey"'}\
elsif($READING eq "temperature" && $VALUE < 0) { 'style="color:white"'}\
elsif($READING eq "heat-index" && $VALUE > 51) { 'style="color:red"'}\
elsif($READING eq "heat-index" && $VALUE > 39) { 'style="color:orange"'}\
elsif($READING eq "heat-index" && $VALUE > 32) { 'style="color:yellow"'}\
elsif($READING eq "heat-index" && $VALUE > 26) { 'style="color:white"'}\
elsif($READING eq "heat-index" && $VALUE > 0) { 'style="color:lightgreen"'}\
elsif($READING eq "warnmsg" && $VALUE eq "Erhoehte Gefahr") { 'style="color:red"'}\
elsif($READING eq "warnmsg" && $VALUE eq "Gefahr") { 'style="color:orange"'}\
elsif($READING eq "warnmsg" && $VALUE eq "Erhoehte Vorsicht") { 'style="color:yellow"'}\
elsif($READING eq "warnmsg" && $VALUE eq "Vorsicht") { 'style="color:white"'}\
elsif($READING eq "warnmsg" && $VALUE eq "OK") { 'style="color:lightgreen"'}\
elsif($READING eq "relative_humidity" && $VALUE > 90) { 'style="color:red"'}\
elsif($READING eq "relative_humidity" && $VALUE > 70) { 'style="color:orange"'}\
elsif($READING eq "relative_humidity" && $VALUE > 50) { 'style="color:yellow"'}\
elsif($READING eq "relative_humidity" && $VALUE > 30) { 'style="color:grey"'}\
elsif($READING eq "humidity" && $VALUE > 90) { 'style="color:red"'}\
elsif($READING eq "humidity" && $VALUE > 70) { 'style="color:orange"'}\
elsif($READING eq "humidity" && $VALUE > 50) { 'style="color:yellow"'}\
elsif($READING eq "humidity" && $VALUE > 30) { 'style="color:grey"'}\
elsif($READING eq "pressure_mb" && $VALUE > 1020) { 'style="color:red"'}\
elsif($READING eq "pressure_mb" && $VALUE > 1010) { 'style="color:orange"'}\
elsif($READING eq "pressure_mb" && $VALUE > 1000) { 'style="color:yellow"'}\
elsif($READING eq "pressure_mb" && $VALUE > 990) { 'style="color:grey"'}\
elsif($READING eq "wind_kph" && $VALUE > 80) { 'style="color:red"'}\
elsif($READING eq "wind_kph" && $VALUE > 60) { 'style="color:orange"'}\
elsif($READING eq "wind_kph" && $VALUE > 40) { 'style="color:yellow"'}\
elsif($READING eq "wind_kph" && $VALUE > 20) { 'style="color:grey"'}\
else{'style="color:white"'} }


Gruß Ernst

ernst1024

Zitat von: marvin78 am 31 Mai 2016, 10:05:18
Je nachdem, wer die Probleme mit dem include und der readingsGroup hat.

Es gibt hier mittlerweile einen vernünftigen Ansatz zum Thema include: https://forum.fhem.de/index.php/topic,54036.msg456541.html#msg456541.

Ich halte es für wichtig, dass Anfänger wissen, welche Probleme include machen kann und dass es wirklich keinerlei Notwendigkeit gibt, die config zu strukturieren, da FHEM ja weiß, wo alles steht.

Was ersteres angeht ich habe keine Probleme nur die die ich mir selbst schaffe und die bekomme ich in aller Regel auch selber gelöst  :)

Insofern hatte ich mein gestriges Problem auch nur erwähnt weil ich dachte es hätte da evtl einen Zusammenhang gegeben.

Ansonsten bin ich da bei dir, darüber werden wir uns nicht streiten
Gruß Ernst

marvin78

#37
Diese Diskussion gehört hier nicht hin aber ich denke, dass es mit codemirror keinen Grund mehr für einen externen Editor gibt. Angemesserner als include wäre hier ohnehin ein Auslagern des Perl-Codes in eine myUtils (valueStyle enthält bspw. sub-Aufruf).

include hat seine Berechtigung aber das von dir dargestellte ist kein zwingender Grund, es zu nutzen. Ich habe weit über 10000 Zeilen in der Config und teilweise deutlich komplexere Devices. Editieren muss ich sie trotzdem nie und ich empfinde keinen Komfortverlust. Meine Meinung ist, dass wenn man als Anfänger und nicht Entwickler oder Tester meint, die config strukturieren zu müssen, dass man gewisse Möglichkeiten noch nicht entdeckt oder das Thema noch nicht gut genug durchdacht hat.

Aber am Ende muss es jeder selbst wissen. Support wird allerdings oft sehr schwer, wenn jemand include verwendet und es nicht erwähnt.

justme1968

der ansatz zum auslagern die includefiles zu nutzen ist falsch.

der umfangreiche perl code gehört in ein 99_myUtils file und in die readingsGroup nur noch ein auftuf dieser routinen.

das hat dann nebenbei noch den vorteil das man die routinen dann zur laufzeit neu laden kann ohne das FHEM neu gestartet wird.

du kannst dich dann auch mit kommentaren austoben wie du willst.

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

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

ernst1024

Zitat von: justme1968 am 31 Mai 2016, 10:36:57
der ansatz zum auslagern die includefiles zu nutzen ist falsch.

der umfangreiche perl code gehört in ein 99_myUtils file und in die readingsGroup nur noch ein auftuf dieser routinen.


Zitat von: marvin78 am 31 Mai 2016, 10:34:18
Diese Diskussion gehört hier nicht hin aber ich denke, dass es mit codemirror keinen Grund mehr für einen externen Editor gibt. Angemesserner als include wäre hier ohnehin ein Auslagern des Perl-Codes in eine myUtils (valueStyle enthält bspw. sub-Aufruf).


ok, ich lasse mich gerne eines besseren überzeugen. Ich habe zwar noch keine Idee wie ich sowas in den myutils unterbringe aber ich habe auch keine Bange es zu versuchen. Würde das denn auch bedeuten dass ich die ganzen Formatierungen etc nur einmal schreiben muss und dann in allen anderen readingGroups verwenden kann? Also wenn temperature > 30 dann rot?


Edit: ach ja codemirror, nie gehört hmn....

Gruß Ernst

CoolTux

#40
Ja das wäre dann genau so mit dem Einfärben. Das ist ja auch einer der tausend Vorteile. Du machst nichts weiter wie das was du jetzt zum Beispiel in valueStyle zu stehen hast in eine Sub zu schreiben und diese rufst Du einfach auf.

Kurze Anmerkung. Wenn da Perlcode drin steht. Geht auch mit FHEM Befehlen muss man aber dann drauf achten wie man das aufruft
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

marvin78

Genau das heißt es. Eine sub kann man immer wieder verwenden. Hier lohnt es wirklich, sich ein wenig mit Perl, den myUtils und eben auch codemirror (in dem Fall lohnt es sich danach hier im Forum und auch im Wiki zu suchen - damit erhälst du einen Editor im Browser) zu beschäftigen. Das spart Zeit, Platz, Nerven und includes ;)

Beispiele für Auslagerung von Code in die myUtils gibt es übrigens auch im Wiki-Artikel zu readingsGroup.

ernst1024

Zitat von: CoolTux am 31 Mai 2016, 10:51:52
Ja das wäre dann genau so mit dem Einfärben. Das ist ja auch einer der tausend Vorteile. Du machst nichts weiter wie das was du jetzt zum Beispiel in valueStyle zu stehen hast in eine Sub zu schreiben und diese rufst Du einfach auf.

okay, Danke. Das überzeugt und dann werde ich das mal versuchen. Jetzt muss ich mir nur noch anschauen wie so ein Aufruf funktioniert .... der wäre dann ja quasi ohne Parameter Übergabe richtig, oder?
Gruß Ernst

marvin78

Du kannst auch Parameter übergeben. Wie gesagt, Beispiele gibt es im Wiki zu Hauf. Aber meine Empfehlung bleibt: Ein Perl-Handbuch (bspw. selfhtml) für Einsteiger lesen ist eigentlich Grundvoraussetzung für Arbeit mit FHEM (wenn es über das Schalten von Lampen am Smartphone hinaus gehen soll).

ernst1024

Zitat von: marvin78 am 31 Mai 2016, 10:53:52
Hier lohnt es wirklich, sich ein wenig mit Perl, den myUtils und eben auch codemirror (in dem Fall lohnt es sich danach hier im Forum und auch im Wiki zu suchen - damit erhälst du einen Editor im Browser) zu beschäftigen. Das spart Zeit, Platz, Nerven und includes ;)

Beispiele für Auslagerung von Code in die myUtils gibt es übrigens auch im Wiki-Artikel zu readingsGroup.

ja scheint wohl so. Habe mich bisher eigentlich geweigert mich auch noch mit perl auseinander zu setzen, aber auf lange Sicht kommt man wohl nicht drumrum. Codemirror werde ich mir anschauen, obwohl ich ja seit .......ich weiss gar nicht mehr 30-40 Jahren ... erst qedit und danach den Nachfolger TSE nutze. Das ist halt wie bei einem alten Ehepaar .....
Gruß Ernst