Sonos mittels PHP Skript steuern

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • romildo
    Lebende Foren Legende
    • 25.08.2015
    • 5113

    #91
    In #87 hast du den oberen Teil markiert, in #90 den unteren.
    Ich würde vorschlagen, dass du dich für den ersten Versuch mal auf einen Ausgang an welchem du den Text ausgeben möchtest festlegst.
    Der Text wird auch nur ausgegeben wenn er sich ändert.
    Also am einfachsten mal zwei Texte in den Statusbaustein schreiben und mit einen Schalter am Eingang dafür sorgen, dass Text 1 bei Schalter ein und Text 2 bei Schalter aus gesendet wird.

    Und wie schon in #89 erwähnt funktioniert der obere Teil so nicht, da der Trigger nicht mit dem Ausgang verbunden sein darf.
    lg Romildo

    Kommentar

    • Liver_64
      MS Profi
      • 07.09.2015
      • 591

      #92
      Ich hatte das gleiche Problem, es muss irgendwie mit dem Statusbaustein zusammenhängen. Manchmal ging es, meistens habe ich auch die Null angesagt bekommen :-(

      Ich habe es dann schlußendlich über ein simples PicoC Programm gelöst, welches sehr zuverlässig arbeitet und ich seitdem keine Probleme mehr habe. Falls du Interesse hast schicke ich dir den Code per PN

      Gruß Oliver

      PS: Demnächst kommt auch ein auf auf Wunderground basierendes Weather-to-speech und ein Clock-to-speech Script
      Anmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
      Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!

      Kommentar

      • Liver_64
        MS Profi
        • 07.09.2015
        • 591

        #93
        hier das kleine PicoC Prog mit welchem ich den Text vom Statusbaustein an TTS übergebe, es funktioniert soweit einwandfrei. Max. können mit einem Programmbaustein 3 Texte übermittelt und getriggert werden. Bei Bedarf können die Textwerte vom Statusbaustein mit dem EIB Textsensor und dem EIB Textaktor (gleiche 'virtuelle' Gruppenadresse) übergeben werden (im Falle dezentraler Platzierung bzw. Reduzierung der PicoC Programme.)

        Den Effekt von TTS Ansagen beim Neustart des Servers habe ich per "Startimpuls" auf R des jeweiligen Triggers unterbunden.

        PicoC_TTS_Statusbaustein.txt
        Anmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
        Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!

        Kommentar

        • MarcusS
          LoxBus Spammer
          • 25.08.2015
          • 389

          #94
          Danke euch beiden. Ich muss es mir mal am kommenden WE noch mal genauer anschauen. Mir kommt es aber auch so vor, dass es kein grundsätzliches Thema ist, sondern mal eben geht und mal nicht. Wenn sich das nicht über den Statusbaustein verlässlich abbilden lässt, dann greife ich auf das Pico Script zurück
          ​Romildo: Ich sehe es ein dass es ein wenig verwirrend mit den beiden Samples ist. Aber ich habe wirklich alle Varianten durch und mich letztendlich an der zuletzt gezeigten festgebissen, da das mein "Ziel-Scenario" ist. Danke dir für die Hinweise,
          DoorPi DIY Türsprechstelle how to

          Kommentar

          • romildo
            Lebende Foren Legende
            • 25.08.2015
            • 5113

            #95
            Aber ich habe wirklich alle Varianten durch und mich letztendlich an der zuletzt gezeigten festgebissen, da das mein "Ziel-Scenario" ist
            Dagegen spricht ja auch nichts.
            Damit du siehst wann ein Text gesendet wird, kannst ja, wenn du möchtest, das einfache Beipiel im Anhang nehmen.

            Als zweiten Schritt würde ich danach deinen Ausgang an Stelle von Taus hängen.

            Erklärung zum Beispiel:
            Damit es funktioniert ist dabei lediglich darauf zu achten, dass im Virtuellen Ausgangsverbinder "Eigener MS" die Zugangsdaten des Eigenen MS drin stehen.

            Im Beipiel wird bei Betätigung des Schalters "Textwechsler" ein Text am Status Baustein ausgegeben.
            Dieser wird, da er sich vom vorherigen Text untescheidet, vom HTTP Ausgang "Tau" an den Texteingang "Tein" gesendet und somit im Virtuellen Status "Empfangener Text" angezeigt.
            .
            Nach dem Reboot des MS werden in der VISU der Schalter "Textwechsler", der Baustein "Status" und der Virtuelle Status "Empfangener Text" angezeigt.
            Wert vom Virtuellen Status "Empfangener Text" ist zu diesem Zeitpunkt 0.
            Legt man nun den Schalter "Textwechsler" auf ein, wird unmittelbar danach im "Status" Text 2 angezeigt.
            Nach einer Zeitverzögerung wird Text 2 auch am Virtuellen Status "Empfangener Text" angezeigt.
            Legt man nun den Schalter "Textwechsler" auf aus, wird unmittelbar danach im "Status" Text 1 angezeigt.
            Nach einer Zeitverzögerung wird Text 1 auch am Virtuellen Status "Empfangener Text" angezeigt.
            Angehängte Dateien
            lg Romildo

            Kommentar

            • MarcusS
              LoxBus Spammer
              • 25.08.2015
              • 389

              #96
              Ich denke ich hab die Ursache gestern Abend gefunden.

              Wenn sich der eigentlich auszugebende Text im Statusbaustein bzw. am Ausgang nicht ändert, dann wird zwar der Trigger ausgelöst, aber kein Wert an <v> übergeben. Unabhängig davon, ob sich die Werte an den Eingängen verändern. Man muss die Werte der Eingänge auch im Statustext verwerten. Sobald sich inhaltlich was ändert, kommt der Text auch am Ausgangsverbinder an und wird am Ende auch ans TTS übergeben.

              Ich halte es für einen Bug. Denn der Text im Status sollte immer ausgegeben werden wenn die entsprechenden Bedingungen eintreten, auch wenn sich wie in meinem Fall das Wetter nicht alle 20 Sekunden ändert.

              ​Man kann das schön nachstellen, indem man an z. B. einen Sequenzer an einen dritten Eingang AI3 des Statusbausteins hängt und diesen permanent durschaltet. Wenn man dann <v3> auch mit den in den Statustext einbaut, kommt bei jedem Trigger zur Sprachausgabe der Text. Verwendet man <v3> nicht, lässt aber trotzdem den Sequenzer am Eingang, dann passiert wieder nichts bzw. es wird kein Text an den Ausgangverbinder übergeben

              DoorPi DIY Türsprechstelle how to

              Kommentar

              • romildo
                Lebende Foren Legende
                • 25.08.2015
                • 5113

                #97
                Dass der Text nur bei Änderung weitergegeben wird habe ich ja schon in #91 geschrieben, ist scheinbar nicht klar gewesen.

                Die Bausteine funktionieren doch genauso wie sie beschrieben sind, oder verstehe ich da was nicht richtig?

                Der Statusbaustein legt den Text aus der Spalte Statustext, bei welchem die Bedingung erfüllt ist, an seinen Ausgang TQ.
                Wenn die Bedingung ändert, ändert sich somit auch der Ausgang TQ. (Sofern man nicht den gleichen Text im Statustext eingegeben hat)
                Wenn im Statustext Beispielsweise auch ein Text von einem Eingang implementiert ist, ändert sich bei Änderung des Textes am Eingang, logischerweise auch der Ausgangstext.
                Beipiel bei Statustext = <v1>:
                AI1 = Text1 somit TQ = Text1
                AI1 = Text2 somit TQ = Text2

                Der HTTP-Ausgangsbefehl gibt den Wert nur weiter wenn er sich ändert.
                Finde ich auch richtig so, sonst würde er ja ununterbrochen senden.

                Verstehe also nicht, was da nicht funktionieren soll, oder möchtest du, dass alle 20 Sekunden der Text gesendet wird?
                lg Romildo

                Kommentar

                • MarcusS
                  LoxBus Spammer
                  • 25.08.2015
                  • 389

                  #98
                  Ne, das hatte ich in der Tat nicht so verstanden. Man hört halt nur das, was man hören will :-)

                  Ich bin der Auffassung gewesen, dass der Text immer dann ausgegeben wird, wenn sich die Bedingung ändert und erfüllt wird. Wenn ich es jetzt lese, dann hätte ich es so verstehen können.

                  Unabhängig davon fände ich es aber nach wie vor besser wie ich es eigentlich erwartet hätte. Ich will in meinem Fall ja nicht den Text jedesmal ausgeben wenn er sich ändert, sondern wenn ich es will - also ein bestimmtest Ereignis eintritt. Eine richtige Doku gibt es ja auch nicht bei Loxone, außer am Baustein selber. Egal...ändern kann ich es ja nicht im Moment und ich vermute beide Fälle sind je nach Anforderung sinnvoll.

                  Jetzt habe ich jedenfalls die passende Lösung für mich gefunden, die mit meinen Anforderungen läuft. Ich schalte zwischen zwei marginal unterschiedlichen Texten per Änderung der Eingangsbedingung um und habe mein Resultat. War jedenfalls eine Menge Aufwand aber auch Learning für

                  Danke für die gute und ausführlich Hilfe!
                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Capture.PNG
Ansichten: 417
Größe: 25,4 KB
ID: 25183 Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Untitled.png
Ansichten: 401
Größe: 8,0 KB
ID: 25184
                  DoorPi DIY Türsprechstelle how to

                  Kommentar

                  • romildo
                    Lebende Foren Legende
                    • 25.08.2015
                    • 5113

                    #99
                    Ich will in meinem Fall ja nicht den Text jedesmal ausgeben wenn er sich ändert, sondern wenn ich es wil
                    Tut mir leid, aber ich verstehe das immer noch nicht. Das kann man doch ohne weiteres machen.
                    Text an AI1
                    Triggersignal als Taster an AI2
                    Bedingung AI2 == 1 Statustext = <v1>

                    Wenn dann Taster gedrückt wird und somit auf Ein geht wird der Text von Eingang AI1 an Ausgang TQ ausgegeben.
                    Nach dem Loslassen des Tasters geht dieser auf Aus und somit nichts mehr am Ausgang TQ ausgegeben.

                    Aber egal, hauptsache es funktioniert.
                    lg Romildo

                    Kommentar

                    • MarcusS
                      LoxBus Spammer
                      • 25.08.2015
                      • 389

                      Nein. Eben nicht. Der text ist bzw. bleibt ggf. gleich und dann gibts auch keine Ausgabe. Das ist ja das Problem. Wenn sich an der Wetterlage nichts ändert zwischen den beiden Triggern, dann bleibt der Ausgang "stumm".

                      Aber Schwamm drüber. Ich hab ja meine Lösung gefunden.
                      DoorPi DIY Türsprechstelle how to

                      Kommentar


                      • romildo
                        romildo kommentierte
                        Kommentar bearbeiten
                        Der Text am Ausgang TQ ändert sich sehr wohl, da ja bei Trigger = Aus kein Text anliegt.
                        Warum dies bei dir nicht funktioniert, weiss ich nicht, bei mir funktioniert dies.

                        Du könntest aber Beispielsweise an Stelle einer leeren Bedingung irgend ein Zeichen, bei welchem nichts ausgelöst wird, in den Statustext schreiben, dann muss es in jedem Fall funktionieren.

                      • MarcusS
                        MarcusS kommentierte
                        Kommentar bearbeiten
                        Also, es läuft so vom Workflow her.
                        1. Text-A wird erstmalig per Trigger aufgerufen -> TTS wird ausgegeben. Alles wunderbar
                        2. Text-A wechselt auf kein Text -> Kein TTS
                        3. Kein Text am Textausgang wechselt bei Trigger wieder auf Text-A -> Es wird kein TTS ausgegeben, da Text-A scheinbar &quot;bekannt&quot; ist und daher meint Loxone den Ausgangverbinder nicht aktivieren zu müssen. Hier ist das Problem

                        4a. Wechsle ich nun von Text-A direkt auf Text-B (weil sich ein übernommener Wert wie die Temepratur in <v> z. B. geändert hat) -> TTS wird ausgegeben.
                        4b. Von Text-A auf kein Text; und dann auf Text-B -> TTS von Text-B wird ausgegeben

                        5. Text-B auf leer und wieder Text-B. Kein TTS, da sich der Text zum letzten mal nicht verändert.

                        100% reproduzierbar und unabhängig von dem am Statusbaustein angezeigten Text. Der mag stimmen, aber der Ausgangsverbinder wird trotzdem nicht aktiviert. Es wird nur eine 0 bzw. ein Leerzeichen übergeben

                        Wenn ich nun irgend ein Zeichen statt eines sinnvollen Textes angebe, dann findet ja ein Textwechsel (Text-A zu Text-B) statt und der Ausgangsverbinder wird ausgelöst. Es ertönt also ein Gong, dann würde irgendein Zeichen vorgelesen und das wars.
                        Zuletzt geändert von MarcusS; 29.01.2016, 10:49.

                      • Iceman
                        Iceman kommentierte
                        Kommentar bearbeiten
                        Bei mir ist es genau so wie bei MarcusS.
                    • romildo
                      Lebende Foren Legende
                      • 25.08.2015
                      • 5113

                      Ich habe das jetzt nochmals getestet und weiss nun auch warum es bei mir funktioniert und bei dir nicht.

                      Ich habe es mit der Beta V7.3.1.21 getestet und da funktioniert es.
                      Heute habe ich es auch nochmal mit der V7.1.9.30 versucht und da funktioniert es bei mir auch nicht.

                      Wenn ich nun irgend ein Zeichen statt eines sinnvollen Textes angebe, dann findet ja ein Textwechsel (Text-A zu Text-B) statt und der Ausgangsverbinder wird ausgelöst. Es ertönt also ein Gong, dann würde irgendein Zeichen vorgelesen und das wars.
                      Wenn du den kompletten Text im Statusbaustein erzeugen würdest, würde "irgend ein Zeichen" nichts auslösen.

                      Statusbaustein:
                      Statustext bei Ein: /sonos/sonos2.php?zone=bad&volume=15&playgong=yes&action= sendmessage&text=<v1>
                      Statustext bei Aus: irgend ein Zeichen

                      HTTP Ausgans Befehl
                      Befehl bei EIN: <v>
                      lg Romildo

                      Kommentar

                      • MarcusS
                        LoxBus Spammer
                        • 25.08.2015
                        • 389


                        ​Da klappen mir die Augen nach hinten. Loxone und die Bugs.
                        Was das schon an Zeit gekostet hat. Ich mache ein Ticket auf und versuche hierüber sicherzustellen, dass das Verhalten nicht doch wieder ins nächste Release kommt. Hatte ich ja eh vor
                        DoorPi DIY Türsprechstelle how to

                        Kommentar


                        • MarcusS
                          MarcusS kommentierte
                          Kommentar bearbeiten
                          Jetzt bin ich mal Böse. So wie ich das Lifecycle Management von Loxone kenne und bisher erlebt habe, würde ich damit noch warten. Oder heb es dir zumindest für später auf. Es wird noch viele Versionen geben. Da kann schon mal ein alter Fehler wieder aus Versehen reinkommen. :-)

                        • MarcusS
                          MarcusS kommentierte
                          Kommentar bearbeiten
                          Ach, noch was. Ich vermute der Fehler lag im Statusbaustein. Da konnte selbst dein Pico Script nichts retten. Denn es gab ja nie einen zu verarbeitenden Text am Programmeingang

                        • Liver_64
                          Liver_64 kommentierte
                          Kommentar bearbeiten
                          Das PicoC funktioniert einwandfrei und ich habe immer einen Text am Ausgang des Bausteines. Schalten für TTS mache ich dann über PicoC.
                          Ich nutze es aber anders, ich habe im Statustext keinen Text sondern nur im http Befehl. Alle Fenster (23 Stück) laufen in einen Statusbaustein und zeigen mir an welche(s) Fenster gerade offen steht (z.B. Schlafzimmer, Büro). Im http Befehl steht dann:
                          Folgende Fenster sind seid mehr als 1 Stunde geöffnet: <v>. Bitte die Fenster umgehend schließen.
                          Der Trigger ist dann ein Impuls auf das Programm, nur bei 1 wird der Text dann durchgeschaltet und angesagt.
                          Zuletzt geändert von Liver_64; 04.02.2016, 10:06.
                      • Liver_64
                        MS Profi
                        • 07.09.2015
                        • 591

                        Guude zusammen,

                        ich habe mal wieder ein Update gepostet (siehe Post #70). Hoffe es kommt an, meine Familie fand es gut :-) zumindest w2s.
                        Die Dateien sind jetzt gesplittet, d.h. die Funktionen t2s (VoiceRSS), w2s und c2s sind jetzt in seperaten Dateien. Aufruf wie immer über sonos2.php.
                        Details bitte der README entnehmen.

                        Neue Funktionen:
                        weather-to-speech (w2s)

                        Basierend auf wunderground.com können 4 unterschiedliche, tageszeitabhängige Wettervorhersagen bzw. Wetterstatus TTS erstellt werden. Dazu ist lediglich die Angabe des Wunderground API keys, Wohnort und die Schwellwerte für Regenwahrscheinlichkeit bzw. Windstärke in der config.php notwendig. Die Ansagetexte können in der Datei w2s.php individuell angepasst werden. Die Windstärke-/richtung und die Regenwahrscheinlichkeit wird erst ab überschreiten der Schwellwerte über TTS ausgegeben.
                        Die verwendeten Wetterparameter für die Wetteransage sind folgende: Wetterlage, Höchst-/Tiefsttemperatur, Außentemperatur, Regenwahrscheinlichkeit, Windgeschwindigkeit, Windrichtung, Wetterlage für den nächsten Tag,

                        clock-to-speech (c2s)
                        Ansage der aktuellen Uhrzeit in 4 unterschiedlichen, tageszeitabhängigen Formaten über TTS. Die Ansagetexte können in der Datei c2s.php individuell angepasst werden.

                        Updates:
                        Die Funktion 'playgong' kann jetzt mit Parameter =yes oder Angabe eines numerischen Wertes =1 genutzt werden. Das heißt ihr könnt unterschiedliche jingles oder was auch immer vor der eigentlichen TTS abspielen lassen. Bei =yes muss die Datei in der 'config.php' hinterlegt sein, für numerische Angaben muss logischerweise die Datei <NUMMER>.mp3 in eurem Audio Verzeichnis vorhanden sein.

                        Wer nach wie vor Probleme mit TTS und Statusbausteinen hat kann ja die Lösung von MarcusS oder den von mir geposteten PicoC Code verwenden.

                        Viel Spaß damit.
                        Gruß Oliver
                        Zuletzt geändert von Liver_64; 01.02.2016, 11:25.
                        Anmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
                        Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!

                        Kommentar

                        • Iceman
                          Smart Home'r
                          • 25.08.2015
                          • 34

                          Das Update ist ja genial, danke dafür! Leider habe ich bei der Zeitausgabe ein kleines Problem. Die angesagte Zeit geht um 4 Minuten vor. Kann ich das irgendwie beheben?

                          Kommentar

                          • Liver_64
                            MS Profi
                            • 07.09.2015
                            • 591

                            Ja, in dem du die Uhrzeit deines Servers korrigierst. Genau die dient nämlich für die Zeitansage.
                            Anmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
                            Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!

                            Kommentar

                            Lädt...