NEWS
[gelöst] Script Datenpunkte anlegen inkl. Logging
-
Hi,
ich versuche gerade ein Script zu schreiben um Datenpunkte anzulegen, die automatisch über Influxdb mit geloggt werden.
Typischer Datenpunkt:
createState("javascript.0.API.Hauptordner.Straße.Inputs.Input_1", (JSON.stringify(response.data.Data.Inputs[1].Value.Value)))-
Wie kann ich dem Datenpunkt weitere Eigenschaften mitgeben?
role = value
type = number
automatisches Logging über influxdb.0 mit den Voreingestellten Werten aus dem Adapter? -
Kann man beim Erstellen der Datenpunkte den Namen "Straße" als variable hinterlegen, sodass man nur
zu beginn des Scriptes ein Straßennamen eingeben muss? -
Wie kann ich eine zyklische Abfrage einbauen, sodass das Script automatisch alle 5 Minuten neu startet
um die Datenpunkte zu aktualisieren?
Hat jemand einen Lösungsansatz?
-
-
@stockics6 sagte in Script Datenpunkte anlegen inkl. Logging:
Wie kann ich eine zyklische Abfrage einbauen
Zu 2. Ja: String-Verkettung
Zu 1.
createState(id, val, {role: 'value', type: 'number', name: 'xyz'});
-
Erst einmal vielen Dank für das schnelle Feedback!
Zu 2:
Die String-Verkettung habe ich hinbekommen und funktioniert auch.
Leider wird die Objektbeschreibung nicht übernommencreateState(filepath + "." + streetname + "." + "Version", JSON.stringify(response.data.Header.Version), {role: 'value', type: 'number', name: 'xyz'});
In dem erzeugten Datenpunkt steht weiterhin: role = state und type = mixed
Woran könnte das liegen?
-
@stockics6 sagte: Woran könnte das liegen?
creatState() überschreibt normalerweise keinen existierenden Datenpunkt, außer mit true für forceCreation.
createState(filepath + "." + streetname + "." + "Version", JSON.stringify(response.data.Header.Version), true, {role: 'value', type: 'number', name: 'xyz'});
Anmerkung: JSON.stringify() passt nicht zu common.type = "number".
-
@paul53
Super vielen lieben Dank!Bis auf den CRON hat alles perfekt funktioniert.
Ich habe das Example in die erste Zeile des JS-Script kopiert aber dieses startet leider nicht neu, lediglich
die Info wird übers log ausgegeben.// Example with 5 digits: schedule("*/2 * * * *", function () { log("Will be triggered every 2 minutes!"); });
Muss ich das irgendwie anders verknüpfen?
-
@stockics6
Was soll alle 2 Minuten passieren? -
das gesamte Script soll neu starten. Aktuell löse ich das über Blockly aber schöner wäre es, wenn es direkt im
Script mit implementiert wäre. -
@stockics6 sagte: das gesamte Script soll neu starten.
Dann muss alles, was ausgeführt werden soll, in die Callback-Funktion von schedule().
schedule("*/2 * * * *", function () { log("Will be triggered every 2 minutes!"); // Alle weiteren Aktionen, die ausgeführt werden sollen });
-
@paul53
Top!, hat alles bestens funktioniert