Determining status of individual sensors.



  • I'd like to be able to determine the status of individual sensors on the PySense. This is part of a longer strategy to incorporate additional sensors but determine which ones are active on each board as part of an initialisation.
    I've tried using the _read_status(self) function of the barometer but I can't get it to work, e.g.

    barometer_ready = MPL3115A2._read_status()

    I don't know what to pass as the parameter because self is part of the class and has no meaning outside of it.



  • The simplest solutions are the best. I'll give that a go. Many thanks @seb.



  • You could use the scan method of the I2C class to detect what sensors are present on the bus. Then based on what addresses you can find you can run/not run the code relating to that sensor.



  • @seb Yes, I would like to have multiple boards with a selection of sensors on each but I don't want to change the code according to which specific sensors I have attached. I want the initialisation procedure to determine which of those sensors are present and the main code therefore only read from those that are attached. Kind of like a plug and play but without hot-plugging.

    It should be straightforward but I wanted to at least demonstrate the process without having to modify libraries. At least for the time being. I think as the PyCom eco-system develops and libraries are added, it should be a pre-requisite to have a function like this for any external hardware.

    Regards



  • Can you explain in more detail what you are attempting to achieve? Are you just looking for which sensors are present?



  • @seb That works fine. I already had an instance in order for the readings to work but for some reason....idiot mode active. I need some sleep!

    Many thanks.

    There doesn't appear to be anything equivalent in the LTR329ALS01 or SI7006A20 ibraries though.



  • rather that calling the method of the class directly you should first create an instance of the class and call the method of the instance:

    from pysense import Pysense
    from MPL3115A2 import MPL3115A2
    
    py = Pysense()
    baro = MPL3115A2(py)
    barometer_ready = baro._read_status()
    

    You may also need to pass mode when instantiating the barometer depending on if you want to measure pressure or altitude. Please refer to our documentation for more details: https://docs.pycom.io/chapter/pytrackpysense/apireference/pysense.html


 

Pycom on Twitter