Ich bin dabei einige Wetter-Tabellen mit dem Modul Proplanta zu erstellen in der die Readings jeweils pro Zeile immer eine andere Zahl in der Bezeichnung haben:
attr proplanta valueFormat { fc0_temp00 => "%.1f C°", fc0_chOfRain00 => "%.1f %%", fc0_rain00 => "%.1f mm", fc0_cloud00 => "%.1f %%"}
Damit wird aber natürlich immer nur die erste Zeile richtig angezeigt.
In den weiteren Zeilen der Tabelle stehen dann die Werte für eine andere Uhrzeit, wobei dann die Readings fc0_temp03, fc0_temp06, usw heißen (z.B. für 6 Uhr).
Ich habe es mit fc0_temp*., fc0_temp* und auch anderen wildcards probiert. Es funktioniert nichts. Was muß man machen, das die Readings die mit dem Zeichen fc0_temp beginnen, auch gelesen und zeilenweise angezeigt werden können?
Gruß aus Köln
Norbert
Hallo,
sollte das mit Wildcards klappen versuch es mal so:
Zitatfc0_temp..
In diesem Fall wird .. durch alles ersetzt was hinter fc0_temp__ kommt - also 03, 06, 09 oder was auch immer.
Es sind aber (durch die 2 ..) nur 2 beliebige Zeichen möglich.
. bedeutet - ein beliebiges Zeichen
.* bedeutet - ein beliebiges Zeichen (.) beliebig oft (*)
*. gibt es als regexp nicht - beliebig oft (*) ein beliebiges Zeichen (.)
Für das letzte lege ich meine Hand aber nicht ins Feuer - das dürfte vermutlich sehr schmerzhaft werden.
Grüße
Ich glaube das hatte ich auch probiert. Habe es aber nochmal eingesetzt.
valueFormat { fc0_temp.. => "%.1f C°",
Geht aber leider nicht. Es stehen dann, wie auch bei meinen Versuchen, in der ganzen Zeile nur noch die Zahlenwerte.
Gruß
nobbi
keys können müssen exakt passen. es ist kein regex match.
das was du brauchst musst du mit {perl code} selber bauen. also z.b. $READING selber mit if und =~ matchen.
gruß
andre
Hallo andre
Viele Dank für dein Antwort, brauche ich also nicht mehr weiter zu versuchen. Dein Vorschlag mit
Zitat$READING selber mit if und =~ matchen.
davon verstehe ich nichts . So tief wie du in der Materie steckst, dafür müßte ich wahrscheinlich nochmal eine "Schulbank drücken". Ich habe es jetzt mit einer Krücke vorläufig so, wenn auch ziemlich umständlich, ans Laufen bekommen.
attr proplanta valueFormat { fc0_temp00 => "%.1f C°", fc0_chOfRain00 => "%.1f %%", fc0_rain00 => "%.1f mm", fc0_cloud00 => "%.1f %%", fc0_temp03 => "%.1f C°", fc0_chOfRain03 => "%.1f %%", fc0_rain03 => "%.1f mm", fc0_cloud03 => "%.1f %%", fc0_temp06 => "%.1f C°", fc0_chOfRain06 => "%.1f %%", fc0_rain06 => "%.1f mm", fc0_cloud06 => "%.1f %%", fc0_temp09 => "%.1f C°", fc0_chOfRain09 => "%.1f %%", fc0_rain09 => "%.1f mm", fc0_cloud09 => "%.1f %%", fc0_temp12 => "%.1f C°", fc0_chOfRain12 => "%.1f %%", fc0_rain12 => "%.1f mm", fc0_cloud12 => "%.1f %%", fc0_temp15 => "%.1f C°", fc0_chOfRain15 => "%.1f %%", fc0_rain15 => "%.1f mm", fc0_cloud15 => "%.1f %%", fc0_temp18 => "%.1f C°", fc0_chOfRain18 => "%.1f %%", fc0_rain18 => "%.1f mm", fc0_cloud18 => "%.1f %%", fc0_temp21 => "%.1f C°", fc0_chOfRain21 => "%.1f %%", fc0_rain21 => "%.1f mm", fc0_cloud21 => "%.1f %%"}
ist vielleicht nicht sehr elegant, aber funktioniert. Sicher ist deine Löszung besser, aber wie gesagt, da müßte ich mehr Hilfe oder ein Beispiel von dir bekommen um das auzuprobieren und umsetzen zu können.
gruß
nobbi
etwa so:
attr proplanta valueFormat { return "%.1f °C" if( $READING =~ m/temp/ ); return "%i %%" if( $READING =~ m/chOfRain/ ); return "%.1f mm" if( $READING =~ m/rain/ ) }
gruss
andre
Vielen Dank, ich habe deine Zeile mal vervollständigt und in Fhem eingefügt. Den Strich-Punkt bei %.1f °C habe ich heraus genommen wegen "unknown command °C". Das hatte ich auch bei meiner Auswertung der Solaranlage. Die Auswertung für "cloud" habe noch ergänzt und jetzt meckert FHEM noch über "return".
ERROR:
Unknown command return, try help. Unknown command return, try help. Unknown command return, try help.
So sieht es jetzt bei mir aus:
attr proplanta valueFormat { return "%.1f °C" if( $READING =~ m/temp/ ); return "%i %%" if( $READING =~ m/chOfRain/ ); return "%.1f mm" if( $READING =~ m/rain/ ); return "%.1f %%" if ($Reading =~ m/cloud/ ) }
Warum?
Gruß
nobbi
Hi,
mach den "Strichpunkt" wieder rein, aber bitte doppelt, also ";;".
Gruß
Thomas
weil du bestimmte zeichen maskieren musst wenn sie in der config stehen.
trag es im webfrontend ein. in das attribut textfeld in der device detail ansicht.
nicht von hand in die config.
gruß
andre
Ja mit Doppel Strich-Punkt ist FHEM zufrieden aber das return ist immer noch ein "unknown command".
gruß
nobbi
Ich habe mir hier im Board mal alle möglichen Variationen angesehen in den return in ähnlicher Verwendung vorkommt, aber nix gefunden warum es hier als "unknown Command" angezeigt wird. Zumal ich return bei mir sebst in anderen Anwendungen ebenfalls verwende und dort einwandfrei funktioniert.
attr proplanta valueFormat { return "%.1f ;°C" if( $READING =~ m/temp/ ); return "%i ;%%" if( $READING =~ m/chOfRain/ ); return "%.1f ;mm" if( $READING =~ m/rain/ ); return "%.1f ;%%" if ($Reading =~ m/cloud/ ) }
ERROR:
Unknown command return, try help. Unknown command return, try help. Unknown command return, try help.
Es wird auch nur 3x als falsch angezeigt, obwohl return 4x im Befehl vorkommt.
Weiß jemand von Euch was an diesem "return" falsch ist?
Gruß aus Köln
Norbert
weil du wie oben geschrieben das ganze nicht im attribut feld im web frontend eingegeben hast. wenn du es selber direkt ins config file schreibst bist du selber fürs verdoppelt aller(!) ; zuständig.
trage s im web frontend ein. es ist wirklich einfacher.
gruss
andre
Hei andre,
Ich habe das Attribut gelöscht und im web frontend alles neu eingegeben, und tatsächlich du hast recht, jetzt funktioniert es. Du mußt entschuldigen, das ich das nicht direkt gemacht hab, ich habe von Anfang an immer versucht die Config selbst zu editieren. Ich habe bisher vielleicht immer Glück gehabt, weil es meistens geklappt hat. Ich werde jetzt mal andere Einträge, die nicht auf Anhieb funktionierten, ebenfalls mal neu übers web frontend eingeben. Übrigens, so sieht der jetzt funktionierende Eintrag danach in der Config aus:
attr proplanta valueFormat { return "%.1f ;;;°C" if( $READING =~ m/temp/ );; return "%i ;;;%%" if( $READING =~ m/chOfRain/ );; return "%.1f ;;;mm" if( $READING =~ m/rain/ );; return "%.1f ;;;%%" if ($Reading =~ m/cloud/ ) }
Also, nochmal Vielen Dank und an Alle ein frohes Neues......
Gruß
nobbi
(us KÖLLE am Rhing)
Um es mal richtig zu stellen mit Hilfe und Unterstützung von Puschel74,justme1968 u.Rohan. Die Eingabe im Web frontend unter valueFormat sieht so aus:
{ return "%.1f °C" if( $READING =~ m/temp/ ); return "%i %%" if( $READING =~ m/chOfRain/ ); return "%.1f mm" if( $READING =~ m/rain/ ); return "%.1f %%" if ($READING =~ m/cloud/ ) }
und so sieht es dann in der config aus und funktioniert:
attr proplanta valueFormat { return "%.1f ;°C" if( $READING =~ m/temp/ );; return "%i ;%%" if( $READING =~ m/chOfRain/ );; return "%.1f ;mm" if( $READING =~ m/rain/ );; return "%.1f ;%%" if ($READING =~ m/cloud/ ) }
Gruß
nobbi