Jump to content

Superp

Members
  • Gesamte Inhalte

    124
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    6

Posts erstellt von Superp

  1. I have a suspicion smitae is no longer following. In the meantime, I have some experiences with the Outdoor Weather Bricklet which may be useful to others:

    • The TH-6148 Temperature/Humidity Sensor can be mounted outdoors as it is, but I wanted an enclosure for extra protection against rough weather. The TFA Dostmann Schutzhülle (article 98.1114.02) is a perfect fit. Without the mounting bracket, the sensor fits snugly inside the enclosure.
    • I also found the TFA Dostmann Thermo-Hygrometer mit Sender 433 MHz für TFA GAIA (article 30.3166) a perfect replacement for the Tinkerforge sensor. It looks identical and has the same dimensions, and also fits in the enclosure. I use a combination of three sensors, one Tinkerforge TH-6148 and two this TFA Dostmann sensor, to transmit data to the same Bricklet, and it works fine.

    Still looking for a transparent dome though.

  2. I would really appreciate that.

    Since March 2019 the Air Quality Bricklet no longer saves its calibration data, correct?

    As it takes 28 days to fully calibrate, and the system here reboots once a month, this yields max 3 days of reliable data per month.

    I am willing to work with you to solve this (and invest some time from my side), but if there is no solution in sight I will retire this Bricklet.

     

  3. The documentation says:

    Quote

    There is also a blue LED on the Bricklet that is on as long as the Bricklet is in the "motion detected" state.

    I might be wrong, but I think there is no such LED (I looked). There are of course the three backlight LEDs ("indicator" lights), but these are software controlled and do not reflect the motion detected status unless you set them manually (as the video here shows).

    This might be a leftover from the previous version of the Bricklet:

    Quote

    The blue LED on the Bricklet is on if the sensor is in the "motion detected" state and is off if the sensor is in the "no motion detected" state.

    Could someone clarify, or correct the documentation?

  4. The documentation says:

    Quote

    Note The currently released firmware (2.0.4) does not save the calibration every 12 hours. We had to disable this because of a bug in the proprietary load/save mechanism that we can't fix. We will release a new firmware that has this enabled again as soon as this bug is fixed.

    My Air Quality Bricklet reports firmware_version '2.0.5'.

    Does this mean this bug is now fixed?

    related commit (Disable automatic calibration load/save for now)

  5. Photron,

    Thanks for answering.

    I can not think of a way to correct this in software; at unlimited range and 50ms integration time, it is rare but possible to have saturation and a reading of 0 Lux. When this happens and the light is then reduced and stable, the reading appears to decrease over several seconds, e.g. the sensor takes time to recover from overload. Interesting.

    One way to solve this might be to have a second sensor with a 10-stop ND filter in front.

  6. Photron,

    Good to hear there are plans for brickd health reporting in the API. I hope this gets implemented soon. In my priorities, this goes to the top.

    Whether a system will fall over or not, I am not going to bicker with you over this. I will say, however, that I have seen brickd producing several hundred messages per second and yet respond normally to calls, and that is a showstopper.

    Best!

  7. Hello Photron,

    Thanks for taking the time.

    This is a problem already reproduced and confirmed by your colleague. For your benefit, I have shutdown the system this morning, disconnected all devices, connected the LCD, and booted. Start Brickv, select LCD, and the log starts to flood. This should be fairly easy to reproduce by you.

    API calls are answered okay, except the system will ultimately become unstable and will no longer boot because it will run out of disk space, I suppose.

    The real problem, and for me this is a showstopper, is that client-side (through the API), there is no way to detect problems like this or basically find out if brickd is okay. Brickd will happily answer API calls, while brickd.log is flooded with error messages. This can happen with other scenarios (not the LCD bricklet), too.

    Here is an idea: A basic API call to report the current log size (Tinkerforge::IPConnection#brickd_log_size), or error count, or some other "health indicator", would be a great first step towards making things more robust.

    Throttling log messages would be helpful, too.

    Cheers.

  8. Hello,

    Maybe I'm wrong, but I have a suspicion BrickletSegmentDisplay4x7V2#get_segments does not return correct values.

    I think the Bricklet responds with correct data, but the data is mangled when unpacked.

    To be precise, when data is unpacked for the first segment (8 values), too much data is slurped so nothing remains for the other 27 values.

    Here is a quick & dirty debug helper:

    module Tinkerforge
      class BrickletSegmentDisplay4x7V2
    
        def debug_get_segments
          puts '                 |.......|.......|.......|.......|.|'
          puts 'get_segments   : ' + get_segments.flatten.map { |b| b ? '1' : '0' }.join
          puts 'actual response: ' + (send_request FUNCTION_GET_SEGMENTS, [], '', 14, '?35' ).map { |b| b ? '1' : '0' }.join
          puts ''
        end
    
      end
    end

     

  9. Hello,

    I have a problem with a brand new LCD 128x64 Bricklet connected to a HAT Brick with a brand new cable. The Bricklet is responding normally to API calls.

    brickd.log shows thousands of errors like this:

    2020-12-18 08:52:06.937629 <E> <bricklet_stack.c:478> Message checksum error (port: G, count: 5721)
    2020-12-18 08:52:24.206204 <E> <bricklet_stack.c:478> Message checksum error (port: G, count: 5722)
    2020-12-18 08:52:41.476851 <E> <bricklet_stack.c:478> Message checksum error (port: G, count: 5723)
    2020-12-18 08:52:58.746923 <E> <bricklet_stack.c:478> Message checksum error (port: G, count: 5724)

    Question #1: Can you point me to a document somewhere outlining what to do in a case like this? How do I diagnose and solve this problem?

    Both the Brick and the Bricklet do not seem to report these errors through the API (this is Ruby):

    > hat.get_identity
    => ["S2c", "0", "i", [1, 0, 0], [2, 0, 2], 111]
    > hat.get_spitfp_error_count
    => [0, 0, 0, 0]
    
    > lcd.get_identity
    => ["R3S", "S2c", "g", [1, 0, 0], [2, 0, 9], 298]
    > lcd.get_spitfp_error_count
    => [0, 0, 0, 0]

    Question #2: Using the API, how can I check for problems like the above (excessive checksum errors) ?

  10. Very nice project! I like how you installed the electronics behind a transparent panel.

    On 2/1/2020 at 8:58 PM, smitae said:

    Ambient light Sensor & UV Sensor under protecting dome to measure outside light and UV radiation

    I am looking for something similar: a weatherproof case or housing that does not block too much light/UV. Can you share some more information about the dome you are using and the way you installed it? A picture maybe? Do you compensate your measurements somehow for light blocked by the dome?

    Thanks for any info you can share.

  11. Hi Photron,

    Thanks for responding. I am basically just a lazy programmer who likes magic.

    What I have done so far is write a little bit of Ruby that 1) takes stock of Device descendants. 2) requires one of TF's source-files. 3) takes stock again and compares to (1) to identify any newly defined class. 4) gets DEVICE_IDENTIFIER and DEVICE_DISPLAY_NAME from the newly defined class. 5) Repeats for all source-files.

    This generates a device_info.txt which maps device_identifier, device class, source-file, and device_display_name. You can use any of these four to look up the other three.

    This is my third week of using TF and I hope to make it part of a fairly big project. 

  12. Hello,

    I have a question about discovery of devices with Ruby. Enumeration supplies the numeric device_identifier for each device, for instance 2103 for a 'LED Strip Bricklet 2.0'.

    See documentation.

    Next steps would be to load the file defining the matching class, and to initialize an instance of that class:

    require 'tinkerforge/bricklet_led_strip_v2'
    
    Tinkerforge::BrickletLEDStripV2.new ...

    In other words, I need the name of the matching class for a '2103 device' and the file which defines that class.

    Tinkerforge::DEVICE_DISPLAY_NAMES only maps device_identifier to device_display_name.

    How do I map numeric device_identifier to class and file?

    One way would be to load all 139 device classes, and than loop through all Tinkerforge::Device descendants until I find the one with the matching DEVICE_IDENTIFIER constant. That sounds like a really bad idea.

    Has anyone figured this out yet?

×
×
  • Neu erstellen...