NEWS
[gelöst] hqwidget Checkbox in Vis per Skript bearbeiten
-
Hallo zusammen!
ich würde gerne mit meinem hqwidget Checkbox Hue Szenen schalten.
Hue Szenen lassen sich in diesem Zusammenhang bekanntlich nicht "ausschalten". Daher würde ich gerne den Schalter nach 5 Sekunden wieder auf false springen lassen. Ich habe das jetzt folgendermaßen gelöst. Ich habe einen Datenpunkt erstellt und dazu ein BlocklySkript geschrieben. Das funktioniert auch so. Allerdings finde ich das sehr umständlich. Daher die Frage, wie ich das ganze direkt in der Vis über "Skripte" lösen kann. Bin in Sachen JavaScript allerdings noch ganz am Anfang. Die entscheidende Idee fehlt mir noch. Vielleicht habt ihr dazu Lösungen für mich?
Vielen Dank schon mal!!! -
Hallo zusammen!
ich würde gerne mit meinem hqwidget Checkbox Hue Szenen schalten.
Hue Szenen lassen sich in diesem Zusammenhang bekanntlich nicht "ausschalten". Daher würde ich gerne den Schalter nach 5 Sekunden wieder auf false springen lassen. Ich habe das jetzt folgendermaßen gelöst. Ich habe einen Datenpunkt erstellt und dazu ein BlocklySkript geschrieben. Das funktioniert auch so. Allerdings finde ich das sehr umständlich. Daher die Frage, wie ich das ganze direkt in der Vis über "Skripte" lösen kann. Bin in Sachen JavaScript allerdings noch ganz am Anfang. Die entscheidende Idee fehlt mir noch. Vielleicht habt ihr dazu Lösungen für mich?
Vielen Dank schon mal!!! -
Danke schon mal für die Links. Ich habe nun folgenden Code in Vis unter Skripte eingefügt.
on ({ id: "0_userdata.0.Meine_Geräte.Nordlichter", change: 'ne', val: true }, function(){ setStateDelayed('0_userdata.0.Meine_Geräte.Nordlichter', false, 5000, true); } );Es tut sich aber nichts. Wenn ich den selben Code im JavaScript Adapter ausführen lasse, funktioniert alles. Wo ist mein Denkfehler?
Grüße!
-
Danke schon mal für die Links. Ich habe nun folgenden Code in Vis unter Skripte eingefügt.
on ({ id: "0_userdata.0.Meine_Geräte.Nordlichter", change: 'ne', val: true }, function(){ setStateDelayed('0_userdata.0.Meine_Geräte.Nordlichter', false, 5000, true); } );Es tut sich aber nichts. Wenn ich den selben Code im JavaScript Adapter ausführen lasse, funktioniert alles. Wo ist mein Denkfehler?
Grüße!
@Karel-Puhli https://www.iobroker.net/#de/documentation/viz/app.md
Da ist ein Beispiel hinterlegt vielleicht hilft es?$document.on..... ?
var viewOrder = ['View 1','View 2','View 3','View 4','View 5','View 6']; $(document).on('swipe', function (event){ event.preventDefault(); if (event.originalEvent.touch.delta.x < -200 && event.originalEvent.touch.delta.y > -30 && event.originalEvent.touch.delta.y < 30) { if (viewOrder.indexOf(vis.activeView) < viewOrder.length - 2) vis.changeView(viewOrder[viewOrder.indexOf(vis.activeView) + 1]); else vis.changeView(viewOrder[0]); } else if (event.originalEvent.touch.delta.x > 200 && event.originalEvent.touch.delta.y > -30 && event.originalEvent.touch.delta.y < 30) { if (viewOrder.indexOf(vis.activeView) > 0) vis.changeView(viewOrder[viewOrder.indexOf(vis.activeView) - 1]); else vis.changeView(viewOrder[viewOrder.length - 1]); } }); -
@Karel-Puhli https://www.iobroker.net/#de/documentation/viz/app.md
Da ist ein Beispiel hinterlegt vielleicht hilft es?$document.on..... ?
var viewOrder = ['View 1','View 2','View 3','View 4','View 5','View 6']; $(document).on('swipe', function (event){ event.preventDefault(); if (event.originalEvent.touch.delta.x < -200 && event.originalEvent.touch.delta.y > -30 && event.originalEvent.touch.delta.y < 30) { if (viewOrder.indexOf(vis.activeView) < viewOrder.length - 2) vis.changeView(viewOrder[viewOrder.indexOf(vis.activeView) + 1]); else vis.changeView(viewOrder[0]); } else if (event.originalEvent.touch.delta.x > 200 && event.originalEvent.touch.delta.y > -30 && event.originalEvent.touch.delta.y < 30) { if (viewOrder.indexOf(vis.activeView) > 0) vis.changeView(viewOrder[viewOrder.indexOf(vis.activeView) - 1]); else vis.changeView(viewOrder[viewOrder.length - 1]); } }); -
Man muss anscheinend mit den Scripten bezogen auf das HTML-Objekt arbeiten. In dem Moment der Bearbeitung ist ja die Seite eine HTML-Seite!
var objTag = document.getElementById("w00072");
-
Vielen lieben Dank! Ich versuche mal hier was passendes heraus zu suchen!
-
Vielen lieben Dank! Ich versuche mal hier was passendes heraus zu suchen!
-
Man muss anscheinend mit den Scripten bezogen auf das HTML-Objekt arbeiten. In dem Moment der Bearbeitung ist ja die Seite eine HTML-Seite!
var objTag = document.getElementById("w00072");
Man muss anscheinend mit den Scripten bezogen auf das HTML-Objekt arbeiten. In dem Moment der Bearbeitung ist ja die Seite eine HTML-Seite!
var objTag = document.getElementById("w00072");
Das war der entscheidende Tip!
Du kannst aus den Projekt-Skripten nicht auf die Objekte zugreifen. Die Vis-Skripte laufen im Browser, nicht auf dem Server, wo sich die Objekte befinden.
-
Man muss anscheinend mit den Scripten bezogen auf das HTML-Objekt arbeiten. In dem Moment der Bearbeitung ist ja die Seite eine HTML-Seite!
var objTag = document.getElementById("w00072");
Das war der entscheidende Tip!
Du kannst aus den Projekt-Skripten nicht auf die Objekte zugreifen. Die Vis-Skripte laufen im Browser, nicht auf dem Server, wo sich die Objekte befinden.
@Karel-Puhli Wenn es funktioniert, stellst du bitte das Script und die entsprechenden Widget Bilder zur Verfügung. Dann können andere das nachvollziehen. Danke.
-
Naja, somit kann ich eigentlich die Eingangsfrage mit nein beantworten. Das scheint dann tatsächlich nur über ein Javascript / Ereignis / Datenpunkt zu laufen.
Für den Reiter Skripte in Vis kommen beispielsweise folgende Möglichkeiten in Betracht.
<!DOCTYPE html> <html> <div id="div1"> <p onclick="on()" id="p1">Hallo</p> <p>ihr lieben</p> </div> </html>Ein HTML Widget
function on() { document.getElementById("p1").style.backgroundColor = ("yellow"); document.getElementById("w00048").style.backgroundColor = ("blue"); }Das Skript reagiert auf das Klickevent onclick und setzt dann den <p>Hallo auf gelb und das ganze Widget auf blau.
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