Ankündigung

Einklappen
Keine Ankündigung bisher.

Sonos als Türgong mit SmarthomeNG

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Sonos als Türgong mit SmarthomeNG

    Hallo zusammen ich habe versucht mit meinen beiden Sonos einen Türgong zu realisieren.

    in den items.yaml habe ich es so definiert

    Code:
    
           play_snippet:
                type: str
                sonos_send: play_snippet
                enforce_updates: true
                knx_dpt: 4
                knx_listen: 2/3/6

    etc/plugin.yaml ist wie folgt definiert:


    Code:
    
    Sonos:
        class_name: Sonos
        class_path: plugins.sonos
        tts: true                                     # optional, default:  false
        local_webservice_path: /var/tts               # optional, default:  empty. If 'tts' is enabled, this option is mandatory. 
                                                        # All tts files will be stored here.
        local_webservice_path_snippet: /var/snippet     # optional, default:  empty. For some reasons it could be necessary to have 
                                                        # separated paths for TTS files and your own snippet files. You can define the
                                                        # local path for your snippets here. If 'tts' is enabled and 
                                                        # 'local_webservice_path_snippet' is empty, the value for 
                                                        # 'local_webservice_path' is used for your snippet audio files.
        webservice_ip: 192.168.178.54                   # optional, default:  automatic. You can set a specific ip address.
                                                        # If you're using a docker container, you have to set the host 
                                                        # ip address here.  
        webservice_port: 23500                        # optional, default:  23500
        # discover_cycle: 120                           # optional, default:  120 (in seconds)
        # speaker_ips:                                  # optional. You can set static IP addresses for your Sonos speaker. This
        #   - 192.168.1.10                              # will disable auto-discovery. This is useful if you're using a 
        #   - 192.168.1.77                              # containerized environment with restricted network access.
    im Verzeichnis /var/snippet liegt die Datei 1.mp3 und auf die GA 2/3/6 habe ich einen Wert mit der Zahl 1 gesendet jedoch passiert nichts.
    Hat damit schon jemand Erfahrung und könnte evtl wissen wo ein Fehler liegen könnte
    Gruss Oliver

    Projektleiter Technische Gebäudeausrüstung

    #2
    Kannst du mit deinem Browser auf die URL http://webserver-ip:webserver-port/1.mp3 zugreifen und das Snippet abspielen? (die Werte vorher natürlich anpassen)

    Gibts Fehlermeldungen im Log?

    Gruss, Stefan
    Sonos

    Kommentar


      #3
      Guten Morgen Stefan,



      ja die .mp3 datei ist vorhanden und spielt ab

      Im Log sind keine Errors zu finden

      Habe ebenfalls mit knx_dpt 16 probiert und 1.mp3 auf die GA gesendet jedoch ohne erfolg


      Sofern ich im Backend bei Value: 1.mp3 eingebe spielt er es ab wenn ich auf die GA die 1.mp3 sende erscheint im Backend
      Code:
      (1.mp3���������)
      Ich vermute mal dass der KNX DPT nicht so ganz passt da er mir immer
      Zuletzt geändert von jonny7792; 11.09.2018, 09:11.
      Gruss Oliver

      Projektleiter Technische Gebäudeausrüstung

      Kommentar


        #4
        Du könntest das auch so lösen: definiere ein Item was per KNX-Listen auf deinen Türgong hört. Beim Play-Snippet-Item setzt du dann einen eval_trigger und verknüpft den mit dem Türgong-Item. Sobald z.B. das Gong-Item eine boolsche 1 liefert soll dann der Wert „gong.m3“ ins Snippet-Item geschrieben werden. Zu eval_trigger gibts im Wiki von SmarthomeNG einige Beispiele. Das sollte dein Problem lösen und du umgehst die DPT-Problematik.

        Gruss,

        Stefan
        Sonos

        Kommentar


          #5
          Zitat von pfischi Beitrag anzeigen
          Du könntest das auch so lösen: definiere ein Item was per KNX-Listen auf deinen Türgong hört. Beim Play-Snippet-Item setzt du dann einen eval_trigger und verknüpft den mit dem Türgong-Item. Sobald z.B. das Gong-Item eine boolsche 1 liefert soll dann der Wert „gong.m3“ ins Snippet-Item geschrieben werden. Zu eval_trigger gibts im Wiki von SmarthomeNG einige Beispiele. Das sollte dein Problem lösen und du umgehst die DPT-Problematik.

          Gruss,

          Stefan
          Hallo ,

          ich habe mit eval keine Erfahrung du wolltest mir in einen Anderen Thread schon damit helfen



          Code:
          
            
          play_snippet:            
              type: str            
              value: gong.mp3            
              sonos_send: play_snippet            
              enforce_updates: true            
              eval: if sh.EG.Gang.Gong() == True
          Wäre dies so verwendbar?


          LOG.


          Code:
          2018-09-11  18:22:04 WARNING  lib.item         Item MySonos.Kueche.play_snippet: value True does not match type str. Via KNX 1.1.27
          2018-09-11  18:22:06 WARNING  lib.item         Item MySonos.kueche.play_snippet: value False does not match type str. Via KNX 1.1.27
          2018-09-11  18:22:09 WARNING  lib.item         Item MySonos.Kueche.play_snippet: value True does not match type str. Via KNX 1.1.27
          2018-09-11  18:22:09 WARNING  lib.item         Item MySonos.Kueche.play_snippet: value False does not match type str. Via KNX 1.1.27
          2018-09-11  18:30:54 WARNING  lib.item         Item MySonos.Kueche.play_snippet: problem evaluating if sh.EG.Gang.Gong() == True: invalid syntax (<string>, line 1)
          Im genauen geht es darum mumpf -


          Anbei nochmal die items,yaml der betreffenden Objekte

          Code:
                 Gong:
                      name: gong
                      type: bool 
                      eval: sh.MySonos.Kueche.play_snippet
                      knx_dpt: 1
                      knx_listen: 2/3/6
          
          ​​​​​​​        play_snippet:
                      type: str
                      value: 1.mp3
                      sonos_send: play_snippet
                      enforce_updates: true
                      eval_trigger: if sh.EG.Gang.Gong() == True
          Zuletzt geändert von jonny7792; 11.09.2018, 21:41.
          Gruss Oliver

          Projektleiter Technische Gebäudeausrüstung

          Kommentar


            #6
            Hi,

            wenn ich mich nicht vertippt habe, dann sollte es so gehen:
            Code:
                   Gong:
                        name: gong
                        type: bool
                        enforce_updates: true
                        knx_dpt: 1
                        knx_listen: 2/3/6
            
                   play_snippet:
                        type: str
                        sonos_send: play_snippet
                        enforce_updates: true
                        eval: "'1.mp3' if value else None" 
                        eval_trigger: EG.Gang.Gong
            Gruß, Waldemar
            Zuletzt geändert von mumpf; 11.09.2018, 22:22.
            OpenKNX www.openknx.de

            Kommentar


              #7
              Zitat von mumpf Beitrag anzeigen
              Hi,

              wenn ich mich nicht vertippt habe, dann sollte es so gehen:
              Code:
              Gong:
              name: gong
              type: bool
              enforce_updates: true
              knx_dpt: 1
              knx_listen: 2/3/6
              
              play_snippet:
              type: str
              sonos_send: play_snippet
              enforce_updates: true
              eval: '1.mp3' if value else None
              eval_trigger: EG.Gang.Gong
              Gruß, Waldemar


              Er liest die .yaml nicht ein

              Folge Augabe vom yaml syntax checker


              Code:
              ​​​​​​​ERROR: 
              
              while parsing a block mapping
                in "<unicode string>", line 616, column 13:
                              type: str
                              ^ (line: 616)
              expected <block end>, but found '<scalar>'
                in "<unicode string>", line 619, column 27:
                              eval: '1.mp3' if value else None
                                            ^ (line: 619)
              Gruss Oliver

              Projektleiter Technische Gebäudeausrüstung

              Kommentar


                #8
                Ja, beim eval fehlen noch Anführungszeichen vorn und hinten. Vergesse ich immer ...

                Ich habe das oben ergänzt.

                Gruß Waldemar
                OpenKNX www.openknx.de

                Kommentar


                  #9
                  Zitat von mumpf Beitrag anzeigen
                  Ja, beim eval fehlen noch Anführungszeichen vorn und hinten. Vergesse ich immer ...

                  Ich habe das oben ergänzt.

                  Gruß Waldemar
                  Items wurden Eingelesen der Test läuft - Es Funktioniert Vielen Dank mumpf


                  Jetzt könnte ich den eval _trigger auf alle Sonos Lautsprecher übertragen richtig?
                  Zuletzt geändert von jonny7792; 11.09.2018, 22:32.
                  Gruss Oliver

                  Projektleiter Technische Gebäudeausrüstung

                  Kommentar


                    #10
                    Zitat von jonny7792 Beitrag anzeigen

                    Items wurden Eingelesen der Test läuft - Es Funktioniert Vielen Dank mumpf


                    Jetzt könnte ich den eval _trigger auf alle Sonos Lautsprecher übertragen richtig?
                    Klar, sollte problemlos funktionieren.

                    mumpf

                    Danke für das Beispiel.

                    Geuss,

                    Stefan
                    Sonos

                    Kommentar


                      #11
                      Hi,

                      ein Stück kompakter - und vielleicht leichter verständlich - sollte auch so gehen (da ich kein Sonos habe, kann ich es nicht ausprobieren):
                      Code:
                             Gong:
                                  name: gong
                                  type: bool 
                                  knx_dpt: 1
                                  knx_listen: 2/3/6
                                  on_udpate: "EG.Gang.play_snippet = '1.mp3'"
                      
                             play_snippet:
                                  type: str
                                  sonos_send: play_snippet
                                  enforce_updates: true
                      Gruß, Waldemar
                      ​​​​​​​
                      OpenKNX www.openknx.de

                      Kommentar


                        #12
                        Zitat von mumpf Beitrag anzeigen
                        Hi,

                        ein Stück kompakter - und vielleicht leichter verständlich - sollte auch so gehen (da ich kein Sonos habe, kann ich es nicht ausprobieren):
                        Code:
                        Gong:
                        name: gong
                        type: bool
                        knx_dpt: 1
                        knx_listen: 2/3/6
                        on_udpate: "EG.Gang.play_snippet = '1.mp3'"
                        
                        play_snippet:
                        type: str
                        sonos_send: play_snippet
                        enforce_updates: true
                        Gruß, Waldemar
                        Ich teste es gerade und werde berichten. Vielen Dank


                        Da ich zwei Sonos besitze müsste er den on_update String einmal auf MySonos.Kueche.play_snippet und auf MySonos.Gast.play_snippet senden daher denke ich der eval trigger ist die bessere wahl
                        Zuletzt geändert von jonny7792; 12.09.2018, 09:30.
                        Gruss Oliver

                        Projektleiter Technische Gebäudeausrüstung

                        Kommentar


                          #13
                          Hi,

                          es ginge auch:
                          Code:
                              on_update:
                                  - "MySonos.Kueche.play_snippet = '1.mp3'"
                                  - "MySonos.Gast.play_snippet = '1.mp3'"
                          Du musst Dich mal mit der Syntax von shNG beschäftigen. Steht eigentlich alles in der Anleitung mit Beispielen beschrieben...

                          Aber mit eval und eval_trigger geht es natürlich auch.

                          Gruß, Waldemar
                          OpenKNX www.openknx.de

                          Kommentar


                            #14
                            Ja ich muss nochmal ein Test System aufbauen zum Spielen ,

                            sobst muss ich immer ein Backup machen.

                            danke mumpf für deine Unterstützung


                            Ich hätte noch eine Frage zu eval und eval trigger

                            Ist es möglich solange auf dem Item : Keller.Alarm.Sammelalarm eine Boolsche 1 ist den eval zu triggern bis wieder eine boolsche 0 anliegt?
                            Zuletzt geändert von jonny7792; 12.09.2018, 14:13.
                            Gruss Oliver

                            Projektleiter Technische Gebäudeausrüstung

                            Kommentar


                              #15
                              Hmmm, wie soll ich es sagen...

                              Ein Item ist ein Objekt, dem Du mit Hilfe der Attribute ein bestimmtes Verhalten geben kannst. Es wird somit das Item getriggert und nicht das eval (was ein Attribut des Items ist). Und falls Du die Namen eval und eval_trigger erwähnen willst, die sind einfach bescheiden gewählt. Um es noch anders zu sagen: eval_trigger hat nichts mit eval zu tun.
                              • ein eval_trigger gibt an, durch welche(s) Item(s) ein Item getriggert wird.
                              • ein eval bestimmt den Wert des Items nach dem triggern.
                              Somit ist Deine Frage klar mit nein zu beantworten, da man nie einen eval triggern kann. Ich weiß auch nicht, was Du genau willst:
                              • eine zyklisches senden eines Itemwertes auf eine bestimmte GA solange ein anderes Item den Wert 1 hat?
                              • eine Formel immer wieder ausrechnen, solange ein anderes Item den Wert 1 hat?
                              Kann man alles machen, ich weiß nur nicht, was Du willst. Am besten: Konkret Items posten und sagen, was das Ziel ist.

                              Gruß, Waldemar
                              OpenKNX www.openknx.de

                              Kommentar

                              Lädt...
                              X