Plugin: Any-Plugin für LoxBerry

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • topoff
    Smart Home'r
    • 16.09.2016
    • 47

    #31
    Hi
    Anyplugin habe ich heute erst gefunden - habe es vorher mit der Anleitung versucht (unten) - aber Loxberry bringt immer die Fehlermeldung: Fehler 404 :-(

    Die Adresse /webfrontend/cgi/alexa.cgi gibt es hier leider nicht.


    wie gesagt über putty läuft es - habe ich dann so (ohne Erfolg ungesetzt) - ggf. erkennt jemand sofort den Fehler?

    als loxberry angemeldet - über nano eine alexa.cgi in /opt/loxberry/webfrontend/cgi angelegt - über filezilla auf 755 Dateiberechtigung geändert und folgenden text reinkopiert

    #!/bin/bash
    # webfrontend/cgi/./alexa.cgi
    #

    echo "Conent-type: text/plain
    "

    saveIFS=$IFS
    IFS='=&'
    p=($QUERY_STRING)
    IFS=$saveIFS

    ARG=""
    for ((i=0; i<${#p[@]}; i+=2)) ; do
    ARG="${ARG} -${p[$i]} ${p[$i+1]}"
    done
    /opt/loxberry/data/plugins/alexaremote/alexa_remote_control.sh $ARG

    dann im browser http://nutzerasswort@ip.0.0.0/opt/...hodot&r=s25111
    die Anleitung unten verweist zwar auf http://raspi/cgi-bin/alexa.cgi?d=Esszimmer&r=s2511 aber cgi-bin hab ich ja auf dem Loxberry nicht oder?

    Es kommt in allen Varianten immer die Die Adresse /webfrontend/cgi/alexa.cgi gibt es hier leider nicht. Fehlermeldung.....

    ist an dem Ansatz irgendwas komplett und vielleicht offensichtlich falsch?
    Daher auch die Frage ob ich das mit dem Anyplugin einfacher umsetzen kann......

    änderung in der cgi auf
    #!/bin/bash
    #/opt/loxberry/webfrontend/cgi/./alexa.cgi
    #
    bringt leider auch nix.....


    Gruß
    Tom

    https://www.alefo.de/alexa-allgemein...-t739-s50.html
    dizzy85 hat geschrieben: Mi 18. Okt 2017, 22:03
    Gibt es eine Möglichkeit die Scripte per IP-Befehl zu steuern....?

    Also quasi http://ip-des-raspberry/XXX/XXX ?




    Was läuft denn auf deinem Raspberry als Webserver? Du brauchst entweder ein PHP "Programm" oder ein CGI-Script (jede beliebige Sprache), die deine HTTP-GET Anforderung in Parameter für das Shellscript umsetzt.
    Soweit ich sehen kann gibt es für Loxone eine Serverkomponente auf dem Raspberry namens Loxberry. Da würdest das CGI-Script in webfrontends/cgi/ legen und ausführbar machen. Genaue Dokumentation gibt es hier: http://www.loxwiki.eu/pages/viewpage.ac ... getreemode

    Ein Beispiel BASH Script, was die Key/Value Paare einfach in Kommandozeilenargumente umbaut (ohne Fehlerprüfung) könnte z.B. so aussehen: Code: Alles auswählen
    #!/bin/bash # webfrontend/cgi/alexa.cgi # echo "Conent-type: text/plain " saveIFS=$IFS IFS='=&' p=($QUERY_STRING) IFS=$saveIFS ARG="" for ((i=0; i<${#p[@]}; i+=2)) ; do ARG="${ARG} -${p[$i]} ${p[$i+1]}" done <pfad/zu>/alexa_remote_control.sh $ARG
    Dann könntest du das Script im Browser per http://raspi/cgi-bin/alexa.cgi?d=Esszimmer&r=s2511 aufrufen.

    Allerdings sollte das Script Asynchron aufgerufen werden, da es bis zu zwei Sekunden dauern kann, bis die Amazon Anmeldung vollzogen ist.
    0 x


    Nach oben
    Zuletzt geändert von topoff; 15.11.2017, 23:12.

    Kommentar

    • topoff
      Smart Home'r
      • 16.09.2016
      • 47

      #32
      hoppla
      habe jetzt einfach 2 cgi dateien angelegt und statt der parameterübergabe die gewünschten parameter jeweils eingegeben

      alexa.cgi startet swr3
      alexa2.cgi beendet radio

      funktioniert soweit wenn ich ein [./] voranstelle ohne [./] funktioniert es nicht - also im Verzeichnis der cgi via putty "./alexa.cgi"

      -> wenn mir jetzt noch jemand nen tip geben könnten wie ich die cgi aus loxone oder per http triggern könnten wär ich am Ziel :-)

      CGI
      #!/bin/bash
      # opt/loxberry/webfrontend/cgi/alexa.cgi
      #

      echo "Conent-type: text/plain
      "

      saveIFS=$IFS
      IFS='=&'
      p=($QUERY_STRING)
      IFS=$saveIFS

      ARG=""
      for ((i=0; i<${#p[@]}; i+=2)) ; do
      ARG="${ARG} -${p[$i]} ${p[$i+1]}"
      done
      /opt/loxberry/data/plugins/alexaremote/alexa_remote_control.sh -d Echodot -r s25111

      Danke!

      Kommentar

      • Christian Fenzl
        Lebende Foren Legende
        • 31.08.2015
        • 11218

        #33
        Hi Tom,

        Vorweg: Bitte Sourcecode in Code-Tags geben (rechts das Formatierungs-A öffnen, auf die # klicken. Das Forum zerfleddert sonst deinen Code, dass er sowieso nicht mehr funktioniert.

        Ich weiß ehrlich gesagt nicht, ob dich der LoxBerry ein Bash-Script im CGI überhaupt ausführen lässt.

        Leg dein Script in den Ordner /opt/loxberry/webfrontend/cgi/alexaremote
        chmod nicht vergessen.
        Probier dann mit dem Webbrowser aus:
        Code:
        http://loxberry/admin/plugins/alexaremote/alexa.cgi
        Fehler von Apache siehst du mit
        Code:
        less /opt/loxberry/log/system/apache2/error.log
        Drück auf Shift-F, dann springst du zur letzten Zeile und kannst Ausgaben im Log mitverfolgen.

        Mit dem Any-Plugin wären die TCP-Befehle im Miniserver etwa:
        Code:
        MusikAn off command /data/plugins/alexaremote/alexa_remote_control.sh -d Echodot -r s25111
        MusikAus off command /data/plugins/alexaremote/alexa_remote_control.sh  -d ALL -e pause
        lg, Christian
        Zuletzt geändert von Christian Fenzl; 16.11.2017, 00:31.
        Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

        Kommentar

        • topoff
          Smart Home'r
          • 16.09.2016
          • 47

          #34


          Supergut!

          Du bekommst nen Orden von mir - hab's zwar noch nicht wirklich 100% richtig verstanden was ich da gemacht hab (die version mit der alexa.cgi im pluginsordner und dann einfach über http) -> aber es funktioniert!

          V I E L E N DANK

          werd's morgen mal versuchen nachzuvollziehen und und für andere Anfänger wie mich reproduzierbar machen!

          Gruß
          Tom

          Kommentar

          • Christian Fenzl
            Lebende Foren Legende
            • 31.08.2015
            • 11218

            #35
            Dein ARG-Konstrukt wäre dafür da, URL-Parameter zu parsen.
            Darunter gibst du die Optionen hardcoded mit, deswegen ist das ARGs auswerten eigentlich überflüssig.

            Weil du im alexaremote-Ordner „fremdgehst“, werden deine Scripts bei einem von dir ausgeführten Update des Plugins gelöscht. Deswegen am besten bald sichern, bevor du vergisst!
            Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

            Kommentar

            • topoff
              Smart Home'r
              • 16.09.2016
              • 47

              #36
              Hi
              nochmal Danke für die ganzen Infos und Erklärung - hab es jetzt einwandfrei über das Anyplugin hinbekommen - Supergut!

              Wie du schon sagst kann ich mir den Parser sparen da ich das Kommando hardcoded in Loxoe ausführe.
              Das Verzeichnis /data/plugins/alexaremote/ ist soweit OK oder hab ich da noch das Updateproblem?

              Kleines How To gibt's hier
              Hi ! Hier mal eine kurze Anleitung wie man seinen Amazon Echo über Loxberry Radio an und auss schalten kann! Installiert wie bei http://blog.loetzimmer.de/2017/10

              - denke mal der einen oder anderen wird das nützlich sein.
              Gruß und schönes Wochenende -Tom
              Zuletzt geändert von topoff; 18.11.2017, 09:44.

              Kommentar

              • Christian Fenzl
                Lebende Foren Legende
                • 31.08.2015
                • 11218

                #37
                Wenn es sich bei dem Verzeichnis um ein Verzeichnis (irgendeines) LoxBerry-Plugins handelt, wird es beim Update dieses LB-Plugins gelöscht. Wenn du das Verzeichnis selbst angelegt hast, dann passt es.
                Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                Kommentar

                • Christian Fenzl
                  Lebende Foren Legende
                  • 31.08.2015
                  • 11218

                  #38
                  Any-Plugin Version 0.1.4 STABLE
                  • Eigenes Verzeichnis für eigene Scripts (/opt/loxberry/data/plugins/anyplugin/commands), das bei Updates gesichert wird, und dessen Dateien bei einem Service-Neustart automatisch executable gesetzt wird.
                  • Wesentlich verbessertes Logging - was gibt dein Befehl aus, was wird an den MS gesendet, usw.
                  • Eine kurze Start-Verzögerung verbessert die Neustart-Stabilität, weil nach dem "Kill" der TCP-Port nicht gleich freigegeben wird.
                  Siehe Wiki-Artikel http://www.loxwiki.eu:80/x/7wBmAQ (u.a. "Eigene Scripte erstellen und ausführen").

                  Ich nenn es jetzt mal "STABLE", weil es bei mir seit einiger Zeit problemlos läuft.

                  lg, Christian
                  Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                  Kommentar

                  • Gast

                    #39
                    "Genial .. Vielen Dank .... Endlich Xiaomi Produkte ohne große umwege schalten und auslesen :-))"

                    Gibt's Hierfür Beispiele?
                    Ein HOWTO?

                    Würde gerne die Sensoren am Gateway nutzen.

                    Danke

                    Kommentar


                    • Chris8519
                      Chris8519 kommentierte
                      Kommentar bearbeiten
                      Das Any-plugin ist eher was für die wlan varianten der xiaomi produkte die kann man in verbindung mit python-miio sehr gut auslesen und Steuern. Versuche mich grade an einem plugin für die Sensoren... aber da haperts noch an allen seiten ....versuche mich da noch was schlau zu machen ...
                  • Gast

                    #40
                    Zitat von Trottel100
                    "Genial .. Vielen Dank .... Endlich Xiaomi Produkte ohne große umwege schalten und auslesen :-))"

                    Gibt's Hierfür Beispiele?
                    Ein HOWTO?

                    Würde gerne die Sensoren am Gateway nutzen.

                    Danke
                    Hallo,

                    das Gateway hängt doch am WLAN, kann man es dann nutzen?

                    Kommentar

                    • Gast

                      #41
                      Hallo zusammen ich bräuchte mal euere Hilfe.

                      ich habe folgendes vor über eine Load Cell an der Pi habe ich einen Python script welcher mir den Wert (Gramm) in eine txt Datei schreibt. in dieser Datei ist immer nur der aktuelle wert.

                      Jetzt möchte ich mit dem Any-Plugin diesen wert an die Loxone senden bzw. die Loxone in abholen lassen

                      ich habe unter /opt/loxberry/data/plugins/anyplugin/gaslevel.sh folgenden Script:

                      gaslevel udp command cat /eseg/data.txt

                      wenn ich nur
                      cat /eseg/data.txt im script
                      habe bekomme ich beim ausführen den richtigen wert via ssh.

                      Was habe ich nicht verstanden und vor allem wie bekomme ich das als virtueller Eingang eingerichtet?


                      vielen Dank für euere Hilfe

                      Kommentar

                      • svethi
                        Lebende Foren Legende
                        • 25.08.2015
                        • 6292

                        #42
                        Warum willst Du denn erst so einen Umweg gehen? Sende den Werte doch aus dem Python-Script direkt an den MiniServer. Schaue Dir hierzu das REST API an. Du kannst per http://<miniserver>/jdev/sps/io/<virtueller eingang>/<wert> direkt Werte schreiben.

                        Gruß Sven
                        Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

                        Kommentar

                        • Christian Fenzl
                          Lebende Foren Legende
                          • 31.08.2015
                          • 11218

                          #43
                          Wenn du das Python-Script selbst anpassen kannst, macht es natürlich Sinn, das, wie Sven sagt, gleich direkt zu senden.

                          Zum Any-Plugin, da verstehe ich aus deiner Beschreibung die jetzige Gegebenheit nicht.

                          Beim Any-Plugin führst du von Loxone aus einem TCP-Command aus (in einem virtuellen Ausgangs-Befehl), in dem (im Loxone-Befehl!) dein Befehl steht (gaslevel udp ....)
                          Ausgeführt wird dann
                          cat /eseg/data.txt
                          Der Output wird per UDP an Loxone zurückgeschickt.

                          Deswegen weiß ich gerade nicht, in welchem Zusammenhang das gaslevel.sh steht.

                          Oder soll gaslevel.sh vom Any-Plugin ausgeführt werden? Lege das Script in Data/Plugins/anyplugin/commands/.

                          Dann machst du in Loxone einen TCP-Ausgangsbefehl mit
                          gaslevel udp command ./gaslevel.sh
                          und bekommst per UDP dessen Output zurück.
                          Zuletzt geändert von Christian Fenzl; 28.04.2018, 20:24.
                          Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                          Kommentar

                          • Gast

                            #44
                            Super Dank habe es über einen Python Script mit socket hinbekommen.



                            Zuletzt geändert von Gast; 30.04.2018, 14:51.

                            Kommentar


                            • Christian Fenzl
                              Christian Fenzl kommentierte
                              Kommentar bearbeiten
                              Dafür solltest du besser ein neues Thema eröffnen, weil mit dem Plugin hat das jetzt ja nicht mehr viel zu tun :-)
                          • andy114425
                            Dumb Home'r
                            • 15.02.2017
                            • 22

                            #45
                            Hallo zusammen,

                            ich habe an meinem Loxberry einen USB -> RS232 Adapter hängen. An diesem habe ich dann den Omnitronic MCS1250 MK2, einen Multiroom Verstärker angeschlossen.
                            Nun möchte ich mittels des Any Plugin die entsprechenden Befehle an den Omnitronic senden.

                            Wenn ich mich per Putty auf dem Loxberry anmelde, kann ich den Omnitronic auch schon im Terminal mit folgendem Befehl zum Beispiel einschalten
                            Code:
                            echo -e -n "11PR01\r" > /dev/ttyUSB0
                            Leider funktioniert aber folgender Befehl im Virtuellen Ausgang des MS nicht
                            Code:
                            Zone1 off command echo -e -n "11PR01\r" > /dev/ttyUSB0
                            Im Log wird es auch klar... das carriage return (im Befehl \r), welches ich benötige um den RS232 Befehl abzuschließen, wird vom MS nicht korrekt gesendet, da es vom MS selbst als Befehlszeichen verstanden wird.

                            Gibt es eine Möglichkeit das \r irgendwie zu codieren, damit es vom MS nicht als Befehlszeichen interpretiert wird und vom Plugin übertragen werden kann?

                            Folgende Varianten hab ich unter anderem schon probiert:
                            Code:
                            Zone1 off command echo -e -n "<11PR01\'r'" > /dev/ttyUSB0
                            Zone1 off command echo -e -n "<11PR01\""r" > /dev/ttyUSB0
                            Zone1 off command echo -e -n "<11PR01\x0D" > /dev/ttyUSB0
                            Zone1 off command echo -e -n "<11PR01\"r"" > /dev/ttyUSB0
                            Bin für jede Anregung dankbar

                            Gruß Andreas

                            Kommentar

                            Lädt...