Ich hab schon öfter Sachen bei Fabb-It drucken lassen. Die Drucken so ziemlich alles mit allen Materialien etc. und bieten auch eine Oberflächenbehandlung an. Außerdem eine gute Beratung hinsichtlich Material und Verfahren, was gerade für so filigrane Teile wie den Nextion Rahmen nicht ganz unerheblich ist. Bevor die Mist drucken, rufen die lieber den Kunden an.
Nextion Display als interaktives Namensschild
-
-
Und bei https://www.makexyz.com oder hier https://www.3dhubs.com/3dprint
-
Hier die HMI-Datei und das Keyboard zum testen.
Hallo Wal,
ich brauch nochmal Hilfe.
Habe die Datei "from_nextion.py" eingefügt in "/usr/local/lib/python2.7/dist-packages/doorpi/keyboard"
Hoffe das war richtig !?Sobald ich nun in die doorpi eintrage:
[keyboards]
nextion = nextionhängt sich alles auf. Meine Türtasten funktionieren nicht mehr.
Geschweige denn mein Code auf dem Nextion.Folgende Fragen:
Wo müssen die Dateien hin ?
Wo finde ich die log Datei ?Danke im Voraus.
mfg
bahnuhr -
Ja, das Keyboard hast du in den richtigen Ordner kopiert.
Die HMI-Datei mit dem Nextion-Editor laden und in das Display übertragen.
Nutzt du das piface oder den gpio vom Raspberry ?
Hast du den gleichen Fehler wie ich ?
Falls ja, nutze den Workaround AbstractBaseClass.zip von hier :
https://www.doorpi.org/forum/t…e-usb-plain-keyboard-bug/
Das Nextionkeyboard ist vom usb-plain Keyboard abgewandelt.
Wo die Log-Datei ist weiß ich auch nicht, ich nutze Putty um auf den DoorPi zuzugreifen, da lass ich mir einen Log erstellen.
Putty loggt die komplette Terminalsitzung. -
Hallo, guten Morgen,
ich habe raspi und piface.
Am piface habe ich 2 Taster und ich benutze FB 7490 (Das mit dem Telefon hab ich hinbekommen)
Sonst bisher nichts.
In der raspi config habe ich seriell freigeschaltet (will noch rfid 6300 benutzen; hab ich schon hier liegen - aber noch nicht probiert)Können denn die Anderen mal sagen wie sie den Nextion zum Laufen bekommen haben.
Eine kleine Anfänger freundliche Darlegung wäre gut.Danke im Voraus.
mfg
bahnuhr -
Schau mal Post 15 in diesem Thread. Wenn Du 2 UART brauchst kannst Du auch ein USB Adapter nehmen.
Ansonsten kannst Du das Nextion erst mal am PC anschließen und mit dem Editor starten. Dort kannst Du auch sehen wie das Teil über UART kommuniziert. Ich hoffe, dass ich in den nächsten Tage ein Beispiel Python Script fertig bekomme und hier posten kann.
-
Ich nutze wie oben geschrieben ein USB/Seriell-Wandler, der gleiche mit dem ich das Nextion programmiere.
Am Raspi ist sonst nicht's zu machen, da der Wandler als ttyUSB0 gleich erkannt wird.
Nur die Dateien einfügen und das Nextion programmieren.
Ohne Änderung der AbstractBaseClass.py, funktionieren bei mir die Eingänge vom piface nicht, die Ausgänge (blinking_led) funktionieren. -
Ohne Änderung der AbstractBaseClass.py, funktionieren bei mir die Eingänge vom piface nicht, die Ausgänge (blinking_led) funktionieren.
Was hast du da geändert ?
Am Raspi ist sonst nicht's zu machen, da der Wandler als ttyUSB0 gleich erkannt wird.
Wo sieht man das ?
Fazit:
Habe diesen USB seriell-wandler über ebay gekauft:Am win7 PC musste ich einen Treiber installieren, damit das Gerät korrekt erkannt wurde.
Dann im Editor eine View erstellt und mit diesem Teil auf das display übertragen. Hat wunderbar geklappt.Fazit:
Schau mal Post 15 in diesem Thread. Wenn Du 2 UART brauchst kannst Du auch ein USB Adapter nehmen.
Das hab ich auch probiert. Klappt nicht.
Hat jemand noch ne Idee, woran das liegen könnte.
mfg
-
Welcher Pi ist das denn? Die Probleme mit dem BT Adapter gibt es ja erst mit dem Pi 3
-
Stecke den Wandler in den RPI und schaue unter /dev, ob du ein Device ttyUSB0 hast.
Hier vor und nach dem einstecken :Codewalter@raspberrypi:~ $ ls /dev/ttyU* ls: Zugriff auf /dev/ttyU* nicht möglich: Datei oder Verzeichnis nicht gefunden walter@raspberrypi:~ $ ls /dev/ttyU* /dev/ttyUSB0 walter@raspberrypi:~ $
Die AbstractBaseClass.py habe ich dir in der Antwort 44 als Download zur Verfügung gestellt.Edit:Dein Wandler habe ich hier auch rumliegen, er wird als ttyUSB0 erkannt.
EditEdit: try except in die AbstractBaseClass.py eingefügt.
Python
Alles anzeigendef _fire_EVENT(self, event_name, pin, name): try: if self.keyboard_name == '': doorpi.DoorPi().keyboard.last_key = self.last_key = pin else: doorpi.DoorPi().keyboard.last_key = self.last_key = self.keyboard_name+'.'+str(pin) doorpi.DoorPi().event_handler(event_name, name, self.additional_info) doorpi.DoorPi().event_handler(event_name+'_'+str(pin), name, self.additional_info) doorpi.DoorPi().event_handler(event_name+'_'+self.keyboard_name+'.'+str(pin), name, self.additional_info) except: print "Error"
-
Welcher Pi ist das denn? Die Probleme mit dem BT Adapter gibt es ja erst mit dem Pi 3
Habe den PI2 genommen.
-
Stecke den Wandler in den RPI und schaue unter /dev, ob du ein Device ttyUSB0 hast.
ich bekomme genau die gleichen Meldungen angezeigt.Probiere das jetzt mal mit diesem "abstract...py"
-
Habe deine "abstract .. py" ausgetauscht in dem Ordner "/user/local/lib/python2.7/dist-packages/doorpi/keyboard"
Danach neu gestartet.
Mit "ls /dev/ttyU*" überprüft ob Anschluss funktioniert hat.
Meldung: /dev/ttyUSB0
Also klappt.Problem:
Alle Tasten auf dem piface funktionieren nicht.
Meine angeschlossenen Taster gehen ebenfalls nicht.Es sieht als Laie so aus, als ob sich der raspi aufgehängt hat.
Fazit:
klappt so nicht. -
So,
jetzt hab ich alles wieder rückgängig gemacht.Also wieder die "abstract" kopiert
Nextion vom raspi abgezogen.Neu gestartet.
jetzt geht gar nichts mehr.
Alles Tasten / Taster gehen nicht.
Ich mach erstmal Pause.
Hab jetzt keine Lust mehr.Man holt sich hierbei nur den Frust (liegt aber an mir; weil ich mich nicht auskenne
mfg
-
Hallo,
eigentlich wollte ich das zum gegenwärtigen Zeitpunkt noch nicht veröffentlichen, aber hier ein par Codezeilen um das Nextion zu lesen (und zum schreiben):
Python
Alles anzeigen#! /usr/bin/env python import serial, time #----------- Variables and constants Debug = True EndCom = "\xff\xff\xff" #----------- Funtions def Nextion_Trim(input_str): if(Debug): print "Start Nextion_Trim" input_str_len = len(input_str) substring_parts = input_str.count(EndCom) tmp_str = "" if(Debug): print "length = " + str(input_str_len) print "parts = " + str(substring_parts) for input_chr in input_str: tmp_int = ord(input_chr) tmp_hex = hex(tmp_int) tmp_str = tmp_str + tmp_hex + " " print tmp_str if(substring_parts>1): for x in range(0, substring_parts - 1): input_str_len = len(input_str) position = input_str.find(EndCom) trim_right = 0 - input_str_len + position + 3 trim_left = position + 3 out_str = input_str[0:trim_right] input_str = input_str[trim_left:] if(Debug): print "Position=" + str(position) + " trim_right=" + str(trim_right) + " out_str=" + out_str + " trim_left=" + str(trim_left) + " input_str=" + input_str Nextion_Decode(out_str) Nextion_Decode(input_str) elif(substring_parts==1): Nextion_Decode(input_str) else: if(Debug): print "ERROR trimming the serial input" return def Nextion_Decode(input_str): if(Debug): print "Start Nextion_Decode" input_str_len = len(input_str) tmp_str = "" if(Debug): print "length = " + str(input_str_len) for input_chr in input_str: tmp_int = ord(input_chr) tmp_hex = hex(tmp_int) tmp_str = tmp_str + tmp_hex + " " print tmp_str tmp_int = ord(input_str[0]) FirstByte_hex = hex(tmp_int) if (FirstByte_hex <= "0x1F"): if(Debug): print "ERROR, operation cancled" #..... Touch event return data 0x65 elif (FirstByte_hex <= "0x65"): PageID = ord(input_str[1]) CompID = ord(input_str[2]) TouchEventID = ord(input_str[3]) if (TouchEventID==1): TouchEvent="press" else: TouchEvent="release" if(Debug): print "Touch event return data: PageID=" + str(PageID) + " CompID=" + str(CompID) + " TouchEvent=" + TouchEvent #..... String variable data returns 0x70 elif (FirstByte_hex <= "0x70"): var_str = input_str[1:-3] if(Debug): print "String variable data returns: " + var_str else: if(Debug): print "Unsupported event" return def Nextion_Write(serial_obj, input_str): serial_write = input_str + EndCom serial_obj.write(serial_write) #----------- Preparation tasks ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) #----------- Main loop serial_line = ser.readline() #clear buffer #Nextion_Write(ser, 't1.txt="Test02"') #Nextion_Write(ser, 'page 1') while 1: serial_line = ser.readline() if serial_line: Nextion_Trim(serial_line) time.sleep(.100) #----------- Post tasks ser.close()
Das ist alles ohne Gewähr und so zu benutzen wie es ist!Das Script ließt den Serial Port aus. Wenn das Nextion mehrere Befehle hintereinander sendet stehen die in einer Zeile. Das Zerlegen übernimmt die Funktion nextion_trim. Die einzelnen Blöcke werden dann von nextion_decode ausgewertet. Derzeit aber nur zwei Events. Das kann aber leicht ausgebaut werden.
Die nextion_write Geschichte hat auch noch Luft nach oben
Du solltest das Display auf jeden Fall vorher am PC anschließen und mit dem Editor programmieren und testen. Dann wird einiges leichter Verständlich.
-
Hallo AndyGr,
habe alles neu installiert auf der SD.
Tasten und piface gehen wieder.
Dann habe deinen Code in eine Datei "from_nextion.py" geschrieben und diese dann kopiert in den Ordner Keyboard.
(Hoffe das war richtig).Sobald ich nun in die doorpi.ini bei keyboard "nextion = nextion" und den Raspi neu starte habe ich wieder das gleiche Problem.
Nichts geht mehr.
Habe dann mal eine trace erzeugt (im Anhang).Vielleicht könnt ihr damit was anfangen.
Bis dahin.
mfg
-
doorpi läuft noch im Hintergrund, denke ich...
-
OperationalError: database is locked deutet darauf hin, das du versuchst doorpi ein zweites mal zu starten.
Upps, der Chef war schneller. -
Fazit:
ich bekomme es nicht hin.Falls ihr noch ne Idee habt oder eine kleine Anleitung und mir helfen wollt dann kurze Rückinfo.
mfg
bahnuhr -
Wenn du den RPI neu startest, kannst du auf der Console "ps -A" eingeben um alle Task's aufzulisten. Steht dort doorpi_cli, ist doorpi schon gestartet. Danach führt ein "sudo doorpi_cli --trace" zu deinem Fehler.
Um Änderungen durchzuführen, mußt du erst ein "sudo /etc/init.d/doorpi stop" machen, mit "ps -A" kontrollieren ob doorpi wirklich gestoppt ist, danach die Änderungen machen, jetzt kannst du mit "sudo doorpi_cli --trace" doorpi neu starten.