Skip to content

Commit

Permalink
add microbit node
Browse files Browse the repository at this point in the history
  • Loading branch information
wwj718 committed Sep 5, 2019
1 parent dcda468 commit dfda0f3
Show file tree
Hide file tree
Showing 9 changed files with 117 additions and 3 deletions.
3 changes: 2 additions & 1 deletion codelab_adapter_client/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,8 @@ def __init__(self, *args, **kwargs):
'''
super().__init__(*args, **kwargs)
# todo TOPIC作为参数
self.TOPIC = ADAPTER_TOPIC # message topic: the message from adapter
if not hasattr(self, 'TOPIC'):
self.TOPIC = ADAPTER_TOPIC # message topic: the message from adapter
if not hasattr(self, 'EXTENSION_ID'):
self.EXTENSION_ID = "eim"
# todo handler: https://github.com/offu/WeRoBot/blob/master/werobot/robot.py#L590
Expand Down
1 change: 0 additions & 1 deletion codelab_adapter_client/hass.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# HA
from .base import AdapterNode
from codelab_adapter_client.topic import *
from collections import deque
import time
from loguru import logger
import random
Expand Down
51 changes: 51 additions & 0 deletions codelab_adapter_client/microbit.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# work with https://adapter.codelab.club/extension_guide/microbit/
import time
from loguru import logger
from codelab_adapter_client import AdapterNode
from codelab_adapter_client.topic import ADAPTER_TOPIC, SCRATCH_TOPIC


class MicrobitNode(AdapterNode):
'''
send/recv microbit extension message
duck like scratch
'''

def __init__(self):
super().__init__(
logger=logger,
external_message_processor=self.external_message_processor)
self.TOPIC = SCRATCH_TOPIC
self.EXTENSION_ID = "eim/usbMicrobit"
self.set_subscriber_topic(ADAPTER_TOPIC)

def microbit_event(self, data):
pass

def external_message_processor(self, topic, payload):
# self.logger.info(f'the message payload from extention: {payload}')
if topic == ADAPTER_TOPIC:
extension_id = payload["extension_id"]
if extension_id == self.EXTENSION_ID:
content = payload["content"]
self.microbit_event(content)

def send_command(self,
content="display.show('hi', wait=True, loop=False)"):
heart = "Image(\"07070:70707:70007:07070:00700\"" # show heart
message = self.message_template()
message['payload']['content'] = content
self.publish(message)

def run(self):
while self._running:
time.sleep(1)


if __name__ == "__main__":
try:
node = MicrobitNode()
node.receive_loop_as_thread()
node.run()
except KeyboardInterrupt:
node.terminate() # Clean up before exiting.
File renamed without changes.
File renamed without changes.
21 changes: 21 additions & 0 deletions examples/microbit_display.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from codelab_adapter_client.microbit import MicrobitNode


class MyNode(MicrobitNode):
def __init__(self):
super().__init__()

def run(self):
# document: https://microbit-micropython.readthedocs.io/en/latest/
content = "a"
py_code = f"display.scroll('{content}', wait=False, loop=False)"
self.send_command(py_code)


if __name__ == "__main__":
try:
node = MyNode()
# node.receive_loop_as_thread() # get microbit data
node.run()
except KeyboardInterrupt:
node.terminate() # Clean up before exiting.
29 changes: 29 additions & 0 deletions examples/microbit_event.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from codelab_adapter_client.microbit import MicrobitNode
import time


class MyNode(MicrobitNode):
def __init__(self):
super().__init__()

def when_button_a_is_pressed(self):
self.logger.info("you press button A!")

def microbit_event(self, data):
self.logger.debug(data)
if data["button_a"] == True:
self.when_button_a_is_pressed()

def run(self):
# document: https://microbit-micropython.readthedocs.io/en/latest/
while self._running:
time.sleep(1)


if __name__ == "__main__":
try:
node = MyNode()
node.receive_loop_as_thread() # get microbit data
node.run()
except KeyboardInterrupt:
node.terminate() # Clean up before exiting.
13 changes: 13 additions & 0 deletions examples/neverland_toggle_light.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from codelab_adapter_client import HANode


class Neverland(HANode):
def __init__(self):
super().__init__()


neverland = Neverland()

neverland.call_service(service="toggle")

# neverland.call_service(service="turn_off",domain="switch", entity_id="switch.0x00158d0002ecce03_switch_right")
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,6 @@
test_suite='tests',
tests_require=test_requirements,
url='https://github.com/wwj718/codelab_adapter_client',
version='0.9.4',
version='0.9.6',
zip_safe=False,
)

0 comments on commit dfda0f3

Please sign in to comment.