Une bibliothèque de wrapper Python pour l'API DTN7 REST et WebSocket de DTN7-RS. La bibliothèque comprend un type Bundle entièrement conforme aux spécifications (mais sans fragment et prise en charge CRC), ce qui permet la création de bundle complète et la sérialisation (dé-).
Le bundle.py , dtn_rest_client.py , les modules / fichiers utils.py sont compatibles Micropython. Mais cela nécessite un peu de gestion manuelle des bibliothèques. Veuillez vous référer au guide d'installation de Micropython ci-dessous.
Pour utiliser py-dtn7 dans votre projet, installez-le simplement à partir de PYPI avec la poésie:
$ poetry install --no-dev py_dtn7C'est vraiment un travail en cours et de loin pas complet. La mise en œuvre du bundle est très rudimentaire et ne prend en charge aucun bloc autre que la charge primaire et la charge utile.
Pour générer la documentation de l'API, utilisez pdoc :
$ pdoc ./py_dtn7 --output-directory ./docs... ou consultez 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}Lors de l'envoi d'un paquet à un homologue connu, nous pouvons simplement fournir le nom et le point de terminaison des pairs, sinon nous utilisons l'uri complet:
>>> 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'À étendre:
Les bibliothèques factices __future__.py , abc.py , typing.py , la bibliothèque Micropython-cbor (en particulier le module / fichier cbor.py ) et urequests ainsi que datetime sont nécessaires:
$ mpremote mip install urequests
$ mpremote mip install datetime