Newer
Older
from ohmpi.hardware_components import CtlAbstract
from ohmpi.config import HARDWARE_CONFIG
import board # noqa
import busio # noqa
import os
from ohmpi.utils import get_platform
from gpiozero import CPUTemperature # noqa
import minimalmodbus # noqa
class Ctl(CtlAbstract):
def __init__(self, **kwargs):
kwargs.update({'board_name': os.path.basename(__file__).rstrip('.py')})
baudrate = kwargs.pop('baudrate', 9600)
bitesize = kwargs.pop('bitesize', 8)
timeout = kwargs.pop('timeout', 1)
debug = kwargs.pop('debug', False)
parity = kwargs.pop('parity', 'N')
mode = kwargs.pop('mode', minimalmodbus.MODE_RTU)
port = kwargs.pop('port', '/dev/ttyUSB0')
slave_address = kwargs.pop('slave_address', 1)
super().__init__(**kwargs)
self.bus = minimalmodbus.Instrument(port=port, slaveaddress=slave_address) # port name, address (decimal)
self.bus.serial.baudrate = baudrate # Baud rate 9600 as listed in doc
self.bus.serial.bytesize = bitesize #
self.bus.serial.timeout = timeout # greater than 0.5 for it to work
self.bus.debug = debug #
self.bus.serial.parity = parity # No parity
self.bus.mode = mode # RTU mode
platform, on_pi = get_platform()
assert on_pi
self.board_name = platform
self._cpu_temp_available = True
self.max_cpu_temp = 85. # °C
@property
def _cpu_temp(self):
return CPUTemperature().temperature