Una biblioteca de envoltura de python para la API DTN7 REST y WebSocket de DTN7-RS. La biblioteca incluye un tipo de Bundle totalmente compatible con las especificaciones (pero sin fragmento y soporte de CRC), lo que permite la creación completa de paquetes y (des) serialización.
El bundle.py , dtn_rest_client.py , utils.py módulos/archivos son compatibles con Micropython. Pero esto requiere un poco de gestión manual de biblioteca. Consulte la guía de instalación de Micropython a continuación.
Para usar py-dtn7 en su proyecto, simplemente instálelo desde Pypi con poesía:
$ poetry install --no-dev py_dtn7Este es en gran medida un trabajo en progreso y, con mucho, no está completo. La implementación del paquete es muy rudimentaria y no admite ningún bloque que no sea primario y la carga útil.
Para generar la documentación de la API, use pdoc :
$ pdoc ./py_dtn7 --output-directory ./docs... o mira py-dtn7.readthedocs.org
>>> from py_dtn7 import DTNRESTClient
>>> client = DTNRESTClient( host = " http://localhost " , port = 3000 )
>>> d.peers
{'box1': {'eid': [1, '//box1/'], 'addr': {'Ip': '10.0.0.42'}, 'con_type': 'Dynamic', 'period': None, 'cla_list': [['MtcpConvergenceLayer', 16162]], 'services': {}, 'last_contact': 1653316457}}
>>> d.info
{'incoming': 0, 'dups': 0, 'outgoing': 0, 'delivered': 3, 'broken': 0}Al enviar un paquete a un compañero conocido, simplemente podemos suministrar el nombre de la par y el punto final, de lo contrario usamos el URI completo:
>>> d.send( payload = { " body " : " This will be transferred as json " }, peer_name = " box1 " , endpoint = " info " )
<Response [200]>
>>> r = d.send( payload = " Is there anybody out there? " , destination = " dtn://greatunkown/incoming " )
>>> r.content.decode( " utf-8 " )
'Sent payload with 27 bytes'Para ser extendido:
Las bibliotecas ficticias __future__.py , abc.py , typing.py , la biblioteca de micopython-cbor (específicamente el módulo/archivo cbor.py ) y urequests , así como datetime
$ mpremote mip install urequests
$ mpremote mip install datetime