Skip to content

codde-pi/codde_protocol

Repository files navigation

CODDE Protocol

Build & Test crates.io pub.dev pypi.org

CODDE Protocol is the base layer of the CODDE Pi Framework. This protocol let CODDE Pi interacts with any hardware through WiFi, Bluetooth and BLE using an embedded library and a mobile app. This technology enables users to freely interact with hardware thanks to a secure, stable and reliable technology without be (too) intrusive.

Buy Me A Coffee

Development

This Project is written in Rust, enabling fast serializing/deserializing and data processing. Client side is ported for Dart/Flutter applications, and server side has been translated in python.

CODDE Protocol integrates data generated by CODDE Pi App widgets, and received by embedded systems. See https://codde-pi.com to stay tuned about new widgets integration.

Install

For Python code:

pip install codde_protocol

For Rust:

cargo add codde_protocol

For Dart/Flutter:

flutter pub add codde_protocol

How it works

CODDE Pi is based on client-server architecture. Basically, the mobile App you download is the client side, and the base layer you embed on your project is the server side

Widgets & CODDE Protocol

Usage

import codde_protocol
import time
# import gpio

# instantiate server
server = CoddePiServer.use_socket('localhost:12345')

# some hardware control
# pin10 = gpio.DigitalPin(10, gpio.OUTPUT)

@event(server)
def toggle_button_1(*args):
    widget: ToggleButton = args[0]
    print("value received : ", widget.value)
    server.callback(1, ServerStatus.Idle, ConfirmResult(True))

@event(server)
def click_button_2(*args):
    pass
    # pin10.on()

if __name__ == "__main__":
    print('opening server...', end=' ')
    server.open()
    try:
    print('serve')
        server.serve()
        while True:
            sleep(1)
    except KeyboardInterrupt:
        print("CTRL + C.")
        print("Program interrupted.")
    finally:
        server.close()

Roadmap

Libraries

Protocols Flutter Python Rust MicroPython
WebSocket (client) Yes Yes
WebSocket (server) Yes Yes WIP
Bluetooth WIP
USB
Nearby

Hardware compatibility

Protocols SBC (arm64) RP2040 Android iOS x86
WebSocket (client) Yes WIP Yes Yes Yes
WebSocket (server) Yes WIP Yes Yes Yes
Bluetooth
USB No
Nearby