This SDK is built on top of iota.c and ESP-IDF for IOTA client development on ESP32 MCU series.
Learn more about iota.c please visit IOTA C Client Documentation
This SDK provides some example for testing and learn IOTA Client application, commands are shown below:
Client API
node_info
- Get info from the connected nodeapi_msg_index
- Find messages by a given Indexapi_get_balance
- Get balance from a given addressapi_msg_children
- Get children from a given message IDapi_msg_meta
- Get metadata from a given message IDapi_address_outputs
- Get output ID list from a given addressapi_get_output
- Get the output object from a given output IDapi_tips
- Get tips from the connected nodeapi_send_msg
- Send out a data message to the Tangleapi_get_msg
- Get a message from a given message ID
Wallet
mnemonic_gen
- Generate a random mnemonic sentencemnemonic_update
- Replace wallet mnemonic.balance
- Get address balance by the index rage.address
- Get address by the index range.send
- Send tokens from the given index to the receiver address.sensor
- Send sensor data to the Tangle periodically.
System
help
- List commandsfree
- Get the size of available heap.heap
- Get heap infostack
- Get main stack infoversion
- Get esp32 and wallet versionsrestart
- system reboot
Node Events
The node event API is in charge of publishing information about events within the node software.
- Event Config :
menuconfig->IOTA Wallet->Event Config
- Command :
node_events
- Argument :
<event_select>
- Usage :
node_events <event_select>
Note :
- The paramter <event_select> should be a one byte hexadecimal value of range 0 - FF. Eg:
node_events 2F
- To stop receiving events, <event_select> should be 0 :
node_events 0
- The set bit positions of the <event_select> hexadecimal value determines the events to be subscribed. Refer the table below for events, bit positions and its config parameters.
Event | Bit Position | Menu Config |
---|---|---|
milestones/latest | 1 | * |
milestones/confirmed | 1 | * |
messages | 2 | * |
messages/referenced | 3 | * |
messages/indexation/[index] | 4 | Index |
messages/[messageId]/metadata | 5 | Message Id |
outputs/[outputId] | 6 | Output Id |
transactions/[transactionId]/included-message | 7 | Transaction Id |
addresses/[bech32_address]/outputs | 8 | BECH32 Address |
addresses/ed25519/[address]/outputs | 8 | ED25519 Address |
Position of bit to be counted from the LSB side. |
This project was tested on ESP32-DevKitC V4
and ESP32-C3-DevKitC 02
dev boards.
Please follow documentations to setup your toolchain and development framework.
Notice: This SDK is tested under esp-idf/release/v4.3
Clone esp-idf from GitHub
$ git clone --recursive https://github.com/espressif/esp-idf.git
$ cd esp-idf
$ git submodule update --init --recursive
$ ./install.sh
$ source ./export.sh
Clone the wallet source code
git clone https://github.com/iotaledger/esp32-client-sdk.git
cd esp32-client-sdk
git submodule update --init --recursive
Here we need to set the target device before configuration.
For ESP32
$ idf.py set-target esp32
For ESP32-C3
$ idf.py set-target esp32c3
Wallet configuration and building application, please change the WiFi setting in IOTA Wallet -> WiFi
By default, the wallet uses a random
mnomonic, you can set the mnomonic in (random) Mnemonic
by menuconfig.
$ idf.py menuconfig
IOTA Wallet --->
WiFi --->
SNTP --->
Event Config --->
(https://api.lb-0.h.chrysalis-devnet.iota.cafe/) IOTA Node URL
(443) port number
(random) Mnemonic
[*] English Mnemonic Only
(60) Sensor Sampling Period
[ ] Testing Applicatio
$ idf.py build
Notice: these messages are on the testnet
that might not be found after a network reset.
E (38) boot_comm: This chip is revision 2 but the application is configured for minimum revision 3. Can't run.
I'm using ESP32-C3 Rev2 but the current ESP-IDF uses Rev 3 as default, we need to change it via idf.py menuconfig
Component config ---> ESP32C3-Specific ---> Minimum Supported ESP32-C3 Revision (Rev 3) ---> Rev 2