NEWS
Problem mit internen Blockly Variablen (gelöst)
-
Wenn ich die Variable Zahl am Skript Anfang auf "10" setzte und diese 10 auslesen, addieren, usw möchte, bekomme ich jedes mal einen Fehler bzw es funktioniert nicht.
-
@philipp-pionier
Nur als "Hilfsmerker" muss man keine DP anlegen.
Zumindest nicht, wenn man die Werte ausschließlich im Script benutzt.
Das macht man mit Variablen, so wie in Deinem Eingangspost.Man greift auf diese Variablen aber nicht über "Wert von XXX" zu.
Die kann man direkt weiterverwenden.
Objekte haben mehr als eine Eigenschaft (Wert, Name, Zeitstempel usw.) - da muss man schon sagen, was man haben will.Hier mal ein Beispiel von heute früh:
Hier werden Variablen gesetzt und deren Werte geprüft.
An anderen Stellen werden sehr wohl die Werte von Objekten gelesen und auch Objekte gesteuert. -
@philipp-pionier
Weil Du das mit "Wert von" machst.Mit Variablen ist das nicht nötig (oder besser: Falsch!)
Die werden direkt verwendet! -
@philipp-pionier sagte in Problem mit internen Blockly Variablen:
bekomme ich jedes mal einen Fehler
und welchen?
üblicherweise sagt dir der Fehler was du falsch machst.Natürlich kann man Wert von nur bei IDs verwenden, das hat dir @Codierknecht schon geschrieben.
ich vermute zwar auch, dass das der Grund sein wird, aber@philipp-pionier sagte in Problem mit internen Blockly Variablen:
es funktioniert nicht.
ist keine Fehlerbeschreibung!
bitte mehr Infos, dann ist das hier flugs erledigt!
-
danke danke
habs jetzt gecheckt.
Wert von .. braucht man nicht, außerdem darf man nur "setze" und "erhöhe" verwenden und nicht schreibe usw.
nochmal vielen Dank
-
@philipp-pionier sagte in Problem mit internen Blockly Variablen:
Wert von .. braucht man nicht, außerdem darf man nur "setze" und "erhöhe" verwenden und nicht schreibe usw.
Dafür gibt's diese praktische Farbunterscheidung
-
hier ist ein Ausschnitt aus einem Skript von mir.
hier wollt ich eigentlich bei der Variable Temperatur Untergrenze bzw Obergrenze faul sein, und keine Objektid anlagen.
-
@philipp-pionier
Du mischt da fleißig Objekte und Einzelwerte.Variablen können prinzipiell erstmal alles beinhalten - sowohl ganze Objekte als auch einzelne Werte.
Für mich ein großer Nachteil von JS, dass es nicht typsicher ist.
Du musst Dir an den entsprechenden Stellen genau überlegen, was in die Variable rein soll:
Der Wert des Objektes (z.B. eine Temperatur) oder der Name, um damit später das Objekt ansprechen zu können.
Zweiteres macht für mich nicht viel Sinn - das geht genau so einfach mit dem passenden Block ("steuere" oder "aktualisiere").
Wenn Du mit Ersterem auch noch rechnen willst, musst Du die Variable wie folgt besetzen:
An Trigger werden grundsätzlich nur Objekte gebunden - keine Variablen!
Also nicht
sondern
Und zum Ändern existierender Datenpunkte nimmt man (zumindest ich) das hier:
Ich sehe da noch was von "Grafana" und vermute mal, dass Du dafür DP angelegt hast, über die ein History-Adapter läuft.
Das müssen logischerweise Datenpunkte sein - sonst funktioniert das nicht. -
@philipp-pionier bei Arbeiten über einen Datenpunkt kannst du Ruckzuck in die Asynchron-Falle laufen.
Wenn du den Wert wieder brauchst kann es sein, dass er noch nicht fertig geschrieben ist.
Deswegen sind Merker, die nur innerhalb eines Skripts benötigt werden, immer als Variablen anzulegen.was du mir jetzt hier sagen willst
@philipp-pionier sagte in Problem mit internen Blockly Variablen (gelöst):
hier wollt ich eigentlich bei der Variable Temperatur Untergrenze bzw Obergrenze faul sein
erschließt sich mir nicht
-
also es funktioniert
Wichtig war für mich, dass das Skript für jeden Raum benutzt werden kann.
Deshalb versuchte ich das Skript so aufzubauen, dass ich nur oben meine ObjektIDs an den Variablen zuweisen muss und nicht im Skript meine ObjektIDs finden muss.ich hätte oben gleich der Variable den Wert zuweisen können und nicht den Namen, dann hätte ich unten nicht jedes mal "wert von" benutzen müssen. --Verstehe--
Bin froh das es mit dem Trigger so auch funktioniert, wie aus oben genannten Gründen.
Und ja für Grafana habe ich extra DP angelegt, hier wandle ich ein Bool in eine Zahl um (false = 0 true = 10).
Grafana hat bei mir mit den Boolen Werten nicht funktioniert.try and error