def read(self): platform_info = get_platform_info() if platform_info.vendor == MicroPythonPlatform.Vanilla: stats = { 'system.wifi.channel': self.station.config('channel'), } try: stats['system.wifi.rssi'] = self.station.status('rssi') except: pass return stats stats = { 'system.wifi.bandwidth': self.station.bandwidth(), 'system.wifi.channel': self.station.channel(), #'system.wifi.protocol': self.station.wifi_protocol(), 'system.wifi.max_tx_power': self.station.max_tx_power(), #'system.wifi.joined_ap_info': self.station.joined_ap_info(), } try: stats['system.wifi.country'] = self.station.country().country except: pass try: stats['system.wifi.rssi'] = self.station.joined_ap_info().rssi except: pass return stats
def wake_reason(): from terkin.util import get_platform_info platform_info = get_platform_info() if platform_info.vendor == platform_info.MICROPYTHON.Pycom: return 0, None else: return 0
def start_modem(self): """ """ # Resolve modem driver. if self.gprs_settings['driver'] != 'pythings-sim800': raise KeyError('Unable to setup unknown modem driver {}'.format( self.gprs_settings['driver'])) from pythings_sim800 import Modem platform_info = get_platform_info() # Define two pins for clock and data. if platform_info.vendor == platform_info.MICROPYTHON.Vanilla: self.modem = Modem( MODEM_PWKEY_PIN=int(self.gprs_settings['pin_pwrkey'][1:]), MODEM_RST_PIN=int(self.gprs_settings['pin_reset'][1:]), MODEM_POWER_ON_PIN=int(self.gprs_settings['pin_power'][1:]), MODEM_TX_PIN=int(self.gprs_settings['pin_txd'][1:]), MODEM_RX_PIN=int(self.gprs_settings['pin_rxd'][1:])) elif platform_info.vendor == platform_info.MICROPYTHON.Pycom: self.modem = Modem( MODEM_PWKEY_PIN=self.gprs_settings['pin_pwrkey'], MODEM_RST_PIN=self.gprs_settings['pin_reset'], MODEM_POWER_ON_PIN=self.gprs_settings['pin_power'], MODEM_TX_PIN=self.gprs_settings['pin_txd'], MODEM_RX_PIN=self.gprs_settings['pin_rxd']) else: raise NotImplementedError( 'GPRS modem support is not implemented on this platform') # Initialize the modem. self.modem.initialize()
def __init__(self, dout, pd_sck, gain=128): self.platform_info = get_platform_info() # Define two pins for clock and data. if self.platform_info.vendor == self.platform_info.MICROPYTHON.Vanilla: self.pSCK = Pin(int(pd_sck[1:]), mode=Pin.OUT) self.pOUT = Pin(int(dout[1:]), mode=Pin.IN, pull=Pin.PULL_UP) elif self.platform_info.vendor == self.platform_info.MICROPYTHON.Pycom: self.pSCK = Pin(pd_sck, mode=Pin.OUT) self.pOUT = Pin(dout, mode=Pin.IN, pull=Pin.PULL_UP) else: raise NotImplementedError('HX711 is ' 'not implemented on this platform') self.initialized = False self.GAIN = 0 self.OFFSET = 0 self.SCALE = 1 self.time_constant = 0.1 self.filtered = None self.set_gain(gain)
def start(self): """ """ if self.bus is None: raise KeyError("Bus missing for DS18X20Sensor") # Initialize the DS18x20 hardware driver. onewire_bus = self.bus.adapter try: use_native_driver = self.bus.settings.get('driver') == 'native' platform_info = get_platform_info() # Vanilla MicroPython 1.11 if platform_info.vendor == platform_info.MICROPYTHON.Vanilla or use_native_driver: import ds18x20_native self.driver = ds18x20_native.DS18X20(onewire_bus) # Pycom MicroPython 1.9.4 elif platform_info.vendor == platform_info.MICROPYTHON.Pycom: import ds18x20_python self.driver = ds18x20_python.DS18X20(onewire_bus) else: raise NotImplementedError('DS18X20 driver not implemented on this platform') except Exception as ex: log.exc(ex, 'DS18X20 hardware driver failed') return False return True
def compute_paths(self): platform_info = get_platform_info() if platform_info.vendor == platform_info.MICROPYTHON.Pycom: self.CONFIG_PATH = '/flash' self.BACKUP_PATH = '/flash/backup' else: self.CONFIG_PATH = '/' self.BACKUP_PATH = '/backup'
def get_chronometer(): global _chrono if _chrono: return _chrono platform_info = get_platform_info() if platform_info.vendor == platform_info.MICROPYTHON.Pycom: _chrono = PycomChronometer() else: _chrono = GenericChronometer() return _chrono
def compute_paths(self): platform_info = get_platform_info() if platform_info.vendor == platform_info.MICROPYTHON.Pycom: self.CONFIG_PATH = '/flash' self.BACKUP_PATH = '/flash/backup' elif platform_info.vendor == platform_info.MICROPYTHON.Vanilla: self.CONFIG_PATH = '/' self.BACKUP_PATH = '/backup' else: self.CONFIG_PATH = os.path.abspath('.') self.BACKUP_PATH = os.path.join(self.CONFIG_PATH, 'backup')
def get_chronometer(): """ Get a timer that counts from boot. """ global _chrono if _chrono: return _chrono platform_info = get_platform_info() if platform_info.vendor == platform_info.MICROPYTHON.Pycom: _chrono = PycomChronometer() else: _chrono = GenericChronometer() return _chrono
def __init__(self, settings): """ convention <type>:<index> """ self.settings = settings self.number = self.settings['number'] self.adapter = None # TODO: Publish found 1-Wire devices to MQTT bus and HTTP API. self.devices = [] self.pins = {} # Indicate whether the bus driver just has been started. self.just_started = None # Reference to platform information. self.platform_info = get_platform_info()
def __init__(self, manager, settings): self.manager = manager self.settings = settings # WIFI settings. self.phy = self.settings.get('networking.wifi.phy', {}) self.stations = self.settings.get('networking.wifi.stations') self.station = None # Stopwatch for keeping track of time. log.info('Starting stopwatch') self.stopwatch = Stopwatch() log.info('Started stopwatch successfully') # Helper for the ``stay_connected`` thread. self.is_running = False # Reference to platform information. self.platform_info = get_platform_info()
def start(self): """ Setup the DS18x20 sensor driver. :return: """ # Ensure a bus object exists and is ready. self.ensure_bus() # Initialize the DS18x20 hardware driver. onewire_bus = self.bus.adapter try: use_native_driver = self.bus.settings.get('driver') == 'native' platform_info = get_platform_info() # Vanilla MicroPython >=1.11 if platform_info.vendor == platform_info.MICROPYTHON.Vanilla or use_native_driver: import ds18x20_native self.driver = ds18x20_native.DS18X20(onewire_bus) # Pycom MicroPython 1.9.4 elif platform_info.vendor == platform_info.MICROPYTHON.Pycom: import ds18x20_python self.driver = ds18x20_python.DS18X20(onewire_bus) # RaspberryPi elif platform_info.vendor == platform_info.MICROPYTHON.RaspberryPi: from terkin.sensor.linux import LinuxSysfsDS18B20 self.driver = LinuxSysfsDS18B20(onewire_bus) else: raise NotImplementedError( 'DS18x20 driver not implemented on this platform') return True except Exception as ex: log.exc(ex, 'DS18x20 hardware driver failed') return False
def humanize(self): """ Yield dictionary containing reset cause and wakeup reason suitable for human consumption through an appropriate log message. """ platform_info = get_platform_info() reset_cause_magic = machine.reset_cause() if platform_info.vendor == platform_info.MICROPYTHON.Pycom: wakeup_reason_magic, _ = machine.wake_reason() else: wakeup_reason_magic = machine.wake_reason() log.debug('Reset cause: %s', reset_cause_magic) log.debug('Wakeup reason: %s', wakeup_reason_magic) reset_cause_label = self.reset_causes.get(reset_cause_magic, 'UNKNOWN') wakeup_reason_label = self.wakeup_reasons.get(wakeup_reason_magic, 'UNKNOWN') status = { 'reset_cause': {'code': reset_cause_magic, 'message': reset_cause_label}, 'wakeup_reason': {'code': wakeup_reason_magic, 'message': wakeup_reason_label}, } return status
# -*- coding: utf-8 -*- # (c) 2019-2020 Andreas Motl <*****@*****.**> # (c) 2019-2020 Richard Pobering <*****@*****.**> # License: GNU General Public License, Version 3 from terkin import logging from terkin.model import SensorReading from terkin.sensor import SensorManager, AbstractSensor from terkin.util import get_platform_info log = logging.getLogger(__name__) platform_info = get_platform_info() def includeme(sensor_manager: SensorManager, sensor_info): """ Create BME280 sensor object. :param sensor_manager: :param sensor_info: :return: sensor_object """ sensor_object = BME280Sensor(settings=sensor_info) sensor_bus = sensor_manager.get_bus_by_name(sensor_info.get('bus')) sensor_object.acquire_bus(sensor_bus) return sensor_object class BME280Sensor(AbstractSensor): """
def __init__(self, settings): self.settings = settings self.platform_info = get_platform_info()