The Pymesh mobile application is available here for both iOS and Android platforms. It can be used to connect over BLE to a Pymesh node. It also allows users to find out network information.
In the class RPCHandler
methods can be added to expand RPC set.
The internal RPC are calling methods from file mesh_interface.py
.
This returns True
if Node is connected to a Pymesh.
This returns the IP RLOC16 in a string.
This sets the location coordinates.
This returns the list of distinct MAC address that are within this mesh network, for example [mac1, mac2, mac 3]
.`
This returns the list of pairs that form a mesh connection, as shown bellow:
[
('mac1', 'mac2', rssi),
('mac1', 'mac3', rssi),
#...
]
This returns the node data for a specified MAC address, or returns own data if the mac_id
is not specified. The node data is given as a 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': '<UUID>' # 16byte
'n': '', # name, max. 16 chars
}
}
This sends a message to another node. It return True if there is a buffer to store it (to be sent onwards).
data
is a dictionary with the following structure:
{
'to': 0x5,
'b': 'text',
'id': 12345,
'ts': 123123123,
}
This checks if acknowledgement was received from the specified mac
and msg_id
. It returns True
if message was delivered.
This returns the received messages, in a dictionary with the following structure:
{
'b': 'text',
'from': 'ble_device_id',
'ts': 123123123,
'id': '<uuid>',
}