Variable in Bezug auf Variablenwert definieren?

rtwl

rtwl

Dauergast
1.384
Gibt es eine Möglichkeit eine Variable zu verwenden in Bezug auf eine andere variable?

Also:
Ich habe 19 Variablen:
%Temp1
%Temp3
%Temp5
...
%Temp27
%Temp29
Die Zahl dahinter ist immer in 2er Schritten, das heißt gerade Zahlen gibt es nicht.

Eine andere variable gibt mir die aktuelle Temperatur aus, sagen wir als Beispiel 21,6 °C (also nur die Zahl 21,6).
Wie kann ich mit der 21,6 auf die Variable %Temp23 kommen? Also die nächst höhere Zahl.

Hintergrund: Die %Temp Variablen enthalten einen Teil einer URL welche ich je nach Temperatur auslösen will. Um jetzt nicht alle 19 unterschiedlichen Variablen mit einer IF-Bedingung zu versehen, möchte ich nur einen HTTP Request Task verwenden mit der aktuell gültigen Variable. Wäre das möglich?

Vielen Dank schonmal.
 
Ich würde das tatsächlich eher in einen Task packen und die Http-Requests mit if Bedingungen versehen. Also

Http-Request für 21 if Temperatur > 19,5 AND < 21,4 Then
Http-Request für 23....
Http-Request für 25....

Ist irgendwie einfacher als mit 19 Variablen rumzumachen.

Gibt glaub leider kein Select Case wie z. B. in VBA für Excel. Das wäre hier genial.
 
rtwl schrieb:
Ich habe 19 Variablen:
%Temp1
%Temp3
%Temp5
...
%Temp27
%Temp29
Das sind doch 15 Variablen?
Ich bin auch nicht ganz sicher, ob du wirklich alle 15 benötigst. Geht das nicht mit einer einzigen Variablen in einem einzigen Task besser? Also:

Voraussetzung:
- Die aktuelle Temperatur ist in einer Variablen gespeichert, z.B. %AktuelleTemperatur und mit Punkt statt Komma geschrieben.

Idee:
1. Aktion:
Setze die Variable %Temp zu "Temp"
2. Aktion:
Setze dann die Variable %Temp zu "round(%AktuelleTemperatur/2)*2+1"
(Mathem. und Hinzufügen beides aktivieren)

Die Variable %Temp enthält dann im Beispiel der aktuellen Temperatur 21,6 Grad dann "Temp23"

Unklar: Soll 21,0 tatsächlich wie du geschrieben hast, auf die nächsthöhere Zahl 23 gesetzt werden? Das ist in der o.g. Idee so.

Sollte jedoch 21,0 bei 21 bleiben, dann verwende "roundhe(%AktuelleTemperatur/2)*2+1"

If-Geschichten benötigst du dann dafür nicht (@bbfh)
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Mathens
"roundhe" funktioniert nicht. Bei 27 ist das Ergebnis dann 29, da 13.5 auf die gerade Zahl 14 aufgerundet wird.

Mit der Funktion "ceil", welche eine Zahl mit Kommastellen aufrundet, und einer if-Abfrage ob die Zahl gerade ist sollte es klappen.

A1: Variable Setzen [ Name:%temp Zu:ceil(%AktuelleTemperatur) Recurse Variables:Aus Mathematisch:An Hinzufügen:Aus ]
A2: Variable Setzen [ Name:%temp Zu:%temp+1 Recurse Variables:Aus Mathematisch:An Hinzufügen:Aus ] If [ %temp ist gerade ]
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: holms
holms schrieb:
Das sind doch 15 Variablen?
es sind 19 weil dann noch 4 weitere hinzu kommen die dann manuell mit einer IF abgehandelt werden (müssen). zumindest 3 davon. (siehe die letzten 4 im. Screenshot)
Screenshot_2020-08-29-06-56-21.png

da diese Werte ein Teil der URL sind welche komplizierter als die Variablen sind, hab ich mich dafür entschieden.

der URL wird von meinem smarthome Server verwendet um ein 868 MHz Signal an meine Anzeige zu schicken. (oldschool aber cool 😉)

holms schrieb:
If-Geschichten benötigst du dann dafür nicht
wenn ich eine neue variable (%TempGerundet) habe, WIE geht das dann, dass ich damit die Variablen (Screenshot) verwenden kann?
würde es so einfach gehen?:
%Temp%TempGerundet
Beiträge automatisch zusammengeführt:

okay, ich habs:

%XTemp(%temp) - damit geht es wunderbar

danke für die ceil() Funktion @Mathens
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: holms
Mathens schrieb:
"roundhe" funktioniert nicht. Bei 27 ist das Ergebnis dann 29, da 13.5 auf die gerade Zahl 14 aufgerundet wird.

Mit der Funktion "ceil", welche eine Zahl mit Kommastellen aufrundet, und einer if-Abfrage ob die Zahl gerade ist sollte es klappen.

A1: Variable Setzen [ Name:%temp Zu:ceil(%AktuelleTemperatur) Recurse Variables:Aus Mathematisch:An Hinzufügen:Aus ]
A2: Variable Setzen [ Name:%temp Zu:%temp+1 Recurse Variables:Aus Mathematisch:An Hinzufügen:Aus ] If [ %temp ist gerade ]
Das geht auch einfacher: (allgemein Formuliert - nicht Tasker) (ceil(%AktuelleTemperatur/2))*2
 
@Georgius Da kommen nur gerade Zahlen raus, beim Beispiel 21,6 dann 22. Gewünscht war 23.
 
zwecks Vollständigkeit:
hier der funktionieren task...
um die 3 (ungeraden) minus Werte bzw Temperaturen muss ich mich noch kümmern, aber das ist kein Problem.

danke an alle Beteiligten!

Screenshot_2020-09-01-00-06-58.png
 
  • Danke
Reaktionen: holms

Ähnliche Themen

rtwl
Antworten
23
Aufrufe
723
Cecoupeter
Cecoupeter
marspoki
Antworten
3
Aufrufe
404
Mathens
Mathens
coolzero3389
Antworten
2
Aufrufe
343
coolzero3389
coolzero3389
Zurück
Oben Unten