NEWS
VIS -> Allgemein -> Skripte
-
@Röstkartoffel Ich habe auch ein Problem mit Scripten.
Wie kann ich in VIS eine Variable umrechnen so dass ich z.B. eine Temperatur von Kelvin in Grad Celsius anzeigen lasse?
Hier im Bild müsste ich von dem Wert 273 abziehen damit der Wert in 18,6 °C angezeigt wird. Ich weiß nicht wie das geht? -
var x = getState('Objekt-ID').val -273;
damit könntest du dir z.B. eine Variable x ausgeben lassen.
-
@Karel-Puhli said in VIS -> Allgemein -> Skripte:
var x = getState('Objekt-ID').val -273;
Danke. Und wie bekomme ich die Variable x nun in VIS?
-
Vorschlag:
Du legst dir einen neuen Datenpunkt an (hier: "deinneuerDatenpunkt"). Baust dir ein Blockly oder folgendes JavaScript.on({id: "deinThermometer", change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("deinneuerDatenpunkt", ((obj.state ? obj.state.val : "") - 273), true); });
Dann noch dein Vis Widget auf deinen neuen Datenpunkt zugreifen lassen, nicht mehr auf das "alte" Thermometer.
-
@Karel-Puhli said in VIS -> Allgemein -> Skripte:
on({id: "deinThermometer", change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("deinneuerDatenpunkt", ((obj.state ? obj.state.val : "") - 273), true); });
Das klappt leider auch noch nicht:
Die Variable "Temperatur" steht nirgends in den VIS Objekten und es kommt eine Klammerfehlermeldung. -
@werner2000x said in VIS -> Allgemein -> Skripte:
on({id: "deinThermometer", change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("deinneuerDatenpunkt", ((obj.state ? obj.state.val : "") - 273), true); });
Jetzt habe ich die Variable gefunden in Javascipt.0
Das Script sieht jetzt so aus:
on({id: "vw-connect.0.WVGZZZ5NZHW882376.status.data07.field01.value", change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("scriptEnabled.common.Temperatur", ((obj.state ? obj.state.val : "") - 273), true); });läuft aber noch nicht s.Bild;
-
@werner2000x
oder hier ein neuer Versuch:
-
Das Skript ist nicht für den Reiter Skripte in VIS, sondern für deine Skripte im JS Adapter.
Hast du denn mal im VW Connect Adapter geschaut? Kannst du dort nicht die Einheit in Celsius ändern?
-
@Karel-Puhli Ok, das wusste ich nicht.
Habe das Skript nun in IOBroker gebracht - trotzdem Fehler:
-
Schick mal einen kompletten Code vom JS oder einen Screenshot. Steht bei dir alles in einer Zeile (sieht oben so aus, nur Zeile 1)? Womöglich beim Kopieren einen Dreher drin?
Der Datenpunkt ist korrekt angelegt? Als Zahl? min -50 max 100? Also für gängige Temperaturen?
Am bestern da auch nochmal einen Screenshot.
-
@Karel-Puhli Danke für das Angebot.
Die Temperatur liegt als dK, also dezi Kelvin vor - hier ist der Werte jetzt 2861.
Wenn man den Wert durch zehn teilt und 273 abzieht hat man den richtigen Wert, also 13,1 °C.
Die Temperatur ist konstant, der Wert ändert sich also nicht. Nur wenn das Fahrzeug fährt. Jetzt steht es.