与外部系统通信¶
既可以使用以下的 REST api, 也可以使用OSC(高速) 和 ZeroMQ(超高速)
外部系统 -> Adapter¶
接收外部的https请求, 消息最后流向 Scratch
https://codelab-adapter.codelab.club:12358/api/message/eim?message=hello
kano wand 和 calypso 都是案例
codelab_adapter_client¶
Python client¶
requests¶
import requests requests.get("https://codelab-adapter.codelab.club:12358/api/message/eim?message=hello", verify=False)
也可以是呀post
import requests requests.post("https://codelab-adapter.codelab.club:12358/api/message/eim",json={"message":"hello"}, verify=False)
urllib.request¶
import urllib.parse import urllib.request import ssl from socket import timeout message = urllib.parse.quote("hello") url = f'https://codelab-adapter.codelab.club:12358/api/message/eim?message={message}' try: f = urllib.request.urlopen(url, context=ssl._create_unverified_context(), timeout=1) except timeout: print("message to adapter timeout")
JavaScript client¶
fetch¶
fetch("https://codelab-adapter.codelab.club:12358/api/message/eim?message=hi")
XMLHttpRequest¶
// 浏览器可能会提醒 CORS(跨域) 依然可用 var xhr = new XMLHttpRequest(); var url = "https://codelab-adapter.codelab.club:12358/api/message/eim?message=hi" xhr.open("GET", url, true); xhr.send();
teachable machine插件基于这个原理。
Adapter -> 外部系统¶
由于 Adapter 允许自定义 Python 插件,所以根据外部系统接口自行实现即可。
也可采用 Python对象的连接器:EIM 插件