Hello World ============================================ Introduction ---------------------- "Hello World" Plug-in Explain ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You can download the tutorial's final sample project from this Github Page: https://github.com/myvobot/examples/tree/master/hello_world Introduction ---------------------- The Hub Plug-in awaits any node appears online, then use the "Layout Template" to render the content of the screen. Here is an example of a Hub Plug-in: :: import uasyncio as asyncio import ujson as json from core.pan_parameters import QOS1 TEMPLATE = ''' { "items": [ { "type": "TEXT", "data": { "text": "HELLO WORLD", "block": { "x": 120, "y": 110, "w": 200, "h": 56 } } } ] } ''' class App: # User Plug-in of Hub SDK, send a 'Hello world' to the wireless display def __init__(self, mgr): self.pan = mgr.pan asyncio.create_task(self.printHello()) # run a asyncio coro task async def printHello(self): # Wait for at least one display node becomes online while 0 == len(self.pan.onlineNodes()): await asyncio.sleep(1) # Create layout render template and send to display layout = json.loads(TEMPLATE) # Select the first online node as the target target = next(iter(self.pan.onlineNodes())) return self.pan.putRefreshQueue(target, layout, qos = QOS1) This "hello-world" App sends a 'layout document' with text block to the first display available. The Hub's built-in system will use 'import app' to load the module inside /app folder. This example has only one file __init__.py, and then the system will create a App() object; thus, the __init__() is called. Here, 'pan' is the object of the local mesh network (Personal Area Network, PAN). Then runs the co-routine task, printHello(). It waits for at least one display node becomes online, then send a 'layout' json to the node. Please learn the asyncio here: https://github.com/peterhinch/micropython-async