Willkommen im Loxone Community Forum. Um alle Funktionen nutzen und sehen zu können, registriere dich bitte zuerst. Dies gilt auch für das herunterladen von Dateien.
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
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.
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/
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...
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
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...
--------------------
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
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
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
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....
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...
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.
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....
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.
Es hätten auch zwei Brücken gereicht, da der USR-Konverter eh nur RXD und TXD am DSub9 RS232 Stecker raus führt.
Zuletzt geändert von Labmaster; 09.04.2020, 16:14.
Kompaktes Modul mit MAX3232 zum Umwandeln eines seriellen RS232-Signal auf TTL-Pegel und umgekehrt. Unentbehrlich beim Umgang mit Mikrocontrollern.
Technische Daten:
- Betriebsspannung: 3...5,5 V-
- IC: MAX3232
- Anschluss: 9-polige
folgende Komponte würde ich für die Stromversorgung hernehmen:
Active PoE Splitter Power Over Ethernet 802.3af
DSLRKIT 5.5x2.1mm DC Plug Active PoE Splitter. Support the IEEE 802.3af/802.3at the Power over Ethernet PoE Switch. Compliant with IEEE802.3af. Data&Power INPUT Port: from RJ45 female (Compliant with IEEE802.3af/at PoE).
Mein Aufbau wäre wie folgt.
Loxone->SWITCH mit POE->Spliiter->USR-TCP232-302->RS232/TTL Wandler->Nextion
Ist es möglich Daten vom Nextion Display zu lesen und zu schreiben?
Wir verarbeiten personenbezogene Daten über Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen, Werbung zu personalisieren und Websiteaktivitäten zu analysieren. Wir können bestimmte Informationen über unsere Nutzer mit unseren Werbe- und Analysepartnern teilen. Weitere Einzelheiten finden Sie in unserer Datenschutzrichtlinie.
Wenn Sie unten auf "Einverstanden" klicken, stimmen Sie unserer Datenschutzrichtlinie und unseren Datenverarbeitungs- und Cookie-Praktiken wie dort beschrieben zu. Sie erkennen außerdem an, dass dieses Forum möglicherweise außerhalb Ihres Landes gehostet wird und Sie der Erhebung, Speicherung und Verarbeitung Ihrer Daten in dem Land, in dem dieses Forum gehostet wird, zustimmen.
Kommentar