FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Hi2Helmi am 31 März 2017, 21:07:56

Titel: Aus Luminance "123 lux" "123" machen mit Regex
Beitrag von: Hi2Helmi am 31 März 2017, 21:07:56
Hallo,
ich habe einen Fibaro Motion Sensor, der liefert mir die Helligkeit in dem Reading Luminance mit dem Wert und dem "Zusatz" lux. Nun habe ich versucht daraus einen eigenes Reading zu mache, der mir nur die Zahl anzeigt.
lux {(ReadingsVal($name,"luminance","")  =~ /[0-9]+/)}
Funktioniert leider nicht, es kommt nur die "1". Habe auch schon etwas rum experimentiert aber keine Lösung gefunden. Ich finde quasi den Fehler nicht.
Titel: Antw:Aus Luminance "123 lux" "123" machen mit Regex
Beitrag von: KernSani am 31 März 2017, 21:15:35
Zitat von: Hi2Helmi am 31 März 2017, 21:07:56
Hallo,
ich habe einen Fibaro Motion Sensor, der liefert mir die Helligkeit in dem Reading Luminance mit dem Wert und dem "Zusatz" lux. Nun habe ich versucht daraus einen eigenes Reading zu mache, der mir nur die Zahl anzeigt.
lux {(ReadingsVal($name,"luminance","")  =~ /[0-9]+/)}
Funktioniert leider nicht, es kommt nur die "1". Habe auch schon etwas rum experimentiert aber keine Lösung gefunden. Ich finde quasi den Fehler nicht.
Probier mal ReadingsNum
Titel: Antw:Aus Luminance "123 lux" "123" machen mit Regex
Beitrag von: Hi2Helmi am 31 März 2017, 21:16:14
Ach so der Code oben steht im Attribut userReadings
Titel: Antw:Aus Luminance "123 lux" "123" machen mit Regex
Beitrag von: dev0 am 31 März 2017, 21:24:01
Zitat von: Hi2Helmi am 31 März 2017, 21:16:14
Ach so der Code oben steht im Attribut userReadings
Probier mal ReadingsNum
Titel: Antw:Aus Luminance "123 lux" "123" machen mit Regex
Beitrag von: Hi2Helmi am 31 März 2017, 21:26:22
Danke, mit readingsNum funktioniert es. Vielleicht kann mir trotzdem den Fehler in der Regex sagen, nur zum lernen für mich.
Titel: Antw:Aus Luminance "123 lux" "123" machen mit Regex
Beitrag von: dev0 am 31 März 2017, 21:54:13
Um einen "Treffer" zurück zu geben könnte man bspw. eine matching group benutzen: https://perldoc.perl.org/perlretut.html
Titel: Aw: Aus Luminance "123 lux" "123" machen mit Regex
Beitrag von: derthom am 22 September 2023, 18:23:17
ich hab auch das Problem mit dem Fibaro Multisensor

luminance 0 Lux 2023-09-22 18:20:57
lux 1 2023-09-22 18:20:57

userReadings lux {(ReadingsNum($name,"luminance","") =~ /[0-9]+/)}

noch jemand eine Idee ?
Titel: Aw: Aus Luminance "123 lux" "123" machen mit Regex
Beitrag von: betateilchen am 22 September 2023, 22:39:00
Wenn man mit ReadingsNum() arbeitet, sollte man tunlichst darauf verzichten, einen alphanumerischen default-Wert anzugeben. Selbst wenn es sich "nur" um einen Leerstring "" handelt.

Auf den restlichen Blödsinn, der da als Lösung vorgeschlagen wurde, gehe ich jetzt bewusst nicht ein.
Titel: Aw: Aus Luminance "123 lux" "123" machen mit Regex
Beitrag von: betateilchen am 22 September 2023, 22:42:09
Zitat von: derthom am 22 September 2023, 18:23:17userReadings lux {(ReadingsNum($name,"luminance","") =~ /[0-9]+/)}

noch jemand eine Idee ?

Mehrere...

1. Falsche Klammersetzung
2. ReadingsNum() liefert schon den numerischen Wert ohne Einheit aus dem reading, das weitere regexen einer Zahl auf Ziffern ist ziemlich sinnlos.
3. Du solltest einen sinnvollen Trigger für das userReading angeben