Jump to content

rtrbt

Administrators
  • Gesamte Inhalte

    1.489
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    138

Alle erstellten Inhalte von rtrbt

  1. You mean threads spawned in the enumerate callback to handle callbacks of the found devices? If you use the thread::spawn(move || { for x in receiver { //[...] } } pattern, then the thread will join, when the corresponding sender is dropped in the IpConnection, e.g. when the IpConnection is dropped. Another way would be to explicitly drop the receiver, but then you can not use the for loop pattern anymore. Dropping the bricklet does not close callback channels. Instead you have to either drop the IpConnection or the receiver. The device object does not hold any information abount the callback channels. Unfortunately, hot plugging devices to already powered stacks is not supported (for electrical reasons as well as in software). The EnumerationType::Disconnected is only sent, if the Brick Daemon on a PC notices that the USB connection to a stack is lost.
  2. Moin, Bei manchen Karten wird angegeben, wie viele Daten geschrieben werden können. Wenn du da auf Nummer sicher gehen willst, kaufst du eine für den industriellen Einsatz geeignete Karte, die haben dann Datenblätter wie dieses hier (keine Werbung, das war das erstbeste Suchergebnis) Die Karte hält laut Datenblatt 600TB aus (unter Terabytes Written (Max.)). D.h. du kannst zwei Jahre lang pro Minute mehrere Hundert Megabyte schreiben, falls meine Schätzung stimmt. Du kannst natürlich immer Pech haben und eine Karte erwischen, die nach zwei Monaten hin ist, aber das Risiko hat man ja immer. Erik
  3. Hi, You've found a design mistake in the bindings. The IpConnectionRequestSender has the purpose to allow multi-threaded calling of IpConnection functions and device creation, but for some reason I've forgot to accept the RequestSender in the [device]::new functions. The attached version (which will probably be released as 2.0.11 soon) fixes this. With this version everything you can do with an IpConnection should also be possible with the RequestSender, that can be cloned for as many threads as needed. Also attached is an example, that shows how to use the RequestSender in an enumerate callback handler. To use the local version of the bindings, extract the src folder and Cargo.toml into a tinkerforge folder inside your project's src folder, remove the tinkerforge=... line in your Cargo.toml and add [dependencies.tinkerforge] path = "src/tinkerforge" instead. Erik tinkerforge_rust_bindings_2_0_11.zip rust_ipcon_fix_example.zip
  4. Vermutlich ist die Netzwerkfirewall da zu aggressiv: Die Requests die der Brick Viewer sendet, sehen nicht aus, als kämen sie von einem Browser. Deshalb werden die wohl blockiert. Als work-around kannst du die Firmwares von Hand runterladen und im Flashing-Fenster per Custom flashen.
  5. Moin, Sieh mal nach, ob die Firewall von Windows den Brick Viewer blockiert hat. heißt, du kommst mit einem Browser auf http://download.tinkerforge.com/ ? Erik
  6. Wenn ich nochmal darüber nachdenke: Das Verhalten, was du siehst, ließe sich erklären, wenn du bei beiden Beispielen statt der UID des jeweiligen Bricklets die des Master Bricks eingetragen hast.
  7. Moin, hast du daran gedacht, die UIDs in den Beispielen zu ändern? Das übersieht man gerne. Die Logs kannst du mal anhängen, eventuell findet sich da ja was. Erik
  8. Suspend kann zwar der Linux-Kernel, aber auf dem RED-Brick funktioniert er hardwareseitig nicht. Du könntest dir mit einem per USB angeschlossenen Master-Brick und einem Relay-Bricklet etwas basteln, das hat aber folgende Nachteile: Das Timing wird sehr ungenau (im Bereich von einer Minute pro Stunde, das hängt vom Quartz auf dem Master Brick ab). Der Master Brick braucht eine Stromversorgung, da brauchst du entweder eine Step-Down-Power-Supply oder musst dir ein USB-Kabel zurecht bauen. Der RED-Brick würde sich selbst die Stromversorgung (sofort) wegnehmen, also kann das Linux nicht sauber herunterfahren. Hängt also von deinem Einsatzzweck ab, ob das sinnvoll ist. Bei den Relaymodulen von Amazon musst du mal sehen, ob du mit dem Timing hinkommst. Das erste scheint auf maximal 999 Minuten (16 Stunden 39 Minuten) konfigurierbar zu sein.
  9. Das b steht für Byte. Dass der Payload an der Stelle des Codes noch (nicht dekodierte) Bytes sind, ist ein Bug in den Bindings. Ich habe mal eine Version mit Bugfix angehangen. Du kannst mosquitto_pub mit -s beliebige Dinge auf der Standardeingabe füttern, die Bindings verstehen aber nur UTF-8 kodiertes JSON. Das sollte auch an dem Bug in den Bindings liegen. tinkerforge_mqtt
  10. Moin, Das scheint ein seltsames Problem zu sein. Wenn ich die Befehle copy-paste und die UID anpasse, funktioniert es bei mir. Du kannst mal versuchen, die Bindings mit --debug --show-payload starten. Dann sollte in der Fehlermeldung die du bekommst hinten der Payload stehen, wie ihn die Bindings empfangen haben. Erik
  11. Habe dir nochmal eine neue Firmware angehangen, da war noch ein Rundungsfehler in dem Fall den du getroffen hattest, der u.U. dazu führt, dass doch zwei Callbacks (das erste eins größer als das zweite) zugestellt werden. Die angehangene Firmware ist identisch zur offiziellen 2.0.3. rotary-poti-bricklet.bin
  12. Moin, Dass nur UID (und enumeration type) gültig sind, liegt daran, dass der Brick Daemon nur diese Werte zwischenspeichert, um sie mit dem Callback rauszugeben. Das ist absichtlich so, da es Fälle gibt, wo nicht mehr Informationen verfügbar sind. Das war in der Firmware kaputt. Das Problem ist, dass dein Programm, weil in C, so schnell ist, dass das Callback schon registriert und aktiviert ist, wenn der erste Wert abgefragt wird. Weil die Firmware da die Reihenfolge falsch hatte, wurde erst der (geglättete) Positionswert aus nicht vorhandenen Daten berechnet und danach der erste echte Wert vom Poti gelesen. Teste mal bitte die angehangene Firmware, die löst das Problem bei mir. Erik rotary-poti-bricklet.bin
  13. Klingt gruselig Hast du eventuell ein anderes Programm laufen, dass die Segmente setzt? Das kannst du am einfachsten testen, indem du mit dem Brick Viewer die UID des Bricklets änderst. Andere Programme sollten dann ins Leere laufen, falls sie die UID hardgecoded haben. Alternativ könnte auch ein Programm laufen, dass die falsche UID verwendet und deshalb seine Nachrichten an das Segment Display schickt, statt an das richtige Bricklet. Erik
  14. Ich habe mir gerade nochmal das Timing angesehen. Wie lange musst du beim Anlernen warten, vom Switch On senden bis die LED aufhört zu blinken? Die sollte, wenn es klappt, fast sofort aufhören zu leuchten und dann konstant an sein. Falls die Fassung nichts empfängt, hört sie 20 Sekunden nach dem Knopfdruck auf zu blinken. Ich vermute aber, weil du ja andere Dinge mit dem Bricklet steuern kannst, dass die Fassung hin ist. Hast du eine Fernbedienung oder irgendetwas anderes mit dem du die Fassung testen kannst? Wegen anderen Lampenfassungen kann ich dich nur auf die Kompatiblitätsliste verweisen. Da ist aber leider nicht aufgelistet, welche als Switch und welche als Dimmer arbeiten.
  15. Moin, Ich habe mal getestet, die Fassung will tatsächlich als B-Switch angesprochen werden. Folgendes funktioniert bei mir: [*]Lampenfassung alle Pairings vergessen lassen [*]Im Brick Viewer das Remote Switch Bricklet 2.0 auf B Switch, irgendeine Adresse (z.B: 12345678) und irgendein Unit (z.b. 5) konfigurieren [*]Lampenfassung in den Pairingmodus schicken [*]Im Brick Viewer einmal Switch On senden [*]Warten bis die LED an der Lampe aufgehört hat zu blinken Dann reagiert die Lampe auf Switch On und Switch Off. Dimmen startet, wenn die Lampe an ist und nochmal Switch On gesendet wird. Nochmal Switch On hält die Dimmstufe. Was mir beim Testen aufgefallen ist, ist dass der Empfang je nach Position des Bricklets schlecht sein kann, falls die Lampenfassung in einen Metallschirm geschraubt ist (z.B in diesen hier: https://www.ikea.com/de/de/p/tertial-arbeitsleuchte-weiss-70355455/).
  16. Dabei auch darauf achten, dass der Master- unter dem Stepper-Brick sein muss.
  17. Moin, Die Fassung steht deshalb auf der Kompatibilitätsliste, weil wir eine Funksteckdose, die das selbe Protokoll sprechen sollte, getestet haben. Wir bestellen gerade mal genau diese Fassung zum Testen. Eine erste Theorie die ich habe ist, dass die Fassung eventuell als B-Switch, nicht als B-Dimmer arbeitet und das Dimmen durch zwei An-Signale ausgelöst wird. Ich teste das mit der Fassung sobald sie hier eintrifft und melde mich nochmal. Erik
  18. Hi, Das kann entweder ein Problem mit der Karte oder dem Brick sein. Hast du eine zweite Karte auf die du das Image flashen kannst? Falls ja, probiere das mal, wenn es mit einer anderen Karte auch nicht geht, sollte das Problem der Brick sein. Erik
  19. In Brick Viewer 2.4.3 the 3D rendering is working with OpenGLES (i.e. on the Raspberry Pi).
  20. Hi, can you please try the attached version of Brick Viewer? The problem seems to be, that the IMU 2.0 3D rendering uses the (very old) immediate mode, which is only supported by OpenGL, not OpenGLES. The Raspberry Pi does not support OpenGL, so we can't render the 3D model, which was not handled. I will rewrite the rendering to use more modern OpenGL capabilities, which are also supported by OpenGLES. But for now, you can use the attached version, which disables the 3D rendering if only OpenGLES is available. Thanks for reporting the bug, Erik brickv-2.4.2_all_opengl_fix.deb
  21. Hi, You can distinguish multiple sensors and stations with the identifier field. If another sensor starts sending, it should change from 164 to another value.
  22. Moin, Laut Schaltplan braucht das Bricklet alle 10 Pins. Im Schaltplan ist der Bricklet-Stecker P1 oben links.
  23. Dann verwendet Qt bei dir vermutlich immer den Fusion Style. Der ist der Standard wenn Qt nicht sieht, dass du KDE oder etwas Gtk-basiertes laufen hast. (Siehe hier)
  24. Moin, das ist korrekt. Der Brick Viewer hängt ab Version 2.4.0 von Python 3 und PyQt5 ab, die aber im RED Brick Image noch nicht enthalten sind, deshalb der Hinweis. Die kommende Version 1.14 liefert die Abhängigkeiten nach.
  25. The scripts are just pseudocode, so you have to translate them to your favorite language, for example Python with the Paho library.
×
×
  • Neu erstellen...