1
aiocoapライブラリを使用して、埋め込みデバイスにCoAPリクエストを発行しています。コミュニケーションと基本的な機能はうまくいくようですが、ドキュメンテーションは観察を有効にする方法を述べていません。監視機能はがソースコードに存在するように見えますが、サーバー側とクライアント側の両方に存在します。クライアント側が必要です。aiocoapライブラリでCoAPリソースを観察するにはどうすればよいですか?
これは私がこれまで持っているものです:サーバー上で観察する状態を作成しますGET
要求:
import asyncio, aiocoap
@asyncio.coroutine
def coap_get_with_observe():
protocol = yield from aiocoap.Context.create_client_context()
request = aiocoap.Message(code = aiocoap.GET)
request.set_request_uri('coap://[aaaa::212:4b00:a49:e903]/sensors/temp')
# set observe bit from None to 0
request.opt.observe = 0
try:
response = yield from protocol.request(request).response
except Exception as e:
print("request failed: %s" % str(e))
else:
print("request ok: %r" % response.payload)
event_loop = asyncio.new_event_loop()
asyncio.set_event_loop(event_loop)
event_loop.create_task(coap_get_with_observe())
asyncio.get_event_loop().run_forever()
出力:
request ok: b'{"HDC_TEMP":2426}'
このプリントクライアントが受信したばかりの最初の値;後続の値も印刷したいと思います。