Example #1
0
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))
Example #2
0
    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
Example #3
0
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)