1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- # _*_ coding: utf-8 _*_
- # Description: AM2320 netdata module
- # Author: tommybuck
- # SPDX-License-Identifier: GPL-3.0-or-Later
- try:
- import board
- import busio
- import adafruit_am2320
- HAS_AM2320 = True
- except ImportError:
- HAS_AM2320 = False
- from bases.FrameworkServices.SimpleService import SimpleService
- ORDER = [
- 'temperature',
- 'humidity',
- ]
- CHARTS = {
- 'temperature': {
- 'options': [None, 'Temperature', 'celsius', 'temperature', 'am2320.temperature', 'line'],
- 'lines': [
- ['temperature']
- ]
- },
- 'humidity': {
- 'options': [None, 'Relative Humidity', 'percentage', 'humidity', 'am2320.humidity', 'line'],
- 'lines': [
- ['humidity']
- ]
- }
- }
- class Service(SimpleService):
- def __init__(self, configuration=None, name=None):
- SimpleService.__init__(self, configuration=configuration, name=name)
- self.order = ORDER
- self.definitions = CHARTS
- self.am = None
- def check(self):
- if not HAS_AM2320:
- self.error("Could not find the adafruit-circuitpython-am2320 package.")
- return False
- try:
- i2c = busio.I2C(board.SCL, board.SDA)
- self.am = adafruit_am2320.AM2320(i2c)
- except ValueError as error:
- self.error("error on creating I2C shared bus : {0}".format(error))
- return False
- return True
- def get_data(self):
- try:
- return {
- 'temperature': self.am.temperature,
- 'humidity': self.am.relative_humidity,
- }
- except (OSError, RuntimeError) as error:
- self.error(error)
- return None
|