Plugin: Any-Plugin für LoxBerry

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Christian Fenzl
    Lebende Foren Legende
    • 31.08.2015
    • 11218

    #46
    Ich weiß es für den MS nicht sicher, aber öfter wird der Backslash selbst mit einem Backslash codiert:
    Code:
    \\r
    Alternativ legst du dir im data/Plugins/anyplugin/commands ein Script an, z.B.
    [CODE]
    /bin/bash
    echo -e -n ...
    [CODE]

    und rufst dein Script auf:
    ... off command ./script.sh

    Du kannst mit $1 auch einen Parameter abfragen, und somit direkt vom MS unterschiedliche Parameter mitgeben.

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

    Kommentar

    • andy114425
      Dumb Home'r
      • 15.02.2017
      • 22

      #47
      Danke Christian!

      Auf die Idee mit dem Script hätte ich eigentlich auch kommen können.

      Hab es nun folgendermaßen gelöst, falls es noch jemand anderem eventuell hilft:
      Code:
      #!/bin/bash
      var1="<"
      var2="$1"
      var3="\r"
      command=$var1$var2$var3
      echo -e $command > /dev/ttyUSB0
      Im Virtuellen Ausgang hab ich bei Befehl bei EIN nun folgendes eingetragen
      Code:
      Zone1 off command ./SerialSend.sh 11PR01
      Bei Befehl bei Aus das selbe, aber eben mit dem Argument 11PR00.

      Und endlich hab ich die Schalter in der Loxone App um die verschiedenen Zonen anzusteuern

      Gruß Andreas

      Kommentar

      • Gast

        #48
        Moin zusammen! Hab Any Plugin erfolgreich installiert - vielen Dank für Deine Arbeit, Christian! Eine Frage: Ich möchte mir per virtuellem Ausgangsbefehl die letzte verwendete Alexa / bzw das dazugehörige Echo Gerät zurückgeben lassen (mit dem loetzimmer Script). Der Ausgangsbefehl in der Config lautet:

        LastAlexa udp command /opt/loxberry/data/plugins/alexaremote/alexa_remote_control.sh -lastalexa

        Im UDP-Monitor seh ich die Datenpakete dann auch, siehe Screenshot. Aber wie zum Teufel muss ich den virtuellen UPD-Eingangsbefehl anlegen? Den virt. UDP-Eingang mit Port 9096 und IP vom Loxberry hab ich angelegt. Ist es immer noch so, dass ich am MS über UDP keinen Text empfangen / verarbeiten kann?

        Falls nicht, was genau muss ich bei Befehlserkennung angeben, damit den zurückgelieferten String vom Any Plugin weiterverarbeiten kann? Siehe Screenshot 2. Jemand einen Tipp? Google half mir leider nicht wirklich weiter.

        Kommentar

        • svethi
          Lebende Foren Legende
          • 25.08.2015
          • 6292

          #49
          Nein, Du kannst so keinen Text empfangen. Du müsstest den Text in einen virtuellen Texteingang „pushen“
          Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

          Kommentar

          • Gast

            #50
            Danke für den Hinweis! Hab mir nun anders beholfen, werte von dem Last Alexa Rückgabewert über UDP nur den ersten Buchstaben als Ascii-Wert aus....zB 75 für ein großes K (für den Echo, der "Kueche" heißt). Den Ascii-Wert (sind bei mir nur 3 verschiedene) übersetzt ein Status-Baustein dann in den entsprechenden vollständigen Echo-Namen zurück, klappt 1a. Die Rückgabe vom Logitech Media Server funktioniert genauso, da konnte ich etwas abkupfern ;-)

            Kommentar

            • Gast

              #51
              Hallo, ich beschäftige mich schon eine Weile mit dem Any Plugin (Danke für dieses Super Plugin) und habe nun meine Beschattung umgebaut sodass ich mit den GPIOs eine Relaisplatine ansteuere ( WiringPi), leider fällt mir häufig auf dass ich die Beschattung nicht bedienen kann..., nun habe ich einen Timer eingebaut der mir die Uhrzeit vom Loxberry abfragt (als überprüfung alle 30s) sodass ich sehen kann ab wann der LB. die TCP Befehle nicht mehr bekommt oder retour sendet. Nun sehe ich das der Mini Server die abgefragte Uhrzeit (die zur Überprüfung) so ca. 3 min. hinten ist wenn ich gerade die Beschattung nicht bedienen kann. Wenn ich ins Logfile vom Anyplugin sehe hat der LB. die Befehle nicht erhalten. Wie kann ich nun herausfinden ob der Miniserver nicht sendet oder der LB nicht empfängt? Ich hoffe das war soweit verständlich und das ich hier richtig bin mit dem Problem. Danke im Voraus für eure Hilfe Franz

              Kommentar

              • Christian Fenzl
                Lebende Foren Legende
                • 31.08.2015
                • 11218

                #52
                Hallo Franz,

                schau mal auf diese Seite: https://www.loxwiki.eu/display/LOXBE...d+Known+Issues

                Zum Debuggen kannst du das probieren, was unter "Neustart des Services" steht - d.h. der Dienst wird dann direkt an der Shell aufgerufen. Dort schreibe ich ziemlich viel hinaus, was gerade passiert.

                Das Any-Plugin ist grundsätzlich multi-connection-fähig, d.h. auch wenn du mehrere Verbindungen gleichzeitig aufbaust, sollte das kein Problem sein.
                Durchaus könnte es aber sein, dass dein WiringPi-Aufruf - wenn er mehrmach gleichzeitig passiert - irgendwas am Pi lockt.
                Aber das ist alles hypothetisch, weil du sagst, dass auch die Zeit nicht aktualisiert wird....

                Deswegen mal wie oben probieren, was die Ausgabe während eines solchen Hängers schreibt. Ein Fehler des Plugins will ich nicht grundsätzlich ausschließen.

                Auf Miniserver-Seite kannst du mit dem Monitor mitschauen, welche Befehle hinaus gehen und was per UDP zurück kommt.

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

                Kommentar

                • Gast

                  #53
                  Hallo,

                  danke für deine Antwort, also die Zeitabfrage hängt auch ohne das ich etwas anderes mit dem Anyplugin ausführe. Am UDP Monitor am Miniserver sehe ich dann auch nichts retour kommen. Jedoch das er die TCP befehle sendet.

                  Im Anyplugin Log File steht wenn ich das wie bei Neustart des Services in der Shell ausführe folgendes:

                  Code:
                  SEND via UDP to MS1: "ZeitabfrageM":23
                  
                  ####### New Connection ### 118-6-12 19:23:17 LOCAL TIME ######
                  Remote: 10.0.0.10
                  New guest connection accepted from 10.0.0.10.
                  No MS defined. Setting to msnr=1
                  Calling exec_command
                  exec_command Commandline: date +%S
                  1. Parameter (Name) is ZeitabfrageS
                  2. Parameter is udp (will return udp string)
                  3. Parameter is command (will run following command)
                  Miniserver used is 1 (Loxone)
                  Exit Code: 0
                  Output:
                  17
                  
                  SEND via UDP to MS1: "ZeitabfrageS":17
                  
                  ###################### Any-Plugin V0.1.4 ######################
                  Global variables from LoxBerry::System
                  Homedir: /opt/loxberry
                  Plugindir: anyplugin
                  YOUR commands: /opt/loxberry/data/plugins/anyplugin/commands
                  Restricted IPs (0):
                  Any-Plugin mode is UNSECURE
                  ERROR: It seems that this port is already occupied - Another instance running?
                  QUITTING with error: Invalid argument (Address already in use)
                  server waiting for tcp client connection on port 9095
                  Created udp out socket to 10.0.0.10 on port 9096
                  Ist der Port besetzt?
                  Lg Franz

                  Edit: Im Monitor der des Miniservers stand "TCP Closed" ich dachte zuerst das sei der ausgehende Befehl an den LB. Nun wird der aber nicht mehr aufgelistet und die Zeitabfrage funktioniert. Wo sehe ich den Ausgangsbefehl vom MS?
                  Zuletzt geändert von Gast; 12.07.2018, 21:28.

                  Kommentar

                  • Christian Fenzl
                    Lebende Foren Legende
                    • 31.08.2015
                    • 11218

                    #54
                    Hmmm... Leider kann ich das heute nicht mehr ausprobieren, und bin erst am Montag wieder an einem Rechner.

                    Und unmittelbar davor war kein anderer Command?
                    Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                    Kommentar

                    • Gast

                      #55
                      Es werden die Minuten, Sekunden und die Stunden einzeln abgefragt die 3 Commands wurden gesendet danach kam nichts mehr. (Das WU Plugin hat weiter an den MS gesendet Port 7000)
                      Was bedeutet TCP Closed im Debug Monitor des Miniservers? Diese Meldung kam jeweils 3x als die UDP Infos nicht mehr gesendet wurden.
                      Danke für deine Mühe.
                      LG Franz

                      Kommentar

                      • Gast

                        #56
                        Hallo, ich habe gerade vom UDP Monitor und den MS Debug Monitor Screenshots gemacht. Villeicht gibt das ja Aufschluß über die Ausfälle... (Alle 30 Sek werden die 3 Befehle für die Uhr vom MS gesendet.) Bei diesem Beispiel ist der um 20:30:50 nicht angekommen. LG Franz

                        Kommentar

                        • Christian Fenzl
                          Lebende Foren Legende
                          • 31.08.2015
                          • 11218

                          #57
                          Hallo Gast
                          Ich war zwischenzeitlich noch mit anderen Dingen beschäftigt, habe heute aber ein paar Tests durchgeführt.
                          Ich muss dazu sagen, dass ich die Tests nicht mit einem Miniserver durchgeführt habe - ich habe keine Testinstallation dafür, und das Haus muss (besonders wegen der besseren Hälfte) "online" bleiben.

                          Ich habe stattdessen schon länger ein eines Tool zum Empfangen der UDP-Kommunikation (udpreceiver.pl, liegt jetzt auch im Any-Repo).

                          Ich habe mit Schleifen Tests durchgeführt (z.B. 100 commands am Stück, auch gleichzeitig usw.), was auch immer komplett ok durchgelaufen ist.

                          Dennoch habe ich eine Verbesserung eingebaut, die vielleicht die Ursache der Hänger ist oder zumindest verbessert.
                          Bisher mussten neue Verbindungen warten, während ein Command ausgeführt wurde. Wenn ein Command läuft und länger braucht, könnten neue Verbindungen in ein Timeout gelaufen sein.

                          Mit der Änderung verwende ich fork, d.h. jeder gesendete Befehl und seine Antwort wird in einem eigenen Prozess gemacht, während der Hauptprozess wieder auf weitere Verbindungen wartet.
                          Damit werden schnell eingehende Shell-Befehle parallel abgearbeitet, nicht hintereinander.

                          Kannst du das mal probieren, indem du den aktuellen Master installierst: https://github.com/christianTF/LoxBe...ive/master.zip
                          Die Konfiguration sollte dabei erhalten bleiben.

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

                          Kommentar

                          • Gast

                            #58
                            Hallo Christian, danke das du das getestet und umgebaut hast, ich habe gerade das Plugin bei mir eingespielt und teste das nun, in den ersten 5 min. Gab es keine Ausfälle, jedoch ist mir aufgefallen das wenn ich auf die Plugin Einstellungen gehe das nun bereits 115 instanzen laufen und es werden immer mehr. Kann das zu einem Problem werden? Danke nochmals Franz

                            Kommentar


                            • Christian Fenzl
                              Christian Fenzl kommentierte
                              Kommentar bearbeiten
                              Jep, das wird ein Problem. Ich schau nochmal!
                          • Christian Fenzl
                            Lebende Foren Legende
                            • 31.08.2015
                            • 11218

                            #59
                            Gast Hi Franz, kannst du bitte nochmal probieren: https://github.com/christianTF/LoxBe...ive/master.zip

                            Ich musste noch ein paar Zombies erledigen
                            Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                            Kommentar

                            • Gast

                              #60
                              Hallo,

                              hab soeben das neue Plugin Installiert, jetzt läuft es ca. 60 min. und derzeit stehen 2 Instanzen an. Ich beobachte mal aber ich denke das es so ohne Probleme funktioniert! Danke Christian!

                              Ich berichte in den kommenden Tagen hier obs nochmal Probleme gab.

                              Kommentar

                              Lädt...