Eine Python-Wrapper-Bibliothek für die DTN7 REST- und WebSocket-API von DTN7-RS. Die Bibliothek enthält einen vollständig spezifischen konformen Bundle -Typ (jedoch ohne Fragment- und CRC-Unterstützung), das die Erstellung der vollständigen Bündel und die (De-) Serialisierung ermöglicht.
Die bundle.py , dtn_rest_client.py , utils.py -Modulen/Dateien sind mikropython kompatibel. Dies erfordert jedoch ein wenig manuelles Bibliotheksmanagement. Weitere Informationen finden Sie im folgenden Micropython -Installationshandbuch.
Um py-dtn7 in Ihrem Projekt zu verwenden, installieren Sie es einfach von PYPI mit Poesie:
$ poetry install --no-dev py_dtn7Dies ist sehr viel Arbeit und mit Abstand nicht vollständig. Die Bündel -Implementierung ist sehr rudimentär und unterstützt keine anderen Blöcke als Primär- und Nutzlast.
Um die API -Dokumentation zu generieren, verwenden Sie pdoc :
$ pdoc ./py_dtn7 --output-directory ./docs... oder schauen Sie sich py-dtn7.readthedocs.org an
>>> 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}Beim Senden eines Bündels an einen bekannten Kollegen können wir einfach den Peer -Namen und den Endpunkt angeben, andernfalls verwenden wir den vollständigen URI:
>>> 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'Erweitert werden:
Die Dummy-Bibliotheken __future__.py , abc.py , typing.py , die micropython-cbor-Bibliothek (insbesondere das cbor.py Modul/die Datei) und urequests sowie datetime sind erforderlich:
$ mpremote mip install urequests
$ mpremote mip install datetime