NEWS
HILFE!!! Variable anlegen und Befehl per URL absetzen
-
Hallo Leute,
ich brauche eure Hilfe, ich bin ein absoluter Neuling was das Programmieren mit JavaSrcipt angeht.
Und zwar möchte ich eine Variable anlegen, die durch den Cloud-Adapter mit true und false beschrieben werden kann, um dann jeweils einen Befehl per URL an mein Mediola-Gateway zu schicken das wiederum meine Geräte per IR ansteuert. Die URL ist mir bekannt.
Hintergrund: Ich möchte diverse IR-Geräte per Alexa steuern.
Variable und Scripte in der CCU2 anlegen funktioniert, nur möchte ich damit die CCU2 nicht zusätzlich belasten, deshalb wollte ich diese Zuordnungen im ioBroker machen,
ich habe aber keinen Plan wie ich das anstellen kann und hoffe ihr könnt mir helfen.
Gruß Marc
-
Vielleicht so:
createState('Licht', false, { desc: "Licht schalten", type: "boolean", smartName: "Licht", def: false }); var request = require('request'); var IDLicht = "javascript.0.Licht"; //oder eine andere Instanz in dem der State erzeugt wurde var URLwahr = "deine url bei true"; var URLfalsch = "deine url bei false"; on(IDLicht, function(obj){ if(obj.newState.val) { request.get(URLwahr).on('error', function(error){ if(error){log(error, 'error');} }); } else{ request.get(URLfalsch).on('error', function(error){ if(error){log(error, 'error');} }); } });
Ich gehe einfach mal davon aus, das eine funktionierende JS Instanz läuft. Falls nicht mal bitte die Suche bemühen…
-
Vielen, vielen Dank, es funktioniert.
Gruß Marc
-
Vielen, vielen Dank, es funktioniert.
Gruß Marc `
Freut mich -
Hallo, ich brauche nochmal Hilfe,
basierend auf meine anfängliche Frage und dem dazugehörenden Script möchte ich gerne bei "true" mehrere URL's aufrufen (teilweise noch zeitverzögert um 2 Sekunden) und danach die Variable wieder auf "false" setzen, bei "false" soll dann nichts passieren.
Gruß Marc
-
Heißt da du willst bei false gar nichts mehr setzen?
Alles andere wird wohl eher nichts…..
-
Genau, bei "false" soll nichts gesetzt werden, dann aber nach Beendigung der Befehlskette für "true" die Variable wieder auf "false" gesetzt werden.
Mehrere Befehle nacheinander absetzen geht wirklich nicht?
Hintergrund wäre die Bedienung von meinem Fernseher, für alle Programme >9 müßte ich 2 - 3 URL-Befehle absetzen,
wenn es nicht geht kann ich es ja noch über die CCU2 machen, da funktioniert es.
Gruß Marc
-
Schau dir mal den Szenen Adapter an.
Damit habe ich es auch gelöst.
Ein Tastendruck und schon schaltet sich der Radio aus, der SAT ein, der AV Receiver ein, der Beamer ein und die Leinwand fährt herab.
Jedes einzelne Aktion mit einer abgesetzter URL gesteuert.
Lg
Günther
-
createState('Licht', false, { desc: "Licht schalten", type: "boolean", smartName: "Licht", def: false }); var request = require('request'); var IDLicht = "javascript.0.Licht"; //oder eine andere Instanz in dem der State erzeugt wurde var URLeins = "deine url"; var URLzwei = "deine url"; var URLdrei = "deine url"; on(IDLicht, function(obj){ if(obj.newState.val) { request.get(URLeins).on('error', function(error){ if(error){log(error, 'error');} }); request.get(URLzwei).on('error', function(error){ if(error){log(error, 'error');} }); request.get(URLdrei).on('error', function(error){ if(error){log(error, 'error');} }); setState (IDLicht, false); } });
Müsste so gehen. Falls du noch eine Verzögerung brauchst, melde dich
-
Hallo Blauholsten,
vielen Dank für Deine Hilfe das Script funktioniert!
Es wäre schön, wenn du mir zeigen könntest wie ich jetzt da noch eine Verzögerung (ca. 2 Sekunden) reinbekomme,
vielen Dank
Gruß Marc
-
Hallo Blauholsten,
vielen Dank für Deine Hilfe das Script funktioniert!
Es wäre schön, wenn du mir zeigen könntest wie ich jetzt da noch eine Verzögerung (ca. 2 Sekunden) reinbekomme,
vielen Dank
Gruß Marc `
so vielleicht….2, 4, 6 sekunden
createState('Licht', false, { desc: "Licht schalten", type: "boolean", smartName: "Licht", def: false }); var request = require('request'); var IDLicht = "javascript.0.Licht"; //oder eine andere Instanz in dem der State erzeugt wurde var URLeins = "deine url"; var URLzwei = "deine url"; var URLdrei = "deine url"; on(IDLicht, function(obj){ if(obj.newState.val) { setTimeout(function(){request.get(URLeins).on('error', function(error){ if(error){log(error, 'error');} }); }, 2000); setTimeout(function(){request.get(URLzwei).on('error', function(error){ if(error){log(error, 'error');} }); }, 4000); setTimeout(function(){request.get(URLdrei).on('error', function(error){ if(error){log(error, 'error');} }); }, 6000); setState (IDLicht, false); } });
-
Vielen Dank, es klappt.
Gruß Marc