Ankündigung

Einklappen
Keine Ankündigung bisher.

Serielle Kommandos via Openhab / Raspberry pi 2 senden

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

    #16
    Hallo udo1toni,

    vielen Dank für Deine Ausführliche Beschreibung, ich habe die Syntax so übernommen, wie von dir geschrieben.
    Konnte aber keinen String an der Seriellen Schnittstelle des Raspberry abgreifen.
    Ich habe zum Testen der Seriellen Schnittstelle des Raspberry das Programm Docklight benutzt.

    Zum Testen habe ich von der Konsole des Raspberry siehe Bild 1 einige Befehle zur Schnittstelle gesendet.

    Diese werden vom Programm Docklight Bild 2 richtig erkannt.

    Somit konnte ich zumindest feststellen dass die Serielle Schnittstelle des Raspberry richtig arbeitet.

    Müssen vielleicht noch irgendwelche parameter in der Konfiguration openHAB eingestellt werden?

    Besten Dank vorab

    Gruß savana


    Zuletzt geändert von savana; 23.02.2016, 23:30.

    Kommentar


      #17

      Sorry, anbei die fehlenden Bilder

      Gruß savana
      Bild1.JPG
      Bild 1


      Bild2.JPG
      Bild 2














      Zuletzt geändert von savana; 23.02.2016, 23:30.

      Kommentar


        #18
        Ich hab die ganze Zeit nicht kapiert, dass Du vom Raspberry sendest ...

        Du kannst ttyAMA0 von openHAB aus nur verwenden, wenn Du diese Schnittstelle beim Start von openHAB mit übergibst. Siehe >>hier<< am Ende des Textes Note 2 (ist leider nicht extra verlinkt) Und dann muss natürlich das Binding mit /dev/ttyAMA0 konfiguriert werden


        Zuletzt geändert von udo1toni; 24.02.2016, 12:27.

        Kommentar


          #19
          Hallo udo1toni,

          vielen Dank für Deine Antwort.
          Leider bekomme ich immer noch keinen string gesendet.

          Gruß savana


          in .items habe ich die Syntax angepasst

          Code:
          String SocketSerial { serial="/dev/ttyAMA0@9600" }
          Switch Steckdose "Steckdose [%s]" (Steckdosenleiste)
          In der start.sh habe ich diese Syntax eingepflegt siehe unten,den Raspberry habe ich anschließend neugestartet. -Dgnu.io.rxtx.SerialPorts=/dev/ttyAMA0 \
          Code:
          #!/bin/sh
          
          cd `dirname $0`
          
          # set path to eclipse folder. If local folder, use '.'; otherwise, use /path/to/eclipse/
          eclipsehome="server";
          
          # set ports for HTTP(S) server
          HTTP_PORT=8080
          HTTPS_PORT=8443
          
          # get path to equinox jar inside $eclipsehome folder
          cp=$(find $eclipsehome -name "org.eclipse.equinox.launcher_*.jar" | sort | tail -1);
          
          echo Launching the openHAB runtime...
          java \
              [I][B]-Dgnu.io.rxtx.SerialPorts=/dev/ttyAMA0 \[/B][/I]
              -Dosgi.clean=true \
              -Declipse.ignoreApp=true \
              -Dosgi.noShutdown=true  \
              -Djetty.port=$HTTP_PORT  \
              -Djetty.port.ssl=$HTTPS_PORT \
              -Djetty.home=.  \
              -Dlogback.configurationFile=configurations/logback.xml \
              -Dfelix.fileinstall.dir=addons -Dfelix.fileinstall.filter=.*\\.jar \
              -Djava.library.path=lib \
              -Djava.security.auth.login.config=./etc/login.conf \
              -Dorg.quartz.properties=./etc/quartz.properties \
              -Dequinox.ds.block_timeout=240000 \
              -Dequinox.scr.waitTimeOnBlock=60000 \
              -Dfelix.fileinstall.active.level=4 \
              -Djava.awt.headless=true \
              -jar $cp $* \
              -console
          Zuletzt geändert von savana; 24.02.2016, 14:06.

          Kommentar


            #20
            Und Du startest openHAB auch mit der start.sh? Falls openHAB automatisch beim booten startet, musst Du die Ergänzung des Startparameters natürlich an der passenden Stelle vornehmen (wenn Du openHAB per apt-get installiert hast, sollte unter jessie ein systemd-script für den Start verantwortlich sein).
            Da muss ich aber selbst erstmal schauen, wo das liegt...

            Kommentar


              #21
              Hallo udo1toni,

              openHAB startet automatisch und wurde via Anleitung durchgeführt siehe URL https://openhabdoc.readthedocs.org/de/latest/Autostart/ . Ich nehme an, das durch dass automatische starten von openHAB die start.sh mit ausgeführt wird, sicher bin ich mir nicht
              openHAB wurde nicht via apt-get installiert.

              Danke und Gruß savana







              Kommentar


                #22
                Hallo udo1toni,

                zur Information, die start.sh wird in meiner Konstellation nicht automatisch mitgestartet.

                Gruß savana

                Kommentar


                  #23
                  Ja, wenn Du ein init-Script verwendest, musst Du den Aufruf eben in diesem init-Script ergänzen - unterhalb
                  Code:
                  # Aktionen  
                   case "$1" in
                      start)
                  gibt es eine Zeile, die so anfängt:
                  Code:
                    
                   java -Dosgi.clean=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true
                  da musst Du den zusätzlichen Parameter ergänzen.

                  Ansonsten kann ich nur empfehlen, gerade wenn Du eh erst anfängst, lieber die Installation über apt-get zu nutzen (wird >>im Wiki<< genau beschrieben) Das hat auch den Charme, dass openHAB automatisch mit auf den aktuellen Stand gehoben wird, wenn Du das System per
                  sudo apt-get update && sudo apt-get -y dist-upgrade aktualisierst. Weiterhin nutzt Du dann auch automatisch die aktuellen und für Deine Distribution richtigen Startscripte - unter Jessie sollte systemd Verwendung finden, nicht SysVinit.

                  Kommentar


                    #24
                    Hallo udo1toni,

                    vielen Dank für die Informationen,

                    kannst Du mir bitte noch den Parameter schreiben den ich einfügen soll, siehe unten im Code, bzw. wo genau soll ich in diesem Script den parameter einfügen.

                    Besten Dank und Gruß savana

                    Code:
                    # Aktionen
                    case "$1" in
                        start)
                            if [ -f /var/run/openhab.pid ]; then
                                    echo "openhab seems to run allready. If not, please delete /var/run/openhab.pid"
                            else
                    
                                    cd $OPENHABPATH
                                    # get path to equinox jar inside $OPENHABPATH folder
                                    cp=$(find ./server -name "org.eclipse.equinox.launcher_*.jar" | sort | tail -1);
                    
                                    echo Launching the openHAB runtime..
                                    java -Dosgi.clean=true -Declipse.ignoreApp=true -Dosgi.noShutdown=true -Djetty.port=$HTTP_PORT -Djetty.port.ssl=$HTTP$
                    
                                    echo $! > /var/run/openhab.pid
                            fi
                            ;;
                        stop)
                            echo "stopping openhab"
                            kill `cat /var/run/openhab.pid`
                            rm /var/run/openhab.pid
                            ;;
                        restart)
                            echo "does not work"
                            ;;
                    esac
                    
                    exit 0
                    Zuletzt geändert von savana; 25.02.2016, 15:00.

                    Kommentar


                      #25
                      Naja, das hier:
                      Code:
                      -Dgnu.io.rxtx.SerialPorts=/dev/ttyAMA0
                      muss da rein
                      Code:
                      java -Dosgi.clean=true
                      und zwar nach dem wort java, so dass die Zeile dann am Anfang so aussieht:
                      Code:
                      java -Dgnu.io.rxtx.SerialPorts=/dev/ttyAMA0 -Dosgi.clean=true
                      Die Zeile ist natürlich noch länger, viel länger (in Deinem Posting ist nur ein kleiner Teil dieser Zeile sichtbar. Das $ ganz rechts bedeutet, dass die Zeile nicht vollständig angezeigt wird. Falls Bei Dir die Zeile also mit
                      Code:
                      -Djetty.port.ssl=$HTTP$
                      endet, musst Du bitte noch den Rest der Zeile aus dem von Dir verlinkten Script anfügen.

                      Kommentar


                        #26
                        Hallo udo1toni,

                        vielen Dank für deine Informationen, ich werde das gleich mal testen.

                        Danke und Gruß savana

                        Kommentar


                          #27
                          Hallo udo1toni,

                          es funktioniert, der String wird gesendet, vielen Dank für die super Unterstützung.
                          An den String möchte ich noch ein carriage return mitsenden, laut Ascii Tabelle ist das die 13.
                          Als Beispiel “test“,13 hat bei mir nicht funktioniert.
                          Wie müsste ich hierbei vorgehen.

                          Danke und Gruß savana

                          Kommentar


                            #28
                            Hallo an Alle,

                            habe es rausgefunden wie ich den carriage return einpflege, siehe unten in rot geschrieben.
                            Anbei noch ein Bild wie es Docklight empfängt.

                            Gruß savana

                            Code:
                            rule "Event2"
                            when
                                Item Start2 changed
                            then
                                if(Start2.state==ON)
                                {
                                    SocketSerial.sendCommand("Start2[B] [COLOR=#FF0000]\r[/COLOR][/B]")
                                }
                                
                                else if(Start2.state==OFF)
                                {
                                    SocketSerial.sendCommand("Start2 off[COLOR=#FF0000][B] \r[/B][/COLOR]")
                                }
                            end

                            Bild.JPG






                            Angehängte Dateien

                            Kommentar

                            Lädt...
                            X