From fe4554e2f35357dc13585599d28622f28954b0d8 Mon Sep 17 00:00:00 2001 From: Catalin Ioana Date: Thu, 24 Oct 2019 18:06:54 +0300 Subject: [PATCH] Added Pymesh library --- config.toml | 43 +++- content/pymesh/_index.md | 13 +- content/pymesh/lib-api.md | 67 ++++++ content/pymesh/lib-ble-rpc.md | 99 +++++++++ content/pymesh/lib-cli.md | 210 ++++++++++++++++++ content/pymesh/library.md | 72 ------ content/pymesh/licence.md | 48 ++++ content/pymesh/pymesh-br.md | 207 +++++------------ content/pymesh/simple-example.md | 146 ++++++++++++ .../assets/pymesh/pymesh_firmware_update.png | Bin 0 -> 119497 bytes 10 files changed, 662 insertions(+), 243 deletions(-) create mode 100644 content/pymesh/lib-api.md create mode 100644 content/pymesh/lib-ble-rpc.md create mode 100644 content/pymesh/lib-cli.md delete mode 100644 content/pymesh/library.md create mode 100644 content/pymesh/licence.md create mode 100644 content/pymesh/simple-example.md create mode 100644 static/gitbook/assets/pymesh/pymesh_firmware_update.png diff --git a/config.toml b/config.toml index 625af85..2d6bcc1 100644 --- a/config.toml +++ b/config.toml @@ -1272,39 +1272,60 @@ theme = "doc-theme" weight = 95 [[menu.main]] - name = "Pymesh Library API" - url = "/pymesh/library" - identifier = "pymesh@library" + name = "Pymesh LICENCE" + url = "/pymesh/licence" + identifier = "pymesh@licence" parent = "pymesh" weight = 10 [[menu.main]] - name = "Micropython API" - url = "/firmwareapi/pycom/network/lora/pymesh" - identifier = "pymesh@api" + name = "Simple Example" + url = "/pymesh/simple-example" + identifier = "pymesh@simple-example" parent = "pymesh" weight = 20 [[menu.main]] - name = "Simple Example" - url = "/pymesh/lora-mesh" - identifier = "pymesh@lora-mesh" + name = "Pymesh Library API" + url = "/pymesh/lib-api" + identifier = "pymesh@lib-api" parent = "pymesh" weight = 30 +[[menu.main]] + name = "Pymesh Library CLI" + url = "/pymesh/lib-cli" + identifier = "pymesh@lib-cli" + parent = "pymesh" + weight = 40 + +[[menu.main]] + name = "Pymesh Library BLE RPC" + url = "/pymesh/lib-ble-rpc" + identifier = "pymesh@lib-ble-rpc" + parent = "pymesh" + weight = 50 + [[menu.main]] name = "Border Router Examplee" url = "/pymesh/pymesh-br" identifier = "pymesh@pymesh-br" parent = "pymesh" - weight = 40 + weight = 60 [[menu.main]] name = "Advanced Security Example" url = "/pymesh/security" identifier = "pymesh@security" parent = "pymesh" - weight = 50 + weight = 70 + +[[menu.main]] + name = "Micropython API" + url = "/firmwareapi/pycom/network/lora/pymesh" + identifier = "pymesh@api" + parent = "pymesh" + weight = 90 # *** Documentation Notes [[menu.main]] diff --git a/content/pymesh/_index.md b/content/pymesh/_index.md index 1f15b80..7ff0156 100644 --- a/content/pymesh/_index.md +++ b/content/pymesh/_index.md @@ -12,11 +12,12 @@ Pymesh is the LoRa full-mesh network technology. A Mesh network acts like a net, this means that any node within the network can connect with any other node. - Mesh networks essentially get rid of gateways, which decentralises the network's infrastructure. This then means that the network becomes flexible, so it can do many wonderful things – such as generate, change and fix itself. The success of the Mesh network is down to its parts, as any node within the network will automatically connect to the best radio-link available. Pymesh solution works on all of our LoRa supporting development boards, the LoPy4 and FiPy as well as on our OEM modules, L01 and L04. +_**Note: For obtaining the Pymesh firmware please follow the steps from [Pymesh LICENCE page](/pymesh/licence).**_ + ## What does Pymesh offer you? * Ad-hoc communication network over raw-LoRa radio @@ -29,7 +30,11 @@ Pymesh solution works on all of our LoRa supporting development boards, the LoPy ## Let's get started! -* [Pymesh Micropython API](/firmwareapi/pycom/network/lora/pymesh) -* [Simple Example](/pymesh/lora-mesh) -* [Border Router Example](/pymesh/pymesh-br) +* [Pymesh LICENCE](/pymesh/licence) +* [Simple Example](/pymesh/simple-example) +* [Pymesh library API](/pymesh/lib-api) +* [Pymesh library CLI](/pymesh/lib-cli) +* [Pymesh library BLE RPC](/pymesh/lib-ble-rpc) +* [Border Router](/pymesh/pymesh-br) * ​[Advanced Security Example](/pymesh/security)​ +* [Pymesh Micropython API](/firmwareapi/pycom/network/lora/pymesh) diff --git a/content/pymesh/lib-api.md b/content/pymesh/lib-api.md new file mode 100644 index 0000000..06c191a --- /dev/null +++ b/content/pymesh/lib-api.md @@ -0,0 +1,67 @@ +--- +title: "Pymesh Library API" +aliases: + - pymesh/lib-api +--- + +## Overview + +This Micropython library is included as frozen scripts in the Pymesh firmware release. + +Code is open-sourced in [pycom-libraries repository](https://github.com/pycom/pycom-libraries/tree/master/lib/pymesh). + +It is easily customisable and contributions are highly recommend using [Github PRs](https://github.com/pycom/pycom-libraries/pulls). + +### Main features + +* Start Pymesh over LoRa on 863Mhz, bandwidth 250kHz, spreading-factor 7 (please check `pymesh_config.py` defaults for exact values). +* Pymesh parameters are automatically saved in NVM, so in the next restart/deepsleep, the node will try to maintain its IP addresses and connections with neighbour nodes. +* Start Bluetooth LE server with name `PyGo ` + * BLE is used with an RPC protocol, presented int [Pymesh library BLE RPC](/pymesh/lib-ble-rpc) +* Internal CLI for controlling/triggering Pymesh features, as explained in [Pymesh library CLI](/pymesh/lib-cli). + +### Color coding LED + +The LED color represents the state of the node in the Mesh network. + +``` + +Blinking - Send/Receive packet +Magenta - LEADER +Green - ROUTER +White - CHILD, +Red - Searching / Detached from any Pymesh +Cyan - SINGLE LEADER (no other Router in the same Pymesh) +``` + +## Example of usage + +A simple example of usage is in the [main.py](https://github.com/pycom/pycom-libraries/blob/master/lib/pymesh/main.py). + +## Specifications + +It can be easily customised, by modifying any file from [/lib folder](https://github.com/pycom/pycom-libraries/tree/master/lib/pymesh/lib) and flashing it to the board. Automatically the uploaded file will be executed instead of the _frozen_ one, already embedded into the binary firmware. + +### Structure + +* `pymesh.py` + * contains all the methods accessible from `main.py` +* `cli.py` + * [Pymesh library CLI](/pymesh/lib-cli) +* BLE services + * `ble_rpc.py` + * [Pymesh library BLE RPC](/pymesh/lib-ble-rpc) + * `ble_services.py` + * setting BLE server +* auxiliary files: + * `pymesh-debug.py` + * debugging on levels, allowing dynamically changing debug level + * `pymesh-config.py` + * reading/writing Pymesh configuration file + * `gps.py` + * maintaining location coordinates, as an extension `Pytrack` GPS can be used +* Mesh internals + * `mesh-interface.py` + * methods to inquire Mesh-internal parameters + * `mesh-internal.py` and `loramesh.py` + * 2 layers of internal mesh maintenance diff --git a/content/pymesh/lib-ble-rpc.md b/content/pymesh/lib-ble-rpc.md new file mode 100644 index 0000000..14f9940 --- /dev/null +++ b/content/pymesh/lib-ble-rpc.md @@ -0,0 +1,99 @@ +--- +title: "Pymesh Library Bluetooth LE RPC" +aliases: + - pymesh/simple-example +--- + +## RPC protocol + +It is implemented in [ble_rpc.py](https://github.com/pycom/pycom-libraries/blob/master/lib/pymesh/lib/ble_rpc.py). + +In the class `RPCHandler` methods can be added to expand RPC set. + +The internal RPC are calling methods from file `mesh_interface.py`. + +## Methods + +#### mesh_is_connected() + +This returns `True` if Node is connected to a Pymesh. + +#### mesh_ip() + +This returns the IP RLOC16 in a string. + +#### set_gps(latitude, longitude) + +This sets the location coordinates. + +#### get_mesh_mac_list() + +This returns list of distinct MAC address that are in this mesh network, for example `[mac1, mac2, mac 3]`.` + +#### get_mesh_pairs() + +This returns list of pairs that is a mesh connection, as shown bellow: + +``` +[ + ('mac1', 'mac2', rssi), + ('mac1', 'mac3', rssi), + #... +] +``` + +#### get_node_info(mac_id = ' ') + +This returns the node data for a specified mac address, or own data id `mac_id` is not specified. Node data is dictionary with the following structure: +``` +{ + 'ip': 4c00, # last 2bytes from the ip v6 RLOC16 address + 'r': 3, # not_connected:0 | child:1 | leader:2 | router:3 + 'a': 100, # age[sec], time since last info about this node + 'nn' : 20 # neighbours number + 'nei': { # neighbours enumerated, if any + (mac, ip, role, rssi, age), + (mac, ip, role, rssi, age) + } + 'l': { # location, if available + 'lng': 7, + 'lat': 20, + }, + 'b' : { # BLE infos + 'a': 100 # age, seconds since last ping with that device, None if properly disconnected + 'id': '' # 16byte + 'n': '', # name, max. 16 chars + } +} +``` + +#### send_message(data) + +This sends a message with another node. It return True if there is buffer to store it (to be sent). + +`data` is a dictionary with the following structure: +``` +{ + 'to': 0x5, + 'b': 'text', + 'id': 12345, + 'ts': 123123123, +} +``` + + +#### send_message_was_sent(mac, msg_id) + +This checks if acknowledge was received for the specified `mac` and `msg_id`. It returns `True` if message was delivered. + +#### receive_message() + +This returns the received messages, in a dictionary with the next structure: +``` +{ + 'b': 'text', + 'from': 'ble_device_id', + 'ts': 123123123, + 'id': '', +} +``` diff --git a/content/pymesh/lib-cli.md b/content/pymesh/lib-cli.md new file mode 100644 index 0000000..4fb8371 --- /dev/null +++ b/content/pymesh/lib-cli.md @@ -0,0 +1,210 @@ +--- +title: "Pymesh Library CLI" +aliases: + - pymesh/simple-example +--- + +## Overview + +The Pymesh micropython library is included as frozen in the Pymesh firmware releases. + +Instead of REPL, a specific Pymesh CLI is interpreting commands and it is recognised, by starting with `>`. + +The CLI is executed on a separate thread inside the Pymesh library. + +For example: +``` +>mml +mesh_mac_list [1, 6, 2] +``` + +## Internal CLI + +``` +List of available commands +ip - display current IPv6 unicast addresses +mac - set or display the current LoRa MAC address +self - display all info about current node +mml - display the Mesh Mac List (MAC of all nodes inside this Mesh), also inquires Leader +mp - display the Mesh Pairs (Pairs of all nodes connections), also inquires Leader +s - send message +ws - verifies if message sent was acknowledged +rm - verifies if any message was received +sleep - deep-sleep +br - enable/disable or display the current Border Router functionality +brs - send packet for Mesh-external, to BR, if any +rst - reset NOW, including NVM Pymesh IPv6 +buf - display buffer info +ot - sends command to openthread internal CLI +debug - set debug level +config - print config file contents +``` + +### Debug commands + +``` +> debug +5 +``` +This sets the debug level. Possible values are: +``` +# recommended debug levels, from the most verbose to off +DEBUG_DEBG = const(5) +DEBUG_INFO = const(4) +DEBUG_NOTE = const(3) +DEBUG_WARN = const(2) +DEBUG_CRIT = const(1) +DEBUG_NONE = const(0) +``` + +``` +>rst +Mesh Reset NVM settings ... +deepsleep_init +>deepsleep_now +Cleanup code, all Alarms cb should be stopped +Going to deepsleep for 1 seconds +``` +This resets the Pymesh parameters saved in NVM, and resets the Node. + +``` +>sleep +(time[sec])<10 +deepsleep_init +>deepsleep_now +Cleanup code, all Alarms cb should be stopped +Going to deepsleep for 10 seconds +``` +This puts the device in deepsleep for designated number of seconds. + +``` +>buf +Buffer info: total: 200 +free: 200 +6lo send: 0 0 +6lo reas: 0 0 +ip6: 0 0 +mpl: 0 0 +mle: 0 0 +arp: 0 0 +coap: 0 0 +coap secure: 0 0 +application coap: 0 0 +``` +This displays the number of buffers for each layer of the Pymesh. + +``` +>ot +(openthread cli)mac +1 +``` +This shows LoRa MAC, this address is used as unique identifier in the Pymesh. Bellow there's a section on how to set MAC specific MAC address (useful for debugging, the MAC could be consecutive small numbers like `0x1`, `0x2`, `...`) + +``` +>mml +mesh_mac_list [1, 6, 2] +``` +This shows the list of all MAC Nodes attached to Pymesh. It inquires Leader, which centralises this data. + +``` +>mp +Send pack: 0xF3 to IP fdde:ad00:beef:0:0:ff:fe00:fc00 +last_mesh_pairs [[2, 6, -87], [1, 6, -77]] +``` +This shows Mesh Pairs list, with each direct connected nodes (by their MAC address) and the averaged RSSI value. + +``` +>mni +last_mesh_node_info {1: {"ip": 2048, "l": {"lng": 5.45313, "lat": 51.45}, "a": 10, "r": 3, "nn": 1, "nei": [[6, 55296, 3, -76, 23]]}, 6: {"ip": 55296, "l": {"lng": 5.45313, "lat": 51.45}, "a": 7, "r": 3, "nn": 2, "nei": [[2, 50176, 3, -89, 28], [1, 2048, 3, -77, 23]]}, 2: {"ip": 50176, "l": {"lng": 5.45313, "lat": 51.45}, "a": 7, "r": 3, "nn": 1, "nei": [[6, 55296, 3, -86, 25]]}} +``` +This shows the properties for all the nodes in this Pymesh, together with its neighbours. + +``` +>s +(to)<1 +(txt)>>>>>>> +Added new message for 1: Hello World! +Send pack: 0x10 to IP fdde:ad00:beef:0::1 +True +>Incoming 13 bytes from fdde:ad00:beef:0:f67b:3d1e:f07:8341 (port 1234): +PACK_MESSAGE_ACK received +1945883 ================= ACK RECEIVED :) :) :) +``` +This sends text messages to another Node inside Pymesh. The messaging waits for acknowledgement (ACK message type) from the destination node. + +``` +>ws +(to)<1 +ACK? mac 1, id 12345 => 1 +True +``` +This shows if a message was acknowledged by the destination Node. + +``` +>rm +{'b': (b'Hello World!',), 'id': 12345, 'ts': 3301, 'from': 6} +``` +This shows the received messages. + +### Auxiliary commands +``` +>gps +(lat [Enter for read])< +Gps: (51.45, 5.45313) + +> gps +(lat [Enter for read])<11.234 +(lon)<23.45 +Gps: (11.234, 23.45) +``` + +This reads the GPS coordinates or sets them to known values. + +``` +>config +{'ble_api': True, 'MAC': 6, 'autostart': True, 'debug': 5, 'LoRa': {'sf': 7, 'region': 5, 'freq': 863000000, 'bandwidth': 2}, 'ble_name_prefix': 'PyGo ', 'Pymesh': {'key': '112233'}} +``` +This displays the configuration, stored on `/flash/pymesh_config.json`. + +### Border Router specific + +``` +>br +(state 0=Disable, 1=Enable, 2=Display [Default Display])< +Border Router state: [] + +>br +(state 0=Disable, 1=Enable, 2=Display [Default Display])<1 +(priority -1=Low, 0=Normal or 1=High [Default Normal])< +State: True BR: [] +Force add BR +BR: [(net='2001:cafe:cafe:cafe::/64', preference=0)] + +>br +(state 0=Disable, 1=Enable, 2=Display [Default Display])< +Border Router state: [(net='2001:cafe:cafe:cafe::/64', preference=0)] +``` +This enables/disables and shows the state of the current node as Border Router. + +``` +>brs +brs +(message<) +(IP destination, Mesh-external [Default: 1:2:3::4])< +(port destination [Default: 5555])< +Send BR message: {'ip': '1:2:3::4', 'b': '', 'port': 5555} +``` +This sends a packet to an IP address external of the Pymesh. This packet will be received by the designated Border Router and it can be further forwarded to another network interface, like: BLE, Wifi, Sigfox or Cellular (Fipy only). diff --git a/content/pymesh/library.md b/content/pymesh/library.md deleted file mode 100644 index 35f84e3..0000000 --- a/content/pymesh/library.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: "Pymesh Library" -aliases: - - pymesh/library ---- - -## What is Pymesh micropython library? - -Pymesh micropython library is a set of scripts included (as frozen) in the Pymesh firmware binary release (Not yet released). - -[Open-source on github](https://github.com/pycom/pycom-libraries/tree/master/lib/pymesh) - -It allows users to use Pymesh in a few lines of code, as shown in the following code snippet. - -```python - -import pycom -import time - -from _pymesh_config import PymeshConfig -from _pymesh import Pymesh - -# stop LED heartbeat, because it will be used to indicate current Node role -pycom.heartbeat(False) - -# read config file, or set default values -pymesh_config = PymeshConfig.read_config() - -#initialize Pymesh -pymesh = Pymesh(pymesh_config, new_message_cb) - -while not pymesh.is_connected(): - print(pymesh.status_str()) - time.sleep(3) - -# send message to the Node having MAC address 6 -pymesh.send_mess(6, "Hello World") - -def new_message_cb(rcv_ip, rcv_port, rcv_data): - ''' callback triggered when a new packet arrived ''' - print('Incoming %d bytes from %s (port %d):' % - (len(rcv_data), rcv_ip, rcv_port)) - print(rcv_data) - - # user code to be inserted, to send packet to the designated Mesh-external interface - # ... - return - -###################################################################################### -# Adding current node as Border Router, with a normal priority and a message handler callback -pymesh.br_set(PymeshConfig.BR_PRIORITY_NORM, new_br_message_cb) - -# remove Border Router function from current node -#pymesh.br_remove() - -# send data for Mesh-external, basically to the BR -ip = "1:2:3::4" -port = 5555 -pymesh.send_mess_external(ip, port, "Hello World") - -def new_br_message_cb(rcv_ip, rcv_port, rcv_data, dest_ip, dest_port): - ''' callback triggered when a new packet arrived for the current Border Router, - having destination an IP which is external from Mesh ''' - print('Incoming %d bytes from %s (port %d), to external IPv6 %s (port %d)' % - (len(rcv_data), rcv_ip, rcv_port, dest_ip, dest_port)) - print(rcv_data) - - # user code to be inserted, to send packet to the designated Mesh-external interface - # ... - return - -``` diff --git a/content/pymesh/licence.md b/content/pymesh/licence.md new file mode 100644 index 0000000..c2b466a --- /dev/null +++ b/content/pymesh/licence.md @@ -0,0 +1,48 @@ +--- +title: "Pymesh Library CLI" +aliases: + - pymesh/simple-example +--- + +## Licensing process + +In order to receive access to the Pymesh firmware releases (for Lopy4, Fipy, L01 or L04), the next process should be followed: + + +1. Complete the Pymesh LICENCE PDF document(not yet available), sign it and send us by [this email](mailto:catalin@pycom.io?subject=[Pymesh_LICENCE]). +1. You will receive on email an archive containing the images for all boards. +1. Extract the corresponding image, for example Lopy4.tar.gz, and upload the firmware to your board, using the [Pycom Firmware Update Tool](https://pycom.io/downloads/), like in the following image: +Pymesh Firmware Update + +## Test Pymesh firmware loading + +### Method 1 + +The simplest method to check if Pymesh class is successfully installed, just try this code directly in REPL: + +```python +>>> from network import LoRa +>>> lora = LoRa(mode=LoRa.LORA) +>>> mesh = lora.Mesh() +``` + +### Method 2 + +Upload the `main.py` from the [Simple Example](/pymesh/simple-example). + +## FAQ + +Q: **I've received an error, such as `(LoadProhibited). Exception was unhandled.`, what should I do?** + +A: In some cases, the NVM partition needs to be formatted. For this a format of whole Flash Memory should be performed. + +This can be done using the cli version of the Firmware Update Tool, so please navigate where this app was installed (search for pycom-fwtool-cli executable) and execute: +``` +pycom-fwtool-cli -p erase_all +``` + +`` should be replaced with the actual USB COM port, for example: + +* on Windows `COM10` +* on Linux `/dev/ttyACM0` +* on MacOS ``/dev/tty.usbmodemPy8eaa911` diff --git a/content/pymesh/pymesh-br.md b/content/pymesh/pymesh-br.md index d8d758e..75fc5dc 100644 --- a/content/pymesh/pymesh-br.md +++ b/content/pymesh/pymesh-br.md @@ -5,168 +5,63 @@ aliases: - tutorials/lora/pymesh-br.md --- +Pymesh -{{% hint style="info" %}} -These API's are currently only available in the latest RC builds. -{{% /hint %}} +## Overview -The following script exemplifies the declaration of a Border Router inside Pymesh. +The Border Router role, of a Node inside Pymesh, takes the traffic from the Pymesh and forwards it to the Cloud (Pymesh-external). -The Border Router is a role of a Pymesh node that can forward the Pymesh internal data to the Cloud. This is accomplished with the following steps: +Several things must be accomplished: -- declare the BR network address prefix, like `2001:dead:beef:cafe::/64`. - - in this particular script, as example the node which has LoRa MAC as value `8` will set BR interface. - - in a more practical usecase, the BR should be enabled if Wifi/BLE/Cellular connections are setup. +* The BR node should have connection with the Cloud, using another network interface (than LoRa-Pymesh), for example: BLE, Wifi or Cellular. +* The node has to be declared as BR, so all the other nodes send packets to it, with destination Cloud. +* Dynamically multiple nodes can be BR, each of them having different priorities levels (Normal, High or Low) + * The BR with the smallest routing cost is chosen. + * If multiple BR have the same routing cost, the priority level is used. -- all the nodes within the Pymesh will create a random IPv6 unicast address with this prefix. +## Border Router using CLI -- if a node sends data to an IPv6 which is external (like `1:2:3::4`), this UDP datagram will be routed to the BR. +As explained in [Pymesh CLI - Border Router section](pymesh/lib-cli/#border-router-specific), using commands `br` and `brs`, a simple testing scenario can be easily implemented. -- BR will receive the UDP datagrams for external with an appended header, which contains: - - MAGIC byte: `0xBB` - - IPv6 destination as bytearray (16 bytes) - - port destination as 2 bytes (1-65535 values). -- the IPv6 destination is important so BR could actually route (forward) the UDP datagram content to the right interface (Wifi/BLE/cellular). - -After this script is executed, some example of testing: - -- send data to the cloud - - `eid_socket.sendto("01234567890123456789", ("1::2", 1235))` - -- send data to the EID ipv6 of another Node inside Pymesh - - `eid_socket.sendto("0123456789", ("fdde:ad00:beef:0:4623:91c8:64b2:d9ec", 1235))` - -- send data to the Leader - - `eid_socket.sendto("0123456789", ("fdde:ad00:beef:0:0:ff:fe00:fc00", 1235))` - -- send data to the RLOC of another Node inside Pymesh - - `eid_socket.sendto("0123456789", ("fdde:ad00:beef:0:0:ff:fe00:6800", 1235))` - - - -## Border Router example - -- Source: [https://github.com/pycom/pycom-libraries/blob/master/lib/lora_mesh/main_border_router.py](https://github.com/pycom/pycom-libraries/blob/master/lib/lora_mesh/main_border_router.py) -- `Loramesh` micropython library is available at [https://github.com/pycom/pycom-libraries/blob/master/lib/lora\_mesh/loramesh.py](https://github.com/pycom/pycom-libraries/blob/master/lib/lora_mesh/loramesh.py). - -```python - -from network import LoRa -import ubinascii -from loramesh import Loramesh -import pycom -import time -import socket -import struct - -BORDER_ROUTER_HEADER_FORMAT = '!BHHHHHHHHH' -BORDER_ROUTER_MAGIC_BYTE = 0xBB - -pycom.wifi_on_boot(False) -pycom.heartbeat(False) -border_router_net = "2001:dead:beef:cafe::/64" - -lora = LoRa(mode=LoRa.LORA, region=LoRa.EU868, bandwidth=LoRa.BW_125KHZ, sf=7) -#mesh = lora.Mesh() -MAC = str(ubinascii.hexlify(lora.mac()))[2:-1] -print("LoRa MAC: %s"%MAC) - -mesh = Loramesh(lora) - -# waiting until it connected to Mesh network -while True: - mesh.led_state() - print("%d: State %s, single %s"%(time.time(), mesh.cli('state'), mesh.cli('singleton'))) - time.sleep(2) - if not mesh.is_connected(): - continue - - print('Neighbors found: %s'%mesh.neighbors()) - print('IPs: %s'%mesh.mesh.ipaddr()) - break - -sockets = [] -#add BR for a certain MAC address -# or in a certain condition (Wifi/BLE/cellular connection to Internet) -if int(MAC, 16) == 8: - if len(mesh.mesh.border_router()) == 0: - mesh.mesh.border_router(border_router_net, 0) - print("Set Border Router with prefix %s"%border_router_net) - - # create UDP socket for Border Router interface - br_socket = socket.socket(socket.AF_LORA, socket.SOCK_RAW) - myport = 1234 - print("Please wait until BR gets propagated to the Leader ...") - while True: - ip = mesh.ip(border_router_net) - if ip is not None: - br_socket.bind((ip, myport)) - print("Created socked for (%s, %d)"%(ip, myport)) - break - time.sleep(1) - sockets.append(br_socket) - -eid_socket = socket.socket(socket.AF_LORA, socket.SOCK_RAW) -myport = 1235 -#ip = mesh.ip()# ipv6 EID -ip = "::" # in this case, socket can be bind just on a port, like: eid_socket.bind(myport) -if ip is not None: - eid_socket.bind((ip, myport)) - #eid_socket.bind(myport) - print("Created socked for (%s, %d)"%(ip, myport)) -sockets.append(eid_socket) - -# handler responsible for receiving packets on UDP Pymesh socket -def receive_pack(sockets): - # listen for incoming packets on all sockets - while True: - is_new_data = False - for sock in sockets: - # check if data received on all sockets - rcv_data, rcv_addr = sock.recvfrom(128) - if len(rcv_data) > 0: - is_new_data = True - break # out of for sock - if not is_new_data: - break # out of while True - rcv_ip = rcv_addr[0] - rcv_port = rcv_addr[1] - print('Incoming %d bytes from %s (port %d)'%(len(rcv_data), rcv_ip, rcv_port)) - - #check if data is for the external of the Pymesh (for The Cloud) - if rcv_data[0] == BORDER_ROUTER_MAGIC_BYTE and len(rcv_data) >= struct.calcsize(BORDER_ROUTER_HEADER_FORMAT): - br_header = struct.unpack(BORDER_ROUTER_HEADER_FORMAT, rcv_data) - print("IP dest: %x:%x:%x:%x:%x:%x:%x:%x (port %d)"%( - br_header[1],br_header[2],br_header[3],br_header[4], - br_header[5],br_header[6],br_header[7],br_header[8], br_header[9])) - rcv_data = rcv_data[struct.calcsize(BORDER_ROUTER_HEADER_FORMAT):] - - print(rcv_data) - - # send some ACK - if not rcv_data.startswith("ACK"): - print("Sent ACK back") - sock.sendto('ACK', (rcv_ip, rcv_port)) - -mesh.mesh.rx_cb(receive_pack, sockets) - -print('IPs: %s'%mesh.mesh.ipaddr()) -print('BRs: %s'%mesh.mesh.border_router()) - -""" -Example of usage: -* send data to the cloud -eid_socket.sendto("01234567890123456789", ("1::2", 1235)) -* send data to the EID ip of another Node inside Pymesh -eid_socket.sendto("0123456789", ("fdde:ad00:beef:0:4623:91c8:64b2:d9ec", 1235)) -* send data to the Leader -eid_socket.sendto("0123456789", ("fdde:ad00:beef:0:0:ff:fe00:fc00", 1235)) -* send data to the RLOC of another Node inside Pymesh -eid_socket.sendto("0123456789", ("fdde:ad00:beef:0:0:ff:fe00:6800", 1235)) -""" +## Border Router using Pymesh API ``` +def new_br_message_cb(rcv_ip, rcv_port, rcv_data, dest_ip, dest_port): + ''' callback triggered when a new packet arrived for the current Border Router, + having destination an IP which is external from Mesh ''' + print('Incoming %d bytes from %s (port %d), to external IPv6 %s (port %d)' % + (len(rcv_data), rcv_ip, rcv_port, dest_ip, dest_port)) + print(rcv_data) + + # user code to be inserted, to send packet to the designated Mesh-external interface + # ... + return + +add current node as Border Router, with a priority and a message handler callback +pymesh.br_set(PymeshConfig.BR_PRIORITY_NORM, new_br_message_cb) + +remove Border Router function from current node +pymesh.br_remove() + +send data for Mesh-external, basically to the BR +ip = "1:2:3::4" +port = 5555 +pymesh.send_mess_external(ip, port, "Hello World") + +``` + +## Technical deep dive + +Internally, the Border Router mechanism is implemented with the following steps: + +* declare the BR network address prefix, like `2001:dead:beef:cafe::/64` +* this piece of information is sent to the `Leader` and the dataset will increase version (it will be updated) +* the dataset is propagated to all Pymesh nodes +* all the nodes will be assigned a random IPv6 unicast address with this network prefix (like `2001:dead:beef:cafe:1234:5678:9ABC:DEF0`) +* if a node sends data to an IPv6 which is external (it doesn't have prefix from Pymesh already existent networks, like `1:2:3::4`), this UDP datagram will be routed to the BR + * this UDP packet will have as source the random IPv6 from BR network address +* BR will receive the UDP datagrams for external with an appended header, which contains: + * MAGIC byte: `0xBB` + * IPv6 destination as bytearray (16 bytes) + * port destination as 2 bytes (1-65535 values). +* the IPv6 destination is important so BR could actually route (forward) the UDP datagram content to the right interface (Wifi/BLE/cellular). diff --git a/content/pymesh/simple-example.md b/content/pymesh/simple-example.md new file mode 100644 index 0000000..b83a3a9 --- /dev/null +++ b/content/pymesh/simple-example.md @@ -0,0 +1,146 @@ +--- +title: "Pymesh Library" +aliases: + - pymesh/simple-example +--- + +## What is Pymesh micropython library? + +Pymesh micropython library is a set of scripts included (as frozen) in the Pymesh firmware binary release (not yet released). + +[Open-source on github](https://github.com/pycom/pycom-libraries/tree/master/lib/pymesh) + +It allows users to use Pymesh in a few lines of code, as shown in the following code snippet. + +```python + +import pycom +import time + +try: + from pymesh_config import PymeshConfig +except: + from _pymesh_config import PymeshConfig + +try: + from pymesh import Pymesh +except: + from _pymesh import Pymesh + +def new_message_cb(rcv_ip, rcv_port, rcv_data): + ''' callback triggered when a new packet arrived ''' + print('Incoming %d bytes from %s (port %d):' % + (len(rcv_data), rcv_ip, rcv_port)) + print(rcv_data) + + # user code to be inserted, to send packet to the designated Mesh-external interface + for _ in range(3): + pycom.rgbled(0x888888) + time.sleep(.2) + pycom.rgbled(0) + time.sleep(.1) + return + + +pycom.heartbeat(False) + +# read config file, or set default values +pymesh_config = PymeshConfig.read_config() + +#initialize Pymesh +pymesh = Pymesh(pymesh_config, new_message_cb) + +mac = pymesh.mac() +# based on LoRa MAC address, some nodes could be forced to be +# sleep-end-devices (always Child) or to have increased Leader priority +# if mac > 10: +# pymesh.end_device(True) +# elif mac == 5: +# pymesh.leader_priority(255) + +while not pymesh.is_connected(): + print(pymesh.status_str()) + time.sleep(3) + +# send message to the Node having MAC address 5 +pymesh.send_mess(5, "Hello World") + +# def new_br_message_cb(rcv_ip, rcv_port, rcv_data, dest_ip, dest_port): +# ''' callback triggered when a new packet arrived for the current Border Router, +# having destination an IP which is external from Mesh ''' +# print('Incoming %d bytes from %s (port %d), to external IPv6 %s (port %d)' % +# (len(rcv_data), rcv_ip, rcv_port, dest_ip, dest_port)) +# print(rcv_data) + +# # user code to be inserted, to send packet to the designated Mesh-external interface +# # ... +# return + +# add current node as Border Router, with a priority and a message handler callback +# pymesh.br_set(PymeshConfig.BR_PRIORITY_NORM, new_br_message_cb) + +# remove Border Router function from current node +#pymesh.br_remove() + +# send data for Mesh-external, basically to the BR +# ip = "1:2:3::4" +# port = 5555 +# pymesh.send_mess_external(ip, port, "Hello World") + +print("done Pymesh init, forever loop, exit/stop with Ctrl+C multiple times") +# set BR with callback + +while True: + time.sleep(3) + +``` + +## Output + +An example of output is bellow. + +At any point pressing `Enter` will try to execute CLI commands, more details are presented in [Pymesh library CLI](/pymesh/lib-cli). + +``` + +rst:0x7 (TG0WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) +configsip: 0, SPIWP:0xee +clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 +mode:DIO, clock div:1 +load:0x3fff8020,len:8 +load:0x3fff8028,len:2164 +load:0x4009fa00,len:19944 +entry 0x400a05e8 +MAC ok 11 +Settings: {'ble_api': True, 'MAC': 11, 'autostart': True, 'debug': 5, 'LoRa': {'sf': 7, 'region': 5, 'freq': 863000000,'bandwidth': 2}, 'ble_name_prefix': 'PyGo ', 'Pymesh': {'key': '112233'}} +LoRa MAC: 0xb, short: 11 +OT stack: 6412 +Statistics file ok?! +============ MESH THREAD >>>>>>>>>>> +3: MAC 0xb(11), State Detached, Single True +['fdde:ad00:beef:0:0:0:0:b', 'fdde:ad00:beef:0:0:ff:fe00:c400', 'fdde:ad00:beef:0:2c1a:56c0:ebbd:d46', 'fe80:0:0:0:200:0:0:b'] +>>>>>>>>>>> DONE MESH THREAD ============ 40 + +BLE name: PyGo 11 +Role 3, Single False, IPv6: ['fdde:ad00:beef:0:0:ff:fe00:c400', 'fdde:ad00:beef:0:0:0:0:b', 'fdde:ad00:beef:0:2c1a:56c0:ebbd:d46', 'fe80:0:0:0:200:0:0:b'] +>Role 3, Single False, IPv6: ['fdde:ad00:beef:0:0:ff:fe00:c400', 'fdde:ad00:beef:0:0:0:0:b', 'fdde:ad00:beef:0:2c1a:56c0:ebbd:d46', 'fe80:0:0:0:200:0:0:b'] +Role 3, Single False, IPv6: ['fdde:ad00:beef:0:0:ff:fe00:c400', 'fdde:ad00:beef:0:0:0:0:b', 'fdde:ad00:beef:0:2c1a:56c0:ebbd:d46', 'fe80:0:0:0:200:0:0:b'] +Role 3, Single False, IPv6: ['fdde:ad00:beef:0:0:ff:fe00:c400', 'fdde:ad00:beef:0:0:0:0:b', 'fdde:ad00:beef:0:2c1a:56c0:ebbd:d46', 'fe80:0:0:0:200:0:0:b'] +============ MESH THREAD >>>>>>>>>>> +13: MAC 0xb(11), State Router, Single False +['fdde:ad00:beef:0:0:ff:fe00:c400', 'fdde:ad00:beef:0:0:0:0:b', 'fdde:ad00:beef:0:2c1a:56c0:ebbd:d46', 'fe80:0:0:0:200:0:0:b'] +Leader: mac 0x4, rloc 0xb800, net: 0x591354fb +Socket created on port 1234 +Neighbors Table: [(mac=6, role=3, rloc16=28672, rssi=-67, age=0), (mac=4, role=3, rloc16=47104, rssi=-97, age=4)] +Neighbors: Router MAC 0xB, rloc16 0xc400, coord (51.45, 5.45313), neigh_num 2, ts 14 +MAC 0x6, rloc16 0x7000, role 3, rssi -67, age 0 +MAC 0x4, rloc16 0xb800, role 3, rssi -97, age 4 + +>>>>>>>>>>> DONE MESH THREAD ============ 76 + +Send message to 5, typ 0, load Hello World +Added new message for 5: Hello World +Send message b'\x00\x00\x00\x00\x00\x00\x00\x0b09\x00\x0bHello World' +Send pack: 0x10 to IP fdde:ad00:beef:0::5 +done Pymesh init, forever loop, exit/stop with Ctrl+C multiple times +``` diff --git a/static/gitbook/assets/pymesh/pymesh_firmware_update.png b/static/gitbook/assets/pymesh/pymesh_firmware_update.png new file mode 100644 index 0000000000000000000000000000000000000000..71a02a3216a6966e8874cc833048995d77e3f602 GIT binary patch literal 119497 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�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 literal 0 HcmV?d00001