Skip to content

Latest commit

 

History

History
73 lines (52 loc) · 2.2 KB

README.md

File metadata and controls

73 lines (52 loc) · 2.2 KB

ALIOT-PY: The python implementation of the Aliot library!

What is Aliot?

Before everything else, aliot is a fancy websocket written in python that aims to facilitate iot focused exchanges between a server and a client

Installation

  1. create a python virtual environment
    • run the command py -m venv venv
  2. add aliot in a folder in your project (replace $FOLDER in the command by the name of your folder)
  3. run the command pip install ./$FOLDER

Creating my first Aliot program

  1. create an object ObjConnecte

Creating an endpoint (or, like we call it here, a protocol)

  1. Create a function that takes some parameters

    # my function will take money ($) and give cookies for every 2$ received
    def give_cookies_for_money(money: int):
        return {"cookies": money // 2}
  2. Register your function as a protocol by decorating it with the on_recv decorator in your ObjConnecte that you created for your project and pass the id of your protocol in the argument of the decorator

    # here, I chose that my function will be protocol 34
    @my_iot.on_recv(action_id=34)
    def give_cookies_for_money(money: int):
        return {"cookies": money // 2}
  3. As of now, my function give_cookies_for_money doesn't return anything to the server, if I want to send back my cookies, I have to ways:

    1. use the function my_iot.send()
    @my_iot.on_recv(action_id=34)
    def give_cookies_for_money(money: int):
        my_iot.send({"cookies": money // 2})
    1. set the convenience parameter send_result to True in the decorator
    @my_iot.on_recv(action_id=34, send_result=True)
    def give_cookies_for_money(money: int):
        return {"cookies": money // 2}
    1. You're all set! Now repeat and enjoy! 🎉

Order of execution (once run() is called)

  1. obj.on_start()
  • On receive:
    1. [ interceptor.intercept_recv() ]
    2. decoder.decode_event(event: dict) -> AliotEvent
    3. controller.handle_event(event: AliotEvent) -> None
    4. decoder.decode_data(data: dict) -> T
  • On send:
    1. encoder.encode_data(data: Any) -> dict
    2. encode.encode_event()
    3. obj.__send_event() -> None