mirror of
https://github.com/sascha-hemi/pycom-documentation.git
synced 2026-03-21 07:06:20 +01:00
103 lines
2.5 KiB
Markdown
103 lines
2.5 KiB
Markdown
---
|
|
title: "Pymesh Library Bluetooth LE RPC"
|
|
aliases:
|
|
- pymesh/simple-example
|
|
---
|
|
|
|
## Overview
|
|
|
|
The Pymesh mobile application is available [here for both iOS and Android platforms](https://github.com/pycom/pycom-libraries/tree/master/pymesh/mobile_app). It can be used to connect over BLE to a Pymesh node. It also allows users to find out network information.
|
|
|
|
## RPC protocol
|
|
|
|
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 the list of distinct MAC address that are within this mesh network, for example `[mac1, mac2, mac 3]`.`
|
|
|
|
#### get_mesh_pairs()
|
|
|
|
This returns the list of pairs that form 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 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
|
|
}
|
|
}
|
|
```
|
|
|
|
#### send_message(data)
|
|
|
|
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,
|
|
}
|
|
```
|
|
|
|
|
|
#### send_message_was_sent(mac, msg_id)
|
|
|
|
This checks if acknowledgement was received from 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 following structure:
|
|
```
|
|
{
|
|
'b': 'text',
|
|
'from': 'ble_device_id',
|
|
'ts': 123123123,
|
|
'id': '<uuid>',
|
|
}
|
|
```
|