File: //proc/2147229/root/usr/libexec/netdata/python.d/am2320.chart.py
# _*_ 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