Page 1 of 1

Teile einer Variable in anderen Variablen speichern

Posted: 30 Oct 2017 14:16
by heliosone
Hallo

Bräuchte mal Hilfe bei folgenden Problem :
Der Temperatur Sensor von meinem Raspberry Pi liefert Werte wie zb :

"11.5°C / 35.2%"
"3.5°C / 64.8%"
Usw.

Ich würde diesen Wert gerne in Temperatur und Luftfeuchtigkeit zerlegen. Wie kann ich das mit AM machen?
Der Wert kommt als variable rein global_rpi1_tempraw (ausgelesen via ssh) und soll dann eben in global_rpi1_temp und global_rpi1_luft zerlegt werden.
Problem ist das die Temperatur mal 1 und dann wieder 2 stellen vor dem Komma hat, also keine fixe Länge :(

Vielen dank im voraus für Hilfe
Vg/me

Re: Teile einer Variable in anderen Variablen speichern

Posted: 30 Oct 2017 14:58
by yogi108
Hi,

Es gibt meistens mehrere Lösungen, eine davon:
list=split('21°C / 64.8%', '/')
--> [21°C , 64.8%]

Deine Variablen kannst dann mit list[0] der Temperatur und list[1] der Luftfeuchtigkeit zuordnen,

LG,

Re: Teile einer Variable in anderen Variablen speichern

Posted: 30 Oct 2017 17:06
by Desmanto
You can use regex to match and capture them. Do you need the degree Celcius and the percentage? I assume you wanna the raw number including the decimal (so you can do calculation to it). If so, below regex only capture the digit.

Code: Select all

sensor = "11.5 ° C / 35.2%";

find = findAll(sensor, "(\\d\\d?\\d?\\.\\d) ° C / (\\d\\d?\\d?\\.\\d)%", true);

temp = find[0][1];
humid = find[0][2];
You can try this script and put a debug dialog to check the result.

Additional info :
  • \\d will capture single digit. Adding a question mark after it >> \\d?, denotes 0 or 1 digit. So the number can be there or not.
  • \\d\\d?\\d? will match anything from 0 to 999.
  • Adding \\.\\d mean to capture a dot followed by a digit. Thus capturing the number and 1 digit decimal point.
  • The humidity also the same, just in case the sensor post 100.0% humidity.
  • Putting bracket between them to capture the value into groups (1 and 2). If you need the degree and percentage, you should move the right bracket to cover them too.
If you need negative value too, you should show us the example of it. As the negative value can have space or maybe no space at all.

Re: Teile einer Variable in anderen Variablen speichern

Posted: 31 Oct 2017 14:00
by heliosone
hallo/hello !!

@yogi108 : DANKE für deine Hilfe !!
Hab das gestern schon probiert,FUNKT PERFEKT.
Hab die "list" funktion eh gelesen in der Hilfe,aber ich hab das nicht kombiniert,dass man sie ja auch so nutzen kann :)!
Ich trenn zuerst Temperatur und Luftfeuchtigkeit und weise temporäre Variablen zu,und danach trenne ich mit "list" einfach die Temperatur von "°C" bzw. die Luftfeuchtigkeit vom % Zeichen.
Vorteil für mich => auch negative ,und dreistellige Werte funktionieren ohne Rücksicht drauf,da man ja nur nach nem Zeichen trennt !

@Desmanto : thanks for your help as well !!!

Your right,I only need the real value,without degree/percentage.
But unfortunately I wasnt able to test your solution,as I have an older automagic app installed ,where "unknown function" popsup,and Im kinda reluctant to update (why...thats a bit complicated in my case/phone),so for now I use the first solution.
But I can see how I might have to upgrade in the future,to use regex for more complex problems,...reminds me of "sed"@linux !!