Jump to content

photron

Administrators
  • Gesamte Inhalte

    3.206
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    56

Alle erstellten Inhalte von photron

  1. Standardmäßig ist es so, dass Android eine Activity bei Config Änderungen wie Rotation neustartet. Die brickd App startet im onCreate der Activity den Service uns stoppt ihn im onDestroy. Im Service läuft der eigentliche brickd Code. Das Problem hier ist jetzt, dass der Service in einem extra Thread die C main() Funktion von brickd aufruft. Der Neustart der Activity und des Service führt jetzt dazu, dass main() verlassen und dann nochmal aufgerufen wird. Das ist etwas was in der normalen Version von brickd nicht passiert. Wenn dort main() verlassen wird, dann endet der Prozess. Daher kommen einige Teile des brickd C Codes nicht damit klar, dass main() ein zweites mal aufgerufen wird. Weil beim zweiten Aufruf von main() gewissen Annahmen, die der Code über den Zustand des Programms macht, nicht mehr gelten. Die kurzfristige Lösung ist es den Neustart der Activity und damit des Services und damit des zweiten main() Aufrufs zu unterbinden. Dazu muss die Activity angeben, dass es die Config Änderungen wie Rotation selbst behandeln kann und daher nicht neugestartet werden muss. Das habe ich jetzt erstmal eingebaut. Die langfristige Lösung wird sein dem C Code beizubringen, dass main() auch mehrfach aufgerufen werden kann. Potentiell muss auch das Verhältnis von Activity und Service zu einander anders gebaut werden.
  2. Das ist komisch, dass du da die Parameter beim Starten alle angeben musst. Denn du gibst da jeweils exakt die Standardwerte an, außer beim Update Intervall, das ist standardmäßig 3 Sekunden. Beim Subscribe kennt MQTT # und * als Platzhalter im Topic. Dabei steht # für beliebig viele Element im Topic und * für exakt ein Element im Topic. Wenn du also das hier ausführst mosquitto_sub -v -t tinkerforge/bricklet/outdoor_weather/# dann sendet mosquitto_sub eine Subscribe Anfrage an den Broker für das tinkerforge/bricklet/outdoor_weather/# Topic. Der Broker vergleicht dann alle eingehenden Nachrichten mit dem Topic und sendet dann an mosquitto_sub alle die übereinstimmen. Der mosquitto_sub hat aber keinen Einfluss darauf was das brick-mqtt-proxy.py Script tut. So funktioniert MQTT nicht. MQTT arbeitet nach dem Publish/Subscribe Modell. Clients (mosquitto_sub, mosquitto_pub, brick-mqtt-proxy.py, etc) kommunizieren nicht direkt miteinander, sondern immer nur mit einem Broker der dann die Nachrichten zwischen den Clients weiterleitet. brick-mqtt-proxy.py verbindet sich mit dem Broker und sendet (Publish) im Update Intervall Nachrichten über die Bricks und Bricklets an den Broker. Das ist völlig unabhängig davon, ob noch anderen Clients verbunden sind, die die Nachrichten empfangen können, oder nicht. mosquitto_sub verbindet sich mit dem Broker und teilt diesem mit (Subscribe), dass es gerne Nachrichten unter dem angegebenen Topic empfangen würde. Der Broker schaut sich die Topics der eingehenden Nachrichten an (z.B. von brick-mqtt-proxy.py). Wenn eine Übereinstimmung mit einer Subscription vorliegt, dann wird die Nachricht an den entsprechenden Client weitergeleitet. Wenn sich keiner für die Nachricht interessiert wird sie im Broker verworfen. Du kannst dir das als stille Post mit 3 Personen vorstellen. Der Broker sitzt in der Mitte und brick-mqtt-proxy.py flüstert dem Broker was von links ins Ohr. Der Broker flüstert dann die Nachrichten weiter an mosquitto_sub auf der rechten Seite, aber nur die Nachrichten mit einem Topic das mosquitto_sub dem Broker vorher genannt hat. Wenn es nur darum geht deinem Nachbarn Daten weiterreichen zu können, dann ist wahrscheinlich eine einfache Portfreigabe des Broker Ports am einfachsten.
  3. Ich starte brick-mqtt-proxy.py auf dem PC an dem auch das Outdoor Weather Bricklet angeschlossen ist und der Mosquitto Broker läuft: python brick-mqtt-proxy.py Und dann laufen da unter tinkerforge/bricklet/outdoor_weather/<UID>/station_data tinkerforge/bricklet/outdoor_weather/<UID>/sensor_data die Daten ein: mosquitto_sub -v -t tinkerforge/bricklet/outdoor_weather/#
  4. Du kannst hier die aktuellste Version der brick-mqtt-proxy.py Datei herunterladen https://raw.githubusercontent.com/Tinkerforge/brick-mqtt-proxy/master/brick-mqtt-proxy.py und deine Version damit ersetzen. Dass sollte dann schon alles sein.
  5. Die jetzige Implementierung erwartete da folgendes: mosquitto_pub -t tinkerforge/bricklet/outdoor_weather/Es8/get_sensor_data/set -m 24 Das Vorgehen ist aber inkonsistent zum restlichen Verhalten des MQTT Proxies. An anderen Stellen wo wir solche Getter haben die ein Parameter haben ruft der MQTT Proxy intern den Getter mit allen möglichen Parameterwerten ab und erstellt daraus dann eine Message. Das habe ich jetzt auch für das Outdoor Weather Bricklet so abgeändert. Mit der aktuellen git Version kommt dann da sowas bei heraus (formatiert für bessere Übersicht): tinkerforge/bricklet/outdoor_weather/Fax/station_data { "_timestamp":1530613201.561859, "241":{ "wind_speed":0, "temperature":265, "wind_direction":255, "gust_speed":6, "rain":120, "humidity":31, "last_change":1526, "battery_low":false }, "149":{ "wind_speed":0, "temperature":262, "wind_direction":15, "gust_speed":0, "rain":969, "humidity":32, "last_change":38, "battery_low":false } } tinkerforge/bricklet/outdoor_weather/Fax/sensor_data { "_timestamp":1530613201.572538, "179":{ "last_change":37, "temperature":253, "humidity":38 } } Ich empfange hier zwei Stationen (241 und 149) und einen Sensor (179).
  6. Stimmt, da ist ein Bug. Das hat original mal funktioniert, und ja die $serverNonce Variable war schon immer überflüssig. Allerdings wurde danach die Unpack Logik überarbeitet, so dass dann _brickd_get_authentication_nonce() nicht mehr ein Array sondern eine Referenz auf ein Array zurückgegeben hat. Die authenticate Funktion wurde aber daran nicht angepasst. Deine Lösung dazu funktioniert, hier ist meine: https://github.com/Tinkerforge/generators/commit/ce21670b63cc07417e0d3540a57f9f0d53a32fd7 Danke für den Hinweis!
  7. Unsere Python Bindings und Beispiele verwenden ipdb nicht. Daher muss der Import dafür aus deinem Code kommen. Ist dein Python Code denn in einer Datei namens "Python-Code__geändert2.0.py", die dort erwähnt wird?
  8. But the Master Brick worked before you put it into bootloader mode? Do you have anything connected to the Master Brick, apart from the USB cable? If yes, disconnect everything apart from the USB cable and try again. Is the reset button stuck, keeping the Brick in reset? Or does the reset button feel normal?
  9. Try to put in in bootloader mode a second time, even if the blue LED is already off.
  10. Nic, freut mich das es funktioniert. Das zeigt mir, dass ich z.B. nicht vergessen habe die Hälfte der relevanten Dateien zu committen Ich habe jetzt auch Hotplug hinzugefügt. Zwei Dinge die jetzt noch fehlen: eine Möglichkeit die Konfiguration zu ändern und das Log einsehen zu können.
  11. libusb funktioniert jetzt auch. Es fehlen noch ein paar Dinge, das ganze ist aber jetzt erstmal grundsätzlich funktional und funktioniert auch runter bis Android 4.4.
  12. duaw, stimmt es fehlen momentan einige Beispiele, das ist nicht gut. Wir arbeiten daran und haben mit dem Release der neuen Bricklets diese Woche die Lücke auch schon ein Stück weiter geschlossen. Ich denke wir werden die Lücke in den nächsten 1-2 Wochen ganz schließen können. NoCee, du hast Recht, die GUI Integration ist nicht gut dokumentiert. Das "Problem" hier ist, dass GUI Beispiele typischerweise länger und, abhängig von der Programmiersprache und GUI Framework, oft aus mehreren Dateien bestehen. Die Beispiele sind aber absichtlich möglichst kurz gehalten. Ich setzte mir dafür mal ein "GUI Integrations" Tutorial auf die TODO Liste in dem man das dann besser beschreiben kann und ein GUI Beispiel mit allen API Bindings umsetzt.
  13. RED Brick Image 1.12 Fix booting with an RS485 Extension present Update Brick Viewer to version 2.3.15 pdate all API bindings: C/C++ 2.1.20, C# 2.1.18, Delphi/Lazarus 2.1.19, Java 2.1.18, JavaScript 2.0.18, Octave 2.0.18, Perl 2.1.17, PHP 2.1.17, Python 2.1.17, Ruby 2.1.17, Shell 2.1.17, Visual Basic .NET 2.1.17 Download: RED Brick Image
  14. RED Brick Image 1.12 Boot mit aufgesteckter RS485 Extension funktioniert wieder Brick Viewer auf Version 2.3.15 aktualisiert Alle API Bindings aktualisiert: C/C++ 2.1.20, C# 2.1.18, Delphi/Lazarus 2.1.19, Java 2.1.18, JavaScript 2.0.18, Octave 2.0.18, Perl 2.1.17, PHP 2.1.17, Python 2.1.17, Ruby 2.1.16, Shell 2.1.17, Visual Basic .NET 2.1.17 Download: RED Brick Image
  15. Ich habe da mal gerade einen ersten Schuss gemacht. Im brickd git unter src/build_data/android/brickd liegt jetzt ein Android Studio Projekt, dass mittels NDK den brickd C Code in eine Android App verpackt. brickd an sich funktioniert und ich kann mich von meinem PC aus mit Brick Viewer auf mein Android Phone verbinden. Was noch fehlt ist eine funktionierende libusb Version. libusb kann für Android kompiliert werden. Dem Android Studio Projekt unter src/build_data/android/brickd habe ich eine kompiliert libusb Version beigelegt. Aber der libusb_init Aufruf schlägt fehl, da die offizielle libusb Version nicht mit den Restriktionen eines nicht-gerooteten Android Phones umgehen kann. Das ist ein bekanntes Problem, aber kein großes Problem, denke ich. Es finden sich genug Forks von libusb auf GitHub, die sich mit diesem Problem befassen. Da muss man sich jetzt nur das passende heraussuchen.
  16. Brick Logger 2.0.7 Add support for CAN 2.0, Industrial Counter, Industrial Digital In 4 2.0, Industrial Dual Relay, Industrial Quad Relay 2.0, IO-4 2.0, LED Strip 2.0, Load Cell 2.0, Particulate Matter, PTC 2.0, Real-Time Clock 2.0, Sound Pressure Level, Thermocouple 2.0 and Voltage/Current Bricklet 2.0 Downloads: Windows, Linux, Mac OS X, RED Brick
  17. Brick Logger 2.0.7 Support für CAN 2.0, Industrial Counter, Industrial Digital In 4 2.0, Industrial Dual Relay, Industrial Quad Relay 2.0, IO-4 2.0, LED Strip 2.0, Load Cell 2.0, Particulate Matter, PTC 2.0, Real-Time Clock 2.0, Sound Pressure Level, Thermocouple 2.0 und Voltage/Current Bricklet 2.0 hinzgefügt Downloads: Windows, Linux, Mac OS X, RED Brick
  18. Brick Viewer 2.3.15 Add support for CAN 2.0, Industrial Counter, Industrial Digital In 4 2.0, Industrial Dual Relay, Industrial Quad Relay 2.0, IO-4 2.0, LED Strip 2.0, Load Cell 2.0, Particulate Matter, PTC 2.0, Real-Time Clock 2.0, RS232 2.0, Sound Pressure Level, Thermocouple 2.0 and Voltage/Current 2.0 Bricklet Add Data Logger support for CAN 2.0, Industrial Counter, Industrial Digital In 4 2.0, Industrial Dual Relay, Industrial Quad Relay 2.0, IO-4 2.0, LED Strip 2.0, Load Cell 2.0, Particulate Matter, PTC 2.0, Real-Time Clock 2.0, Sound Pressure Level, Thermocouple 2.0 and Voltage/Current 2.0 Bricklet Add Data Logger support for logging all stations and sensors with the Outdoor Weather Bricklet Downloads: Windows, Linux, Mac OS X
  19. Brick Viewer 2.3.15 Support für CAN 2.0, Industrial Counter, Industrial Digital In 4 2.0, Industrial Dual Relay, Industrial Quad Relay 2.0, IO-4 2.0, LED Strip 2.0, Load Cell 2.0, Particulate Matter, PTC 2.0, Real-Time Clock 2.0, RS232 2.0, Sound Pressure Level, Thermocouple 2.0 und Voltage/Current 2.0 Bricklet hinzugefügt Data Logger Support für CAN 2.0, Industrial Counter, Industrial Digital In 4 2.0, Industrial Dual Relay, Industrial Quad Relay 2.0, IO-4 2.0, LED Strip 2.0, Load Cell 2.0, Particulate Matter, PTC 2.0, Real-Time Clock 2.0, Sound Pressure Level, Thermocouple 2.0 and Voltage/Current 2.0 Bricklet hinzugefügt Data Logger kann jetzt alle Stationen und Sensoren über das Outdoor Weather Bricklet aufzeichnen Downloads: Windows, Linux, Mac OS X
  20. Bindings: C/C++ 2.1.20, C# 2.1.18, Delphi/Lazarus 2.1.19, Java 2.1.18, JavaScript 2.0.18, LabVIEW 2.1.17, Mathematica 2.1.17, MATLAB/Octave 2.0.18, Perl 2.1.17, PHP 2.1.17, Python 2.1.17, Ruby 2.1.17, Shell 2.1.17, Visual Basic .NET 2.1.17 Add support for CAN 2.0, Industrial Counter, Industrial Digital In 4 2.0, Industrial Dual Relay, Industrial Quad Relay 2.0, IO-4 2.0, LED Strip 2.0, Load Cell 2.0, Particulate Matter, PTC 2.0, Real-Time Clock 2.0, RS232 2.0, Sound Pressure Level, Thermocouple 2.0 and Voltage/Current 2.0 Bricklet [all] Add get/set_maximum_timeout functions to NFC Bricklet API [all] Add is_sensor_connected function and SENSOR_CONNECTED callback to PTC Bricklet API [all] Break Humiditiy 2.0, Rotary Encoder 2.0 and Temperature IR 2.0 Bricklet API to fix types for callback threshold min/max configuration [all] Fix string (un)packing for non-ASCII chars [Ruby] Add general streaming support [JavaScript] Download: C/C++, C#, Delphi/Lazarus, Java, JavaScript, LabVIEW, Mathematica, MATLAB/Octave, Perl, PHP, Python, Ruby, Shell, Visual Basic .NET
  21. Bindings: C/C++ 2.1.20, C# 2.1.18, Delphi/Lazarus 2.1.19, Java 2.1.18, JavaScript 2.0.18, LabVIEW 2.1.17, Mathematica 2.1.17, MATLAB/Octave 2.0.18, Perl 2.1.17, PHP 2.1.17, Python 2.1.17, Ruby 2.1.17, Shell 2.1.17, Visual Basic .NET 2.1.17 Support für CAN 2.0, Industrial Counter, Industrial Digital In 4 2.0, Industrial Dual Relay, Industrial Quad Relay 2.0, IO-4 2.0, LED Strip 2.0, Load Cell 2.0, Particulate Matter, PTC 2.0, Real-Time Clock 2.0, RS232 2.0, Sound Pressure Level, Thermocouple 2.0 und Voltage/Current 2.0 Bricklet hinzugefügt [alle] get/set-maximum-timeout Funktionen zur NFC Bricklet API hinzugefügt [alle] is-sensor-connected Funktion und SENSOR_CONNECTED Callback zur PTC Bricklet API hinzugefügt [alle] Bruch der Humiditiy 2.0, Rotary Encoder 2.0 und Temperature IR 2.0 Bricklet API um den Typ der Callback Threshold min/max Konfiguration zu korrigieren [alle] String (Ent)packen für nicht-ASCII Chars korrigiert [Ruby] Allgemeinen Streaming Support hinzugefügt[JavaScript] Download: C/C++, C#, Delphi/Lazarus, Java, JavaScript, LabVIEW, Mathematica, MATLAB/Octave, Perl, PHP, Python, Ruby, Shell, Visual Basic .NET
  22. Not sure why you get strange X server errors when running brickv as root. This just works for me. The correct way to add the existing user "myself" to the existing group "dialout" is this: sudo usermod -a -G dialout myself Afterwards you need to logout and login again, because group changes do not apply directly. Then you should be able to flash a Brick from Brick Viewer started as user.
  23. Firmware: GPS 2.0 2.0.3 Reconfigure SBAS after cold-restart and factory-reset Download: GPS 2.0
  24. Firmware: GPS 2.0 2.0.3 SBAS wird nach einem Cold Restart und Factory Reset wieder korrekt konfiguriert Download: GPS 2.0
  25. We've fixed the missing dependency issue. We can reproduce the GPG error, but only on Ubuntu Bionic Beaver. It doesn't occur on the previous Ubuntu versions. We're looking into it.
×
×
  • Neu erstellen...