NEWS
Globale (JS) Funktionen (Einschaltdauer berechnen)
-
@D-VE ja kannst du
-
@D-VE sagte:
Kann ich mir eine JavaScript Funktion bauen, die ich dann in Blockly benutze?
Ja, innerhalb des Blockly-Scripts.
@D-VE sagte in Globale (JS) Funktionen (Einschaltdauer berechnen):
kann ich mir generell globale Funktionen (egal ob Blockly oder JS) erstellen, auf die ich in den Scripten zugreifen kann?
Javascript: Ja, Blockly: Nein, bzw. nur mit einer Javascript-Funktion, die die globale Funktion aufruft.
@D-VE sagte in Globale (JS) Funktionen (Einschaltdauer berechnen):
Blockly (ist übersichtlicher).
Wirklich ?
-
@Xenon said in Globale (JS) Funktionen (Einschaltdauer berechnen):
@D-VE ja kannst du
Dass man grundsätzlich Funktionen erstellen kann, weiß ich. Mir ging es um globale Funktionen, auf die man in jedem Blockly Script zugreifen kann...
@paul53 said in Globale (JS) Funktionen (Einschaltdauer berechnen):
Nein, bzw. nur mit einer Javascript-Funktion, die die globale Funktion aufruft.
Das hab ich nicht ganz verstanden. Man kann also mit Blockly JS-Funktionen aufrufen?
@paul53 said in Globale (JS) Funktionen (Einschaltdauer berechnen):
Wirklich ?
Für Leute ohne Entwickler-Background: Ja! Auf jeden Fall. Vor allem wenn man anständig kommentiert...
lg, Dave
-
@D-VE sagte:
Man kann also mit Blockly JS-Funktionen aufrufen?
Beispiel: Ich habe ein Script unter global, das die Funktion runden(val, digits) enthält. Diese Funktion kann per Blockly-JS-Funktion aufgerufen werden.
Inhalt der JS-Funktion runde(wert, stellen):
return runden(wert, stellen);
Warnung: Globale Skripte werden in jedes andere (nicht globale) Skript kopiert ! Deshalb sollten globale Skripte nur häufig verwendete eigene Funktionen enthalten.
-
Thx...
Wo ist mein Fehler? Die Funktion wird nicht aufgerufen. Im Log steht auch kein Fehler
-
@D-VE sagte:
Wo ist mein Fehler? Die Funktion wird nicht aufgerufen.
Die Blockly-JS-Funktion hat den gleichen Namen wie die globale Funktion ?
-
@D-VE sagte:
Einschaltdauer berechnen
Eine Startzeit muss man sich nicht in einem Datenpunkt merken, denn die stellt der Datenpunkt des Aktors zur Verfügung, wenn er als Trigger verwendet wird:
- "letzte Änderung" während der Aktor ein ist
- "vorherige letzte Änderung", wenn der Aktor aus ist
-
@paul53 said in Globale (JS) Funktionen (Einschaltdauer berechnen):
Die Blockly-JS-Funktion hat den gleichen Namen wie die globale Funktion ?
Ja... Siehe Screenshot
@paul53 said in Globale (JS) Funktionen (Einschaltdauer berechnen):
Eine Startzeit muss man sich nicht in einem Datenpunkt merken, denn die stellt der Datenpunkt des Aktors zur Verfügung, wenn er als Trigger verwendet wird:
Das ist kein SmartDevice, sondern eine 15 Jahre alte Spülmaschine die ich über den Shelly tracke. Wenn der Stromverbrauch unter 3 Watt liegt, ist sie aus (Standby) und wenn darüber sollte der Startzeitpunkt gesetzt werden.
lg, Dave
-
-
@paul53 said in Globale (JS) Funktionen (Einschaltdauer berechnen):
Das wird das Problem sein. Verwende unterschiedliche Namen.
Verstehe ich nicht... Wie soll er denn sonst wissen, welche JS Funktion ich aufrufen will???
-
@D-VE sagte:
Wie soll er denn sonst wissen, welche JS Funktion ich aufrufen will???
Bei gleichen Namen für die globale Funktion und die Blockly-JS-Funktion wird nicht die globale Funktion aus der JS-Funktion aufgerufen, sondern man erzeugt eine Endlosschleife.
-
Ich glaube, ich hab da etwas missverstanden...
Wie rufe ich die globale JavaScript-Funktion setStartTime() im Blockly korrekt auf?
-
@D-VE sagte:
Wie rufe ich die globale JavaScript-Funktion setStartTime() im Blockly korrekt auf?
Es genügt, im Namen der Blockly-JS-Funktion, einen Buchstaben zu ändern, z.B.
Inhalt:
setStartTime(deviceStr); // Aufruf der globalen Funktion
-
Ah... Jetzt hab ich das erst kapiert, dass man die JS Funktion nicht direkt aufrufen kann, sondern über einen Blockly Wrapper... Das war das fehlender Puzzlestück
Vielen dank