NEWS
Blockly-Programm startet nicht
-
Hallo zusammen,
mein Programm reagiert nicht auf die gesetzten Trigger.
"ACTUAL" ist der Datenpunkt meiner Rolladensteuerung, in dem die Position erfasst wird. Leider wird dieser nur beim Starten der Rollade und Stoppen aktualisiert. Wenn ich das Widget meiner Vis damit verknüpfe, ist die Animation des Behangs sehr ruckelig. Aus diesem Grund habe ich mir eine Variable Bewegung "Simulation" erstellt, die ich mit dem Widget verknüpfe und über eine Schleife konstant runter- bzw. hochzähle.
Der Ablauf sollte wie folgt sein
- Rollade betätigen
- "ACTUAL" wird aktualisiert
- Blockly startet
- "Bewegung Simulation" holt sich Daten von "ACTUAL"
- Je nachdem welche Bedingung dann erfüllt wird, soll "Bewegung Simulation" erhöht oder verringert werden bis ein bestimmter Wert erreicht wird.
-
-
@triplex sagte: reagiert nicht auf die gesetzten Trigger.
Man kann Datenunkte für den Trigger nicht per ODER verknüpfen, sondern man muss sie als Array übergeben, wozu Blockly eine einfache Möglichkeit bietet.
Die Übergabe von Objekten ist ebenfalls falsch. Es müssen IDs übergeben werden.
EDIT: Die Blöcke "wiederhole bis" erzeugen Endlosschleifen, die die Javascript-Instanz abstürzen lassen.
-
EDIT: Die Blöcke "wiederhole bis" erzeugen Endlosschleifen, die die Javascript-Instanz abstürzen lassen.
Warum werden dadurch Endlosschleifen erzeugt?
Die Schleifen laufen doch nur solange bis eine Bedingung erfüllt wird.
Wie müsste es denn dann aufgebaut werden? -
@triplex sagte in Blockly-Programm startet nicht:
Die Schleifen laufen doch nur solange bis eine Bedingung erfüllt wird.
feuern aber im Millisekundentakt
-
@glasfaser
Funktioniert das dann wie ein "Und" oder ein "Oder"?
Das Programm soll starten wenn mindestens einer der Werte sich geändert hat.Habe es jedenfalls jetzt mal so geändert, trotzdem passiert nichts.
Ist denn die Zeile "aktualisiere...." richtig?
Oder wie müsste das heißen wenn man einen Wert von einem zum anderen Datenpunkt übertragen möchte?
Bin noch nicht so fit in Blockly.
Wo ist der Unterschied zwischen Objekt ID und Objekt ID? -
@triplex sagte in Blockly-Programm startet nicht:
Wo ist der Unterschied zwischen Objekt ID und Objekt ID?
Dass nicht bei beiden
Objekt ID
steht. Das eine liefert das komplette Objekt mit der ID, das andere nur die ID selbst (einen String, deswegen ist der Block auch grün, wie die anderen Text-Blöcke auch). -
@haus-automatisierung said in Blockly-Programm startet nicht:
@triplex sagte in Blockly-Programm startet nicht:
Wo ist der Unterschied zwischen Objekt ID und Objekt ID?
Dass nicht bei beiden
Objekt ID
steht. Das eine liefert das komplette Objekt mit der ID, das andere nur die ID selbst (einen String, deswegen ist der Block auch grün, wie die anderen Text-Blöcke auch).Was müsste ich denn dann am Anfang als Startbedingung auswählen, damit das Programm läuft?
-
@triplex So wie in deinem letzten Beitrag ist der Trigger zumindest richtig definiert. Rest habe ich mir nicht angeschaut
-
@triplex sagte: damit das Programm läuft?
Mit den Endlosschleifen wird es nie laufen.
-
@triplex sagte: "ACTUAL" ist der Datenpunkt meiner Rolladensteuerung, in dem die Position erfasst wird. Leider wird dieser nur beim Starten der Rollade und Stoppen aktualisiert.
Mit welchen Werten wird er bei Start und bei Stopp aktualisiert?
-
@paul53 said in Blockly-Programm startet nicht:
@triplex sagte: "ACTUAL" ist der Datenpunkt meiner Rolladensteuerung, in dem die Position erfasst wird. Leider wird dieser nur beim Starten der Rollade und Stoppen aktualisiert.
Mit welchen Werten wird er bei Start und bei Stopp aktualisiert?
Die Werte sind Prozentangaben.
Wenn die Rollade startet verändert sich der Wert um 2-3% nach oben oder unten, abhängig davon in welche Richtung sich die Rollade bewegt, und wird erst wieder aktualisiert wenn die Rollade angehalten hat. -
@triplex sagte: Wenn die Rollade startet verändert sich der Wert um 2-3% nach oben oder unten, abhängig davon in welche Richtung sich die Rollade bewegt
Dann versuche es mal so:
Welcher Datenpunkt wird beim Stoppen zuerst aktualisiert: "ACTUAL" oder "ACTIVITY_STATE"?
-
@paul53 said in Blockly-Programm startet nicht:
@triplex sagte: Wenn die Rollade startet verändert sich der Wert um 2-3% nach oben oder unten, abhängig davon in welche Richtung sich die Rollade bewegt
Dann versuche es mal so:
Welcher Datenpunkt wird beim Stoppen zuerst aktualisiert: "ACTUAL" oder "ACTIVITY_STATE"?
Laut Zeitstempel laufen die synchron.
Habe dein Programm mal nachgebaut und es hat sich auch was getan.
Leider nicht ganz so wie ich es mir vorgestellt habe.
Konnte auch einige Zeilen in deinem Programm nicht so ganz nachvollziehen (z.B. "Falls nicht Intervall")
Was soll die bewirken? -
@triplex sagte in Blockly-Programm startet nicht:
Leider nicht ganz so wie ich es mir vorgestellt habe.
das wäre wie?
und was ist passiert?
-
@triplex sagte: Laut Zeitstempel laufen die synchron.
Dann bau in beide Trigger je einen Debug-Block ein und schau, welcher Log beim Stoppen als erstes erscheint.
@triplex sagte in Blockly-Programm startet nicht:
nicht so ganz nachvollziehen (z.B. "Falls nicht Intervall")
Das sperrt einen weiteren Start des Programmes im falls-Block solange das Intervall läuft. Es dürfen nicht mehrere Intervalle gestartet werden, die sich nicht mehr löschen lassen.
-
@homoran said in Blockly-Programm startet nicht:
@triplex sagte in Blockly-Programm startet nicht:
Leider nicht ganz so wie ich es mir vorgestellt habe.
das wäre wie?
und was ist passiert?
Die Werte sind ins negative gelaufen und die Animation der Rolladenbewegung ist so ab 10% nicht mehr gleichmäßig gefahren sondern ist dann immer wieder auf-zu-auf-zu-.... gegangen.
-
@paul53 Ah...ok.
Danke schonmal für die ganze Arbeit und die Unterstützung.
Werde jetzt mal versuchen auf Basis deines Programms ein neues zu erstellen.
Eins muss ich jetzt aber nochmal fragen...
Wenn ich eine Schleife programmieren möchte, die so lange läuft bis sagen wir mal Wert A größer ist Als Wert B, welche der Objekt-ID-Blöcke muss ich dann verwenden?Wäre das so richtig?
Oder müsste ich den Block verwenden?
-
@triplex sagte: Schleife programmieren möchte, die so lange läuft bis sagen wir mal Wert A größer ist Als Wert B,
Man kann eine Schleife "wiederhole bis" nicht auf die Prüfung von Datenpunkten anwenden, sondern man benötigt eine schnelle Abbruch-Bedingung. So entsteht eine Endlosschleife.
Alternative: Innerhalb der Schleife "Pause" anstelle von "Timeout" oder "Intervall" verwenden.@triplex sagte in Blockly-Programm startet nicht:
Oder müsste ich den Block verwenden?
Das ist egal, sofern der ID-Selektor verwendet wird.
-
@paul53 said in Blockly-Programm startet nicht:
@triplex sagte: Schleife programmieren möchte, die so lange läuft bis sagen wir mal Wert A größer ist Als Wert B,
Man kann eine Schleife "wiederhole bis" nicht auf die Prüfung von Datenpunkten anwenden, sondern man benötigt eine schnelle Abbruch-Bedingung. So entsteht eine Endlosschleife.
Alternative: Innerhalb der Schleife "Pause" anstelle von "Timeout" oder "Intervall".@triplex sagte in Blockly-Programm startet nicht:
Oder müsste ich den Block verwenden?
Das ist egal, sofern der ID-Selektor verwendet wird.
Ok...bin erst seit ein paar Tagen mit Blockly dran und steige an manchen Stellen noch nicht so ganz dahinter.
Gibt es evtl. irgendwo ein Doku oder so, wo die Blöcke und deren Funktion etc. erläutert werden?