NEWS
Alles Licht aus bei verlassen des Hauses
-
Blockly wäre für den Fall zu aufwendig. Man müsste da jedes Gerät einzeln reinpacken, da ist das javascript von Homer1976 besser.
Ich habe es etwas angepasst, damit du damit direkt loslegen kannst. Jetzt wird zusätzlich eine Variable angelegt mit dem Namen "alle_lichter". (dazu einmal das Script starten und aktiv lassen).
Variablen findest du unter Objekte beim javascript-Adapter, in meinem Fall Instanz 0. Du kannst es übersichtlicher in Ordner packen, in diesem Fall: Variablen -> Lichter -> alle_Lichter.
Jetzt probiere mal aus es auf true zu stellen. Dann gehen "alle" Lichter an. Es gehen nur die Lichter an, die mit .STATE enden (also meistens HM Komponente) und die Lichter müssen der Rolle "Licht" zugeordnet sein. Probiere mal ob es erstmal geht.
Anschließend könnte man das Script erweitern um Lichter mit der Endung .on (hue-Adapter).
//Trigger Variable anlegen: createState('javascript.0.Variablen.Licht.alle_Lichter', false, {type: 'boolean', name: 'Trigger', min: false, max: true, read: true, write: true, role: 'javascript' }); on('javascript.0.Variablen.Licht.alle_Lichter'/*Trigger*/, function(obj){ $('state[state.id=*.STATE](functions=Licht)').each(function(id,i) { setState(id,obj.state.val); }); log('alle Lichter aus:'+obj.state.val); });
-
so hab da einiges gefunden…das meiste sind leider weiter böhmische dörfer für mich :roll: hab glaube ich deinen script am laufen...aber ich versuche damit shellys zu steuern die in meine lichter eingebaut sind...die haben zwar .STATE sind aber nichr der Rolle LICHT zugeordnet sondern switch(jedenfalls da wo ich sie schalten will unter objekte)
-
Hast du eine Zuordnung unter den Objekten zu einer Rolle bei deinen Shelly Adaptern?
In dem o.g. Beispiel ist es die Rolle LICHT, du kannst das Skript auch anpassen indem du bei functions=XXXX einfach den Namen deiner Rolle einträgst.
-
so habe jetzt den script gestartet und anstatt "Licht" "switch" in der Funnction angegeben...habe den scribt dem widget "hqwidgets checkbox" zugeordnet...leider tut sich nichts wenn ich den schalter betätige
-
Bin ich den so auf dem richtigen Weg? Oder kann ich "Licht" nicht einfach in "Switch" ändern und deswegen funktioniert es nicht?!
-
@Homer-J said in Alles Licht aus bei verlassen des Hauses:
Moin,
probier es mal so ich habe alle Lichter in eine Funktion gepackt und nehme dieses Script dazu.
Kannst dann sowohl an und aus schalten.
Grüße
on('Trigger', function(obj){ $('state[state.id=*.STATE](functions=Licht)').each(function(id,i) { setState(id,obj.state.val); }); log('alle Lichter aus:'+obj.state.val); });
Hallo an alle. Ich muss mich hier mal einklinken, denn ich komme alleine einfach nicht weiter.
Ich versuche seit Tagen mit Hilfe diverser Forenbeiträge (z.B. Quelle: https://forum.iobroker.net/topic/1694/frage-zu-licht-aus-script/20) und der ioBroker Hilfe Seite (Quelle: https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#---selector)ein eigenes Javascript für meinen ioBroker anzupassen, aber es will einfach nicht funktionieren.
Es sollen alle Geräte (Dimmer & Steckdosen) abgeschaltet werden, wenn der Trigger "AlleLichterAus" auf "true" ist. Ich habe ausschließlich Homematic IP Geräte (nur Dimmer & Steckdosen / keine Schalter!) im Einsatz. Egal was ich versuche, es wird nichts getriggert, sobald ich mehr als 1 Gerät steuern will (via $ - Selector).
Anbei mal mein Skript. Ich hoffe Ihr könnt mir helfen, denn ich bin irgendwie zu doof...
//////////////////////////// // Variable //////////////////////////// createState('variables.AlleLichterAus',false); var idTrigger = "javascript.0.variables.AlleLichterAus"/*AlleLichterAus*/; //////////////////////////// // Trigger //////////////////////////// on( { id: idTrigger, val: true }, //////////////////////////// // Aktion //////////////////////////// function (obj) { var idx = 0; var interval = 300; // HmIP BDT - HomeMatic IP Dimmer ausschalten (0 = Aus) die eingeschaltet sind (> 0 bis 100) $('channel[role=level.dimmer][state.id=*.4.LEVEL](functions=Licht)').each(function(id, i) { if (getState(id).val > 0) setStateDelayed(id, 0, (idx++) * interval); }); // Alle Steckdosen ausschalten (false) die AN (true) sind $('channel[state.id=*.3.STATE](functions=Steckdose)').each(function(id,i) { if (getState(id).val) setStateDelayed(id, false, (idx++) * interval); }); setTimeout(function () { setState(idTrigger, false, true); }, 2000); log('Bsp.Text: Alle Schalter und Dimmer aus der Gruppe Licht ausgeschaltet'); } );
-
Hey @pcone
Es sollen alle Geräte (Dimmer & Steckdosen) abgeschaltet werden, wenn der Trigger "AlleLichterAus" auf "true" ist.
Schau dir mal den Smart Control Adapter an, damit solltest du das gut und sehr einfach umsetzen können.
Du kannst da unter "1. ZIELGERÄTE" deine Zielgeräte anlegen und in "4. ZONEN" diese aktivieren, sobald "AlleLichterAus" (definiert in "3. AUSLÖSER") ausgelöst wird.
-
@Mic said in Alles Licht aus bei verlassen des Hauses:
Smart Control Adapter
Danke Dir! Schaue ich mir auf jeden Fall an! Sieht wirklich vielversprechend aus.
Um aber meine JS Kenntnisse zu verbessern, wäre ich dennoch für Feedback zum Skript dankbar. Es macht mich verrückt, dass ich den Fehler nicht finde, bzw. es nicht verstehe ;-/
-
@pcone sagte:
es wird nichts getriggert
Du meinst, dass die Selektoren nichts finden ? Stimmt die Schreibweise der Gewerke "Licht" und "Steckdose" ? Die Schreibweise muss identisch mit der in der ID sein, nicht mit der des Namen.
-
@Mic irgendwie bin ich scheinbar sogar für deinen Adapter zu
denn ich bekomme es nicht hin. Ich will eigentlich nur, dass alle Lichter aus der Gruppe "Lichter" (= Zielgeräte Aufzählung siehe #1) ausgeschaltet werden, wenn der Trigger Pete Anwesend = "false" (siehe #2) ausgelöst wird. Es sollten ja alle Lichter ausgeschaltet werden. Unter #4 kannst du sehen, dass ich den Trigger auf "false" gesetzt habe, aber die Lichter (Bsp. #5) nicht auf false schalten. Was habe ich hier denn falsch gemacht?
-
@paul53 hi, also eigentlich sollten die passen. siehe Bsp. für Dimmer.
-
@Mic servus, kannst du mir hierzu vielleicht kurz Feedback geben, damit ich meinen Fehler verstehe und etwas weiter mit deinem Adapter "spielen" kann? Wäre super
-
@pcone sagte in Alles Licht aus bei verlassen des Hauses:
Ich will eigentlich nur, dass alle Lichter aus der Gruppe "Lichter" (= Zielgeräte Aufzählung siehe #1) ausgeschaltet werden, wenn der Trigger Pete Anwesend = "false" (siehe #2) ausgelöst wird. Es sollten ja alle Lichter ausgeschaltet werden. Unter #4 kannst du sehen, dass ich den Trigger auf "false" gesetzt habe, aber die Lichter (Bsp. #5) nicht auf false schalten. Was habe ich hier denn falsch gemacht?
Zeige am besten mal Debug Log.
-
Wenn Alex im Spiel ist, ist das sehr einfach, da über den Alexa Adapter alle Gruppen inklusive der Gruppe Lichter als DP den man schalten kann zur Verfügung stehen.
-
Hi zusammen,
ich nutze im Grunde dasselbe Skript wie pcone weiter oben.
Das Skript schaltet zuverlässig und setzt auch die Variable "Alle Lampen aus" wieder zurück, nachdem alles durchgelaufen ist. Mein Problem ist, dass das Skript nicht nur alle Lichter schaltet, sondern auch die Steckdosen im jeweiligen Raum.
Ich habe die Selektion mal geloggt:
Das Skript scheint sämtliche Geräte mit .STATE-Kanälen im Wohnzimmer zu schalten, unabhängig von Functions=Light. Schränke ich hingegen auf "Esszimmer" ein, werden dort korrekt nur die Lichter ausgeschaltet. Steckdosen bleiben an.
Im ioBroker ist im Wohnzimmer soweit ich das sehen kann alles korrekt hinterlegt. Steckdosen sind unter Funktion korrekt angelegt und nicht dem Gewerk "Licht" zugeordnet. Dennoch werden sie über das Skript geschaltet.
Hat jemand eine Idee, woran das liegen kann?
Danke euch und beste Grüße!
-
Alle Geräte einer Aufzählung auf einmal steuern
Ich zeige dir in diesem Artikel, wie du alle Geräte einer Aufzählung auf einmal steuern kannst. Diese Anleitung lässt sich auf alle Datenpunkte anwenden, wie beispielsweise Steckdosen, Lichter, Aktoren, Steuerungen usw.https://www.machs-smart.de/iobroker-blockly-alle-gerate-einer-aufzahlung-steuern/
-
@mxbr
Wenn ne Alexa im Spiel ist, ist das sehr einfach. Einfach den DP Licht im Alexa Adapter schalten und alle Lichter gehen aus -
Ist auch eine elegante Lösung mit dem Skript.
Ich habe das bei mir recht einfach über den Szenen Adapter gelöst. Da ich bei mir ohnehin ja für jeden Raum verschiedene Szenen hab, (auch jeweils eine Szene für alle Lichter pro Raum) hab ich eine Szene erstellt, die einfach dann alle Räume beinhaltet. (Nicht nur Lichter, sondern auch Steckdosen und Geräte werden hier geschalten)
Da unterscheide ich dann aber nochmal ob ich es per Sprache oder über die Vis steueren möchte oder an der Haustür per Taster ausschalte. Denn wenn ich das Haus verlasse, möchte ich die Außenbeleuchtung zeitversetzt zu allen anderen Geräte ausschalten. -
@lobomau Vielleicht kannst du mir helfen, bin in Javascript so gut wie nicht bewandert. Es werden bei mir alle relevanten Lichter ausgeschaltet wenn der Datenpunkt auf "false" gestellt wird und angeschalten bei "true". Falls der Datenpunkt auf aber bereits auf "false" steht bewirkt eine erneutes setzen "false" nichts, die Lichter bleiben an. Es wenn er vorher auf "true" war und dann wieder auf "false" gesetzt wird, werden die Lichter ausgeschalten. Was muss getan werden damit das Script auch bei einer Aktualisierung mit dem gleich Wert durchgeläuft?
Gruß
Ja.rod -
@ja-rod ja, das Script triggert nur auf eine Änderung.
Aber ich bin auch nicht bewandert mit javascript und weiß nicht wie man das Script diesbzgl. ändern muss.