NEWS
letzen Wert in Variable zwischenspeichern
-
-
@ofbeqnpolkkl6mby5e13 Okay, danke.
-
Du musst aber noch einiges an deinem Skript ändern, damit das so funktioniert wie gewünscht. Mein Screenshot soll dich erst mal nur auf die richtige Spur kriegen.
Zum Beispiel muss die Temperatur ja nicht geändert werden, wenn die Badewann nicht an ist.
Sinngemäß:
Wenn Badewanne wurde geändert, dann falls Badewanne = wahr und Wert = irgendwas und Wert von Objekt ID = irgendwas, dann ändere Wert von Objekt ID auf 23.Wenn Badewanne wurde geändert, dann falls Badewanne = unwahr usw.
-
@ofbeqnpolkkl6mby5e13 stimmt, diesen Fall hab ich gar nicht bedacht.
-
Normalerweise wird natürlich auch nicht getriggert, wenn Badewanne aus ist/bleibt.
-
@michi_pi said in letzen Wert in Variable zwischenspeichern:
Kann mir das jemand erklären ob das richtig ist bzw. zeigen wie ich das richtig darstelle?
Sieht für mich alles richtig aus.
Überprüfen kannst Du das Ganze mit debug Bausteinen.
Da Du Deine Variable außerhalb des Triggers setzt, wird die beim Blockly Start einmalig eingelesen (die Variable wird ja danach nicht nochmal geändert, da sie nicht im Trigger ist). Im Blockly verwendest Du sie dann nur zum zurückstellen.
Ich würde sagen das es richtig ist. -
@dslraser
Und wenn sich die Temperatur während der Laufzeit des Skripts ändert? -
@ofbeqnpolkkl6mby5e13
gerade nochmal drüber nachgedacht...Ja, Du hast recht. Dann wäre die "Rückstelltemperatur" immer die, die es zum Blockystart war. Das war ja nicht sein Ziel...
Dann gehört da doch einiges geändert. -
@dslraser @oFbEQnpoLKKl6mbY5e13
Weiß gerade nicht wie ich das Skript aufbauen soll, wenn sich die Temp_alt einmal ändert sollte und die Variable auch das mitbekommt.
Skript sieht jetzt so aus, denke sollte so gehen, sofern sich die Temp nicht mehr ändert
-
zu 1.) Es wurde doch schon geklärt, dass dieser Block nur einmalig beim Starten des Skriptes abgearbeitet wird. Der ergibt keinen Sinn.
zu 2.) Falls "Wert" was? Du gibst keine Bedingung an. Der Block "Falls" bewertet eine von dir vorgegebene Bedingung. Nämlich zum Beispiel Falls "Wert" = "23", dann aktualisiere... -
zu 2. Hier wird wahr abgefragt, das bringt ja der Falls Trigger ja schon mit sich, das brauche ich nicht explizit mit angeben.
-
Dann weiß ich jetzt zumindest, dass deine Variable "Wert" vom Typ Boolean ist.
-
@ofbeqnpolkkl6mby5e13 sagte in letzen Wert in Variable zwischenspeichern:
zu 2.) Falls "Wert" was? Du gibst keine Bedingung an. Der Block "Falls" bewertet eine von dir vorgegebene Bedingung. Nämlich zum Beispiel Falls "Wert" = "23", dann aktualisiere...
Falls Wert findest Du unter Trigger und bezieht sich auf den Wert vom Trigger.
(Falls Wert prüft auf true und falls nicht Wert auf false) -
@dslraser
Okay, habe ich bisher zugegebenermaßen nie benutzt. Kann man auch gar nicht erkennen im Blocky. Eine Variable sieht genauso aus. -
@ofbeqnpolkkl6mby5e13 sagte in letzen Wert in Variable zwischenspeichern:
Eine Variable sieht genauso aus.
Ja, leider sind die Farben gleich...
-
@dslraser
Ich finde das auch schlecht lesbar von der Logik her. Würde ich so nie benutzen. Ist aber Geschmackssache. -
-
@dslraser
Okay. -
Du gehst doch davon aus, dass es in deinem Badezimmer zunächst kälter ist. Dann geht deine Szene "Badewanne" auf wahr und dann soll das Thermostat auf 23 Grad gestellt werden. Soweit richtig?
Dann ist dein Vergleich Temp_Alt = Temp_Neu nicht zielführend. Dann müsste es Temp_Alt < Temp_Neu heißen. Es bleibt aber nicht sinnvoll, die Ist-Temperatur einmalig beim Skriptstart abzufragen.
Edit:
Ist auch Unsinn. Der Vergleich Temp_Alt zu Temp_Neu ergibt keinen Sinn.Edit2:
Sinvoll wäre es, die Ist-Temperatur nach dem Triggern zu holen und wenn diese < 23 Grad und Badewanne = wahr und diese andere Bedingung = wahr, dann setzte Thermostat auf 23 Grad. -
Vorschlag (ich weiß nicht ob ich alles bedacht habe...)