Jump to content

remotecontrol

Members
  • Gesamte Inhalte

    625
  • Benutzer seit

  • Letzter Besuch

Posts erstellt von remotecontrol

  1. Hallo TF-Team,

    ich habe ein paar Detailfragen zur Funktion der RTC des HAT:

    • in der Doku steht "mit Batteriebackup"
      => puffert der HAT die Zeit ohne zusätzliche externe Batterie?
    • Der Raspi war einen Tag aus, kurz nach booten des Raspi wird die Zeit "schnell hochgezählt" bis die tatsächliche aktuelle Zeit erreicht wird.
      Ich habe eine Schleife in meinem Programm welches eigentlich nur 1x pro Sekunde aktiv wird und man sieht deutlich, dass es sehr schnell was tut. Eine Uhr zählt mehrere Minuten im Sekundentakt hoch, bis die aktuelle Zeit erreicht wird.
      => kommt das über den brickd mit der RTC oder macht der Raspi das quasi immer so?

    Ich frage mich nämlich wie ich diesen initialen Zustand erkennen kann?

    Programmseitig sieht das nämlich so aus, als kämen über eine Stunde keine Events vom Stack und das Programm denkt "das System reagiert nicht mehr".
    Dabei sind in realer Zeit ja mal gerade 10 Sekunden vergangen.

    Eine Variante wäre noch, /dev/rtc (hwclock) mit der Systemzeit zu vergleichen und zwar so lange, bis die wenigstens auf 1 Minute bei einander sind und dann erst richtig zu starten.

  2. Damit komme ich weiter, aber nicht viel:

    Traceback (most recent call last):
      File "main.py", line 32, in <module>
        from tzlocal import get_localzone
    ImportError: No module named 'tzlocal'

    Ich habe zwar ein tzlocal Package gefunden, aber das scheint für python2 gewesen zu sein ?

    Kommentiere ich die Import Zeile aus, kommt der nächste Fehler:

    Traceback (most recent call last):
      File "main.py", line 283, in main
        from brickv.mainwindow import MainWindow
      File "/home/holger/bin/tf/brickv-2.4.11/src/brickv/mainwindow.py", line 40, in <module>
        from brickv.plugin_system.plugin_manager import PluginManager
      File "/home/holger/bin/tf/brickv-2.4.11/src/brickv/plugin_system/plugin_manager.py", line 29, in <module>
        from brickv.plugin_system.plugins import device_classes
      File "/home/holger/bin/tf/brickv-2.4.11/src/brickv/plugin_system/plugins/__init__.py", line 44, in <module>
        from brickv.plugin_system.plugins.imu import device_class as imu
      File "/home/holger/bin/tf/brickv-2.4.11/src/brickv/plugin_system/plugins/imu/__init__.py", line 24, in <module>
        from brickv.plugin_system.plugins.imu.imu import IMU
      File "/home/holger/bin/tf/brickv-2.4.11/src/brickv/plugin_system/plugins/imu/imu.py", line 30, in <module>
        from brickv.plugin_system.plugins.imu.imu_3d_widget import IMU3DWidget
      File "/home/holger/bin/tf/brickv-2.4.11/src/brickv/plugin_system/plugins/imu/imu_3d_widget.py", line 36, in <module>
        from brickv.render_widget import RenderWidget
      File "/home/holger/bin/tf/brickv-2.4.11/src/brickv/render_widget.py", line 376
        vertex_buf.extend([vert_pos.x(), vert_pos.y(), vert_pos.z(), *color, 0.0, 0.0])
                                                                        ^
    SyntaxError: can use starred expression only as assignment target


     

  3. Hallo zusammen,

    wenn ich versuche den Brickv 2.4.11 aus den Sourcen zu bauen + starten, dann bekomme ich mit der neuesten Version diesen Fehler:

    tf/brickv-2.4.11/src/brickv> python3 main.py 
      File "main.py", line 111
        
                     ^
    SyntaxError: only named arguments may follow *expression

    Ich habe Python 3.4.6 auf dem System.
    Zuletzt hatte ich Brickv 2.4.2 in analoger Weise gebaut, das war lauffähig.

    Eine Idee was falsch ist ?

  4. Du hast einen RasPi an dem das Load Cell steckt.

    Und über einen anderen Laptop möchtest Du die Werte auslesen?

     

    Dann brauchst Du eine Netzwerkverbindung zwischen Raspi und dem Laptop: WLAN oder Ethernet. Kannst Du den Raspi per Ethernet / Kabel anschließen?

     

    Auf dem Laptop kannst Du den Brick Viewer laufen lassen, aber der braucht eine Netzverbindung zum Raspi, wo der Brick Daemon läuft.

  5. Hallo TF Team,

     

    ich versuche gerade die Signale einer Fernbedienung am RemoteSwitch 2.0 zu empfangen. Ich nutze einen REMOTE_SWITCH_V2_CALLBACK_REMOTE_STATUS_B (in C++).

    Wenn der Callback länger als 0,6 Sekunden nicht gerufen wurde schreibt er "Switch B", wenn der öfter gerufen wird "Repeat Switch B".

     

    Im Grunde funktioniert das auch, aber das "Problem" kommt beim Statuswechsel von ein nach aus oder aus nach ein.

    Wenn länger keine Taste gedrückt wurde und dann z.b. von ein nach aus, dann ist das erste Event immer noch ein "ein".

     

    In dem Beispiel hier, der Schalter war "ein", jetzt drücke ich "aus" und das erste Event ist dennoch erst ein "ein" (Zeile 01) und direkt danach über den Repeat kommt der "aus".

     

    01  2019-09-22 17:41:32.746270  Switch B 27172244 unit 0 to 1
    02  2019-09-22 17:41:32.986297  Repeat switch B 27172244 unit 0 to 0
    03  2019-09-22 17:41:33.064389  Repeat switch B 27172244 unit 0 to 0
    04  2019-09-22 17:41:36.231794  Switch B 27172244 unit 0 to 0
    05  2019-09-22 17:41:36.471759  Repeat switch B 27172244 unit 0 to 1
    06  2019-09-22 17:41:36.553723  Repeat switch B 27172244 unit 0 to 1
    07  2019-09-22 17:41:36.632777  Repeat switch B 27172244 unit 0 to 1
    08  2019-09-22 17:41:55.548308  Switch B 27172244 unit 0 to 1
    09  2019-09-22 17:41:55.629823  Repeat switch B 27172244 unit 0 to 1
    10  2019-09-22 17:41:55.707598  Repeat switch B 27172244 unit 0 to 1
    11  2019-09-22 17:41:55.786624  Repeat switch B 27172244 unit 0 to 1
    12  2019-09-22 17:41:55.868673  Repeat switch B 27172244 unit 0 to 1
    13  2019-09-22 17:41:58.920037  Switch B 27172244 unit 0 to 1
    14  2019-09-22 17:41:59.160091  Repeat switch B 27172244 unit 0 to 0
    15  2019-09-22 17:41:59.238909  Repeat switch B 27172244 unit 0 to 0
    16  2019-09-22 17:42:03.272009  Switch B 27172244 unit 0 to 0
    

     

    Dann drücke ich "ein", aber in Zeile 04 kommt erstmal wieder ein "aus" und erst im Repeat ein "ein" und so setzt sich das fort.

     

    Irgendeine Idee woran das liegen könnte?

    Sieht immer so aus, als wäre das 1. Event der aktuelle Zustand und danach erst der Zustand der Taste entsprechend.

  6. Hallo zusammen,

     

    habe gerade im aktuellen brickv auf "Auto Update all bricklets" geclickt und das bekommen:

    Exception raised at 2019-08-30T19:49:10.064769+02:00
    Traceback (most recent call last):
      File "/usr/share/brickv/flashing.py", line 1595, in auto_update_bricklets_clicked
        plugin = self.download_bricklet_plugin(progress, device_info.url_part, device_info.plugin.has_comcu, device_info.name, device_info.firmware_version_latest)
      File "/usr/share/brickv/flashing.py", line 1072, in download_bricklet_plugin
        return self.download_file(url, name, progress_dialog=progress)
      File "/usr/share/brickv/flashing.py", line 237, in download_file
        if progress.uses_default_text_for_width_calculation:
    AttributeError: 'QProgressDialog' object has no attribute 'uses_default_text_for_width_calculation'
    

     

    Könnt Ihr bei Gelegenheit ja mal prüfen.

  7. Hallo TF Team,

     

    die letzte Änderung der C API verursacht Umstellungsaufwand, das ging aus den Veröffentlichungen so nicht hervor.

     

    Vorher sah mein Code z.B. so aus:

    temperature_ir_register_callback(getDevice(), TEMPERATURE_IR_CALLBACK_OBJECT_TEMPERATURE, (void*) callback_int16, this);
    

    Und jetzt muss ich wohl schreiben:

    typedef void (*AnyCallbackFunc) (void);
    
    temperature_ir_register_callback(getDevice(), TEMPERATURE_IR_CALLBACK_OBJECT_TEMPERATURE, (AnyCallbackFunc) callback_int16, this);
    

     

    Jetzt wird zwar ein Funktionspointer übergeben, aber die Anzahl Argumente der Callback-Funktion ist in der Signatur der "register" Funktionen noch 0, d.h. ich caste dann doch wieder alles weg, was relevant ist, sonst beschwert sich der Compiler. Einen static_cast kann ich dafür auch nicht nutzen, also nach wie vor ein harter Cast.

     

    Mit einem Typedef ist das zwar eine triviale Anpassung, aber die Menge machts - eben alle Stellen wo ein Callback benutzt wird müssen geändert werden ...

  8. Danke für den Link, da Reihe ich mich dann ein in die Liste der nach Antwort Suchenden ..

     

    Da die Raumtemperatur scheinbar schon wichtig ist (rein von der Definition des IAQ) und es aktuell sehr warm ist, gehen die Werte höher. Und der Bosch Sensor erwärmt sich ja auch noch selber: meiner misst gut 2°C mehr als jedes normale Thermometer daneben.

  9. Hallo zusammen,

     

    ich habe jetzt mal die AirQuality Werte meines Bricklets ausgelesen (Bisher hatte ich nur Temp + Luftfeuchte genutzt) und bin etwas überrascht:

     

    * IAQ Index wenn alle Fenster und Balkontür auf sind bei 100 (sozusagen bestcase), das finde ich schon recht hoch - wohne auf dem Land ...

    * Nehme ich meinen Aufbau von der Fensterbank und stelle ihn auf die Arbeitsplatte der Küche (quasi selber Ort, nur 40cm tiefer) sinkt der Wert recht schnell auf 70-75.

     

    Das hat mich noch mehr überrascht, denn ich frage mich: was beeinflusst den Messwert derart ?

  10. Hallo zusammen,

     

    hab gerade meinen Stack zerlegt, aktualisiert und wieder zusammen gesetzt. Beim Test ob alles noch geht bin ich das hier gestossen:

    Traceback (most recent call last):
      File "/usr/share/brickv/plugin_system/plugins/piezo_speaker/piezo_speaker.py", line 144, in calibrate_clicked
        self.ps.calibrate()
      File "/usr/share/brickv/bindings/bricklet_piezo_speaker.py", line 111, in calibrate
        return self.ipcon.send_request(self, BrickletPiezoSpeaker.FUNCTION_CALIBRATE, (), '', '!')
      File "/usr/share/brickv/bindings/ip_connection.py", line 1195, in send_request
        raise Error(Error.TIMEOUT, msg, suppress_context=True)
    brickv.bindings.ip_connection.Error: Did not receive response for function 3 in time (-1)
    

     

    Beim Click auf "calibrate" beim Piezo Speaker V1.

     

    Stört nicht weiter - nur als Info.

  11. Hallo zusammen,

     

    ich nutze ein Linux System mit Arch Linux, welches immer recht neue Pakete hat.

    Jetzt wurde wohl auf g++ 9.1 aktualisiert und da bekomme ich folgenden Compile-Fehler:

    bricklet_sound_pressure_level.cpp: In Funktion »void sound_pressure_level_callback_wrapper_spectrum_low_level(DevicePrivate*, Packet*)«:
    bricklet_sound_pressure_level.cpp:320:129: Fehler: Zugriff auf die Adresse des gepackten Elements von »SpectrumLowLevel_Callback« führt möglicherweise zu einem nicht ausgerichteten Zeigerwert [-Werror=address-of-packed-member]
      320 |  sound_pressure_level_callback_wrapper_spectrum(device_p, callback->spectrum_length, callback->spectrum_chunk_offset, callback->spectrum_chunk_data);
          |                                                                                                                       ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
    bricklet_sound_pressure_level.cpp:323:91: Fehler: Zugriff auf die Adresse des gepackten Elements von »SpectrumLowLevel_Callback« führt möglicherweise zu einem nicht ausgerichteten Zeigerwert [-Werror=address-of-packed-member]
      323 |   callback_function(callback->spectrum_length, callback->spectrum_chunk_offset, callback->spectrum_chunk_data, user_data);
          |                                                                                 ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
    bricklet_sound_pressure_level.cpp:323:91: Fehler: Zugriff auf die Adresse des gepackten Elements von »SpectrumLowLevel_Callback« führt möglicherweise zu einem nicht ausgerichteten Zeigerwert [-Werror=address-of-packed-member]
    [code]
    Dabei ist [font=courier]callback->spectrum_chunk_data[/font] markiert.

     

    Ich compiliere die Bindings als C++ (nicht rein C) mit den Optionen

    g++ -c -std=c++11 -g  -Wall -Wignored-qualifiers -Wparentheses -Woverloaded-virtual -Wsign-compare -Werror

     

    Hat bisher auch immer gut funktioniert, nun gerade nicht mehr.

     

    So ganz klar ist mir nicht, warum der neue Compiler hier meckert:

    der Header hat 8 Bytes, dann kommen 2x2 und dann der chunk_data, was zumindest zu einer auf 4 Bytes alignten Adresse führen müsste.

     

    Nehme ich das -Werror raus, komme ich durch, intensiv testen konnte ich aber noch nicht. Nur wundert mich diese Warnung dennoch.

  12. Sowohl Dein C Programm als auch der Webserver laufen auf dem RED ?

     

    Kommunikation per DB (Schnittstellentabelle) wäre durchaus eine Möglichkeit.

     

    Alternativ müsstest Du eine HTTP Client Bibliothek einbinden, um Daten an die Webseite zu senden oder zu holen.

     

    Das ließe sich auch mit "wget" oder "curl" machen: Dein C Programm könnte eines dieser Programme aufrufen, um die Daten zu senden/empfangen und Du musst "nur" noch Dateien verarbeiten. Sowas ist auch recht gut testbar.

×
×
  • Neu erstellen...