Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Sonos/Hue - Hilfe/Ideen für Badezimmer Script

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Sonos/Hue - Hilfe/Ideen für Badezimmer Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Sundance last edited by

      Liebe Blockly-Pros,

      ich arbeite momentan an einer Lösung für eine Automatisierung mit einem Sonos Play:1 und dem Hue Bewegungsmelder. Folgende Funktionen sind bereits (mehr oder weniger) umgesetzt:

      • Beim Betreten des Badezimmers wird "Play" ausgelöst und die letzte Musik abgespielt ✔
      • Wenn der Bewegungsmelder für 2 Minuten keine Bewegung erkennt, wird die Musik wieder abgestellt ("Pause) ✅
      • Wenn eine Person im Bad die Musik händisch deaktiviert, soll sie auch ausbleiben ❎
      • Wenn "Play" ausgelöst wird, soll sich die Lautstärke langsam bis zur zuletzt gewählten lautstärke steigern (über ein paar Sekunden) ❎

      Der zweite Punkt mit "Pause" funktioniert in meinem aktuellen Script leider nur manchmal.. Der Hue-Bewegungsmelder ist per node-red eingebunden, ich weiß nicht ob es irgendwie am Polling oder doch an einem Fehler in meinem Script liegt. Aber manchmal wenn man sich länger im Bad aufhält, bleibt die Musik an, manchmal geht sie zwischendrin einfach aus. Ich habe dafür bisher keine Lösung gefunden..

      Für das "händische Deaktivieren" habe ich aktuell keine Idee, weil ich nicht weiß, inwiefern sich zwischen einer deaktivierung durch das Script und einer von Sonos selbst unterscheiden lässt.. kann man das je nach "Auslösender" Instanz irgendwie unterscheiden? Oder denke ich zu kompliziert?

      Für die Lautstärke-Steigerung mangelt es mir offenbar einfach nur an Script-Kenntnissen.. meine Idee war, die zuletzt gewählte Lautstärke immer in einem State abzulegen. Dann könnte man mit einer Schleife über einige Sekunden so lange die Lautstärke um +1 steigern, bis der Wert = State-Wert ist. Aber ich habe noch keine Umsetzung hinbekommen, mit der genau das funktioniert 😞

      Dies ist mein aktuelles (halb-)funktionstüchtiges Blockly-Script (der abgeschnittene Teil ist nur noch die Uhrzeit, damit man nachts und früh morgens im Bad keinen Herzinfarkt bekommt.. 😄 )
      Screenshot 2019-08-06 at 15.05.03.png

      Ich bin für jeden Tipp oder Hinweis sehr dankbar!!

      Beste Grüße

      Sundance

      FredF paul53 2 Replies Last reply Reply Quote 0
      • FredF
        FredF Most Active Forum Testing @Sundance last edited by

        @Sundance
        ich habe das Ein- und Ausschalten mit Bewegunsmelder (Z-Wave) mit Radio Empfang so gelöst, das der Radiosender wg. Werbung beim Einschalten erstmal mit Volume 0 startet und dann langsam lauter wird.
        2b3600f6-6ece-412c-b9ca-f33a185a029a-grafik.png
        Das manuelle Ein-und Ausschalten mache ich mit einem Xiaomi Schalter:
        f279624b-0065-40fd-8a14-069b3adae0cb-grafik.png

        1 Reply Last reply Reply Quote 1
        • paul53
          paul53 @Sundance last edited by paul53

          @Sundance sagte:

          Der zweite Punkt mit "Pause" funktioniert in meinem aktuellen Script leider nur manchmal..

          Verwende besser Ausführen timeout und stop timeout (falls wieder Bewegung).

          @Sundance sagte in Sonos/Hue - Hilfe/Ideen für Badezimmer Script:

          kann man das je nach "Auslösender" Instanz irgendwie unterscheiden?

          Ja, durch Vergleich vorheriger Ursprung != "system.adapter.javascript.0", wenn man nur bei Update triggert. vorheriger Ursprung ist eine Eigenschaft des Trigger-Datenpunktes.

          @Sundance sagte in Sonos/Hue - Hilfe/Ideen für Badezimmer Script:

          über einige Sekunden so lange die Lautstärke um +1 steigern, bis der Wert = State-Wert ist.

          Dafür gibt es Ausführen Intervall und stop zyklische Ausführung Intervall.

          Etwa so
          Blockly_temp.JPG

          S 1 Reply Last reply Reply Quote 1
          • S
            Sundance last edited by

            @paul53 - herzlichen Dank für deine ausführliche Unterstützung. Ich werde das heute Abend mal nachbauen und dann berichten.

            Folgendes fiel mir noch ein: Wie würdest du den Status des "manuellen Stop" wieder zurücksetzen? Ich kann ja bei dem Hue-Bewegungsmelder theoretisch prüfen, ob länger als 10-15 Minuten keine Bewegung erkannt wurde (was ein recht sicherer Indikator wäre, das niemand mehr im Bad ist) und dann wieder zurücksetzen. Ergibt das Sinn, oder hast du vielleicht einen besseren Vorschlag?

            Vielen Dank nochmal und beste Grüße

            Sundance

            paul53 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @Sundance last edited by

              @Sundance sagte:

              Wie würdest du den Status des "manuellen Stop" wieder zurücksetzen?

              Im Vorschlag wird er durch manuelle Betätigung von "Play" zurück gesetzt.

              1 Reply Last reply Reply Quote 0
              • S
                Sundance @paul53 last edited by

                @paul53 said in Sonos/Hue - Hilfe/Ideen für Badezimmer Script:

                @Sundance sagte:

                Ja, durch Vergleich vorheriger Ursprung != "system.adapter.javascript.0", wenn man nur bei Update triggert. vorheriger Ursprung ist eine Eigenschaft des Trigger-Datenpunktes.

                Diesen Punkt verstehe ich leider nicht ganz - was muss ich für Datenpunkte/States erstellen, oder wie komme ich an den "Urpsprung"? Ich habe das Blockly soweit nachgebaut, aber an dem Punkt komme ich nicht weiter..

                Etwa so
                Blockly_temp.JPG

                Und eine weitere Sache verstehe ich nicht auf Anhieb - wofür ist der zweite Trigger oben in deinem Vorschlag da? (der einfach nur "Wert" als Platzhalter Variable hat) Ich verstehe nicht, was ich meiner variante dort einsetzen/austauschen muss.

                Ich danke dir im voraus für deine Hilfe!

                Beste Grüße

                Sundance

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @Sundance last edited by

                  @Sundance sagte:

                  wie komme ich an den "Urpsprung"?

                  Wert und vorheriger Ursprung sind Eigenschaften des Trigger-Datenpunktes (Blöcke "Trigger"):

                  Blockly_DP_Props.JPG

                  1 Reply Last reply Reply Quote 1
                  • S
                    Sundance last edited by

                    @paul53 - super, das habe ich gefunden - das funktioniert auch wie erwartet. Leider scheint mit der Abfrage bei den Bewegungsmeldern etwas nicht so zu klappen, wie geplant. Ich poste erstmal mein aktuelles Blockly, vielleicht hast du ja noch eine Idee (oder ich habe irgendwelche Platzhalter falsch "übersetzt"..)

                    blockly-sonos.jpg

                    (Der abgeschnittene Teil beinhaltet weitere Voraussetzungen: Anwesenheit, Uhrzeit, "manuellPause", und dass der Sonos grade nicht bereits abspielt)

                    "Play" wird korrekt ausgelöst, allerdings funktioniert das pausieren nicht konstant - manchmal wird die Nachricht "No Motion Anymore: PAUSING in 3 Minutes" ausgelöst, und wenige Sekunden später wird trotzdem die Pause gesendet.

                    Ich nutze Hue-Bewegungsmelder, die direkt per Zigbee verbunden sind (da sie so deutlich schneller bzw. direkter auslösen) - kann es sein das sich hier gelegentlich irgendein Abfrage bzw. Polling Intervall überschneidet?

                    Ich habe einige Debug Logs eingefügt, damit ich besser nachvollziehen kann, wann was passiert. Alle Nachrichten werden zwei mal gepostet, weil ich oben zwei Object-IDs bzw. Haupt-Trigger habe. Kann es auch damit zusammenhängen?

                    Vielen Dank vorab für deine Unterstützung..

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @Sundance last edited by paul53

                      @Sundance sagte:

                      weil ich oben zwei Object-IDs bzw. Haupt-Trigger habe.

                      Bei zwei Triggern funktioniert die einfache Abfrage von Wert nicht. Außerdem muss die Bewegungserkennung mit ODER verknüpft werden. Prinzip:

                      Blockly_temp.JPG

                      1 Reply Last reply Reply Quote 0
                      • S
                        Sundance last edited by

                        @paul53 - Okay, die initiale Abfrage von einem der Bewegungsmelder reicht ja erstmal - oder gibt es einen einfachen Weg, zwei Werte abzufragen?

                        In meinem "Falls" habe ich ja mit ODER gearbeitet, oder macht es einen Unterschied, dass du die externen Ausgänge aktiviert hast?

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @Sundance last edited by

                          @Sundance sagte:

                          In meinem "Falls" habe ich ja mit ODER gearbeitet

                          Was ist rechts noch mit UND verknüpft ?

                          @Sundance sagte in Sonos/Hue - Hilfe/Ideen für Badezimmer Script:

                          macht es einen Unterschied, dass du die externen Ausgänge aktiviert hast?

                          Nein, sieht nur übersichtlicher aus.

                          S 1 Reply Last reply Reply Quote 0
                          • S
                            Sundance @paul53 last edited by

                            @paul53 said in Sonos/Hue - Hilfe/Ideen für Badezimmer Script:

                            Was ist rechts noch mit UND verknüpft ?

                            Hab es mal etwas übersichtlicher umgebaut - Hier ein Auszug davon:

                            Screenshot 2019-08-12 at 16.05.37.png

                            Ich frage beide BWM, die Anwesenheit, den aktuellen Status der Sonos Box, die "manuellPause" und den Zeitraum ab.

                            Ich habe jetzt mal auf einen BWM im Trigger reduziert - macht es einen Unterschied, wenn ich danach sowieso im zweiten Trigger die beidem BWMs abfrage?

                            Vielen Dank

                            Gruß

                            sundance

                            1 Reply Last reply Reply Quote 0
                            • R
                              Ringo last edited by Ringo

                              Hallo - ich habe mich anfangs auch beim Sonos-schalten auch auf die Bewegungsmelder konzentriert.
                              Ging soweit - nur wollte ich dann Nachts (z.b. von 0.00 bis 5.00 Uhr) beim Bad/Toiletten-Besuch kein Sonos-Gerät am laufen haben ...
                              ... also neuer Ansatz: Bewegung egal! - Das HUE-Licht (Helligkeit) wird abgefragt!
                              Da hat ja HUE die geniale Nachtsteuerung der Lampen wo man eine Uhrzeit definieren kann und die Helligkeit - z.b. nur 50% - alles gut, denn Sonos wird ja nur bei 100% geschalten. Dieses funktioniert sehr zuverlässig.
                              Hui dachte ich - also nehmen wir doch den Helligkeitswert der HUE-Lampe und frage den Status mit Blockly ab und schalte Sonos. Siehe da - alles ist gut! 😉
                              ... hat den weiteren Vorteil das vor dem Abschalten der Lampe sich die Helligkeit der Lampe verringert - also wirds Zeit sich zu Bewegen das es Hell bleibt und Sonos geht ja nur bei 0% aus. Wenns dann Dunkel wird ist dein Sonos auch aus. 😉

                              ... hier das Blockly:

                              <xml xmlns="http://www.w3.org/1999/xhtml">
                                <block type="on" id="c08~!?}h/;gsL^zE(OMo" x="13" y="12">
                                  <field name="OID">hue.0.Bridge_GR.Bad.level</field>
                                  <field name="CONDITION">any</field>
                                  <field name="ACK_CONDITION"></field>
                                  <statement name="STATEMENT">
                                    <block type="controls_if" id="#F]0/Q8r1ut@.?^FOc-6">
                                      <value name="IF0">
                                        <block type="logic_compare" id="IR~LLs/L%xH)P=(Rcz*F">
                                          <field name="OP">EQ</field>
                                          <value name="A">
                                            <block type="on_source" id="Qz9J,V+C3-4TJsFPJXGN">
                                              <field name="ATTR">state.val</field>
                                            </block>
                                          </value>
                                          <value name="B">
                                            <block type="math_number" id="yb+v2-:?bRaB?bM)Wk[j">
                                              <field name="NUM">100</field>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                      <statement name="DO0">
                                        <block type="control" id="0,KyWH6YQux.JP0zd;*k">
                                          <mutation delay_input="false"></mutation>
                                          <field name="OID">sonos.0.root.192_168_0_150.favorites_set</field>
                                          <field name="WITH_DELAY">FALSE</field>
                                          <value name="VALUE">
                                            <block type="text" id="y2e8}+q(WtF|~z34=UeV">
                                              <field name="TEXT">SWR3</field>
                                            </block>
                                          </value>
                                          <next>
                                            <block type="control" id="cR|BEa*?=9#a~oZo#`,T">
                                              <mutation delay_input="false"></mutation>
                                              <field name="OID">sonos.0.root.192_168_0_150.play</field>
                                              <field name="WITH_DELAY">FALSE</field>
                                              <value name="VALUE">
                                                <block type="logic_boolean" id="Ln_6B6brsLJ~u+[T/i`N">
                                                  <field name="BOOL">TRUE</field>
                                                </block>
                                              </value>
                                            </block>
                                          </next>
                                        </block>
                                      </statement>
                                    </block>
                                  </statement>
                                </block>
                              </xml>
                              
                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              393
                              Online

                              31.9k
                              Users

                              80.2k
                              Topics

                              1.3m
                              Posts

                              blockly multimedia node-red
                              4
                              13
                              1228
                              Loading More Posts
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes
                              Reply
                              • Reply as topic
                              Log in to reply
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                              The ioBroker Community 2014-2023
                              logo