NEXTION 4 Lox

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • goldbrunner
    Smart Home'r
    • 24.07.2017
    • 45

    #31
    Servus Zusammen,

    hab das ganze mit dem ESP8266 mal nachgebaut. HTTP-Seite läuft ... ;-)
    Gute Arbeit!

    Iksi
    ​​​​​​​Nur noch ein Thema zu Loxone selbst und den Virtuellen EIn-/Ausgängen. Hast du einen Screenschot als Beispiel. Ich komm mit deiner Beschreibung im Loxwiki nicht ganz klar...
    Vielleicht seh ich auch den Wald vor lauter Bäumen nicht....

    Danke
    daGoide
    Zuletzt geändert von goldbrunner; 21.03.2019, 22:29.
    Smarthome: Miniserver Gen. 1, Extension, Relais-Extension, Tree-Extension, 1-Wire-Extension, Tree BWM, KNX (Aktoren, DImmer und DI's), 1-Home (Alexa) (im Test)
    Technik: Loxberry, Froggit WH2600, Novelan WP, Marantec-Torantrieb, Eigenbau Türsprechstelle mit ieGeek-cam + Touch-Display

    Kommentar

    • Iksi
      Lox Guru
      • 27.08.2015
      • 1111

      #32
      Du meinst in der LoxConfig ?
      Du erstellst einen "Virtuellen Ausgang", dort trägst Du unter Adresse http:// und dann die IP deines ESP8266 ein. "Verbindung bei beenden schließen" sollte angehakt sein.
      Dann erstellst Du einen "Virtueller Ausgang Befehl" und trägst dort z.B. "/setnextion?command=id=t0.txt=;str=\v"
      Das bedeutet:
      t0 = das Objekt in deinem Nextion, in diesem Fall ein Textfeld
      .txt = Die Eigenschaft des Objektes welches du beschreiben willst, in diesem Fall der Text des Texfeldes
      str = bedeutet dass der gesendete Wert als String an das Nextion gegeben wird. Es gibt Eigenschaften die erwarten einen String, also einen Text, und andere Erwarten eine Zahl, je nachdem was du beschreiben willst.
      \v = anstelle des \v setzt Loxone den Eingangswert des Virtuellen Ausganges, also den Wert den Du dort drauf legst.

      Ich hoffe das hilft DIr.
      Zuletzt geändert von Iksi; 27.03.2019, 21:31.

      Kommentar

      • goldbrunner
        Smart Home'r
        • 24.07.2017
        • 45

        #33
        Super Beschreibung, genau das wars bzgl Ausgang.

        Läuft das Ganze anders rum auch schon. Also vom Nextion -> Loxone in einen Eingang?

        Danke
        Smarthome: Miniserver Gen. 1, Extension, Relais-Extension, Tree-Extension, 1-Wire-Extension, Tree BWM, KNX (Aktoren, DImmer und DI's), 1-Home (Alexa) (im Test)
        Technik: Loxberry, Froggit WH2600, Novelan WP, Marantec-Torantrieb, Eigenbau Türsprechstelle mit ieGeek-cam + Touch-Display

        Kommentar

        • Iksi
          Lox Guru
          • 27.08.2015
          • 1111

          #34
          Ja das geht auch.
          Dafür musst Du im Nextion Display z.B. einen Button anlegen und dann dort unter Touch Press oder Touch Release Event einen entsprechenden Befehl eintragen:
          z.B. get set Licht Wohnzimmer/AI1/Impuls
          Zur Erklärung:
          get sagt dem Nextion Display es soll was per Seriell an den ESP senden
          set sagt dann dem ESP er muss einen Befehl setzen, führt also einen HTTP Aufruf auf
          Licht Wohnzimmer/AI1/Impuls wäre bei mir zuhause meine Lichtsteuerung im Wohnzimmer ein Impuls auf AI1

          Das ganze wäre dann als Webservices gedacht, hierbei musst Du gar keine HTTP Eingänge extra erstellen sondern gehst direkt über die Webservice Schnittstelle vom Miniserver und hast somit Zugriff auf so ziemlich alle Funktionen.
          Dafür musst du aber in der cl_conf.txt die url eingetragen haben:
          url: hier muss die URL eures Miniserver im Format http://Benutzer:Passwort@AdresseMiniserver/dev/sps/io/

          Wenn Du über virtuelle HTTP Eingänge gehen willst dann müsstest Du in der cl_conf.txt einfach nur die Adresse in der Form
          http://MiniServerIP:Port/ angeben.
          Dann als Befehl im Nextion z.B. get set DeinBefehl
          Dann halt im MS einen virtuellen HTTP Eingang erstellen und die Befehlserkennung entsprechend DeinemBefehl eintragen.

          Ich glaube ich muss mal das Wiki erweitern, dachte dass ich das da schon alles beschrieben hätte....

          Kommentar

          • goldbrunner
            Smart Home'r
            • 24.07.2017
            • 45

            #35
            Top, danke, jetzt wirds mir klarer. Hatte das mit den Webservices so nicht gekannt - mann lernt immer dazu ;-)
            Habs mit Virtuellen Eingängen probiert, klappt toll vom iexplorer... (aber nur mit Port-Angabe)

            Bin grad noch am rumprobieren mitm nextion, noch will es nicht so wie ich will... "get set"-Befehle compiliert er mir leider nicht unter Touch Press oder Touch Release Event.
            Hmm, gibt immer eine Fehlermeldung. Ich denk ich hab den Fehler gefunden...

            Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Unbenannt.JPG Ansichten: 0 Größe: 26,0 KB ID: 195111

            Probiers morgen weiter.

            Gruß
            Da Goide

            ps... "Licht Wohnzimmer" ist dann in dem Fall die Bezeichnung für deinen Loxone-Baustein, richtig verstanden?
            Zuletzt geändert von goldbrunner; 23.03.2019, 00:06.
            Smarthome: Miniserver Gen. 1, Extension, Relais-Extension, Tree-Extension, 1-Wire-Extension, Tree BWM, KNX (Aktoren, DImmer und DI's), 1-Home (Alexa) (im Test)
            Technik: Loxberry, Froggit WH2600, Novelan WP, Marantec-Torantrieb, Eigenbau Türsprechstelle mit ieGeek-cam + Touch-Display

            Kommentar

            • Iksi
              Lox Guru
              • 27.08.2015
              • 1111

              #36
              Oh, sorry, hatte mich vertan.
              Es muss immer get "set WOHNZIMMER Licht" sein, also mit Anführungszeichen....

              Gesendet von meinem COL-L29 mit Tapatalk

              Kommentar

              • goldbrunner
                Smart Home'r
                • 24.07.2017
                • 45

                #37
                Servus Iksi,

                komm irgend wie nicht weiter... vielleicht hast oder einer der anderen hier im Forum noch einen Hinweis...

                Mit den Websockets hab ich mich soweit eingelesen, als dass ich die via Browser die Licht und Virtuelle Eingänge schalten kann.
                Allerdings bekomm ich weder Befehle über die Buttos aus dem Nextion raus, noch ins Nextion rein - Ausgenommen deine WLAN-Empfangsanzeige.


                Aktueller Stand:
                ESP ist via http erreichbar und aktiviert das WLAN-Symbol auf der ersten Seite im Nextion.
                Via Telnet auf den ESP (192.168.0.16) Port 22 klappt mittlerweile, aber es kommt auch nur das unten aus dem Nachtrag an...

                cl_conf -> http://Huber:Mayer@192.168.0.250:83/dev/sps/io/; (BN & KW nur Beispiel)

                Button im Nextion
                a) get "set LichtsteuerungAZ/On"
                b) get "set VI14/15"

                Im Browser läuft die Combo: http://Huber:Mayer@192.168.0.250:83/...steuerungAZ/On
                Ausm Nextion raus nicht...


                --------------------
                Nachtrag: Der Serielle Monitor des Arduino IDE liefert noch folgendes:
                00:05:58.413 -> handleFileRead: /SetNextion
                00:05:58.585 -> File Not Found: /SetNextion
                Zuletzt geändert von goldbrunner; 26.03.2019, 00:24.
                Smarthome: Miniserver Gen. 1, Extension, Relais-Extension, Tree-Extension, 1-Wire-Extension, Tree BWM, KNX (Aktoren, DImmer und DI's), 1-Home (Alexa) (im Test)
                Technik: Loxberry, Froggit WH2600, Novelan WP, Marantec-Torantrieb, Eigenbau Türsprechstelle mit ieGeek-cam + Touch-Display

                Kommentar

                • Iksi
                  Lox Guru
                  • 27.08.2015
                  • 1111

                  #38
                  Gibt der serielle Monitor denn irgendwas raus wenn du einen button im NEXTION drückst? Wenn nicht scheinen die Daten vom NEXTION nicht am ESP anzukommen, also evtl. Falsch verkabelt?

                  Bzgl. Daten von Loxone zu NEXTION: Versuch mal das SetNextion mit kleinem s oder sonst auch noch mit kleinem n, vielleicht habe ich mich da vertan.... Zumindest lässt die Meldung über den seriellen Monitor so was vermuten...
                  Kann es leider nicht nachsehen, komme erst morgen abend irgendwann nach hause...

                  Piste sonst mal den kompletten Befehl den du von Loxone aus schicken willst

                  Gesendet von meinem COL-L29 mit Tapatalk

                  Kommentar

                  • goldbrunner
                    Smart Home'r
                    • 24.07.2017
                    • 45

                    #39
                    Servus,
                    Nextion meldet garnichts auf der seriellen. Nur die Fehlermeldung kommt nochmals.
                    Verkabelung sollte passen, da der ESP das WLAN Logo nach dem hochfahren einblendet.

                    Ich teste das mit der Groß- und Kleinschreibung nochmal.
                    Smarthome: Miniserver Gen. 1, Extension, Relais-Extension, Tree-Extension, 1-Wire-Extension, Tree BWM, KNX (Aktoren, DImmer und DI's), 1-Home (Alexa) (im Test)
                    Technik: Loxberry, Froggit WH2600, Novelan WP, Marantec-Torantrieb, Eigenbau Türsprechstelle mit ieGeek-cam + Touch-Display

                    Kommentar


                    • Iksi
                      Iksi kommentierte
                      Kommentar bearbeiten
                      Also ich habe es gerade mal nachgesehen, das setnextion muss komplett klein geschrieben sein! Habe das auch im Wiki angepasst.

                      Da Du wohl der erste bist der das ganze Nutzt fallen bei Dir auch alle Fehler auf ;-)

                    • goldbrunner
                      goldbrunner kommentierte
                      Kommentar bearbeiten
                      Servus!
                      Hauptsache es fliegt irgendwann 😉.
                      Also mit „/set_nextion?command=„ - klein und unterstrich landet schon mal was im Telnet.
                      Aber irgendwas scheint im Code (if Abfrage oder Auswertung des command) noch nicht zu passen. Geht um den Teil: id=b0.txt=;str=\v
                      Mit dem „;“ als Trennzeichen wird die id richtig erkannt aber angegeben dass ein str oder val fehlt. Mit z.b. einem „&“ stattdessen kommt der Wert im Telnet richtig an, aber als id nimmt er den kompletten Eintrag...
                      Hab gestern auf die Schnelle keine Code-Doku gefunden... wo find ich da was? Ist glaub ich in C....
                  • Iksi
                    Lox Guru
                    • 27.08.2015
                    • 1111

                    #40
                    Wenn das WLAN Logo kommt heißt das aber nur das Daten von esp zu NEXTION gehen. Für die andere Richtung ist ne andere Ader zuständig. Wenn die falsch angeschlossen ist geht es nicht...

                    Gesendet von meinem COL-L29 mit Tapatalk

                    Kommentar

                    • Iksi
                      Lox Guru
                      • 27.08.2015
                      • 1111

                      #41
                      Zitat von goldbrunner
                      Also mit „/set_nextion?command=„ - klein und unterstrich landet schon mal was im Telnet.
                      Poste doch mal bitte das gesamte command mit dem Du es probierst und dann den Auszug aus dem Telnet oder Serial Monitor.

                      Kommentar


                      • goldbrunner
                        goldbrunner kommentierte
                        Kommentar bearbeiten
                        Hi,

                        das ist :
                        Code:
                        http://192.168.0.16/set_nextion?command=id=t0.txt=;str=5

                        Telnet:
                        Code:
                        Nextion command = id=t0.txt=
                        Missing Argument: str or str_val or val

                        Ich würd vermuten der "getParam" findet den ";" hinter dem str nicht bzw nimmt den hinter der "id="...
                        Code:
                              str = getParam(command, "str=", ";");

                        Nehm ich den ";" im http:// raus - passt wie vermutet die id nicht mehr, allerdings erkennt er dann die 5 für den str.
                        und schickt folgendes ans nextion:
                        Code:
                               t0.txt=str=5"5"
                        spiel grad ein wenig mitm code, mal kucken ...

                        Gruß
                        Zuletzt geändert von goldbrunner; 29.03.2019, 23:12.
                    • goldbrunner
                      Smart Home'r
                      • 24.07.2017
                      • 45

                      #42
                      Servus Iksi,

                      nun klappt das senden. Die Variablen str, str_val und val haben keine Daten erfasst. Warum, k.a. dafür sind meine Programmierkenntnisse zu schlecht.

                      Habs aber nun hinbekommen. Die folgenden Variablen habe ich anders definiert:

                      Code:
                        str = server.arg("str" );
                        str_val = server.arg("str_val" );
                        val = server.arg("val" );
                        str_dec = server.arg("str_dec" );
                      
                        id = getParam(command, "id=", "&");
                      nun können mit folgendem Befehl die Daten zum Nextion übertragen werden:

                      08154711 als Beispiel für den zu übertragenen Wert.
                      ... /set_nextion?command=id=t0.txt=&str=08154711
                      [CODE]192.168.0.16/set_nextion?command=id=t0.txt=&str=08154711/CODE]


                      Auszug aus meiner Telnet-Erweiterung:
                      Code:
                      Inhalte_Variablen:
                      id  t0.txt=
                      str 08154711
                      str_val
                      val
                      str_dec
                      Uebergabe-Wert:
                      t0.txt="08154711"
                      Zuletzt geändert von goldbrunner; 30.03.2019, 00:00. Grund: der Link will nicht
                      Smarthome: Miniserver Gen. 1, Extension, Relais-Extension, Tree-Extension, 1-Wire-Extension, Tree BWM, KNX (Aktoren, DImmer und DI's), 1-Home (Alexa) (im Test)
                      Technik: Loxberry, Froggit WH2600, Novelan WP, Marantec-Torantrieb, Eigenbau Türsprechstelle mit ieGeek-cam + Touch-Display

                      Kommentar

                      • goldbrunner
                        Smart Home'r
                        • 24.07.2017
                        • 45

                        #43
                        Also...

                        Senden an Loxone klappt auch und zwar z.B. mit

                        get "SET LichtsteuerungAZ/On"
                        get "SET VI14/15"
                        Smarthome: Miniserver Gen. 1, Extension, Relais-Extension, Tree-Extension, 1-Wire-Extension, Tree BWM, KNX (Aktoren, DImmer und DI's), 1-Home (Alexa) (im Test)
                        Technik: Loxberry, Froggit WH2600, Novelan WP, Marantec-Torantrieb, Eigenbau Türsprechstelle mit ieGeek-cam + Touch-Display

                        Kommentar

                        • Iksi
                          Lox Guru
                          • 27.08.2015
                          • 1111

                          #44


                          Zitat von goldbrunner
                          Code:
                            str = server.arg("str" );
                            str_val = server.arg("str_val" );
                            val = server.arg("val" );
                            str_dec = server.arg("str_dec" );
                          
                            id = getParam(command, "id=", "&");
                          Ich habe das an sich extra nicht über die Eigentlichen Server Argumente gemacht, da ich die Funktion auch über andere Wege Aufrufe bzw. Aufrufen will. Z. B. Wollte ich das ganze noch per UDP implementieren, da gibt es die Argumente dann ja so nicht. Zudem kann die Funktion auch aus DEM nextion aufgerufen werden, indem Daten von Loxone abgefragt werden und dann zurück an das Display gegeben werden, auch da fehlen dann die Argumente....

                          Es geht aber definitiv auch mit dem ; als Trennung....


                          Gesendet von meinem COL-L29 mit Tapatalk

                          Kommentar

                          • Labmaster
                            Lox Guru
                            • 20.01.2017
                            • 2517

                            #45
                            Ich bin gerade auch dabei eine Lösung für das Nextion Display meiner Intercom Außenstation zu finden. ( https://www.loxforum.com/forum/mein-...566#post137566 )

                            Da ich WLan für stationäre Anwendungen gar nicht mag, muss es natürlich (wie in diesem Thread auch schon mal angesprochen) eine Kabellösung sein.
                            Ich bin nun auf eine recht einfache und praktikabel Lösung gekommen.
                            Ich habe nun einfach einen USR-TCP232-302 LAN/RS232 Konverter gekauft und an diesen das Nextion Display angeschlossen.

                            Zum einen kann ich somit direkt über Netzwerk mit dem Nextion Editor Änderungen auf das Display übertragen und Dinge testen (Virtueller Com Port) und zum anderen kann ich über den Miniserver z.B. mit relativ einfacher PicoC Programmierung Daten zum Display senden und auch welche vom Display erhalten. (TCP Socket Streams)

                            Ich bin da nun seit ein paar Tagen am Testen und relativ begeistert wie zuverlässig und einfach das ganze funktioniert.

                            Der einzige Nachteil ist, dass der USR-TCP232-302 LAN/RS232 Konverter ein echtes RS232 Signal am Ausgang ausgibt, das Nextion Display jedoch mit 3.3V Pegel arbeitet.
                            Man hätte nun einfach einen 3.3V zu RS232 Pegel Konverter dazwischen schalten können, da jedoch intern im USR-TCP232-302 LAN/RS232 Konverter eh mit 3.3V gearbeitet wird, war für mich die einfachere Lösung einfach das Pegelkonverter IC dort raus zu löten und dort Eingang mit Ausgang zu verbinden. Somit kommen nun extern an der seriellen Buchse 3.3V Pegel raus welche ich direkt mit dem Nextion Display verbinden kann.

                            Ich habe außerdem keine ordentlichen 5V Versorgungsspannung bei der Intercom zur Verfügung, weshalb ich dann auch gleich noch einen DC/DC Konverter mit 5V Ausgangsspannung ins Gehäuse des USR-TCP232-302 LAN/RS232 Konverter eingebaut habe, so dass dieser nun mit irgendeiner Spannung zwischen 28V und 6V versorgt werden kann. Nun ist es möglich einfache LAN Injektor Kabel zum Einspeisen und Auskoppelt von 24V zu verwenden. Bei 5V wäre der Spannungsverlust über die lange Zuleitung und die Störanfälligkeit zu groß gewesen.

                            Statt dem umlöten des USR-TCP232-302 Konverters könnte man natürlich auch einfach extern wieder von RS232 Pegel zurück konvertieren. z.B. mit so etwas hier:

                            Wo man die 5V her bekommt kann auch sehr unterschiedlich sein, ich mag es halt gerne kompakt ;-)

                            Hier mal mein PicoC Test Code:

                            AI1 : ist Logikeingang um Socket zu öffnen/Schließen. So lange high=socket offen, low= socket geschlossen
                            AI2 : bei steigender Flanke, sendet einen Reset Befehl zum Display
                            TQ1 : so lange Socket offen ist Ausgabe der Daten die vom Display kommen


                            Code:
                            #define BUFF_SIZE 400
                            #define RD_BLOCK_SIZE 64
                            
                            float f1,f2,f1old,f2old;
                            int nEvents;
                            int c;
                            
                            char szBuffer[BUFF_SIZE];
                            char szTmpBuffer[RD_BLOCK_SIZE];
                            int nCnt;
                            int nBytesReceived;
                            unsigned char streamState = 0;
                            unsigned char f2State = 0;
                            unsigned char firstStart = 1;
                            
                            f1=0;
                            f2=0;
                            f1old=f1+1;
                            f2old=0;
                            
                            char restCMD[] = "rest\xff\xff\xff";
                            
                            
                            while(true){
                            
                            nEvents = getinputevent();
                            if ((nEvents & 0x18)||(firstStart))
                            {
                            firstStart=0;
                            f1old=f1;
                            f2old=f2;
                            f1 = getinput(0);
                            f2 = getinput(1);
                            
                            if (f1!=f1old)
                            {
                            if (f1==1)
                            {
                            STREAM* pTcpStream = stream_create("/dev/tcp/192.168.2.162/20108",0,0); // create tcp stream to USR Konverter (configured as TCP Server on Port 20108)
                            nBytesReceived = 0;
                            nCnt = 0;
                            streamState=1;
                            }
                            else if (f1==0)
                            {
                            streamState=0;
                            setoutputtext(0,"");
                            stream_close(pTcpStream);
                            }
                            }
                            if (f2!=f2old)
                            {
                            if (f2==1)
                            {
                            f2State=1;
                            }
                            else if (f2==0)
                            {
                            }
                            }
                            
                            }
                            
                            
                            
                            if (streamState==1){
                            
                            if (f2State==1)
                            {
                            f2State=0;
                            stream_write(pTcpStream,restCMD,strlen(restCMD)); // write to output buffer
                            stream_flush(pTcpStream); // flush output buffer
                            }
                            
                            // read stream
                            do
                            {
                            nCnt = stream_read(pTcpStream,szTmpBuffer,RD_BLOCK_SIZE,1 00);
                            if (nCnt + nBytesReceived > BUFF_SIZE)
                            {
                            nBytesReceived = -1;
                            streamState=0;
                            stream_close(pTcpStream);
                            break; //too large
                            }
                            else
                            {
                            if(nCnt > 0)
                            {
                            strncpy((char*)szBuffer + nBytesReceived, szTmpBuffer, nCnt);
                            nBytesReceived += nCnt;
                            }
                            }
                            }
                            while (nCnt > 0);
                            
                            if (nBytesReceived > 0)
                            {
                            printf("Bytes received: %d",nBytesReceived);
                            nBytesReceived = 0;
                            nCnt = 0;
                            setoutputtext(0,szBuffer);
                            printf(szBuffer);
                            }
                            
                            }
                            sleep(100);
                            
                            } // while end


                            Ich möchte das nur so als alternative Anregung verstanden wissen.
                            Wenn jemand genauer Infos benötigt helfe ich gerne weiter.


                            Klicke auf die Grafik für eine vergrößerte Ansicht  Name: IMG_8187.JPG Ansichten: 0 Größe: 70,9 KB ID: 243665


                            Klicke auf die Grafik für eine vergrößerte Ansicht  Name: IMG_8188.JPG Ansichten: 0 Größe: 49,2 KB ID: 243666




                            Klicke auf die Grafik für eine vergrößerte Ansicht  Name: IMG_8190_m.jpg Ansichten: 0 Größe: 76,7 KB ID: 243670
                            Es hätten auch zwei Brücken gereicht, da der USR-Konverter eh nur RXD und TXD am DSub9 RS232 Stecker raus führt.


                            Klicke auf die Grafik für eine vergrößerte Ansicht  Name: IMG_8192_m.jpg Ansichten: 0 Größe: 68,7 KB ID: 243671

                            Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Sipex3232.JPG Ansichten: 0 Größe: 66,3 KB ID: 243672
                            Zuletzt geändert von Labmaster; 09.04.2020, 16:14.

                            Kommentar

                          Lädt...