def main(): parser = argparse.ArgumentParser( description='Flashes firmware on LEGO Powered Up devices.') parser.add_argument('firmware', metavar='<firmware-file>', type=argparse.FileType('rb'), help='The firmware file') parser.add_argument('-d', '--delay', metavar='<milliseconds>', type=int, default=10, help='Delay between Bluetooth packets (default: 10).') parser.add_argument( '-m', '--main', metavar='<main.py>', type=argparse.FileType(), help='main.py file to use instead of one from firmware file') args = parser.parse_args() firmware_zip = zipfile.ZipFile(args.firmware) firmware_base = firmware_zip.open('firmware-base.bin') main_py = args.main or io.TextIOWrapper(firmware_zip.open('main.py')) metadata = json.load(firmware_zip.open('firmware.metadata.json')) print('compiling main.py...') mpy = compile(main_py.read(), metadata) firmware = create_firmware(firmware_base.read(), mpy, metadata) start(lambda: setup(io.BytesIO(firmware), len(firmware), metadata, args. delay))
def run(self): """ Run the script. """ # Read settings from YAML file Settings.static_init() Settings.load_settings_from_yaml() # Connect to log file message_log = create_logger(log_file=Settings.MESSAGE_LOG, level=logging.INFO, screen=False) error_log = create_logger(log_file=Settings.ERROR_LOG, level=60, screen=False) # Parse command line options args = self._parse_command_line_options() if args.log_verbosity is not None: Settings.LOG_VERBOSITY = args.log_verbosity # Connect to LEGO Control+ hub # try: while True: start(system) break
import logging from asyncio import sleep from bricknil import attach, start from bricknil.hub import PoweredUpHub from bricknil.sensor import TrainMotor from bricknil.process import Process @attach(TrainMotor, name='motor') class Train(PoweredUpHub): async def run(self): self.message_info("Running") for i in range(2): self.message_info('Increasing speed') await self.motor.ramp_speed(80, 5000) await sleep(6) self.message_info('Coming to a stop') await self.motor.ramp_speed(0, 1000) await sleep(2) async def system(): train = Train('My train') if __name__ == '__main__': logging.basicConfig(level=logging.INFO) start(system)