Giter Site home page Giter Site logo

sighmon / enviroplus_exporter Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tijmenvandenbrink/enviroplus_exporter

11.0 11.0 5.0 1.34 MB

Prometheus exporter for enviroplus module by Pimoroni

License: MIT License

Python 98.87% Dockerfile 1.13%

enviroplus_exporter's People

Contributors

boncey avatar sighmon avatar stevenbower avatar tijmenvandenbrink avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

enviroplus_exporter's Issues

Fix temperature compensation

  • Fix temperature compensation for being in close proximity to the CPU
  • Add humidity compensation
  • Export cpu_temperature for comparative use

ModuleNotFoundError: No module named 'board'. Maybe missing dependency?

Hello.
I've been using the main fork of enviroplus_exporter for quite some time without any problems.

But I fancied playing around with your homekit-enviroplus project.
But when I ran your fork of enviroplus_exporter I hit this error.

./enviroplus_exporter.py
Traceback (most recent call last):
  File "./enviroplus_exporter.py", line 10, in <module>
    import board
ModuleNotFoundError: No module named 'board'

Is there a missing dependency perhaps?

Thanks,
Darren.

Handle ValueError from get_gas()

  • Handle ValueError
04.03.21 18:06:02 (+1030)  main  Traceback (most recent call last):
04.03.21 18:06:02 (+1030)  main    File "enviroplus_exporter.py", line 506, in <module>
04.03.21 18:06:02 (+1030)  main      get_gas()
04.03.21 18:06:02 (+1030)  main    File "enviroplus_exporter.py", line 165, in get_gas
04.03.21 18:06:02 (+1030)  main      readings = gas.read_all()
04.03.21 18:06:02 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/enviroplus/gas.py", line 80, in read_all
04.03.21 18:06:02 (+1030)  main      ox = adc.get_voltage('in0/gnd')
04.03.21 18:06:03 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/ads1015/__init__.py", line 258, in get_voltage
04.03.21 18:06:03 (+1030)  main      self.wait_for_conversion()
04.03.21 18:06:03 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/ads1015/__init__.py", line 243, in wait_for_conversion
04.03.21 18:06:03 (+1030)  main      while not self.conversion_ready():
04.03.21 18:06:03 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/ads1015/__init__.py", line 112, in conversion_ready
04.03.21 18:06:03 (+1030)  main      return self.get_status() != 'active'
04.03.21 18:06:03 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/ads1015/__init__.py", line 128, in get_status
04.03.21 18:06:03 (+1030)  main      return self._ads1015.get('CONFIG').operational_status
04.03.21 18:06:03 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/i2cdevice/__init__.py", line 232, in get
04.03.21 18:06:03 (+1030)  main      result[field] = self.get_field(register, field)
04.03.21 18:06:03 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/i2cdevice/__init__.py", line 247, in get_field
04.03.21 18:06:03 (+1030)  main      value = field.adapter._decode(value)
04.03.21 18:06:03 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/i2cdevice/adapter.py", line 26, in _decode
04.03.21 18:06:03 (+1030)  main      raise ValueError("{} not in lookup table".format(value))
04.03.21 18:06:03 (+1030)  main  ValueError: 7 not in lookup table
04.03.21 19:19:26 (+1030)  main  2021-03-04 08:49:26.653 WARNING  Exception sending to InfluxDB: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

Handle ValueError if the battery sensor isn't attached

  • Handle ValueError if the LC709203F sensor isn't attached

Details

When the sensor isn't attached, it raises a ValueError. See:

Traceback (most recent call last):
  File "enviroplus_exporter.py", line 55, in <module>
    sensor = LC709203F(board.I2C())
  File "/usr/local/lib/python3.7/site-packages/adafruit_lc709203f.py", line 116, in __init__
    self.i2c_device = i2c_device.I2CDevice(i2c_bus, address)
  File "/usr/local/lib/python3.7/site-packages/adafruit_bus_device/i2c_device.py", line 50, in __init__
    self.__probe_for_device()
  File "/usr/local/lib/python3.7/site-packages/adafruit_bus_device/i2c_device.py", line 163, in __probe_for_device
    raise ValueError("No I2C device at address: 0x%x" % self.device_address)
ValueError: No I2C device at address: 0xb

Handle error reading gas sensor

  • Handle error reading gas sensor

Details

20.01.21 13:29:04 (+1030)  main  Traceback (most recent call last):
20.01.21 13:29:05 (+1030)  main    File "enviroplus_exporter.py", line 503, in <module>
20.01.21 13:29:05 (+1030)  main      get_gas()
20.01.21 13:29:05 (+1030)  main    File "enviroplus_exporter.py", line 164, in get_gas
20.01.21 13:29:05 (+1030)  main      readings = gas.read_all()
20.01.21 13:29:05 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/enviroplus/gas.py", line 82, in read_all
20.01.21 13:29:05 (+1030)  main      nh3 = adc.get_voltage('in2/gnd')
20.01.21 13:29:05 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/ads1015/__init__.py", line 258, in get_voltage
20.01.21 13:29:05 (+1030)  main      self.wait_for_conversion()
20.01.21 13:29:05 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/ads1015/__init__.py", line 243, in wait_for_conversion
20.01.21 13:29:05 (+1030)  main      while not self.conversion_ready():
20.01.21 13:29:05 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/ads1015/__init__.py", line 112, in conversion_ready
20.01.21 13:29:05 (+1030)  main      return self.get_status() != 'active'
20.01.21 13:29:05 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/ads1015/__init__.py", line 128, in get_status
20.01.21 13:29:05 (+1030)  main      return self._ads1015.get('CONFIG').operational_status
20.01.21 13:29:05 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/i2cdevice/__init__.py", line 232, in get
20.01.21 13:29:05 (+1030)  main      result[field] = self.get_field(register, field)
20.01.21 13:29:05 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/i2cdevice/__init__.py", line 240, in get_field
20.01.21 13:29:05 (+1030)  main      self.read_register(register.name)
20.01.21 13:29:05 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/i2cdevice/__init__.py", line 183, in read_register
20.01.21 13:29:05 (+1030)  main      self.values[register.name] = self._i2c_read(register.address, register.bit_width)
20.01.21 13:29:05 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/i2cdevice/__init__.py", line 283, in _i2c_read
20.01.21 13:29:05 (+1030)  main      for x in self._i2c.read_i2c_block_data(self._i2c_address, register, bit_width // self._bit_width):
20.01.21 13:29:05 (+1030)  main  OSError: [Errno 121] Remote I/O error

Handle PMS5003 reading checksum error

  • Handle PMS5003 reading checksum error
03.03.21 08:33:48 (+1030)  main  Traceback (most recent call last):
03.03.21 08:33:48 (+1030)  main    File "enviroplus_exporter.py", line 508, in <module>
03.03.21 08:33:48 (+1030)  main      get_particulates()
03.03.21 08:33:48 (+1030)  main    File "enviroplus_exporter.py", line 189, in get_particulates
03.03.21 08:33:48 (+1030)  main      pms_data = pms5003.read()
03.03.21 08:33:48 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/pms5003/__init__.py", line 155, in read
03.03.21 08:33:48 (+1030)  main      raise ChecksumMismatchError("PMS5003 Checksum Mismatch {} != {}".format(checksum, data.checksum))
03.03.21 08:33:48 (+1030)  main  pms5003.ChecksumMismatchError: PMS5003 Checksum Mismatch 619 != 22016

Handle get_light exception

And fix for all sensor getting

25.03.21 08:52:38 (+1030)  main  Traceback (most recent call last):
25.03.21 08:52:38 (+1030)  main    File "enviroplus_exporter.py", line 508, in <module>
25.03.21 08:52:38 (+1030)  main      get_light()
25.03.21 08:52:38 (+1030)  main    File "enviroplus_exporter.py", line 182, in get_light
25.03.21 08:52:38 (+1030)  main      prox = ltr559.get_proximity()
25.03.21 08:52:38 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/ltr559/__init__.py", line 454, in get_proximity
25.03.21 08:52:38 (+1030)  main      self.update_sensor()
25.03.21 08:52:38 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/ltr559/__init__.py", line 395, in update_sensor
25.03.21 08:52:38 (+1030)  main      als = self._ltr559.get('ALS_DATA')
25.03.21 08:52:38 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/i2cdevice/__init__.py", line 230, in get
25.03.21 08:52:38 (+1030)  main      self.read_register(register)
25.03.21 08:52:38 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/i2cdevice/__init__.py", line 183, in read_register
25.03.21 08:52:38 (+1030)  main      self.values[register.name] = self._i2c_read(register.address, register.bit_width)
25.03.21 08:52:38 (+1030)  main    File "/usr/local/lib/python3.7/site-packages/i2cdevice/__init__.py", line 283, in _i2c_read
25.03.21 08:52:38 (+1030)  main      for x in self._i2c.read_i2c_block_data(self._i2c_address, register, bit_width // self._bit_width):
25.03.21 08:52:38 (+1030)  main  OSError: [Errno 121] Remote I/O error

Handle failure to open serial port for Notecard

  • Handle SerialError when trying to post to Notecard

Do we need to restart the container? Or just retry? Can we notecard_port.close()?

Details

[Logs]    [19/06/2021, 7:00:37 pm] [main] Exception in thread Thread-4:
[Logs]    [19/06/2021, 7:00:37 pm] [main] Traceback (most recent call last):
[Logs]    [19/06/2021, 7:00:37 pm] [main]   File "/usr/local/lib/python3.7/site-packages/periphery/serial.py", line 99, in _open
[Logs]    [19/06/2021, 7:00:37 pm] [main]     self._fd = os.open(devpath, os.O_RDWR | os.O_NOCTTY)
[Logs]    [19/06/2021, 7:00:37 pm] [main] OSError: [Errno 19] No such device: '/dev/ttyACM0'
[Logs]    [19/06/2021, 7:00:37 pm] [main] 
[Logs]    [19/06/2021, 7:00:37 pm] [main] During handling of the above exception, another exception occurred:
[Logs]    [19/06/2021, 7:00:37 pm] [main] 
[Logs]    [19/06/2021, 7:00:37 pm] [main] Traceback (most recent call last):
[Logs]    [19/06/2021, 7:00:37 pm] [main]   File "/usr/local/lib/python3.7/threading.py", line 926, in _bootstrap_inner
[Logs]    [19/06/2021, 7:00:37 pm] [main]     self.run()
[Logs]    [19/06/2021, 7:00:37 pm] [main]   File "/usr/local/lib/python3.7/threading.py", line 870, in run
[Logs]    [19/06/2021, 7:00:37 pm] [main]     self._target(*self._args, **self._kwargs)
[Logs]    [19/06/2021, 7:00:37 pm] [main]   File "enviroplus_exporter.py", line 389, in post_to_notehub
[Logs]    [19/06/2021, 7:00:37 pm] [main]     notecard_port = Serial("/dev/ttyACM0", 9600)
[Logs]    [19/06/2021, 7:00:37 pm] [main]   File "/usr/local/lib/python3.7/site-packages/periphery/serial.py", line 61, in __init__
[Logs]    [19/06/2021, 7:00:37 pm] [main]     self._open(devpath, baudrate, databits, parity, stopbits, xonxoff, rtscts)
[Logs]    [19/06/2021, 7:00:37 pm] [main]   File "/usr/local/lib/python3.7/site-packages/periphery/serial.py", line 101, in _open
[Logs]    [19/06/2021, 7:00:37 pm] [main]     raise SerialError(e.errno, "Opening serial port: " + e.strerror)
[Logs]    [19/06/2021, 7:00:37 pm] [main] periphery.serial.SerialError: [Errno 19] Opening serial port: No such device

Handle get_light OSError

  • Handle get_light() OSError

Errors

28.05.21 10:30:14 (+0930)  main  Traceback (most recent call last):
28.05.21 10:30:14 (+0930)  main    File "enviroplus_exporter.py", line 508, in <module>
28.05.21 10:30:14 (+0930)  main      get_light()
28.05.21 10:30:14 (+0930)  main    File "enviroplus_exporter.py", line 181, in get_light
28.05.21 10:30:14 (+0930)  main      lux = ltr559.get_lux()
28.05.21 10:30:14 (+0930)  main    File "/usr/local/lib/python3.7/site-packages/ltr559/__init__.py", line 443, in get_lux
28.05.21 10:30:14 (+0930)  main      self.update_sensor()
28.05.21 10:30:14 (+0930)  main    File "/usr/local/lib/python3.7/site-packages/ltr559/__init__.py", line 395, in update_sensor
28.05.21 10:30:14 (+0930)  main      als = self._ltr559.get('ALS_DATA')
28.05.21 10:30:14 (+0930)  main    File "/usr/local/lib/python3.7/site-packages/i2cdevice/__init__.py", line 230, in get
28.05.21 10:30:14 (+0930)  main      self.read_register(register)
28.05.21 10:30:14 (+0930)  main    File "/usr/local/lib/python3.7/site-packages/i2cdevice/__init__.py", line 183, in read_register
28.05.21 10:30:14 (+0930)  main      self.values[register.name] = self._i2c_read(register.address, register.bit_width)
28.05.21 10:30:14 (+0930)  main    File "/usr/local/lib/python3.7/site-packages/i2cdevice/__init__.py", line 283, in _i2c_read
28.05.21 10:30:14 (+0930)  main      for x in self._i2c.read_i2c_block_data(self._i2c_address, register, bit_width // self._bit_width):
28.05.21 10:30:14 (+0930)  main  OSError: [Errno 121] Remote I/O error

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.