mehrere Variablen, aber nur ein Ergebnis anzeigen

Fragen, Anregungen zur PC-Wetterstations-Software

Moderatoren: Werner, Tex, weneu

Antworten
Wetter Kalkriese
Beiträge: 138
Registriert: 05 Okt 2018 11:46
Wohnort: Kalkriese
Hat sich bedankt: 1 mal
Danksagung erhalten: 2 mal
Kontaktdaten:

mehrere Variablen, aber nur ein Ergebnis anzeigen

Beitrag von Wetter Kalkriese »

Hallo,

ich möchte mich auch gerne weiter mit den Variablen befassen, auseinandersetzen und vertiefen.

Meine Frage, bzw. mein Versuch, wie bekomme ich es hin, das wenn mehrere Werte bzw. Variablen vorhanden sind, nur ein Ergebnis ausgegeben wird.
Ein kurzes Beispiel mit zwei möglichen Ergebnissen:

%ws_setmem[36]=%ws_compare[5]=%curval[3]%~0,1~ Bodenfrost~%%
%ws_compare[5]=%curval[3]%~4~ Stellenweise Bodenfrost möglich %ws_getmem[36]%~%

Da compare[5] zweimal vorhanden ist, werden bei Temperaturen unter 0,1° richtigerweise beide Textzeilen ausgegeben.
Ich hatte schon versucht per calc und setmem und compare [3] einen Wert vorzugeben, als Ergebnis erhielt ich dann: "-0,1° , -1,1°"
Dann habe ich die Ausgabetexte einzeln in setmem gesetzt und abgerufen, dann erscheinen mit compare[3] trotzdem beide Meldungen mit Wert, z.B. Stellenweise Bodenfrost möglich 0,5°, Bodenfrost -1,1°.
Wenn natürlich Temperaturen über 4° soll kein Text erscheinen.

Nun wieder alles gelöscht.

Danke für eine Tipp.

Norbert
Benutzeravatar
weneu
Site Admin
Beiträge: 11572
Registriert: 22 Feb 2002 01:00
Wohnort: Donauwörth
Danksagung erhalten: 18 mal
Kontaktdaten:

Beitrag von weneu »

Hallo Norbert,
zunächst: hier wird Dir Tex sicher eine zufriedenstellende Antwort geben, aber um die Arbeit dem Helfer zu erleichtern, solltest Du folgendes berücksichtigen, da ich Deinen Vorstellungen nicht ganz folgen kann:
- Gib zu nächst mal klar an, welche Aussage Du von den Variablen erwartest, also zwei konkrete Beispiele in Zahlen
- Was von der Sache her bei Dir nicht stimmt: Frost ist immer erst ein Wert unter Null grad, als macht Dein Vergleich auf < 0,1 keinen Sinn
- bei einen Vergleich von Zahlen sollte die Ausgabe der Benennung abgeschaltet werden, als %unit_off% verwenden
- die Variable ws_compare verlangt immer 4 Parameter und ich bin nicht sicher, ob das z.B. bei Deiner ersten Konstruktion der Fall ist
Benutzeravatar
Tex
Moderator
Beiträge: 2003
Registriert: 04 Aug 2014 17:47
Wohnort: Woldegk
Hat sich bedankt: 3 mal
Danksagung erhalten: 45 mal
Kontaktdaten:

Beitrag von Tex »

Hallo Norbert,

wie werner schon sagte ist es immer unerläßlich bei Vergleichs- und Berechnungsvariablen die Einheiten auszuschalten. Ich gehe davon aus das %curval[3]% der Bodentemp.-Sensor ist.

%unit_off%
%ws_setmem[36]=%ws_compare[4]=%curval[3]%~0,0~ Bodenfrost~%%
%ws_compare[5]=%curval[3]%~4~ Stellenweise Bodenfrost möglich~ %ws_getmem[36]%%
%unit_on%

Erweiterung um Temperatur 2m. Zuweilen ist es am Boden (am Meßsensor) durchaus +4,1° möglich, während in 2m gerade mal +1,9° gemessen werden, In diesem Falle wird trotzdem schon Bodenfrost aktiviert, obwohl am Boden noch > +4° sind (was sich aber ganz schnell ändern kann).

%unit_off%
%ws_setmem[36]=%ws_compare[4]=%curval[3]%~0,0~ Bodenfrost~%%
%ws_setmem[37]=%ws_compare[4]=%curval[0]%~2,0~ Stellenweise Bodenfrost möglich~%ws_getmem[36]%%%
%ws_compare[5]=%curval[3]%~4~ demnächt Bodenfrost zu möglich~ %ws_getmem[37]%%
%unit_on%


Und hier eine Variante bei der die eine fallende Temperaturtendenz berücksichtigt ist.


%unit_off%
%ws_setmem[36]=%ws_compare[4]=%curval[3]%~0,0~ Bodenfrost!~%%
%ws_setmem[37]=%ws_compare[5]=%valuechange[0]=10%~0~ zu erwarten~möglich%%
%ws_setmem[38]=%ws_compare[4]=%curval[0]%~2,0~ Stellenweise ist Bodenfrost %ws_getmem[37]%~%ws_getmem[36]%%%
%ws_setmem[39]=%ws_compare[5]=%valuechange[0]=10%~0~ demnächt ist~%%
%ws_compare[4]=%curval[3]%~4~ %ws_getmem[39]% Bodenfrost %ws_getmem[37]%~ %ws_getmem[38]%%
%unit_on%

Ergebnisse können sein:
Bodenfrost!
Stellenweise ist Bodenfrost möglich
Stellenweise ist Bodenfrost zu erwarten
demnächst ist Bodenfrost möglich
demnächst ist Bodenfrost zu erwarten


Dem Spiel sind fast keine Grenzen gesetzt - Variablen sind jetzt nicht getestet, Hoffe aber das das so richtig ist.
Benutzeravatar
weneu
Site Admin
Beiträge: 11572
Registriert: 22 Feb 2002 01:00
Wohnort: Donauwörth
Danksagung erhalten: 18 mal
Kontaktdaten:

Beitrag von weneu »

Hallo,
noch ein kurzer Einwurf von mir:
Ich würde nicht für compare den Wert 4, sondern 5 verwenden, sonst kommt es wieder vor, dass ein Wert von 0 Grad als Frost bezeichnet wird und per Definition ist Frost , wenn die Temperatur < 0 Grad ist.
Also nicht mit %ws_compare[4] auf <= 0 vergleichen, sondern mit
%ws_compare[5] nur auf <0
@ Norbert
Du siehst, wie ich vermutet habe, zeigt Tex hier elegante Lösungsmöglichkeiten auf. Auch wenn man sie vielleicht nicht alle verwendet, kann man doch gut daraus lernen.
Wetter Kalkriese
Beiträge: 138
Registriert: 05 Okt 2018 11:46
Wohnort: Kalkriese
Hat sich bedankt: 1 mal
Danksagung erhalten: 2 mal
Kontaktdaten:

Beitrag von Wetter Kalkriese »

Hallo,

ganz lieben Dank erstmal für die vielen Vorschläge und Hilfen.

unit off / on taucht in der txt-Datei weiter oben bzw. weiter unten schon auf, habe ich vorher schon deaktiviert , da erst noch Regenvariablen kommen und Warnung zu hohen Hitzeindex und danach dann noch zum Wind, das angezeigt wird, z.B. Schwache Brise, Mäßige Brise und nach den ganzen weiteren Variablen einmal auf unit off.
Zwischen Hitzeindex und Wind soll nun der Bodenfrost.
Das unit on/off habe ich deshalb nicht extra aufgeführt.

Ja, curval3 ist der Bodentemp.-sensor und ich glaube nun den Zusammenhang noch besser verstanden zu haben, Danke Tex.

Muss man denn oder gibt es eine Regel, wenn in einem, ich nenne es mal Abarbeitungsblock, das compare immer in der Reihenfolge z.B. compare [2], compare [3], compare [5] usw. stehen muss und die Messwerte ebenfalls der Größe nach, also mit dem höchsten Vergleichs-Messwert beginnen und dann kleiner, oder kann compare[2], dann z.B. compare [1] danach compare [5] und danach z.B. wieder compare [1] dort stehen.
Als (unrealistisches) Beispiel:
Wenn ich jetzt einen neuen weiteren Wert in einem Abarbeitungsblock hinzufügen, möchte, könnte man einfach am Ende anhängen, also z.B. bei 1000 hPa Meldung 01 bei 1025 hPa Meldung 02, jetzt möchte ich Meldung 03 bei 1010 erstellen, muss 1010 hPa zwischen 1000 und 1020 eingefügt werden oder könnte ich diesen Wert auch ans Ende anhängen.
Der Ordnung u. Übersichtlichkeit würde ich ihn dazwischen einfügen.
Oder ist es compare abhängig, kleinerer Vergleich vor größeren, beispielsweise compare [2) bei 1000, compare[3] bei 1010, und compare[4] bei 1020? Kann ich compare[3] z.B. in compare[5] austauschen, und alles bleibt in der selben Zeile stehen, oder muss 1010, da jetzt mit compare [5] hinter compare[4] bei 1020 stehen.
So wie es in der Variablenliste aufgeführt ist.

"Dem Spiel sind fast keine Grenzen gesetzt", das stimmt, es macht auch Riesenspaß sich etwas zusammen zu basteln und dann das Ergebnis zu sehen. Das das alle so klappt. :D

Ist fast wie an einer CNC-Fräsmaschine, wo man auch viel mit Prozeduren und Variablen (dort heißen sie manchmal auch z.B. Register) programmieren kann.

Werde die Variable dann heute abend mal testen (hoffe das es heute abend/Nacht wieder friert), im Moment ist das Thermometer auf 7 Grad gestiegen und am Boden auf 11 Grad, bei Sonnenschein und leichter Bewölkung. (Schnee wär mal wieder schön und mir lieber) :) Weiß durch den Frost der letzen Nacht war es aber heute morgen, ein schöner Anblick.

Danke nochmal an alle.

Ach noch vergessen, wenn jetzt ein unit on kam und ich erstelle einen neuen Abarbeitungsblock, also z.B. Block "Wind" ist fertig steht zwischen unit off/on, verwendet wurde setmem[1] bis setmem[10].
Nun beginnt Block "Temperatur" , Beginn mit unit off , kann ich dann hier wieder mit setmem[1] starten bis z.B. setmem[13] oder muss ich mit setmem[11] starten und bis [24] weitermachen?

Lieben Gruß
Norbert
Benutzeravatar
Tex
Moderator
Beiträge: 2003
Registriert: 04 Aug 2014 17:47
Wohnort: Woldegk
Hat sich bedankt: 3 mal
Danksagung erhalten: 45 mal
Kontaktdaten:

Beitrag von Tex »

Hier ein Auzszug aud der varablen.txt:

%ws_compare[x]=w1~w2~richtig~falsch% - für x: 1..6
w1=12,0 w2=15,1
Vergleich w1 > w2 %ws_compare[1]=12,0~15,1~ja~nein%
Vergleich w1 >= w2 %ws_compare[2]=12,0~15,1~ja~nein%
Vergleich w1 = w2 %ws_compare[3]=12,0~15,1~ja~nein%
Vergleich w1 <= w2 %ws_compare[4]=12,0~15,1~ja~nein%
Vergleich w1 < w2 %ws_compare[5]=12,0~15,1~ja~nein%
Vergleich w1 <> w2 %ws_compare[6]=12,0~15,1~ja~nein%

bei den setmem[xy]-variablen kannst Du bei einem neuen Block wieder bei setmem[1] anfangen. Das ist ein Speicherplatz der solange den Wert abspeichert, bis er wieder überschrieben wird.
Wetter Kalkriese
Beiträge: 138
Registriert: 05 Okt 2018 11:46
Wohnort: Kalkriese
Hat sich bedankt: 1 mal
Danksagung erhalten: 2 mal
Kontaktdaten:

Beitrag von Wetter Kalkriese »

Hallo,

sehe ich das dann richtig, das bei der Variante bei der eine fallende Temperaturtendenz berücksichtigt wird, vermutlich fast nie die einzelne Meldung "Bodenfrost !" ausgegeben wird?
Erst wenn das Thermometer für längere Zeit (innerhalb des Aufzeichnungsintervall) fest auf einen Wert steht und nicht mehr steigen oder fallen würde.

Also %valuechange[0]= immer höher als der Aufzeichnungsintervall, z.B. bei 5 Minuten Aufzeichnung valuechange z.B. 20 Minuten. oder besser 5 Minuten?

Gruß
Norbert
Benutzeravatar
Tex
Moderator
Beiträge: 2003
Registriert: 04 Aug 2014 17:47
Wohnort: Woldegk
Hat sich bedankt: 3 mal
Danksagung erhalten: 45 mal
Kontaktdaten:

Beitrag von Tex »

%valuechange[ID]=mm% nie kleiner als das Aufzeichnungsintervall.

Ansonsten ist es so wie Du es beschrieben hast.

Meine Variante mit fallender Tendenz war nur ein Programmierbeispiel - ist garantiert nicht komplett zu ende gedacht..... 8)
Antworten