Jump to content

photron

Administrators
  • Gesamte Inhalte

    3.066
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    42

Alle erstellten Inhalte von photron

  1. Also, so wie du Promise verwendest kann das nicht funktionieren. Du legst ein leeres device_promises Array an, und im Prinzip rufst direkt danach Promise.all auf ein leeres Array auf. Dieses Promise ist natürlich sofort erfüllt, denn die Enumerate Callbacks kommen erst danach an. Damit der Ansatz funktioniert musst du vor dem ipcon.enumerate() Aufruf wissen wie viele Devices vorhanden sind und die Promises vorher anlegen und nicht erst im Enumerate Callback, denn dort ist es zu spät. Wenn du nicht weißt wie viele Devices vorhanden sind kannst du das über einen Timeout lösen. Die Annahme dabei ist, dass zwischen dem ipcon.enumerate() Aufruf und dem ersten Enumerate Callback und dann den darauf noch folgenden Enumerate Callbacks jeweils weniger als eine Sekunde vergeht. Ich habe dir mal das Enumerate Example abgeändert. ExampleEnumerate_theobald.html
  2. Ja, das ist leider so. Ich habe dem Update Dialog jetzt einen Hinweis hinzugefügt, dass der Prozess durchaus bis zu 2 Stunden dauern kann.
  3. Brick Viewer 2.4.14 Fix monoflop handling to cover full uint32 duration range Better indicate disconnected state Highlight timeout error counter > 0 in bold red Fix slider/spinbox mismatch on auto-reconnect in DC Brick plugin Avoid UI jumps on value changes in Energy Monitor Bricklet plugin Add extra checkbox to avoid accidental port number changes Handle all errors while downloading firmware updates Downloads: Windows, Linux, macOS
  4. Brick Viewer 2.4.14 Monoflop-Behandlung korrigiert damit der gesamte uint32 Zeitbereich genutzt werden kann Disconnected-Zustand wird besser dargestellt Timeout-Fehlerzähler wird bei Werten > 0 fett-rot hervorgehoben Abweichung zwischen Slider- und Spinbox-Wert im DC Brick Plugin nach Auto-Reconnect korrigiert UI springt nicht mehr bei Werteänderungen im Energy Monitor Bricklet Plugin Extra Checkbox soll unabsichtliche Änderungen der Portnummer verhindern Alle Fehler beim Herunterladen von Firmware Updates werden behandelt Downloads: Windows, Linux, macOS
  5. Periodisch abgefragt werden: https://download.tinkerforge.com/latest_versions.txt https://download.tinkerforge.com/all_versions.txt Es kann sein, dass du das Popup da nicht siehst, weil es zu schnell wieder weg ist.
  6. Brick Viewer fragt auf tinkerforge.com die Liste der aktuellen Firmware Versionen ab, um Updates anzeigen zu können. Bei dieser Abfrage ist ein Übertragungsfehler aufgetreten, der im Code nicht behandelt wurde. Unbehandelt Fehler landen dann in diesem Fehlermeldungsdialog. Das hat nichts damit zu tun was du zu dem Zeitpunkt getan hast. So richtig erklären kann in den speziellen Fehler nicht. Da hatte entweder unser Server oder deine Internetverbindung gerade Schluckauf. Trat der Fehler nur einmal auf, oder tritt der immer wieder auf? In der nächste Brick Viewer wird dieser Fehler richtig behandelt werden.
  7. @duaw Der Fehler "NameError: name 'display_names' is not defined" wurde in den MQTT Bindings 2.0.10 behoben, wobei 2.0.11 die aktuelle Version ist. Du verwendest also nicht die aktuellste Version der MQTT Bindings. Teste mal bitte mit Version 2.0.11, ob da dein Problem auch noch auftritt. Stehen diese unvollständigen Zeilen "2020-08-06 17:05:49,497 <DEBUG> MQTT bindings:" da so wirklich so, oder hast du da etwas gekürzt?
  8. Die Inkompatibilität mit dem 5.4 Kernel ist durch das Firmware Update 2.0.2 des HAT Bricks behoben. Das Problem dabei ist das Firmware Update 2.0.2 auf den HAT zu bekommen, während der Kernel 5.4 verwendet wird. Das einfachst ist dafür auf einen älteren Kernel zu wechseln. Sobald du dann Firmware Update 2.0.2 auf dem HAT hast kannst du auch wieder Kernel 5.4 verwenden.
  9. systemd-timesyncd als NTP Client ist normalerweise installiert und ist eigentlich auch bei Raspbian dabei. Aber systemd-timesyncd ist eine simple minimale SNTP Implementierung. Das reicht für viele Zwecke. Aber ich habe auch schon festgestellt, dass systemd-timesyncd absolute nicht damit klar kommt, wenn die Internetverbindung schlecht ist, dann kommt keine sinnvolle Zeitsynchronisierung zustande. Für ntpd und chronyd ist das aber kein Problem. Interessant, wäre trotzdem zu sehen was passiert, wenn du alle NTP Dienste deaktivierst, damit zu erkennen ist, was die RTC da wirklich tut, denn wenn du NTP laufen hast, dann überstimmt das die RTC in jedem Fall.
  10. Die Doku ist da etwas ungenau, das ist ein Super-Cap, keine Batterie. Leider hält der auf der aktuellen HAT Version 1.4 nicht besonders lange vor, bedingt durch den zu großen Leckstrom einer Diode. Das Problem ist auf der nächsten Hat Version 1.5 behoben. Es sollte eigentlich folgendes passieren: Das Raspberry Pi erkennt den HAT Brick und lädt den Kernel Treiber für den RTC Chip PCF8523. Der Kernel führt aber kein hwclock --hctosys aus, um die Systemzeit von der RTC Zeit zu setzen, dazu müsste der Kernel mit CONFIG_RTC_HCTOSYS=y gebaut sein, was bei Raspbian aber nicht der Fall ist. Jetzt lädt der Kernel das Userland und systemd startet brickd. Brick Daemon erkennt, dass der HAT Brick angeschlossen ist und führt jetzt hwclock --hctosys aus, dass die Hardware Clock (hc) liest (den RTC Chip) und damit die System Clock (sys) setzt. Das sollte die Systemzeit auf die RTC Zeit springen lassen, aber nur wenn der Super-Cap durchgehalten hat. In das ganze kann jetzt auch noch fake-hwclock mit hineinspielen. Teste mal, ob sich das Verhalten ändert, wenn du fake-hwlock deinstallierst. Normalerweise läuft Zeitsynchronisation auf Linux so, dass am Anfang einmal die Systemzeit auf die richtige Zeit springt (z.B. per NTP oder RTC) und danach, z.B. durch NTP die Systemzeit ständig nachkorrigiert wird. Diese Nachkorrigieren wird dann durch Strecken und Stauchen von Sekunden gemacht, damit die Systemzeit monoton ist und nicht springt. Was mich wundert ist das schnelle hochzählen, das ist nicht normal. Welche Kernel Version hast du laufen? Du kannst auch mal testen einen richtigen NTP Dienst zu installieren (z.B. chrony) anstelle dieser Krücke systemd-timesyncd die standardmäßig läuft.
  11. Okay, dass bestätigt, dass irgendwo her ein Packet kommt, das an den HAT Brick geschickt wird und der dies als Abschaltbefehl für die Bricklets versteht. Das brickd.log verwirrt uns hier. Das Log quillt über an Warnungen dieser Art: Broadcasting response (...) because no client/zombie has a matching pending request Brick Daemon hat eine Antwort von der Hardware empfangen, für die es keine offene Anfrage gibt. Teilweise sind dies Antworten, die offensichtlich korrupt sind (unbekannte UID, ungültige Länge oder unbekannte Funktions-ID). Viele andere Antworten sind aber so ohne Kontext erstmal gültige Antworten. Das passt zum Brick Viewer Screenshot von vorher auf dessen Industrial Dual Relay Tab 174 Timeouts (fehlende Antworten) zu sehen waren. Die Antworten konnten in Brick Daemon nicht mehr zugeordnet werden, weil diese korrumpiert wurden. Die "Broadcasting Response" Meldungen im Log sollten unter normalen Umständen überhaupt nicht auftreten. Eine Vermutung wäre, dass die Bricklet Kommunikation durch die Umgebung gestört wird. Und zwar so stark, dass die Protokoll-Checksummen das nicht mehr abfangen können. Ein möglicher Test wäre es den Hardware Aufbau zu vereinfachen, z.B. den Display vollständig abzubauen, Bricklet Leitungslängen verkürzen und damit die Antennenwirkung der Kabel verringern. Oder auch mal den Aufbau wo anders betreiben (Draußen, Zuhause, etc.) rtrbt postet gleich auch noch ein Testprogramm auf Basis der neuen "C/C++ Bindings für Mikrocontroller", die ohne brickd auskommen. Einfach um zu sehen wie sich das verhält, und ob dort auch diese Fehler auftreten.
  12. Der HAT Brick flasht sich etwas ungewöhnlich. Du schließt den nicht per USB an, der micro USB Anschluss ist nur für Strom. Sondern du lässt den HAT Brick auf dem Raspberry Pi stecken, verbindest dich dann mit Brick Viewer zum Raspberry Pi und wählst auf den Update/Flashing Dialog den Bricklet Tab aus. Dort wählst du als Parent None und kannst dann als Port den HAT Brick auswählen. Dort wählst du als Plugin Custom aus und kannst dann die Firmware Datei über den Browse Knopf auswählen und der Flash Knopf die Firmwae flashen. Mit dem HAT Brick hat sich die Trennung zwischen Bricks und Bricklets etwas verwischt. Der HAT Brick ist nach außen in Brick nutzt intern aber Bricklet Strukturen, wodurch er wie ein Bricklet geflasht wird. Auf Dauer werden wir den Flash Dialog in Brick Viewer überarbeiten und vereinfachen.
  13. Teste auch mal bitte die angehängte Firmware 2.0.3 für den HAT Brick. Diese Version legt die set_bricklet_power Funktion tot, um zu verifizieren, dass es wirklich ein fälschlicher Aufruf dieser Funktion ist, der das Problem erzeugt. hat-brick-firmware-203.zbin
  14. Willst du damit sagen, dass du das Problem nicht nur an einem, sondern an zwei Aufbauten hast? Update auch mal bitte alle Tinkerforge Software. Also Brick Viewer auf 2.4.13, Brick Daemon auf dem Raspberry Pi auf 2.4.1 und C/C++ auf 2.1.19. Mir ist kein Bug bekannt in den alten Versionen der zum Problem passt, aber ich möchte vermeiden, dass wir hier alte bereits behobene Bugs suchen. Kannst du bitte das /var/log/brickd.log vom Raspberry Pi hier anhängen, vielleicht steht dort etwas interessantes drin. Welche Kernel Version hast du auf dem Raspberry Pi laufen (was gibt "uname -a" aus)? Was steht in /boot/cmdline.txt und /boot/config.txt auf dem Raspberry Pi?
  15. Hast du da einfach eine UID Kollision? Schau mal bitte das alle Bricks und Bricklets unterschiedliche UIDs haben.
  16. Zusätzlich könntest du das Programm in Valgrind laufen lassen. Valgrind dient u.a. dazu Speicherkorruption zu finden.
  17. Das sieht so aus als ob dein Programm da unabsichtlicherweise hat_set_bricklet_power(hat, false) aufruft. Ein industrial_dual_relay_set_monoflop(...) Aufruf für Channel 0 wird bei passend korrumpierter UID als hat_set_bricklet_power(hat, false) verstanden, da beide Funktionen die Funktions-ID 3 haben und der Channel 0 Parameter als false interpretiert werden kann. Daher wäre es interessant zu sehen (z.B. per Wireshark auf localhost), ob dein Programm wirklich diesen korrumpierten Aufruf schickt.
  18. Interessant! Zwischen dem 5V Regler und dem 5V Ausgängen zu den Bricklets sitzt ein TPS22975 Leistungsschalter, über den der HAT Brick die Versorgung der Bricklets abschalten kann. Der TPS22975 Chip hat auch einen Überlastschutz. Entweder schaltet der HAT Brick die 5V Versorgung willentlich ab, was er nicht von sich aus tut, sondern nur beim Aufruf der entsprechenden API Funktion, oder der Überlastschutz des Chips greift ein. Tritt das Problem auch auf, wenn der Display nicht über den Bricklet Port versorgt wird? Bzw. was ist der minimalste Aufbau mit dem das Problem auftritt? Über Brick Viewer kann über die "Enable Bricklet Power" Checkbox auf dem HAT Brick Tab die Versorgung der Bricklets gesteuert werden. Hilft es im Fehlerfall, die Checkbox zu deaktivieren (falls sie aktive ist) und wieder zu aktivieren? Oder hilft ein Reset des HAT Bricks über den "Reset" Knopf auf dem HAT Brick Tab im Brick Viewer?
  19. Es wundert mich, dass du das 24V Netzteil mit 20V misst. Kannst du ein Foto vom Gesamtaufbau zeigen? Die 5V für die Bricklets und das Raspberry Pi können vom HAT Brick geschaltet werden. Die 3 großen Kondensatoren neben der micro USB Buchse auf dem HAT bilden die Ausgangskapazität des 5V Reglers. Könntest du dort auch mal die 5V messen (die Masseseite hat den schwarzen Balken) an einem der 3 Kondensatoren? Die Frage ist, ob der HAT Brick die 5V abschaltet (5V nur an den Bricklet Ports weg), oder ob der 5V Regler an sich einbricht (5V am Kondensator weg). Geht dann auch die Status LED des HAT Bricks selbst aus, oder bliebt die an? Benutzt du in deinem Programm Funktionen des HAT Bricks, z.B. um die Stromversorgung der Bricklets zu schalten oder den Sleep Mode zu nutzen? An welchem Port hast du welches Bricklet angeschlossen? Woran erkennst du dass das Raspberry Pi neustartet? Wie viele Schaltvorgänge braucht es bis das Problem auftritt? Wir haben, dass hier gerade versucht nachzustellen, es läuft aber ohne Probleme 10 Minuten durch wobei abwechselnd jede Sekunde alle 3 Industrial Dual Relay Bricklet umgeschaltet werden. Tritt das Problem beim Anziehen ober beim Abfallen der Relais auf? Sorry für die viele Fragen, das Problem ist mysteriös.
  20. Woran machst du fest, dass das Raspberry Pi an bleibt? Das Raspberry Pi wird aber über den HAT Brick versorgt, oder versorgst du das Raspberry Pi unabhängig vom HAT?
  21. Du hast im Brick Viewer dem Haken für "Use Authentication" gesetzt, Authentication in Brick Daemon aber nicht konfiguriert. Nimm mal den Haken für "Use Authentication" im Brick Viewer wieder weg.
  22. Ich habe das Brick Viewer UI mal so abgewandelt, dass man den Port nicht so einfach aus Versehen verstellen kann.
  23. Tritt das Problem auch auf, wenn an den Relaisausgängen nichts angeschlossen ist? Wie häufig tritt das Problem auf? Eher alle 10 oder eher alle 1000 Schaltvorgänge? Wie werden die LEDs mit Strom versorgt? Auch über das 24V Netzteil? Wenn ja, wie viel Leistung nehmen die LEDs auf? Bricht vielleicht durch das Schalten der LEDs die Spannung des Netzteils zusammen? Geht auch das Raspberry Pi mit aus? In welcher zeitlichen Folge und mit welcher Frequenz werden die Relais geschaltet? Werden die abwechselnd oder alle gleichzeitig geschaltet?
  24. Was schaltest du denn mit den Industrial Dual Relais? Hast du da induktive Lasten dran, aber z.B. keine Freilaufdiode, Varistor oder Snubber verbaut?
  25. Der Standardport ist 4223, nicht 4224.
×
×
  • Neu erstellen...