This is an experimental AES-encrypted RPC API for ESP 8266.


The server folder contains a sample ESP 8266 project. Simply set the values in config.py and flash.

# The project automatically sets up urpc for you
# In your main:

from urpc import rpc

def test_func(a, b):
    return a + b

def test_func2(a, b):
    return a - b

# You can also add a handler for HTTP get requests
# You get one handler. It encodes the output in json. You have access to query string args.
def http_handler(query_string_args):
    return ["some", {"json": True}, "values"]

I also include some administrative functions, if you prefer not to use the REPL, which is unencrypted and limited to an 8 character password: reset(), soft_reset(), eval(code), ls(), rm(filename), put(filename, b'data'), get(filename), start_webrepl(password), stop_webrepl(). Note that these do not buffer the inputs/outputs.

The client folder contains the client, which you use like this:

import urpc
rpc = urpc.URPC('192.168.x.x', b'SECRET_KEY')

# will autoconnect unless you pass False as last param
rpc.test_func(1, 2)

# rpc.connect()

You need https://pypi.org/project/pycrypto/ for the client.

Uses umsgpack from: https://github.com/peterhinch/micropython-msgpack
I have bundled umsgpack into one file and made some tweaks for easier use in this project.


View Github