NEWS
[gelöst]-Wie kann man ein Objekt von VIS Script lesen
-
Ich versuche bereits seit Tage herauszufinden, wie ich ein Objektstatus aus einem VIS Script lesen kann. Es gibt ja die Funktion vis.SetValue. Nun suche ich etwas in der Art vis.GetValue. Zur Klarstellung. Ich spreche nicht vom Javascript-Adapter. Hat jemand eine Idee oder hat das schon hinbekommen?
-
Ich versuche bereits seit Tage herauszufinden, wie ich ein Objektstatus aus einem VIS Script lesen kann. Es gibt ja die Funktion vis.SetValue. Nun suche ich etwas in der Art vis.GetValue. Zur Klarstellung. Ich spreche nicht vom Javascript-Adapter. Hat jemand eine Idee oder hat das schon hinbekommen?
-
Ich versuche bereits seit Tage herauszufinden, wie ich ein Objektstatus aus einem VIS Script lesen kann. Es gibt ja die Funktion vis.SetValue. Nun suche ich etwas in der Art vis.GetValue. Zur Klarstellung. Ich spreche nicht vom Javascript-Adapter. Hat jemand eine Idee oder hat das schon hinbekommen?
@bitcoder z.b.
vis.servConn.getStates(['0_userdata.0.CONTROL-OWN.ECHO8.Echo2Player-PP', 'javascript.0.YouTube.whichDevice'], (error, states) => { console.log(states['0_userdata.0.CONTROL-OWN.ECHO8.Echo2Player-PP'].val); console.log(states['javascript.0.YouTube.whichDevice'].val)})oder wenn der dp schon in dem vis-project genutzt wird und somit in der vis bekannt ist:
var myRunningDevice1=vis.states.attr('javascript.0.YouTube.whichDevice.val'); " javascript.0.YouTube.whichDevice " muss z.b in einem anderen widget genutzt werden z.b. über binding {javascript.0.YouTube.whichDevice}oder über simple api abfrage:
// über simple-api: $.get( "http://192.168.178.59:8087/get/0_userdata.0.CONTROL-OWN.AAATEST.TestLogic3", function( data ) { console.log( "Data Loaded: " + data.val ); console.log( "Data Loaded: " + data.lc ) }); -
@bitcoder z.b.
vis.servConn.getStates(['0_userdata.0.CONTROL-OWN.ECHO8.Echo2Player-PP', 'javascript.0.YouTube.whichDevice'], (error, states) => { console.log(states['0_userdata.0.CONTROL-OWN.ECHO8.Echo2Player-PP'].val); console.log(states['javascript.0.YouTube.whichDevice'].val)})oder wenn der dp schon in dem vis-project genutzt wird und somit in der vis bekannt ist:
var myRunningDevice1=vis.states.attr('javascript.0.YouTube.whichDevice.val'); " javascript.0.YouTube.whichDevice " muss z.b in einem anderen widget genutzt werden z.b. über binding {javascript.0.YouTube.whichDevice}oder über simple api abfrage:
// über simple-api: $.get( "http://192.168.178.59:8087/get/0_userdata.0.CONTROL-OWN.AAATEST.TestLogic3", function( data ) { console.log( "Data Loaded: " + data.val ); console.log( "Data Loaded: " + data.lc ) }); -
Ich möchte den Zustand oder einen Wert von einem Homematic-Gerät via alias auslesen. Dieser Wert dient anschliessend als Vorgabewert bei der nächsten Einschaltung des Geräts. Hier ein Dimmer.
Wow, danke schon mal für Eure raschen Antworten.@liv-in-sky
Hallo liv-in-sky
Meine Antwort hat ein wenig länger gedauert.
Danke für die Codefragmente. Die haben mich auf den richtigen Pfad gebracht. Hier ist nun der Code, wie ich das umgesetzt habe. Wichtig war mir, dass die Abfrage synchron abgehandelt wird. Dabei gilt es zu beachten, dass alle übergeordneten Funktionen ebenfalls mit sync deklariert sind.Hier die Funktion GetState
async function GetState (strDataPoint, oDPValue) { return await new Promise((resolve, reject) => { window.servConn.getStates([strDataPoint], (error, states) => { console.log(++iStepCount+": 1. oDPValue.iVal = " + oDPValue.iVal); oDP = states[strDataPoint]; if (oDP !== null) { resolve(oDPValue.iVal = states[strDataPoint].val); } else { reject(Error("The specified data point does not exist! DP: " + strDataPoint)); } console.log(++iStepCount+": 2. oDPValue.iVal = " + oDPValue.iVal); }); }); }Und hier der Aufruf im Code.
async function dcmbInit (id, dcmbDefinition, strDeviceAddress) { /* exp. 'alias.0.Gang_OG.Deckenspots.Lichtstärke.val' */ console.log("strDeviceAddress = " + strDeviceAddress); if (strDeviceAddress !== undefined && strDeviceAddress !== null) { oValue = { iVal: 0 }; await GetState(strDeviceAddress + ".Lichtstärke", oValue); console.log("dcmbInit: iValue = " + oValue.iVal); } return false; }
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden