raspberry_pi_modbus.py 1.48 KB
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