Ankündigung

Einklappen
Keine Ankündigung bisher.

URL Baustein selber bauen?

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

    URL Baustein selber bauen?

    Hallo zusammen!

    Seit Anfang des Jahres bin ich stolzer Besitzer eines Homeservers, und seit Mitte des Jahres auch Bewohner des dazu passenden Hauses ;-)

    Seitdem habe ich schon die ein oder andere Hilfestellung hier im Forum gefunden.
    Allerdings habe ich zu meiner neuesten Frage keine richtige Antwort finden können.
    Ich habe bereits einen einfachen Logikbaustein für den Homeserver programmiert, möchte aber nun gerne einen programmieren, der einen WEB-Aufruf ausführt.

    Mir ist bewußt, dass es dazu im Experten extra einen Bereich gibt, allerdings wäre es sehr, sehr, sehr schreibaufwändig das darüber zu lösen.

    Ziel ist es, eine URL auf einem Raspberry Pi im lokalen Netzwerk aufzurufen.
    Grund: Sonos steuern - und zwar die Lautstärke.

    So hatte ich es mir überlegt:
    Den Wert einer Funktionsvorlage "Lautstärke" aus dem QC auf eine interne GA senden.
    Kommt ein Telegramm auf diese interne GA, eine URL zusammensetzten, in der der Wert des Lautstärkebausteins der letzte Teil dieser URL wird.

    Beispiel:
    interne GA für Sonos Volume ist gebunden an Lautstärke aus QuadClient und liefert irgendwas zwischen 0 und 50. Als Beispiel 20
    Baustein erhält diese 20 (über interne GA), wandelt sie in einen String und setzt daraus den Aufruf:
    "http://192.168.x.x:5005/Wohnzimmer/Volume/20"
    zusammen und setzt ihn ab.

    Der erste Teil der URL ("http://192.168.x.x:5005/Wohnzimmer/Volume") soll als 14-Byte-Text an einem Eingang übergeben werden, die Lautstärke erst in String gewandelt und angehängt.
    Die Möglichkeit User und Password für die Abfrage übergeben zu können hab ich erstmal hinten angestellt..


    Ist das machbar? Wenn ja, wie kann ich aus dem Baustein heraus "http://192.168...../ aufrufen?

    Warum ich es nicht direkt über den Experten lösen möchte:
    Ich vergleiche zur Zeit 20 Werte, und rufe dann den entsprechenden WEB-Auruf ab.
    Ich habe also schon 20 konfiguriert, um lediglich von 0 - 20 im Wohnzimmer regeln zu können....
    Es gibt aber noch 4 weitere Boxen....
    Und wenn sie als Gruppe zusammengefasst sind... :-(

    Ich müsste 51 (inklusive Lautstärke 0) * 5 WEB-Aufrufe konstruieren + die zugehörige Logik dahinter, damit ich die Boxen einzeln zwischen 0 und 50 steuern kann...
    Das lässt sich doch bestimmt auch eleganter und Ressourcenschonender lösen, oder?

    Freue mich über Anregungen und Tipps

    Carsten

    #2
    Also ehe du die PDF der Logikbaustein-Entwicklung runtergeladen hast, bist du mit den Boardmitteln des HS fertig.
    Ich behaupte das du es ein wenig verkompliziert hast. Eine URL zusammenzusetzen ist für den HS eigentlich ein Kinderspiel und in wenigen Minuten realisiert. Vorallem wenn es nur die Lautstärke ist.
    Schau dir die Hilfe in den Webanfrage mal an. Wenns dir nicht weiter hilft, melde dich nochmal.

    Im Grunde legst du pro Sonos Zone eine Abfrage an bei der die Ip sowie Pfad fix ist. Hierfür brauchst du keinen String zu pflegen. Ändert sich eh nicht. Ebenso die Raumbezeichnung. Dann setzt du den restlichen Pfad über KO gesteuerte Texte zusammen, sowie eine kleine Logik hinzu die dir bei Änderung des KO den Befehl für den URL Aufruf startet. Fertig.
    Vermische die Zonen nicht auf einem Logikblatt und mache erstmal eine. Wenn das funktioniert machst du dir eine Bibliotek oder Logikvorlage draus oder Kopierst es direkt auf ein neues Blatt für eine weitere Zone.
    Der HomeServer Projektverwalter
    -Bald nicht mehr nur für den HS sondern auch viele Weitere-
    Kostenlos herunterladen unter:
    www.SmartHomeTools.de

    Kommentar


      #3
      Hallo

      Warum der Umweg über den Raspi? Hast Du mal diesen Weg probiert?

      https://knx-user-forum.de/forum/%C3%...efehle-steuern

      Kommentar


        #4
        Moin!

        @BenS

        Vielen Dank für den super Tipp! Das ist genau das, was ich gesucht hab! Manchmal muss man gar nicht so weit raus... ;-)

        Aaaaber... ;-)

        Ich hab alles eingerichtet, er sendet auch die Abfrage, allerdings scheint mir ein Unterschied beim Senden zwischen dem HTTP Aufruf und dem Datenblock-Aufruf zu sein.
        Zum besseren Verständnis hab ich mal meine Konfig angehängt.
        Der erste Screenshot zeigt den Abruf in der Debugliste vom HS
        Die Screenshots "Lautstärke 1" und "Lautstärke 2" zeigen den Abruf, wobei die Adresse "Wohnzimmer ABS" die interne GA ist, die den Lautstärkewert sendet.
        (Die Logik für die Auslösung des Abrufes habe ich nicht angehängt.. Das er abruft sieht man ja in der Debugliste)
        "GroupVolume" zeigt den WEB Abruf als HTTP konfiguriert.

        Bei dem HTTP Abruf steht "GET" davor und "HTTP 1.0..." dahinter...

        Ich vermute da liegt es irgendwo...
        Hast Du eine Idee?



        @KNXMane

        Wenn das Leben immer so einfach wäre ;-)
        Aus mehreren Gründen funktioniert das nicht so einfach bei mir.

        Ich nutze das Skript von Trautner nur zum Abspielen von "mp3-Ansagen", das aber auch nur bedingt. (Grund steht weiter unten..)
        Ansonsten nutze ich Sonos-Http-API mit Node.js
        Node.js wiederum läuft auf dem Raspi.

        Weshalb die Lösung mit über node.js und nicht über das PHP Skript? Ok, Du hast gefragt ;-)

        Grund 1:
        Ich hab bei mir zu Hause einen Hybrid-Tarif der Telekom (DSL, Rest volumenunabhängig als Turbo über LTE).
        Das wiederum hat zur Folge, dass ich den besch...eidenen Router von der Telekom (Speedport Hybrid) nehmen muss, da es noch keine anderen Router gibt die das können.
        Der Router wiederum kann nicht DHCP und feste IPs aufgrund von MAC-Adressenbindung vergeben.
        Das bedeutet, dass nach spätestens 3 Wochen die IPs von meinen Sonosboxen unter Umständen nicht mehr stimmen... Dann muss ich wieder an die Config Datei des PHP-Skripts um das zu ändern... :-(
        Bei Sonos-http-api muss ich keine IPs angeben, weil das Skript selbst das Netzwerk nach Boxen durchsucht.

        Grund 2:
        Mit der sonos-http-api kann ich sogenannte Presets erstellen (im JSON Format), in denen Gruppen gebildet werden können , den Boxen die jeweils gewünschte Lautstärke zugewiesen werden kann, festgelegt werden kann, dass alle anderen Boxen (die nicht im Preset sind) auf Pause gestellt werden sollen
        Gruppenbildung ging mit dem PHP Skript von Thomas Trautner leider nicht.

        Wenn Du das PHP Skript nutzt.... Worauf läuft Dein Webserver? NAS? Ich hab noch keine, deshalb der Raspi.
        Ausserdem läuft meine Müllabfrage mittels externer Schaltlisten ebenfalls darauf...





        Beste Grüße
        Carsten


        Angehängte Dateien

        Kommentar


          #5
          Ja, php läuft auf QNAP NAS

          Kommentar


            #6
            Für dein DHCP Bereich währe es angebracht z.B. eine FritzBox nach dem Speedport einzusetzen und ein neues Segment zu eröffnen. Dann hast du alle vorzüge einen guten Routers und nutzt den Speedport nur für die Einwahl.
            Der HomeServer Projektverwalter
            -Bald nicht mehr nur für den HS sondern auch viele Weitere-
            Kostenlos herunterladen unter:
            www.SmartHomeTools.de

            Kommentar


              #7
              Da hast Du Recht... Ich hatte auch schon drüber nachgedacht, und mir eine FritzBox besorgt, allerdings habe ich dann damit im OG mein WLan erweitert...

              Über kurz oder lang werde ich wohl nicht drumherum kommen noch eine zu holen....

              Hast Du denn eine Idee was beim WEB-Abruf mit den Datenblöcken falsch sein könnte?

              Gruß
              Carsten

              Kommentar


                #8
                Für das Wlan besorg dir nen AVM Repeater 1750 und konfiguriere diesen als Lan Bridge.
                Dann hast du eine FB.
                Deine Abfrage schaue ich mir nachher mal an
                Der HomeServer Projektverwalter
                -Bald nicht mehr nur für den HS sondern auch viele Weitere-
                Kostenlos herunterladen unter:
                www.SmartHomeTools.de

                Kommentar


                  #9
                  Ich hab eine 4020 für das OG besorgt. Die hängt an einer Netzwerkdose und baut ein eigenes WLan (gleicher Name / gleiches Passwort wie im EG) auf.
                  Das war zuverlässiger als das WLan wieder irgendwo "einzufangen" und dann erst zu verstärken.

                  Ich habe im Hausanschlussraum einen kleinen "Serverschrank" an die Wand gebaut, und darin eine Patchbay, Netgear Switch, Homeserver, etc....
                  Wenn die Glastür vor dem Schrank geschlossen ist, und die Tür vom Hausanschlussraum ebenfalls... ist der WLan Empfang schon sehr bescheiden bis nicht mehr vorhanden. (Das Wlan im EG macht der SPH)

                  Hatte überlegt eine Fritzbox im Wohnbereich an eine Netzwerkdose zu hängen und das WLan de SP-Hybrid komplett auszuschalten...

                  Danke für Deine Tipps

                  Gruß

                  Carsten

                  Kommentar


                    #10
                    Ich sagte ja auch dass du den Rep als LANBridge konfigurieren sollst. Dann verstärkt er nicht, sondern macht das gleiche wie deine FritzBox. Auch hat der 1750 2,4 + 5 Ghz
                    Der HomeServer Projektverwalter
                    -Bald nicht mehr nur für den HS sondern auch viele Weitere-
                    Kostenlos herunterladen unter:
                    www.SmartHomeTools.de

                    Kommentar


                      #11
                      Bzgl deiner Abfrage.
                      Benutze den URL Pfad. An den Stellen deines Dynamischen Wertes setzt du die interne GA deinen 1byte Objektes ein zB /wohnzimmer/volume/{100/234}
                      Der HomeServer Projektverwalter
                      -Bald nicht mehr nur für den HS sondern auch viele Weitere-
                      Kostenlos herunterladen unter:
                      www.SmartHomeTools.de

                      Kommentar


                        #12
                        Den fertigen Sonos-Logikbaustein von Manuel kennst du?
                        Finde es als die schickste Lösung, da direkte Kommunikation ohne Umwege.

                        http://www.grot-automation.de/

                        Kommentar


                          #13
                          @BenS:

                          Die Abfrage hat auch mit der Angabe der iGA in geschweiften Klammern leider nicht funktioniert.

                          Ich habe dann einfach mal den Port auf dem Pi "abgehorcht", was gesendet wird wenn es funktioniert (WEB-Abruf ohne Datenblöcke) und habe ihn dann exakt "nachgebaut" (siehe Screenshot).
                          Das hat dann funktioniert.
                          In der Tat auch nur mit der letzten leeren Zeile und dem LF.

                          @Axel:
                          Ja, den Baustein habe ich schon gesehen, und ihn angeschrieben zwecks Preise... Im Augenblick ist mir das aber ein wenig zu kostspielig.

                          Danke für die Hilfestellung!

                          Gruß
                          Carsten
                          Angehängte Dateien

                          Kommentar

                          Lädt...
                          X