Jump to content

photron

Administrators
  • Gesamte Inhalte

    3.049
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    39

Alle erstellten Inhalte von photron

  1. Ich habe Trixie und tinkerforge.asc hinzugefügt und die Anleitung aktualisiert. Danke für den Hinweis!
  2. Bindings: C/C++ 2.1.34, C/C++ for Microcontrollers 2.0.4, C# 2.1.32, Delphi/Lazarus 2.1.33, Go 2.0.15, Java 2.1.33, JavaScript 2.1.35, LabVIEW 2.1.31, Mathematica 2.1.31, MATLAB/Octave 2.0.33, MQTT 2.0.17, Perl 2.1.32, PHP 2.1.31, Python 2.1.31, Ruby 2.1.31, Rust 2.0.21, Saleae 2.0.8, Shell 2.1.33, Visual Basic .NET 2.1.31 Add support for Industrial Dual AC In Bricklet [All] Add FFC shutter mode and normalization to Thermal Imaging Bricklet API [All] Fix System.AppDomain.Unload timeout, avoid crash [LabVIEW] Fix System.AppDomain.Unload timeout [C#, Mathematica, VB.NET] Fix error response check [Go] Fix single chunk streams [Go] Handle empty payload in streamed function calls [MQTT] Remove wrong stream error handling [JavaScript] Add IPv6 support, raises PHP requirement to 7.2.0 [P,HP] Don't leak socket on connect error [Python] Add IPv6 support [Python] Show dropped bytes [Saleae] Fix get-identity call [Shell] Fix --execute with modern Python versions [Shell] Support authentication secret, listen address and port for Arduino ESP32 [µC] Don't count callbacks as unexpected packets [µC] Fix byte offset when splitting packet to be sent [µC] Correctly mark packet as processed if received in setter [µC] Correctly stop waiting for packet when timeout is elapsed [µC] Use correct sequence number when resending proxy packets [µC] Validate header length of received packets [µC] Report local function calls as unsupported instead of timing out [µC] Fix IP address handling with current Arduino ESP32 [µC] Download: C/C++, C/C++ for Microcontrollers, C#, Delphi/Lazarus, Go, Java, JavaScript, LabVIEW, Mathematica, MATLAB/Octave, MQTT, Perl, PHP, Python, Ruby, Rust, Saleae, Shell,
  3. Bindings: C/C++ 2.1.34, C/C++ for Microcontrollers 2.0.4, C# 2.1.32, Delphi/Lazarus 2.1.33, Go 2.0.15, Java 2.1.33, JavaScript 2.1.35, LabVIEW 2.1.31, Mathematica 2.1.31, MATLAB/Octave 2.0.33, MQTT 2.0.17, Perl 2.1.32, PHP 2.1.31, Python 2.1.31, Ruby 2.1.31, Rust 2.0.21, Saleae 2.0.8, Shell 2.1.33, Visual Basic .NET 2.1.31 Support für Industrial Dual AC In Bricklet hinzugefügt [Alle] FFC Shutter Mode und Normalization zur Thermal Imaging Bricklet API hinzugefügt [Alle] System.AppDomain.Unload Timeout behoben und dadurch LabVIEW-Abstruz vermieden [LabVIEW] System.AppDomain.Unload Timeout behoben [C#, Mathematica, VB.NET] Überprüfung der Antwort im Fehlerfall korrigiert [Go] Single-Chunk-Streams repariert [Go] Leerer Payload in gestreamtem Funktionsaufruf wird korrekt behandelt [MQTT] Falsche Stream-Fehlerbehandlung entfernt [JavaScript] IPv6-Support hinzugefügt, benötigt PHP 7.2.0 [P,HP] Socket-Resource-Leck durch Verbindungsfehler korrigiert [Python] IPv6-Support hinzugefügt [Python] Ignorierte Bytes werden angezeigt [Saleae] get-identity Aufruf repariert [Shell] --execute mit modernen Python-Versionen korrigiert [Shell] Support für Authentication-Secret, Listen-Adresse und -Port für Arduino ESP32 hinzugefügt [µC] Callbacks werden nicht mehr fälschlicherweise als unerwartete Pakete gezählt [µC] Byte-Offset beim Aufteilen zu sendender Pakete korrigiert [µC] Packet wird korrekt als verarbeitet markiert, falls es in einem Setter empfangen wurde [µC] Warten auf Pakete beim Ablauf des Timeouts wird korrekt abgebrochen [µC] Verwendung der korrekten Sequenznummer beim Weiterleiten von Proxy-Paketen [µC] Header-Länge empfangener Pakete wird überprüft [µC] Lokale Funktionsaufrufe werden direkt als nicht-unterstüzt abgebrochen anstatt in einen Timeout zu laufen [µC] IP-Adress-Behandlung bei Verwendung der aktuellen Arduino ESP32 Bibliothek korrigiert [µC] Download: C/C++, C/C++ for Microcontrollers, C#, Delphi/Lazarus, Go, Java, JavaScript, LabVIEW, Mathematica, MATLAB/Octave, MQTT, Perl, PHP, Python, Ruby, Rust, Saleae, Shell, Visual Basic .NET
  4. The power supply looks okay. For now I don't expect it to the an issue. Does the USB cable ferrit cores near the connectors? Could you try a different USB cable and/or a different USB port on the Raspberry Pi?
  5. @fridolin11 Your problem seem to have a different cause. There was no fix in Brick Viewer, but a change in Brick Daemon to handle the message burst created by the enumeration of the whole system. There is no need to test any old version that might have been mentioned in this thread. Please only test the latest versions of Brick Daemon and Brick Viewer. I assume that is what you already have installed. From the brickd.log I can see that you get a lot stalled USB read transfers making the communication with the Bricks and Bricklets unreliable. As long as you continue to see this kind of message in brickd.log the problem persists. You can open brickd.log in a console/terminal like this to get a live view: tail -f /var/log/brickd.log Then try plugging and unplugging the Bricks from USB and see what messages you get. Do the stall messages only appear when you connect two Bricks to USB? Is one Brick alone okay? In the Raspberry Pi 2 era many problems where caused by insufficiant power supplies. How do you power the Raspberry Pi 4? Could you try a "stronger" power supply? Du you directly connect the Bricks to the Raspberry Pi, or is there another USB hub in between? Does it make a difference if you remove any USB hub? You can also try to add a powered USB hub.
  6. @andyknownasabu Firmware 2.0.2 wurde soeben veröffentlicht. Diese merkt sich jetzt die letzte Phasenanforderung über Neustarts des ESP32 Ethernet Bricks hinweg. Der Crash im SunSpec Scan ist behoben. Und noch einige Dinge mehr, die hier aber gerade nicht relevant sind. Sorry, für das leichte Chaos!
  7. Der Neustart wird durch einen Crash im SunSpec Scan ausgelöst. Dabei geht es um den Scan beim Start des WEM, nicht um den Scan, der über das Webinterface ausgeführt werden kann. @andyknownasabu Aus deinen Logs kann ich sehen, dass dein Wechselrichter schlecht erreichbar ist. In unserem Scan Code war ein Bug, der zu einem Crash führte, wenn das SunSpec Gerät beim Scan mitten drin für eine gewisse Zeit nicht mehr geantwortet hat. Du muss genau diese Stelle zeitlich getroffen haben. Den Fix dafür habe ich gerade committet und der wird in der nächsten Firmware-Version drin sein, die vermultich noch heute veröffentlicht wird. https://github.com/Tinkerforge/esp32-firmware/commit/fa5d6e1da5a920653c5fa2fffd3f9a3855a74044 Der Fehler war schon immer im Code, sorry. Warum der Crash bei dir erst jetzt auftritt ist mir unklar. Teste bitte die nächste Fimrware-Version. Ich gehe sehr stark davon aus, dass das Problem damit behoben ist.
  8. Ich habe die verstreuten und teils etwas veralteten brickd Installationsanweisung in der Dokumentation jetzt zusammengefasst und aktualisiert. Unser APT Repo beinhaltet jetzt auch brickd für Raspberry Pi OS in 64-bit. Das Package war schon vorhanden, aber nicht im APT Repo für Raspberry Pi OS hinterlegt.
  9. Teste mal bitte die angehängte Firmware. Diese behebt in unseren Tests beide Probleme. Die Ursache lag in der Art und Weise, wie dein Smart Meter reagiert, wenn eine Modbus Deviceaddrese angefragt wird, die das Smart Meter nicht kennt. Damit ging die Firmware nicht richtig um und dann blieb der Scan hängen und konnte auch nicht mehr abgebrochen werden. warp_firmware_2_2_1_65c63107_merged.bin
  10. @Smoki Kurze Einführung in SunSpec. Die Daten werden als eine Kette von Blöcken dargestellt. Die Kette beginnt mit zwei Registern die die 32bit SunSpec ID 0x53756E53 enthalten. Daran erkennen wir, dass SunSpec unterstüzt wird. Wir laufen alle Modbus-Geräteadressen (1 - 247) durch und versuchen die SunSpec ID zu finden. Wenn die ID vorhanden ist, dann lesen wird die Kette der Blöck aus. Jeder Block beginnt mit der Model ID (ein Register) und der Blocklänge (ein Register). Dadurch können wir uns an der Kette der Blöcke dranlang hangeln ohne alle Blöck verstehen zu müssen. Sondern wir können die Model ID und die Blocklänge lesen, sehen ob das ein Model ist das uns interesiert und dann um die Blocklänge weitergehen, um dann das nächste Model zu lesen. Die Kette der Blöcke endet mit einem Model mit ID 0 und Blocklänge 0. Unser Scan geht alle Blöcke durch und zeigt dir dann die an die zählerartige Daten beinhalten. In deinem Fall Model 103 und 122. Dabei lesen wir die Daten des 122 Models gerade noch nicht aus, dass ist das was das "Nicht unterstützt" besagt. Das Problem in das du jetzt läufst betrifft Model ID 160. Das ist ein Model, das wiederholte Unterblöcke beinhaltent. Dessen Blocklänge hängt also von der Konfiguration deines Wechselrichters ab. Wir lesen jetzt hier im Scanvorgang 160 als Model ID und 48 als Blocklänge aus, was 8+2x20 entspricht, wie MatzeTF das oben erläutert. Danach überspringen wir dann die 48 Register, um die nächste Model ID zu lesen und bekommen einen ILLEGAL_ADDRESS Modbusfehler von deinem Wechselrichter. MatzeTF hatte sich das bei dir genauer angesehen und festgestellt, dass wir da wegen der falschen Blocklänge mitten in den Block des 160er Models lesen, was nicht erlaubt ist. Von den Daten her sieht es so aus, als wenn dein Wechelrichter 6 Module angeschlossen hat und daher einen 160er Block mit 6 wiederholten Unterblöcken melden sollte. Er liefert auch 6 wiederholte Unterblöcke, aber die Blocklänge passt nicht dazu. Gemeldet wird eine Blocklänge von 48 (8+2x20), richtig wäre aber wohl eine Blocklänge von 128 (8+6*20). Wenn MatzeTF händsich das 160er Model mit einer Blocklänge von 128 ausliest, dann funktioniert es und nach dem 160er Model folgt das 0er End Model in der Blockkette. Sprich dein Wechselrichter meldet nach unserem Verständnis nach das 160er Model mit falscher Blocklänge. Im 160er Model steht unter dem N Wert die Anzahl der wiederholten Unterblöcke. Aber auch hier steht in deinem Fall 2, was zur Blocklänge 48 passt, aber nicht zu den wiederholten Unterblöcken die dann wirklich vorhanden sind. Die Daten des 160er Models sind hier inkonsistent in einer Weise, die wir nicht retten können. Das sieht für uns nach einem Fehler im Wechslrichter aus denn nur SMA selbst beheben kann. Das 64870er Model ist ein Vender Specific Model von SMA. Wir melden dann verwirrenderweise "Unknown" für. Ich ändere das auf "Vender Specific" für die nächste Version.
  11. Sorry für die späte Antwort. Tauchen die Bricks und Bricklets jetzt in Brick Viewer auf? Wenn ja, dann ist die einfachste Erklärung für den Timeout-Fehler, dass du dich bei der UID vertippt hast. Groß- und Kleinschreibung ist da wichtig. Kontrolliere bitte nochmal, dass die UID in deinem Python-Skript und Brick Viewer exakt übereinstimmen.
  12. Brick Daemon 2.4.5 Add Raspberry Pi 5 support for HAT (Zero) Brick Fix rare crash in initial USB device scan Downloads: Windows, Linux (amd64, i386, armhf, arm64), macOS
  13. Brick Daemon 2.4.5 Unterstützung für HAT (Zero) Brick auf Raspberry Pi 5 hinzugefügt Seltenen Absturz bei der ersten USB Geräte-Suche behoben Downloads: Windows, Linux (amd64, i386, armhf, arm64), macOS
  14. Firmware: HAT 2.0.4, HAT Zero 2.0.2 Support for Raspberry Pi 5 added Download: HAT, HAT Zero
  15. Firmware: HAT 2.0.4, HAT Zero 2.0.2 Support für Raspberry Pi 5 hinzugefügt Download: HAT, HAT Zero
  16. Deine Erkenntnisse sind soweit korrekt. Es werden abhängig vom Bricklet verscheidene Mikrocontroller aus der XMC 1100/1300/1400er Serie verwendet. Diese Details sind aber nicht relevant in deinem Fall. Ein Master Brick ab Hardware Version 3.0 kann unseren Bootloader auf einen leeren XMC flashen. Das kann allerdings dann nicht Brick Viewer, sondern du braucht das write_bootloader_and_firmware_to_comcu_bricklet.sh Script von hier https://github.com/Tinkerforge/flash-test Du brauchst dazu einen PC mit Linux und brickd (z.B. Ubuntu). Du schließt dein Bricklet an Port D einens Master Bricks 3.x an, schließt diesen Master Brick an den PC an und führst das write_bootloader_and_firmware_to_comcu_bricklet.sh Script aus. Dem gibts du als einziges Parameter den Pfad zur *.zbin Datei der Firmware für dein Bricklet mit. Diese kannst du unter https://www.tinkerforge.com/de/doc/Downloads.html herunterladen. ./write_bootloader_and_firmware_to_comcu_bricklet.sh bricklet_io16_v2_firmware_2_0_2.zbin Ich habe das jetzt recht knapp beschrieben. Falls das zu knapp war kann ich das auch in mehr Details beschreiben. Aber wenn du dich mit Linux auskennst, sollte das eigentlich reichen. Ansonsten frag bitte einfach.
  17. This is not a common problem. It's the first time I hear about it. But I might have a hunch, about what might cause this. When the problem occurs, do you see a change in the CAN error counters of the Bricklet (function get_error_log)? By default the Bricklet uses 8 hardware write buffers. Does it make a difference if you reduce the number of write buffers to 1 (function set_queue_configuration, parameter write_buffer_size = 1)? Does your script reset the Bricklet on start?
  18. SMA (steht auch in deren Dokumentation) erlaubt es nicht Werte partiell zu lesen. Genau das ist bei der Gerätesuche des Energy Managers passiert und daher kam der Invalid Address Fehler. Ist mit Beta 2 und in Git behoben. Das Script hat das Lesen da etwas anders gemacht, dadurch war das okay.
  19. git pull und teste bitte nochmal. Der Fehler dort ist ein anderer. An der Stelle wird Modell 160 gelesen, das 128 Register lang ist. Modbus erlaubt es aber nur 125 Register an einem Stück zu lesen. Das habe ich jetzt repariert. Mit -s wird der Block von Modell 160 nicht geladen, sondern übersprungen, daher tritt dieser Problem mit -s nicht auf. Das hat aber leider alles nichts mit dem originalen Problem zu tun. Das Script kann die Daten lesen, der Energy Manager nicht. Ich such mal weiter nach dem Unterschied.
  20. @poohnet Wir kommen näher. Das discover.py Script liest alle Werte einzeln. Der Energy Manager liest die Werte blockweise. Ich habe das discover.py Script jetzt umgestellt auf blockweises Lesen. Aktualisier mal bitte deinen git Clone und lass das Script nochmal laufen. Ich vermute, dass SMA es nicht erlaubt die Daten blockweise zu lesen. Das discover.py Script hat jetzt eine -s/--single-value-read Option, um das vorherige Verhalten wieder zu bekommen. Ich erwarte, dass das aktuelle discover.py Script ohne -s bei dir nicht funktiioniert, aber mit -s funktioniert. Kannst du das bestätigen?
  21. @poohnet Komisch! Kannst du bitte diese Script ausführen: https://github.com/Tinkerforge/esp32-firmware/blob/feature-meters-7/software/src/modules/meters_sun_spec/discover.py Du brauchst dazu pymodbus >= 3.5.x, am einfachsten über pip installieren. python3 discover.py -H <sunny-boy-addresse> -d 126 Das Script liest jeden Wert einzeln, anstatt den ganzen Common Model Block in einem Rutsch zu lesen.
  22. @poohnet Dann teste mal bitte den aktuelle Stand des features-meters-7 Branch (Commit: meters-sun-spec: Avoid reading common model block padding). Vielleichthilft das. Der Common Model Block kann laut Spec 65 oder 66 Register lang sein. Alles was wir hier zum Testen haben hat de 65er Variante. SMA hat aber die 66 Variante. Der Code geht damit richtig um, denke ich, aber vielleicht mag SMA nicht, dass ich das eine Padding Register mit lese. Das habe ich gerade geändert.
  23. Ich gehe davon aus das SunSpec aktiv ist, da die SunSpec ID gefunden wird bei Geräteadresse 126 (SMA Standardwert laut Dokumentation). Der Common Model Header wird auch gelesen, aber das Lesen des Common Model Blocks gibt dann einen ILLEGAL_ADDRESS Fehler. Es gibt gleich eine neue Firmware zum Testen.
  24. Da scheint sich was in Python geändert zu haben. Dieser Code hat in älteren Python Versionen funktioniert. Ich habe das korrigiert. Teste bitte mal Beta2. tinkerforge_shell_bindings_2_1_33_beta2.zip
  25. Sorry, there was a bug in this call. Please try the attached version. tinkerforge_shell_bindings_2_1_33_beta1.zip
×
×
  • Neu erstellen...