Skip to main content

Python module to communicate over the CoAP protocol

Project description

libcoapy

libcoapy project enables communication over the CoAP protocol (RFC 7252). The llapi module provides ctypes-based wrappers for the libcoap C library. The libcoapy module uses llapi to provide a high-level class interface to the libcoap functions.

Dependencies:

Status

This project is still in early development. Several functions of the libcoap library are not yet available and existing high-level libcoapy APIs might change in the future.

Portability

libcoapy is a pure python module and the underlying libcoap supports several platforms like Linux, Windows, MacOS and Android. However, libcoap (and hence libcoapy) does not support all features on all platforms and with all possible SSL/TLS libraries.

If you want to use libcoapy with asyncio on platforms without epoll, like Windows, it might be necessary to choose an event loop that supports add_reader(). On Windows you might need to add this to your code before initializing the loop:

if sys.version_info[0] == 3 and sys.version_info[1] >= 8 and sys.platform.startswith('win'):
	asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())

Tools

  • coap-gui - a small Tkinter-based GUI to interact with a CoAP server
  • coarl - a CLI tool that provides a similar interface as curl

Example: client

from libcoapy import *

if len(sys.argv) < 2:
	uri_str = "coap://localhost"
else:
	uri_str = sys.argv[1]

ctx = CoapContext()

session = ctx.newSession(uri_str)

def rx_cb(session, tx_msg, rx_msg, mid):
	print(rx_msg.payload)
	session.ctx.stop_loop()

session.sendMessage(path=".well-known/core", response_callback=rx_cb)

ctx.loop()

Example: server

from libcoapy import *

def echo_handler(resource, session, request, query, response):
	response.payload = request.payload

def time_handler(resource, session, request, query, response):
	import datetime
	now = datetime.datetime.now()
	response.payload = str(now)

ctx = CoapContext()
ctx.addEndpoint("coap://[::]")

time_rs = CoapResource(ctx, "time")
time_rs.addHandler(time_handler)
ctx.addResource(time_rs)

echo_rs = CoapResource(ctx, "echo")
echo_rs.addHandler(echo_handler)
ctx.addResource(echo_rs)

ctx.loop()

More examples can be found in the examples directory.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

libcoapy-2024.10.7.tar.gz (24.7 kB view details)

Uploaded Source

Built Distribution

libcoapy-2024.10.7-py3-none-any.whl (24.8 kB view details)

Uploaded Python 3

File details

Details for the file libcoapy-2024.10.7.tar.gz.

File metadata

  • Download URL: libcoapy-2024.10.7.tar.gz
  • Upload date:
  • Size: 24.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for libcoapy-2024.10.7.tar.gz
Algorithm Hash digest
SHA256 edc5ed16e89227044383d7bcd20e45ae1c146a6b912513bf69d03644760d7509
MD5 85d907d8de07cdcfe879b2ac95ef1aa9
BLAKE2b-256 da562f67f1519c917fde74071ebebc99e73414b1462f68c7405dc08819805a39

See more details on using hashes here.

File details

Details for the file libcoapy-2024.10.7-py3-none-any.whl.

File metadata

  • Download URL: libcoapy-2024.10.7-py3-none-any.whl
  • Upload date:
  • Size: 24.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for libcoapy-2024.10.7-py3-none-any.whl
Algorithm Hash digest
SHA256 a956add5d9023a541999745049f628d14d139008ec90f19be0ce137d3eaf165c
MD5 b3fb09c58e73ee768b5c82413e348bfe
BLAKE2b-256 f7bc1166ac2ef29959d88d24ae5fbb7d8d5a5cfe42dbc84cfc2e05a06132b3e6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page