NEWS
Bewegungsmelder mit Hue und Sonos
-
Hallo,
ich nutze einen Aeotec Multi-Sensor 6 als Bewegungsmelder und möchte damit in meinem Bad das Licht und Sonos bei Bewegung
unter bestimmten Bedingungen steuern, was bereits auch teilweise schon funktioniert.
Was ich nun noch verbessern möchte ist, dass wenn das Licht bereits vorher manuell angeschalten wurde, auch eingeschalten bleibt.
Bei Sonos möchte ich das gerne auch so umsetzen das wenn bereits vorher etwas lief, soll er auch nichts ändern.
Der Bewegungsmelder kann ja per Parameter angepasst werden (Timeouts, Reports etc.) allerdings wäre es schöner wenn das Abschalten des Lichtes und Sonos mit einem Timer innerhalb des Scripts gelöst wäre, statt über irgendwelche Parameter in der Z-Wave Konfiguration. Soll heißen, aktuell wird abgeschaltet wenn der Haltewert von 5 Minuten in den Parametern wieder zurückgesetzt wird.
Vielleicht kann mir da jemand ein wenig bei helfen.
Liebe Grüße,
-
Hallo Martin,
ich löse da Thema so:
Der Datenpunkt "SV_OG_FLur_LichtManuell" wird vom Lichtschalter beim Einschalten auf true und beim ausschalten auf false gesetzt. Damit ist sichergestellt das der Bewegungsmelder nix macht, wenn das Licht von Hand eingeschaltet wurde. -
Leider habe ich hier noch keine Schalter die ich abfragen könnte ob sie manuell betätigt wurden.
Aber der Rest leuchtet mir denke ich ein.
:lol:
-
habe nun mal versucht das so umzubauen, dass das Script erstmal schaut ob der Helligkeitswert des Sensors unter einem bestimmten Wert liegt und ob Bewegung registriert wurde sowie den Status der Lampe (an/aus) vorher mit einzubeziehen (mit UND Verknüpfung).
Dabei Sollte ja nur dann geschalten werden, wenn wirklich alle Drei Bedingungen erfüllt werden.
Nun habe ich zusätzlich versucht das um einen Timer bzw. Timeout zu ergänzen, leider schaltet das Licht momentan überhaupt nicht ein.
4060_bildschirmfoto_2018-01-17_um_12.40.23.png -
Hallo marphDE
Setze doch mal den Debug-Baustein ein.
Sonst ist das ein fischen im Trüben.
1x direkt über den "Stop timeout". Damit kannst Du überprüfen ob der Trigger überhaupt gestartet wird.
Und jeweils direkt unter der "falls" und "sonst falls" Bedingung.
Damit kannst Du sehen welche und ob überhaupt eine Bedingung erfüllt wird.
Der Debug-Baustein ist ein unverzichtliches Werkzeug zur Fehlersuche!
Dann die Datenpunkte überprüfen!
Am Besten unter Objekte.
Was für Werte kommen da rein zum Schalten.
Mal die Leuchte ein und ausschalten und schauen was in den Datenpunkten geändert wird.
Grüße
-
so in etwa ?
sorry aber das ist alles noch komplett neu für mich :roll:
4060_bildschirmfoto_2018-01-17_um_15.59.10.png -
so in etwa ?
sorry aber das ist alles noch komplett neu für mich :roll: `
Ja, die Anordnung ist OK.Aber ich würde unterschiedliche Texte reinschreiben.
Sonst siehst Du im LOG nur die Ausgabe "test" und weist nicht welcher Baustein die Meldung gemacht hat.
-
So, dass Timeout zum Abschalten kommt jetzt wie gewünscht vom Script aber dafür macht mir das Sonos ansteuern irgendwie einen Strich durch die Rechnung.
Gewünschtes Verhalten:
-
Zwischen Morgens 4:53 und 22.00 Uhr soll er mir meinen Radiosender aus den Favoriten abspielen wenn auch der Bewegungsmelder (Burglar) einen Bewegung registriert.
-
Sollte bereits manuell etwas auf der Sonos abgespielt werden unabhängig von der Tageszeit und dem Bewegungsmelder, dann soll auch nichts geädert werden, sprich Wiedergabe bleibt wie manuell vorher eingestellt und es wird auch nicht mit dem Radio aus den Favoriten überschrieben.
-
Licht soll nur automatisch eingeschalten werden wenn Helligkeit einen bestimmten Wert unterschreitet.
-
Licht soll nicht automatisch ausgehen wenn es bereits vorher manuell eigeschalten wurde (bereits an).
Ist Zustand:
-
Licht geht an wenn Bewegung erkannt wurde.
-
Licht geht automatisch aus obwohl vorher manuell eingeschalten wurde
-
Radio geht in jedem Fall nach Timeout von 2 Min. aus auch wenn vorher manuell eingeschalten wurde.
Hat jemand eine Idee ?
<u>Hier mal ein Blockly Export davon:</u>
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="on" id="sa9ME8u[Sog/O{wblk+0" x="88" y="-112"><field name="OID">zwave.0.NODE2.ALARM.Burglar_1</field>
<field name="CONDITION">ne</field><statement name="STATEMENT"><block type="debug" id="It-rtad-L}76|HU?HhOv"><field name="Severity">debug</field> <value name="TEXT"><shadow type="text" id="LuD|(_)aiB;4,;cSsIcB"><field name="TEXT">Bewegungsmelder ausgelöst.</field></shadow></value> <next><block type="timeouts_cleartimeout" id="E8={^^guCVz,,c8=N^DP"><field name="NAME">timeout</field> <next><block type="controls_if" id="ALKGd?/:E}.?J:s4U@Iq"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_operation" id="*cmZABUGJfj5DS.bz5o4"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="wE07ARewmnH_@G(qVTm1"><field name="OP">LT</field> <value name="A"><block type="get_value" id="KX31vP}#Eb0#4PX+x)x2"><field name="ATTR">val</field> <field name="OID">zwave.0.NODE2.SENSOR_MULTILEVEL.Luminance_1</field></block></value> <value name="B"><block type="math_number" id="EH5N,(v*]wuynpRQB82m"><field name="NUM">18</field></block></value></block></value> <value name="B"><block type="logic_operation" id="fsEycYCF*hg@6TK1,8P]"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="{ht+Oe:*#YWvf{g_K(U4"><field name="OP">GT</field> <value name="A"><block type="get_value" id="n+7srm%!h[^,]/n{23w]"><field name="ATTR">val</field> <field name="OID">zwave.0.NODE2.ALARM.Burglar_1</field></block></value> <value name="B"><block type="math_number" id="]ASTeu42|_I^xj#*uwHR"><field name="NUM">0</field></block></value></block></value> <value name="B"><block type="logic_compare" id="vEXg2?.OTD2NQi.WEZr8"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="Rh=bEwTc3uuRnMJ@dT}{"><field name="ATTR">val</field> <field name="OID">hue.0.Philips_hue.Regal_Bad.on</field></block></value> <value name="B"><block type="logic_boolean" id="Wrl%2rJs9Q{ftr((CWwL"><field name="BOOL">FALSE</field></block></value></block></value></block></value></block></value> <statement name="DO0"><block type="debug" id="[!/)_ocY_HSJ`|}G__^c"><field name="Severity">debug</field> <value name="TEXT"><shadow type="text" id="~}Re*u+%D[p|EH5!hl1J"><field name="TEXT">Bewegungsmelder-Bedingungen erfüllt...schalte Licht an</field></shadow></value> <next><block type="control" id="Eb@zY(c@IH%j-_vsUlqj"><mutation delay_input="false"></mutation> <field name="OID">hue.0.Philips_hue.Regal_Bad.on</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="6jMWeNtG5vhP#vousf7?"><field name="BOOL">TRUE</field></block></value></block></next></block></statement> <value name="IF1"><block type="logic_compare" id="qWY9vl]}(n-sx,#S_jve"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="Vc|AX2?A}FQ{5*t)w5y?"><field name="ATTR">val</field> <field name="OID">zwave.0.NODE2.ALARM.Burglar_1</field></block></value> <value name="B"><block type="logic_boolean" id="`yLN)oX0eD7N](%PBK/C"><field name="BOOL">FALSE</field></block></value></block></value> <statement name="DO1"><block type="debug" id="5;70Q-7`iI=ceU}JH?Qv"><field name="Severity">debug</field> <value name="TEXT"><shadow type="text" id="Qhu{hgF+!Bys2`xX+T)B"><field name="TEXT">Bewegungsmelder-Bedingungen nicht erfüllt...schalte Licht aus</field></shadow></value> <next><block type="timeouts_settimeout" id=";y8d9a8?^[Vtj;RKicl`"><field name="NAME">timeout</field> <field name="DELAY">2</field> <field name="UNIT">min</field> <statement name="STATEMENT"><block type="control" id="Sszb,~~:krW#4j7al4zN"><mutation delay_input="false"></mutation> <field name="OID">hue.0.Philips_hue.Regal_Bad.on</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="wYGM[U#z[s^iE,8]|;2%"><field name="BOOL">FALSE</field></block></value></block></statement></block></next></block></statement> <next><block type="timeouts_cleartimeout" id="u.WzqQ.3}Z68FtITg%*."><field name="NAME">timeout2</field> <next><block type="controls_if" id=":;db`PD,Uu)EK7WnbM=="><mutation else="1"></mutation> <value name="IF0"><block type="logic_operation" id="FnN_~C~A|g1DhkDfS/HN"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="RZ[qVk!B=0A?ClI:KnCe"><field name="OP">GT</field> <value name="A"><block type="get_value" id="e~JdQeY9m/f8TRL3u{@~"><field name="ATTR">val</field> <field name="OID">zwave.0.NODE2.ALARM.Burglar_1</field></block></value> <value name="B"><block type="math_number" id="_I^pz2w2{{}%iPUMi)H8"><field name="NUM">0</field></block></value></block></value> <value name="B"><block type="logic_operation" id="96A|;LtC{8b`d=IT839m"><field name="OP">AND</field> <value name="A"><block type="time_compare" id="!C7y9@,KhTOhsmgqvK~;"><mutation end_time="true"></mutation> <field name="OPTION">between</field> <field name="START_TIME">4:35</field> <field name="END_TIME">22:00</field></block></value> <value name="B"><block type="logic_compare" id="+nv%qwET!z?)^j7Yz?nO"><field name="OP">NEQ</field> <value name="A"><block type="get_value" id="vQXI9#G_:OR!-:i*4!D2"><field name="ATTR">val</field> <field name="OID">sonos.0.root.10_0_0_61.state</field></block></value> <value name="B"><block type="text" id="%lXRXHc^,5qMj{l?iK/e"><field name="TEXT">play</field></block></value></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="|NXfwtq2q)t.m.1QeB1U"><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.10_0_0_61.volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_number" id="WFR0#DMZup_T?i@~ci%p"><field name="NUM">12</field></block></value> <next><block type="control" id="m1Z4ijnJ_.:OQTgEsI{S"><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.10_0_0_61.favorites_set</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="wb!H1}L.McRPsWlCH466"><field name="TEXT">94.3 RS2</field></block></value> <next><block type="control" id="M7=jamTO`f_Vy3asBWy_"><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.10_0_0_61.state</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="Cp/7yeWv1Aei%jeL-SQl"><field name="TEXT">play</field></block></value> <next><block type="control" id="0^SZ=tQeC/|]-Su_(|=k"><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.10_0_0_61.play</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id=":f1y3j};K,ER@r(@VEc#"><field name="BOOL">TRUE</field></block></value> <next><block type="control" id="]C+RB`OFy[Nq.:xeJFeJ"><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.10_0_0_61.stop</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="WGj!w{y;A:*[^G+z?23+"><field name="BOOL">FALSE</field></block></value></block></next></block></next></block></next></block></next></block></statement> <statement name="ELSE"><block type="timeouts_settimeout" id="o3g;-cpX4ZM;5Oq1e#/1"><field name="NAME">timeout2</field> <field name="DELAY">2</field> <field name="UNIT">min</field> <statement name="STATEMENT"><block type="control" id="8VX8b#!~Z9shewjZ#7_T"><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.10_0_0_61.favorites_set</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"></value> <next><block type="control" id="MgppBsV2+Na4|.vey`w+"><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.10_0_0_61.state</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="=1KxAJ2sIFix]^xZb=J7"><field name="TEXT">stop</field></block></value> <next><block type="control" id="#VA20cmt+?Olr!+@qz]P"><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.10_0_0_61.play</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="D}ei;}f7Y?*cU)u!Yi75"><field name="BOOL">FALSE</field></block></value> <next><block type="control" id=",]qm.Y0v7L4sLtEs=[Pc"><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.10_0_0_61.stop</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="vX}fod`eXr5pnSkfr_37"><field name="BOOL">TRUE</field></block></value></block></next></block></next></block></next></block></statement></block></statement></block></next></block></next></block></next></block></next></block></statement></block></xml>
! ````
-
-
Habe den Text nun hoffentlich sinnvoll angepasst, aber bekomme im Log trotzdem keine Ausgabe.
Licht geht aber an aber mittlerweile auch nicht mehr aus. `
Na dann triggert der Trigger nicht.Was ist den überhaupt ein "Burglar"?
Dann mal einige Schritte zurück und erst die Grundbedingung checken.
Mach mal ein neues Blockly.
Darin nur einen Trigger für den "Burglar". So wie der aktuelle.
In den Trigger nur eine Debug-Ausgabe mehr nicht.
Also erst einmal schaffen das der BM getriggert wird.
Kannst Du eventuell mal die Datenpunkte von dem "Burglar" liefern? (Screenshot)
-
Achso Licht geht übrigens aus.
Da ist irgendwo Scriptseitig eine Un-Logik in der Logik vorhanden. :lol:
Er schaltet ja auch fein brav ein aus geht auch nach dem im Script voreingestellten Timeout aus.
Allerdings berücksichtigt er dabei die manuellen Schaltungen (Sonos spielt bereits etwas ab und soll weder umgeschalten noch ausgeschalten werden, auch wenn keine Bewegung vorhanden ist und es nicht in der Zeit von 4:35 - 22.00 Uhr ist.
Lampe soll ja auch anbleiben sofern sie vor Bewegung an war (auch wenn unter angegebener Helligkeit).
Hier der Screenshot: Burglar springt hoch wenn Bewegung registriert wurde und nach eingestellter Abklingzeit geht er auf 0 wenn keine Bewegung mehr vorhanden ist.
javascript.0 2018-01-17 19:05:28.388 info script.js.Bad.Bewegungsmelder: setTimeout(ms=120000) javascript.0 2018-01-17 19:05:28.388 info script.js.Bad.Bewegungsmelder: Sonos Stop ! - Keine Bedingung wurde erfüllt javascript.0 2018-01-17 19:05:28.388 info script.js.Bad.Bewegungsmelder: getState(id=zwave.0.NODE2.ALARM.Burglar_1, timerId=0) => {"val":0,"ack":true,"ts":1516212328383,"q":0,"from":"system.adapter.zwave.0","lc":1516212328383} javascript.0 2018-01-17 19:05:28.388 info script.js.Bad.Bewegungsmelder: clearTimeout() => cleared javascript.0 2018-01-17 19:05:28.388 info script.js.Bad.Bewegungsmelder: setTimeout(ms=120000) javascript.0 2018-01-17 19:05:28.388 info script.js.Bad.Bewegungsmelder: Bewegungsmelder-Bedingungen nicht erfüllt...schalte Licht aus javascript.0 2018-01-17 19:05:28.388 info script.js.Bad.Bewegungsmelder: getState(id=zwave.0.NODE2.ALARM.Burglar_1, timerId=0) => {"val":0,"ack":true,"ts":1516212328383,"q":0,"from":"system.adapter.zwave.0","lc":1516212328383} javascript.0 2018-01-17 19:05:28.388 info script.js.Bad.Bewegungsmelder: getState(id=zwave.0.NODE2.ALARM.Burglar_1, timerId=0) => {"val":0,"ack":true,"ts":1516212328383,"q":0,"from":"system.adapter.zwave.0","lc":1516212328383} javascript.0 2018-01-17 19:05:28.388 info script.js.Bad.Bewegungsmelder: getState(id=zwave.0.NODE2.SENSOR_MULTILEVEL.Luminance_1, timerId=0) => {"val":0,"ack":true,"ts":1516211851840,"q":0,"from":"system.adapter.zwave.0","lc":1516203423068} javascript.0 2018-01-17 19:05:28.387 info script.js.Bad.Bewegungsmelder: Bewegungsmelder ausgelöst. javascript.0 2018-01-17 19:05:03.794 info script.js.Bad.Bewegungsmelder: setTimeout(ms=120000) javascript.0 2018-01-17 19:05:03.794 info script.js.Bad.Bewegungsmelder: Sonos Stop ! - Keine Bedingung wurde erfüllt javascript.0 2018-01-17 19:05:03.794 info script.js.Bad.Bewegungsmelder: getState(id=sonos.0.root.10_0_0_61.state, timerId=0) => {"val":"play","ack":true,"ts":1516212300333,"q":0,"from":"system.adapter.sonos.0","lc":1516212273204} javascript.0 2018-01-17 19:05:03.794 info script.js.Bad.Bewegungsmelder: getState(id=zwave.0.NODE2.ALARM.Burglar_1, timerId=0) => {"val":8,"ack":true,"ts":1516212303786,"q":0,"from":"system.adapter.zwave.0","lc":1516212303786} javascript.0 2018-01-17 19:05:03.794 info script.js.Bad.Bewegungsmelder: clearTimeout() => cleared javascript.0 2018-01-17 19:05:03.794 info script.js.Bad.Bewegungsmelder: getState(id=zwave.0.NODE2.ALARM.Burglar_1, timerId=0) => {"val":8,"ack":true,"ts":1516212303786,"q":0,"from":"system.adapter.zwave.0","lc":1516212303786} javascript.0 2018-01-17 19:05:03.793 info script.js.Bad.Bewegungsmelder: getState(id=hue.0.Philips_hue.Regal_Bad.on, timerId=0) => {"val":true,"ack":true,"ts":1516212277406,"q":0,"from":"system.adapter.hue.0","lc":1516212273193} javascript.0 2018-01-17 19:05:03.793 info script.js.Bad.Bewegungsmelder: getState(id=zwave.0.NODE2.ALARM.Burglar_1, timerId=0) => {"val":8,"ack":true,"ts":1516212303786,"q":0,"from":"system.adapter.zwave.0","lc":1516212303786} javascript.0 2018-01-17 19:05:03.793 info script.js.Bad.Bewegungsmelder: getState(id=zwave.0.NODE2.SENSOR_MULTILEVEL.Luminance_1, timerId=0) => {"val":0,"ack":true,"ts":1516211851840,"q":0,"from":"system.adapter.zwave.0","lc":1516203423068} javascript.0 2018-01-17 19:05:03.793 info script.js.Bad.Bewegungsmelder: clearTimeout() => cleared javascript.0 2018-01-17 19:05:03.793 info script.js.Bad.Bewegungsmelder: Bewegungsmelder ausgelöst.
-
kannst Du bitte einmal erklären:
-
woran erkennst du dass die SONOS bereits läuft?
-
woran erkennst Du dass die Lampe bereits eingeschaltet ist?
-
bei welchen Bedingungen sollen sowohl Licht als auch die SONOS wieder ausgehen?
-
immer nach 2 Minuten sofern diese durch den Bewegungsmelder eingeschaltet wurden?
-
sofern Lampe und/oder SONOS bereits bei "Bewegung erkannt" eingeschaltet waren, soll dann das Ausschalten manuell erfolgen?
-
-
Hallo BBTown,
wenn ich den Status der Objekte des Sonos ansehe, steht doch da ob Play, Pause, Stop -> true oder false.
Soweit habe ich auch ohne Schalter ja sonst keine Möglichkeit das anders auszuwerten.
Ausgehen sollen Licht sowie Sonos nach dem Timeout nur dann, wenn keine Bewegung registriert wird und Lampe sowie Sonos nicht bereits vorher schon liefen (weil ich eben mal nicht bloß kurz in's Bad gehe sondern vielleicht auch mal länger ein Entspannungsbad nehmen möchte).
Immer dann nach im Script eingestellten Timeout wenn keine Bewegung für eine gewisse (wenn möglich variable Zeit) erfolgt ist.
Zudem soll der SONOS natürlich nur innerhalb der Zeit zwischen 4.35 und 22 Uhr immer angehen (bei Bewegung) wenn er nicht vorher sowieso schon etwas abspielt (dann soll er daran auch nix ändern).
Beim Licht soll dann auch noch Luminance(Lux) vom Sensor mit einbezogen sein um Tagsüber nicht unnötig das Licht einzuschalten.
-
das wäre mein Ansatz, wobei ich nicht 100%ig sicher bin ob "Löschen falls läuft" für die Erneuerung der 2 Minuten bei erneuter Bewegung ausreicht?!
Da könnte ggf. @rantanplan unterstützen bzgl. zusätzlicher timeouts zu den "Verzögerungen"
1917_sonosundlicht.jpg -
das wäre mein Ansatz, wobei ich nicht 100%ig sicher bin ob "Löschen falls läuft" für die Erneuerung der 2 Minuten bei erneuter Bewegung ausreicht?! `
Ja, das geht. Die Zeit wird dann jeweils um 2 Min. verlängert.Nach Ablauf der 2 Minuten werden die Befehle aber fast "gleichzeitig" abgefeuert.
Keine Ahnung ob SONOS sich dabei "verschluckt".
-
Danke, werde ich morgen mal probieren und dann berichten
-
Nach Ablauf der 2 Minuten werden die Befehle aber fast "gleichzeitig" abgefeuert.
Keine Ahnung ob SONOS sich dabei "verschluckt". ` Das ist bei mir (in Verbindung mit 7 SONOS Geräten) bisher völlig unkritisch.
Wobei ich einen etwas anderen Weg gehe da ich über Alexa auch den Party-Modus steuere (alle SONOS in einer Gruppe spielen die gleiche Musik).
Ich habe ein separates Script welches alle meine SONOS überwacht.
Sofern bei einem SONOS die Lautstärke sich auf "> 1" ändert, wird über das Script für den/das SONOS Gerät folgendes gesetzt:
mute = false
play = true
stop = false
state = "play"
Ändert sich die Lautstärke eines/mehrerer SONOS auf "< 2", dann wird im umgekehrten Fall folgendes je Gerät gesetzt:
play = false
stop = true
state = "stop"
Somit benötige ich im Script für die Lichtschaltung im Bad bsp. nur den Befehl "SONOS Lautstärke = 20" und beim Ausschalten "SONOS Lautstärke = 0" anzugeben alles andere wird automatisch durch das generische Script geschaltet. Das hält meine anderen Scripte sehr übersichtlich.
Das Java-Script stammt von "pix" und ist auch in meinem http://forum.iobroker.net/viewtopic.php?f=37&t=7395 enthalten.
! ````
/* Alexa_Sonos_schalten
! reagiert auf Lautstärkeänderungen
Alexa Smartname zeigt auf .volume
Sonos-Adapter Version 1.6.0 voraus!
! http://forum.iobroker.net/viewtopic.php?f=37&p=75526#p75526
! 15.07.2017 erstellt von pix nach Idee von BBTown
16.07.2017 Quelle zugefügt
*/
const logging = true;
! // sonos.0.root.XXX_XXX_XXX_XXX.volume
var regex_vol = /^sonos.[0-9].root.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)_(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).volume$/;
! on({
id: regex_vol,
change: 'ne'
}, function(data) {
var pfad = getIdByName(data.channelName);
if (logging) log(data.channelName + ' (' + pfad + '.' + data.name + ') Lautstärke auf ' + data.state.val + '% geändert');
if (data.state.val >= 2) {
setState(pfad + '.muted', false);
setState(pfad + '.state', 'play');
setState(pfad + '.play', true);
setState(pfad + '.stop', false);
}
if (data.state.val < 2) {
setState(pfad + '.state', 'stop');
setState(pfad + '.play', false);
setState(pfad + '.stop', true);
}
}); -
ich habe das Blockly von BBTown mal nachgebaut, funktioniert auch soweit, bis auf eine Ausnahme.
Die Musik und das Licht gehen trotz Bewegung aus lassen sich wie es mir scheint auch vor Ablauf des Timeouts nicht wieder einschalten. Obwohl der Sensor schon etwas registriert.
-
Dann mach doch mal eine Screenshot, besser noch eine Export.
So kann man nur raten.
-
Ok, habe das Verhalten nochmal getestet er schaltet nach Timeout ab, allerdings selbst wenn ich vor dem Bewegungsmelder quer durch den Raum umherlaufe geht die Lampe und das Radio trotzdem nicht an.
Erst nach einer Weile wenn ich den Raum verlasse und eine bissen warte bevor ich ihn betrete, geht es wieder.
Komisch, eigentlich sollte er das Abschalten ja eigentlich außer Kraft setzen bzw. den Timeout verlängern so lange Bewegungen erfolgen.
Achja der Sensor erkennt aber auch Bewegungen (kann ich in den Objekten sehen), also liegt es nicht daran das nix angeschaltet wird.
Export:
! ````
! <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="~_jTRd2uEjv6BtxPG%fx" x="-13" y="13"><mutation items="1"></mutation>
<field name="CONDITION">ne</field><value name="OID0"><shadow type="field_oid" id="g54nI7K}1QilT[uDuw|^"><field name="oid">zwave.0.NODE2.ALARM.Burglar_1</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="mR`+!yPdR6x#HZIUOGB]"><value name="IF0"><block type="logic_compare" id=",(1+%Q#FS=,;J[.8MUf)"><field name="OP">GT</field> <value name="A"><block type="get_value" id="}NMjHF,YZy#H?JmqV/{s"><field name="ATTR">val</field> <field name="OID">zwave.0.NODE2.ALARM.Burglar_1</field></block></value> <value name="B"><block type="math_number" id="EqNu{/|gvV#BjB6sq2!U"><field name="NUM">0</field></block></value></block></value> <statement name="DO0"><block type="controls_if" id="r(n(?1ooC@}*dg.hb.^("><value name="IF0"><block type="logic_operation" id="8x/85[6ht1Wp?=C^Bbb]"><field name="OP">AND</field> <value name="A"><block type="time_compare" id="FXx1B]c4%R8#[h:Q+qCt"><mutation end_time="false"></mutation> <field name="OPTION">>=</field> <field name="START_TIME">18:00</field></block></value> <value name="B"><block type="time_compare" id="W0L,nK%HQ+*:y]Pkw(E)"><mutation end_time="false"></mutation> <field name="OPTION"><</field> <field name="START_TIME">22:00</field></block></value></block></value> <statement name="DO0"><block type="controls_if" id="|6yqMrq{ljIAzuAyMXT2"><value name="IF0"><block type="logic_compare" id=";:;uyP_6||mFe-),la/0"><field name="OP">NEQ</field> <value name="A"><block type="get_value" id="tnX,zOR3cMUH:~@pn3LU"><field name="ATTR">val</field> <field name="OID">sonos.0.root.10_0_0_61.state</field></block></value> <value name="B"><block type="text" id="DEb[(D8PC}S8E8Zjj!NV"><field name="TEXT">play</field></block></value></block></value> <statement name="DO0"><block type="control" id="XB/H3U!K90wtF[7|vbQ9"><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.10_0_0_61.volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_number" id="(mhD+dAVVQVFv%YJTSoD"><field name="NUM">12</field></block></value> <next><block type="control" id="nl98VkAw|z,C(emzqnj!"><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.10_0_0_61.state</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="+vXq}[4M]dA+)4i@3z%]"><field name="TEXT">play</field></block></value> <next><block type="control" id="OkL0pgQZ9`AJjQSPW#hH"><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.10_0_0_61.favorites_set</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="8|r]Y/R+ek~x#31fIu,P"><field name="TEXT">94.3 RS2</field></block></value> <next><block type="control" id="qQ;MkWLC:,z,R5!S0wa."><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.10_0_0_61.stop</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="aZojuBdcU[bwg:4e2qyF"><field name="BOOL">FALSE</field></block></value> <next><block type="control" id="iq0Sb}MvKL^iu:eM{`/y"><mutation delay_input="false"></mutation> <field name="OID">sonos.0.root.10_0_0_61.play</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="[Z`0CFHd?tS?dPg!LQi8"><field name="BOOL">TRUE</field></block></value> <next><block type="control" id="6buX@Sdq!ibXvl94Upi,"><mutation delay_input="true"></mutation> <field name="OID">sonos.0.root.10_0_0_61.state</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"><block type="text" id="@WZWY+M@Gt;BG|p=1nzk"><field name="TEXT">stop</field></block></value> <next><block type="control" id="v7b2,e:fQG!bAI1;?6;}"><mutation delay_input="true"></mutation> <field name="OID">sonos.0.root.10_0_0_61.stop</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"><block type="logic_boolean" id="5W%zBmmorL.Yw(Rq0dT9"><field name="BOOL">TRUE</field></block></value> <next><block type="control" id="r?~AGLc9![dhMQ#P!GUt"><mutation delay_input="true"></mutation> <field name="OID">sonos.0.root.10_0_0_61.play</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"><block type="logic_boolean" id="z^?F.0o4/K-iK_Ey/;%k"><field name="BOOL">FALSE</field></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></statement> <next><block type="controls_if" id="g]X2ch:E`b5r~fWTf_uH"><value name="IF0"><block type="logic_compare" id="ka@,mcr|HqLDmoz)!M=="><field name="OP">LT</field> <value name="A"><block type="get_value" id="T{:U-zon~czyj9n|e![a"><field name="ATTR">val</field> <field name="OID">zwave.0.NODE2.SENSOR_MULTILEVEL.Luminance_1</field></block></value> <value name="B"><block type="math_number" id="cLpWZSzugm|}d5q|cV[J"><field name="NUM">8</field></block></value></block></value> <statement name="DO0"><block type="controls_if" id="ENf_66UQK0e%V~!(`j0v"><value name="IF0"><block type="logic_compare" id="}5w|SRh7[G;Ib}51C!}N"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="]npCfa)JM9l)15%ZPJw?"><field name="ATTR">val</field> <field name="OID">hue.0.Philips_hue.Regal_Bad.on</field></block></value> <value name="B"><block type="logic_boolean" id="74TgnKyM,3/P`wo]9sh/"><field name="BOOL">FALSE</field></block></value></block></value> <statement name="DO0"><block type="control" id="G=qPrmHO5l+z^ZJE),L%"><mutation delay_input="false"></mutation> <field name="OID">hue.0.Philips_hue.Regal_Bad.on</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id=".#=F^vP7ok^u}8eq]a-#"><field name="BOOL">TRUE</field></block></value> <next><block type="control" id="[[!wWvXc~6!UX4WMU6N~"><mutation delay_input="true"></mutation> <field name="OID">hue.0.Philips_hue.Regal_Bad.on</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"><block type="logic_boolean" id="h*ei|yucD)K}rUfzUvl1"><field name="BOOL">FALSE</field></block></value></block></next></block></statement></block></statement></block></next></block></statement></block></statement></block></xml>
! ````
-
Achja der Sensor erkennt aber auch Bewegungen (kann ich in den Objekten sehen), also liegt es nicht daran das nix angeschaltet wird. `
Wahrscheinlich ist das so ein "komischer" BM der die Bewegungserkennung immer auf "true" hat.Oder schaltet der auch irgendwann wieder auf "false"?
Wenn nicht, musst Du auf "aktualisiert" triggern.
Das Script habe ich mir noch nicht angesehen.
Grüße