Author Topic: Betaversion Brick Viewer mit PyQt5 und Python 3  (Read 4083 times)

photron

  • Tinkerforge Staff
  • Administrator
  • Hero Member
  • *****
  • Posts: 2.467
    • View Profile
Betaversion Brick Viewer mit PyQt5 und Python 3
« on: February 20, 2019, 16:48:47 »
Wir haben die Grundlagen von Brick Viewer modernisiert. Brick Viewer Version 2.4.0 basiert jetzt auf PyQt5 und Python 3, statt auf PyQt4 und Python 2.

Die aktuelle Betaversion für Linux, Windows und macOS gibt es hier:

http://download.tinkerforge.com/tools/brickv_pyqt5/beta2/linux/brickv-2.4.0_all.deb
http://download.tinkerforge.com/tools/brickv_pyqt5/beta2/windows/brickv_windows_2_4_0.exe
http://download.tinkerforge.com/tools/brickv_pyqt5/beta2/macos/brickv_macos_2_4_0.dmg

Bitte testet die neue Version und meldet uns Probleme, wenn ihr welche findet.

Update (26.02.2019):

Beta2 ist jetzt verfügbar mit folgenden Änderungen:

  • Dialoge wurden fälschlicherweise als Toplevel-Fenster angezeigt, dies ist korrigiert.
  • Checkbox hinzugefügt um den Fusion GUI Style zu (de-)aktivieren. Auf macOS ist dieser standardmäßig aktive um scrollbare Tableisten und ein insgesamt kompakteres GUI Layout zu erhalten.
  • RED Brick Server Room Monitoring: PTC Bricklet Wire Mode Einstellung und Nagios E-Mail Konfiguration werden korrekt ausgelesen.
« Last Edit: February 26, 2019, 15:14:47 by photron »

theo

  • Sr. Member
  • ****
  • Posts: 321
    • View Profile
    • Twitter
Re: Betaversion Brick Viewer mit PyQt5 und Python 3
« Reply #1 on: February 20, 2019, 18:57:41 »
Hallo photron,

ein Problem, dass schon der bisherige Brick Viewer hatte, ist der einreihige Tabreiter. Bei vielen Bricklets kann man nichts mehr erkennen (siehe Anhang).

Die NFC/RFID Bricklet View fängt das "flackern" an sobald ich mein Typ 2 Tag auflege und Scan drücke. Die Load steigt auf 100% CPU.

Sonst sieht es gut aus.

Gruß,
Theo

Loetkolben

  • Hero Member
  • *****
  • Posts: 1.178
    • View Profile
Re: Betaversion Brick Viewer mit PyQt5 und Python 3
« Reply #2 on: February 20, 2019, 19:27:08 »
Hallo photon,

kann man die beiden debian Pakete parallel installieren oder zerschiesst sich da was?


Der Loetkolben

photron

  • Tinkerforge Staff
  • Administrator
  • Hero Member
  • *****
  • Posts: 2.467
    • View Profile
Re: Betaversion Brick Viewer mit PyQt5 und Python 3
« Reply #3 on: February 20, 2019, 21:10:11 »
theo, das Problem mit der Tableiste ist das Qt da den macOS Style nachbildet und da keine scrollen einer Tableiste vorgesehen ist. Solange wir da eine Tableiste haben wird das unter macOS leider so sein. Du kannst mal brickv mit einem anderen Style starten, der eine scrollbare Tableiste hat. Das geht über einen Terminal:

Code: [Select]
/Applications/Brickv.app/Contents/MacOS/brickv -style fusion
Wenn du die Brickv.app nicht im Applications Folder hast dann muss du den Pfad entsprechend anpassen.

Das NFC/RFID Problem schauen wir uns an.

Loetkolben, das ist einfach eine neue Version des brickv Package, das ersetzt dein bisher installiertes brickv Package. Das ist kein anderer brickv, sondern einfach die nächste Version 2.4.0. Brick Viewer auf Basis von PyQt4 und Python 2 wird nicht weiterentwickelt.

theo

  • Sr. Member
  • ****
  • Posts: 321
    • View Profile
    • Twitter
Re: Betaversion Brick Viewer mit PyQt5 und Python 3
« Reply #4 on: February 20, 2019, 21:59:57 »
Das mit dem Fusion Style ist schon mal viel besser, das sollte der Default sein. Optimal wären gestaffelte Tabs.

Loetkolben

  • Hero Member
  • *****
  • Posts: 1.178
    • View Profile
Re: Betaversion Brick Viewer mit PyQt5 und Python 3
« Reply #5 on: February 21, 2019, 01:04:15 »
Och.  ;D

Sieht Chick aus. Das Update hat auch problemlos unter Debian 9.8 funktioniert.

Zuerst das Paket von Hand mit "dpkg -i" installiert.
Dann wird gemeckert, dass einige Abhaengigkeiten fehlen. Ein "apt --fix-broken install" behebt das Problem zuverlaessig. Ein anschliessendes "apt-get --purge autoremove" entfernt evtl. nicht mehr benoetigte Pakete der alten Version.

Aufrufen und es sieht wirklich gut aus.  :D  Tolle Arbeit!

Funktionen nicht im Detail getestet, aber aus meiner Sicht fehlt da nichts.

Nachtrag: Die Verschachtelte Darstellung (auch schon in der alten Version) der Masterbricks mag ja der internen Logik des Stacks folgen, aber mich irrtiert das jedesmal wenn ich am Stack ein Brick suche. Die Anzeige am Bildschirm sollte dem physischen Aufbau des Stacks folgen.  ;)


Der Loetkolben
« Last Edit: February 21, 2019, 01:07:54 by Loetkolben »

rtrbt

  • Tinkerforge Staff
  • Administrator
  • Full Member
  • *****
  • Posts: 114
    • View Profile
Re: Betaversion Brick Viewer mit PyQt5 und Python 3
« Reply #6 on: February 21, 2019, 13:33:37 »
Theo, kannst du das Problem mit dieser Version http://download.tinkerforge.com/tools/brickv_pyqt5/beta1/macos/brickv_macos_2_4_0_theo.dmg reproduzieren und das Log, das in /tmp/brickv_nfc_debug_[Datum].log angelegt wird, hier posten?

Danke,
Erik

Equinox

  • Sr. Member
  • ****
  • Posts: 270
    • View Profile
Re: Betaversion Brick Viewer mit PyQt5 und Python 3
« Reply #7 on: February 21, 2019, 17:53:40 »
Hallo,

in Bezug auf diesen Thread:
https://www.tinkerunity.org/forum/index.php/topic,4751.0.html:
Das Update der Firmware hat jetzt funktioniert, aber das Air Quality Bricklet wird noch immer an Position "Z" angezeigt.

borg

  • Tinkerforge Staff
  • Administrator
  • Hero Member
  • *****
  • Posts: 3.135
    • View Profile
Re: Betaversion Brick Viewer mit PyQt5 und Python 3
« Reply #8 on: February 21, 2019, 18:07:24 »
Das Update der Firmware hat jetzt funktioniert, aber das Air Quality Bricklet wird noch immer an Position "Z" angezeigt.

Der Bug dort liegt im Bootloader des Air Quality Bricklets, da kann der Brick Viewer leider nichts gegen machen.
Wir sind die Borg, Widerstand ist Spannung durch Stromstärke!

theo

  • Sr. Member
  • ****
  • Posts: 321
    • View Profile
    • Twitter
Re: Betaversion Brick Viewer mit PyQt5 und Python 3
« Reply #9 on: February 21, 2019, 18:45:56 »
Hallo Erik,

das Problem ist reproduzierbar. Den Log habe ich angehängt.

Gruß,
Theo

theo

  • Sr. Member
  • ****
  • Posts: 321
    • View Profile
    • Twitter
Re: Betaversion Brick Viewer mit PyQt5 und Python 3
« Reply #10 on: February 21, 2019, 18:50:15 »
Hier noch ein Screencast auf dem das NFC/RFID Problem zu sehen ist:
https://m1theo.de/ncloud/index.php/s/GFxnQrgkKgJtqA4

Equinox

  • Sr. Member
  • ****
  • Posts: 270
    • View Profile
Re: Betaversion Brick Viewer mit PyQt5 und Python 3
« Reply #11 on: February 21, 2019, 20:10:20 »
Hallo,

Quote
Das Update der Firmware hat jetzt funktioniert, aber das Air Quality Bricklet wird noch immer an Position "Z" angezeigt.
Quote
Der Bug dort liegt im Bootloader des Air Quality Bricklets, da kann der Brick Viewer leider nichts gegen machen.
Auch in der Firmware 2.0.3?
Nach ein paar Connects/Disconnects habe ich festgestellt, dass es manchmal auch korrekt angezeigt wird. Meistens aber an Position "Z".

borg

  • Tinkerforge Staff
  • Administrator
  • Hero Member
  • *****
  • Posts: 3.135
    • View Profile
Re: Betaversion Brick Viewer mit PyQt5 und Python 3
« Reply #12 on: February 21, 2019, 20:49:38 »
Nach ein paar Connects/Disconnects habe ich festgestellt, dass es manchmal auch korrekt angezeigt wird. Meistens aber an Position "Z".
Ja, da ist ein Stück uninitalisierter Speicher im Bootloader. Wenn dort an einer bestimmten Stelle zufällig 90 drin steht ('Z'), dann wird das beim Enumerate mit zum Master übertragen. Normalerweise setzt der Master Brick den Port in der Nachricht (Das Bricklet weiß gar nicht an welchem Port es angeschlossen ist). Aber bei 'Z' geht er davon aus dass das Air Quality Bricklet an einem Isolator Bricklet angeschlossen ist, da der Port des Isolator Bricklet ist immer 'Z' ist.

Hier ist der Fix im Bootloader dafür: https://github.com/Tinkerforge/brickletboot_xmc/commit/bedbb6a29dbd9d4189506aaa4e45238d37a11285

Und hier ist der Code im Master Brick der das Problem verursacht: https://github.com/Tinkerforge/bricklib/blob/master/bricklet/bricklet_co_mcu.c#L244

Der Bootloader wird allerdings nicht aktualisiert wenn du die Firmware aktualisierst. Der wird nur einmal von uns ganz am Anfang geschrieben.

Da die Bootphase deterministisch ist, passiert das beim Air Quality Bricklet zumindest am Anfang jedes mal, auch wenn die Chance dass das überhaupt passieren kann eigentlich nur 1 zu 256 ist :o.

Edit: Ha! Jetzt wo ich mir das nochmal in Ruhe angeschaut hab ist die Lösung eigentlich ganz einfach. Die "connected uid" wird von den Bricklets immer als "\0" initialisiert, von einem Isolator Bricklet aber entsprechend auf die UID des Isolator Bricklets gesetzt. D.h. der Check muss einfach
Code: [Select]
if(gir->position != 'Z' || gir->connected_uid[0] == '\0')sein. Dann ist das Stück uninitialisierter Speicher wieder kein Problem mehr :). Muss ich mir morgen nochmal genau ansehen, aber ich denke das ist die Lösung.
« Last Edit: February 21, 2019, 20:55:05 by borg »
Wir sind die Borg, Widerstand ist Spannung durch Stromstärke!

rtrbt

  • Tinkerforge Staff
  • Administrator
  • Full Member
  • *****
  • Posts: 114
    • View Profile
Re: Betaversion Brick Viewer mit PyQt5 und Python 3
« Reply #13 on: February 22, 2019, 10:28:04 »
Hi Theo,
Hast du noch ein anderes Programm parallel laufen, dass mit dem NFC-RFID-Bricklet kommuniziert? Im Log kommen über das state-changed-Callback Antworten auf Anfragen, die der Brick Viewer nicht abgesetzt haben kann. Das Flackern wird dann dadurch ausgelöst, dass das Bricklet in kurzer Zeit (~10ms) zwei Mal nach der Tag-ID sucht und erst die richtige ID findet und danach einen Fehler zurückgibt.

Hattest du das Problem schon mit dem alten Brick Viewer?

theo

  • Sr. Member
  • ****
  • Posts: 321
    • View Profile
    • Twitter
Re: Betaversion Brick Viewer mit PyQt5 und Python 3
« Reply #14 on: February 22, 2019, 18:05:53 »
Hi Erik,

Ok, das war es. Ich hatte auch schon sowas vermutet und auf meinem Rechner nach laufenden Programmen (openHAB) gesucht und da lief nichts. Jetzt hab ich mit lsof noch nach offenen Verbindungen zum brickd gesucht und gefunden. Da war noch eine openHAB Testinstallation auf einem Pi, die remote am brickd hing :-((
Jetzt funktioniert alles wie es soll.

Sorry für die Umstände.

Gruß,
Theo