[GELÖST]in valueFormat Wildcards verwenden?

Begonnen von cocojambo, 29 Dezember 2014, 17:27:04

Vorheriges Thema - Nächstes Thema

cocojambo

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&nbspC°", fc0_chOfRain00 => "%.1f&nbsp%%", fc0_rain00 => "%.1f&nbspmm", fc0_cloud00 => "%.1f&nbsp%%"}

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
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

cocojambo

Ich glaube das hatte ich auch probiert. Habe es aber nochmal eingesetzt.
valueFormat { fc0_temp.. => "%.1f&nbspC°",
Geht aber leider nicht. Es stehen dann, wie auch bei meinen Versuchen, in der ganzen Zeile nur noch die Zahlenwerte.
Gruß
nobbi
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

cocojambo

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&nbspC°", fc0_chOfRain00 => "%.1f&nbsp%%", fc0_rain00 => "%.1f&nbspmm", fc0_cloud00 => "%.1f&nbsp%%", fc0_temp03 => "%.1f&nbspC°", fc0_chOfRain03 => "%.1f&nbsp%%", fc0_rain03 => "%.1f&nbspmm", fc0_cloud03 => "%.1f&nbsp%%", fc0_temp06 => "%.1f&nbspC°", fc0_chOfRain06 => "%.1f&nbsp%%", fc0_rain06 => "%.1f&nbspmm", fc0_cloud06 => "%.1f&nbsp%%", fc0_temp09 => "%.1f&nbspC°", fc0_chOfRain09 => "%.1f&nbsp%%", fc0_rain09 => "%.1f&nbspmm", fc0_cloud09 => "%.1f&nbsp%%", fc0_temp12 => "%.1f&nbspC°", fc0_chOfRain12 => "%.1f&nbsp%%", fc0_rain12 => "%.1f&nbspmm", fc0_cloud12 => "%.1f&nbsp%%", fc0_temp15 => "%.1f&nbspC°", fc0_chOfRain15 => "%.1f&nbsp%%", fc0_rain15 => "%.1f&nbspmm", fc0_cloud15 => "%.1f&nbsp%%", fc0_temp18 => "%.1f&nbspC°", fc0_chOfRain18 => "%.1f&nbsp%%", fc0_rain18 => "%.1f&nbspmm", fc0_cloud18 => "%.1f&nbsp%%", fc0_temp21 => "%.1f&nbspC°", fc0_chOfRain21 => "%.1f&nbsp%%", fc0_rain21 => "%.1f&nbspmm", fc0_cloud21 => "%.1f&nbsp%%"}

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
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

cocojambo

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&nbsp°C" if( $READING =~ m/temp/ ); return "%i&nbsp%%" if( $READING =~ m/chOfRain/ ); return "%.1f&nbspmm" if( $READING =~ m/rain/ ); return "%.1f&nbsp%%" if ($Reading =~ m/cloud/ ) }
Warum?
Gruß
nobbi
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

Rohan

Hi,

mach den "Strichpunkt" wieder rein, aber bitte doppelt, also ";;".

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

cocojambo

Ja mit Doppel Strich-Punkt ist FHEM zufrieden aber das return ist immer noch ein "unknown command".
gruß
nobbi
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

cocojambo

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
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

cocojambo

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)
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

cocojambo

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
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000