ESP8266 Mesh User Guide

Similar documents
What is VLAN Routing?

APPLICATION NOTE. AT16268: JD Smart Cloud Based Smart Plug Getting. Started Guide ATSAMW25. Introduction. Features

Exam 1 Review Questions

AT12181: ATWINC1500 Wi-Fi Network Controller - AP Provision Mode. Introduction. Features. Atmel SmartConnect APPLICATION NOTE

Hardware Prerequisites Atmel SAM W25 Xplained Pro Evaluation Kit Atmel IO1 extension Micro-USB Cable (Micro-A / Micro-B)

Can PowerConnect Switches Be Used in IP Multicast Networks?

Symantec Event Collector for Cisco NetFlow version 3.7 Quick Reference

Internet Protocol Support Profile

Intel Retail Client Manager Audience Analytics

Mobile IP Network Layer Lesson 02 TCP/IP Suite and IP Protocol

Cisco Collaboration with Microsoft Interoperability

AN4108 Application note

RTX41xx. Wi-Fi Module

Fiber Channel Over Ethernet (FCoE)

Application Note. Receiving Analog In-Band CPID with the Dialogic 1000 Media Gateway Series

Device Management API for Windows* and Linux* Operating Systems

SyAM Software* Server Monitor Local/Central* on a Microsoft* Windows* Operating System

Intel HTML5 Development Environment. Tutorial Building an Apple ios* Application Binary

LOAD BALANCING 2X APPLICATIONSERVER XG SECURE CLIENT GATEWAYS THROUGH MICROSOFT NETWORK LOAD BALANCING

Device Management API for Windows* and Linux* Operating Systems

Dell One Identity Cloud Access Manager How to Configure vworkspace Integration

ATBTLC1000 BluSDK USER GUIDE. Bluetooth Low Energy API: Software Development. Description

APPLICATION NOTE. AVR2130: Lightweight Mesh Developer Guide. Atmel MCU Wireless. Features. Description

z/os V1R11 Communications Server system management and monitoring

Intel EP80579 Software for Security Applications on Intel QuickAssist Technology Cryptographic API Reference

Intel Ethernet Switch Load Balancing System Design Using Advanced Features in Intel Ethernet Switch Family

Application Note. Configuring Dialogic Host Media Processing Software Release 3.0 for Windows Software Licenses

Upgrading Intel AMT 5.0 drivers to Linux kernel v2.6.31

RSA Two Factor Authentication

AN3998 Application note

Getting Started with Apple Pay on the Authorize.Net Platform

Synology SSO Server. Development Guide

Intel Active Management Technology with System Defense Feature Quick Start Guide

Compatibility Matrix. VPN Authentication by BlackBerry. Version 1.7.1

Packet Tracer 3 Lab VLSM 2 Solution

RSA Two Factor Authentication. Feature Description

Internet Architecture and Philosophy

Hetero Streams Library 1.0

SDN. WHITE PAPER Intel Ethernet Switch FM6000 Series - Software Defined Networking. Recep Ozdag Intel Corporation

Log Insight Manager. Deployment Guide

Supporting ZDOs with the XBee API

OpenFlow Configuration and Management Protocol OF-CONFIG 1.0

Spring Design ScreenShare Service SDK Instructions

Answers to Sample Questions on Network Layer

2. What is the maximum value of each octet in an IP address? A. 28 B. 255 C. 256 D. None of the above

Application Note. Using a Dialogic Media Gateway Series as a PSTN Gateway with an Asterisk IP-PBX Server

Three Key Design Considerations of IP Video Surveillance Systems

Python for Series 60 Platform

Internet Protocol Version 6 (IPv6)

EView/400i Management Pack for Systems Center Operations Manager (SCOM)

CREW - FP7 - GA No Cognitive Radio Experimentation World. Project Deliverable D7.5.4 Showcase of experiment ready (Demonstrator)

Software Solutions for Multi-Display Setups

EMC CENTERA VIRTUAL ARCHIVE

Internet Packets. Forwarding Datagrams

End User Devices Security Guidance: Apple ios 8

VERISIGN OPENHYBRID CLOUD SIGNALLING API SPECIFICATION

Configuring a Load-Balancing Scheme

FortiOS Handbook WAN Optimization, Web Cache, Explicit Proxy, and WCCP for FortiOS 5.0

Avaya 2050 IP Softphone for Windows Release : Read me Document

IP Network Layer. Datagram ID FLAG Fragment Offset. IP Datagrams. IP Addresses. IP Addresses. CSCE 515: Computer Network Programming TCP/IP

Dell One Identity Cloud Access Manager How to Configure for High Availability

Management Software. Web Browser User s Guide AT-S106. For the AT-GS950/48 Gigabit Ethernet Smart Switch. Version Rev.

Intel Storage System SSR212CC Enclosure Management Software Installation Guide For Red Hat* Enterprise Linux

Port Following. Port Following. Feature Description

RackConnect User Guide

Developing Higher Density Solutions with Dialogic Host Media Processing Software

Instant Messaging Nokia N76-1

docs.rackspace.com/api

Intel Internet of Things (IoT) Developer Kit

First Workshop on Open Source and Internet Technology for Scientific Environment: with case studies from Environmental Monitoring

8.2 The Internet Protocol

Yubico YubiHSM Monitor

IMPORTANT NOTE. Dialogic Brooktrout SR140 Fax Software with T38Fax.com SIP Trunking Service. Installation and Configuration Integration Note

Tech Brief Q&A: Implementing Endpoint Security in 9.6 SP 2. Presented by Martin Gannon June 21, 2015

AllJoyn Device System Bridge

Cloud Identity Management Tool Quick Start Guide

Internal LVDS Dynamic Backlight Brightness Control

Intel NetStructure Host Media Processing Software Release 1.0 for the Windows * Operating System

Freescale MAC Security Setup

APPLICATION NOTE. AT17284: Proximetry Cloud Based Smart Plug User Guide. SMART ARM-based Microcontrollers. Introduction. Features

Transport and Network Layer

ACHILLES CERTIFICATION. SIS Module SLS 1508

VPNC Interoperability Profile

Software License Monitoring

CF & IoT Protocol Support

BlackBerry Web Desktop Manager. Version: 5.0 Service Pack: 4. User Guide

Microsoft SharePoint

Interconnection of Heterogeneous Networks. Internetworking. Service model. Addressing Address mapping Automatic host configuration

Wireless Mesh Networks under FreeBSD

Dell One Identity Cloud Access Manager How to Configure Microsoft Office 365

Integrating a Hitachi IP5000 Wireless IP Phone

Getting Started Guide

Upload files to FTP server

WiFiPerf User Guide 1.5

Accessing BlackBerry Data Services Using Wi-Fi Networks

Print Management. User's Guide

Intel Solid-State Drive Data Center Tool User Guide Version 1.1

Azure Multi-Factor Authentication. KEMP LoadMaster and Azure Multi- Factor Authentication. Technical Note

Key requirements for Interoperable IoT systems

Configuring Flexible NetFlow

Transcription:

ESP8266 Mesh User Guide Version 1.2 Copyright 2016

About This Guide This document introduces users to ESP8266 mesh network, including the following topics: Chapter Title Subject Chapter 1 Chapter 2 Overview Mesh Header Provides an overview of ESP-Mesh, including some concepts and network structure. Introduces the mesh header format and details about the fields and codes. Chapter 3 API Reference Introduces the data structures and the APIs. Chapter 4 Sample Code Provides some sample codes for mesh development. Release Notes Date Version Release notes 2015.07 V1.0 First release. 2015.09 V1.1 Chapter 3 added. 2016.01 V1.2 Chapter 2 and Chapter 4 added, Chapter 1 and Chapter 3 updated. Note: This current version is an early release to support initial product developers. The contents are subject to change without advance notice.

Table of Contents 1. Overview... 1 1.1. Concepts... 1 1.2. Network Structure... 3 1.2.1. Networking Principle... 3 1.2.2. Networking Diagram... 3 1.2.3. Network Node... 4 2. Mesh Header... 5 2.1. Mesh Header Format... 5 2.2. Mesh Option... 7 2.2.1. Structure... 7 2.2.2. Example... 8 3. API Reference... 10 3.1. Data Structure... 10 3.1.1. Mesh Header Format... 10 3.1.2. Mesh Option Header Format... 10 3.1.3. Mesh Option Format... 10 3.1.4. Mesh Option Fragmentation Format... 11 3.1.5. Mesh Callback Format... 11 3.1.6. Mesh Scan Callback Format... 11 3.1.7. Mesh Scan User Callback Format... 11 3.2. Packet APIs... 11 4. Sample Code... 12 4.1. Device... 12 4.2. Mobile or Server... 12 4.3. Getting Topology... 13 4.4. Parsing Topology Response... 14 4.5. Dev-App... 15

" 1. Overview 1. Overview The development of the Internet of Things (IoT) requires an increasing number of nodes to connect to the internet. However, only limited number (usually fewer than 32) of nodes can directly connect to the same router. There are two solutions currently available for this problem. Super router: the higher capacity router allows more nodes to directly connect to it. Mesh network: the nodes can establish a network and forward packets. ESP8266 uses mesh network as shown in Figure 1-1. As a result, a large number of nodes can connect to the internet without any improvements of the current router. Up to 5-level mesh network. Up to 100 m for a single hop. Up to 87 Wi-Fi devices. Figure 1-1. ESP-Mesh Network 1.1. Concepts IOT Espressif App ESP-Touch IOT Espressif App (hereinafter referred to as IOT App) is a mobile application developed by Espressif. It can realize the local and remote control of Wi-Fi devices, including smart lights and smart plugs. ESP-Touch is a technology developed by Espressif to connect Wi-Fi devices to the router. Smart Config Mode for ESP-Touch Users can configure Wi-Fi devices by ESP-Touch only when the devices are in Smart Config Mode. This status is called ESP-Touch status. For details of configuration, please refer to 1.2. Network Structure. Espressif 1/ 16 2016.04

" " 1. Overview Local Device As shown in Figure 1-2, if users configure a device to connect to the router via ESP-Touch but not activate it on the server-side, then the device is a local device. Device Router Mobile App Local Network Cloud Device Figure 1-2. Local Network As shown in Figure 1-3, if users configure a device to connect to the router via ESP-Touch and activate it on the server-side, then the device is a cloud device. Room Office Device Mobile App Router A Phone Router B Server Cloud Network Figure 1-3. Cloud Network There are three different statuses for a device on IOT App. Cloud status: The device is a cloud device that connects to a different router with IOT App. Espressif 2/ 16 2016.04

" 1. Overview Device Type and Status Online status: The device is a local device or cloud device; the device and IOT App connect to the same router. Offline status: The device is a cloud device that does not connect to the router. Device status Cloud status Online status Offline status Cloud device Local device 1.2. Network Structure 1.2.1. Networking Principle Mesh network supports auto-networking. When users set up a mesh network via ESP- Touch, the device automatically scans the Wi-Fi APs nearby. 1.2.2. Networking Diagram Figure 1-4 shows the mesh network diagram. Internet Online-Mesh Router Local-Mesh Dev1-1 Root node Dev2-1 Dev 2-2 Dev 2-n Dev-3-1 Dev-3-2 Dev-3-n Non-root nodes Dev-m-1 Dev-m-2 Dev-m-n Figure 1-4. Mesh Network Diagram The node that directly connects to the router is the root node and others are non-root nodes. For more information, please refer to 1.2.3 Network Node. Espressif 3/ 16 2016.04

1. Overview 1.2.3. Network Node Online-Mesh: When the router connects to the internet, you can use IOT App to control the Cloud Devices. Local-Mesh: You can only control the Local Devices through the router. A Root Node According to the location in a mesh network, a node can be: It receives and sends packets. It forwards the packets from server, mobile apps and its child nodes. Or, A Non-root Node Non-leaf node: It receives and sends packets, as well as forwards the packets from its parent node and child nodes. Leaf node: It only receives and sends packets, but does not forward packets. Espressif 4/ 16 2016.04

" 2. Mesh Header 2. Mesh Header 2.1. Mesh Header Format Figure 2-1 shows the mesh header format. 0 1 2 3 ver o flags proto len dst_addr ot_len src_addr option_list Packet Body Figure 2-1. Mesh Header Format Table 2-1 provides the definitions of the mesh header fields. Table 2-1. Mesh Header Format Field Name Length Description ver 2 bits Mesh version. o 1 bit Option flag. 5 bits bit 0 1 2 3 4 CP CR resv f FP F resv Piggyback flow permit in packet. Piggyback flow request in packet. Reserved. Espressif 5/ 16 2016.04

2. Mesh Header Field Name Length Description bit 0 1 2 3 4 5 6 7 8 bits D P2P protocol The direction of packet: proto D P2P protocol 0: downwards 1: upwards Node to Node packet. Protocol used by user data. mesh_usr_proto_type is defined as bellow. enum mesh_usr_proto_type { M_PROTO_NONE = 0, // used to deliver mesh management packet M_PROTO_HTTP, // user data in HTTP protocol format M_PROTO_JSON, // user data in JSON protocol format M_PROTO_MQTT, // user data in MQTT protocol format M_PROTO_BIN, // user data is binary stream ; len 2 Bytes The length of mesh packet in bytes (mesh header included). dst_addr src_addr ot_len option_list 6 Bytes 6 Bytes Destination address : dst_addr represents the MAC address of destination device. : dst_addr represents the bcast or mcast MAC address. : dst_addr represents the destination IP and port of Mobile or Server. Source address proto.p2p = 1: src_addr represents the MAC address of source device Bcast or mcast packet : src_addr represents the MAC address of source device proto.d = 1: src_addr represents the MAC address of source device proto.d = 0 and forward packet into mesh: src_addr represents the IP and port of Mobile or Server Represents the total length of options (including itself). The element list of options. option-1 option-2 option-n otype olen ovalue otype 1 Byte Option type. Espressif 6/ 16 2016.04

2. Mesh Header Field Name Length Description olen 1 Byte The length of current option. ovlaue User defined The value of current option. 2.2. Mesh Option 2.2.1. Structure The mesh option type is defined by the structure of mesh_option_type. enum mesh_option_type { M_O_FLOW_REQ = 0,//flow request option M_O_FLOW_RESP, //flow response option M_O_ROUTER_SPREAD, //router information spread option M_O_ROUTE_ADD, M_O_ROUTE_DEL, M_O_TOPO_REQ, M_O_TOPO_RESP, M_O_MCAST_GRP, M_O_MESH_FRAG, M_O_USR_FRAG, M_O_USR_OPTION, ; //route table update (node joins mesh) option //route table update (node exits mesh) option //topology request option //topology response option //group list of mcast //mesh management fragmentation option //user data fragmentation //user option Table 2-2. Mesh Header Type Field Name Length Description Format M_O_FLOW_REQ 2 Bytes Used for flow request. otype 0x00 olen 0x02 ovalue M_O_FLOW_RESP 6 Bytes Used to respond to flow. otype 0x01 olen 0x06 ovalue congest capacity M_O_ROUTER_SPRE AD 106 Bytes Used to spread information of router. otype 0x02 olen 0x6A ovalue Router information M_O_ROUTE_ADD 6*n+2 Bytes Used to update route table when new node joins mesh network. otype 0x03 olen length ovalue MAC address list M_O_ROUTE_DEL 6*n+2 Bytes Used to update route table when node exits mesh network. otype 0x04 olen length ovalue MAC address list Espressif 7/ 16 2016.04

" " 2. Mesh Header Field Name Length Description Format M_O_TOPO_REQ 8 Bytes Used to get topology of mesh network. otype 0x05 olen 0x06 ovalue MAC address of the device searched M_O_TOPO_RESP 6*n+2 Bytes Used to respond to topology of mesh network. otype 0x06 olen length ovalue MAC address list 2.2.2. Example Flow Request Packet Table 2-3. Flow Request Packet Field Name Value Description head.ver 00 Current version of mesh is 00. head.o 1 The option exists in this packet. head.flags.fp 0 Without piggyback flow permit. head.flags.fr 0 Without piggyback flow request. head.flags.resv 000 Reserved. head.proto.d 1 Upwards. head.proto.p2p 0 Without node to node packet. head.proto.protocol 000000 Mesh management packet. head.len 0x0014 The length of packet is 20 Bytes. head.dst_addr 18 FE 34 A5 3B AD MAC address of destination device. head.src_addr 18 FE 34 A2 C7 76 MAC address of source device. head.ot_len 0x0004 The option length is 0x0004. head.option_list[0].otype 0x00 M_FLOW_REQ. head.option_list[0].olen 0x02 The option length is 0x02. Flow Response Packet Espressif 8/ 16 2016.04

2. Mesh Header Table 2-4. Flow Response Packet Field Name Value Description head.ver 00 Current version of mesh is 00. head.o 1 The option exists in this packet. head.flags.fp 0 Without piggyback flow permit. head.flags.fr 0 Without piggyback flow request. head.flags.resv 000 Reserved. head.proto.d 0 Downwards. head.proto.p2p 0 Without node to node packet. head.proto.protocol 000000 Mesh management packet. head.len 0x0015 The length of packet is 21 Bytes. head.dst_addr 18 FE 34 A2 C7 76 MAC address of destination device. head.src_addr 18 FE 34 A5 3B AD MAC address of source device. head.ot_len 0x0008 The option length is 0x0008. head.option_list[0].otype 0x01 M_FLOW_RESP. head.option_list[0].olen 0x06 The option length is 0x06. head.option_list[0].ovalue 0x01 Option value is 0x00000001, flow capacity is 0x00000001. Espressif 9/ 16 2016.04

3. API Reference 3. API Reference 3.1. Data Structure 3.1.1. Mesh Header Format struct mesh_header_format { uint8_t ver:2; uint8_t oe: 1; uint8_t fp: 1; uint8_t fr: 1; uint8_t rsv:3; struct { uint8_t d: 1; uint8_t p2p:1; uint8_t protocol:6; proto; uint16_t len; (mesh header included) // version of mesh // option flag // piggyback flow permit in packet // piggyback flow request in packet // reserved // direction, 1:upwards, 0:downwards // node to node packet // protocol used by user data // packet total length uint8_t dst_addr[esp_mesh_addr_len]; // destination address uint8_t src_addr[esp_mesh_addr_len]; // source address struct mesh_header_option_header_type option[0]; // mesh option packed; 3.1.2. Mesh Option Header Format struct mesh_header_option_header_type { uint16_t ot_len; // option total length struct mesh_header_option_format olist[0]; // option list packed; 3.1.3. Mesh Option Format struct mesh_header_option_format { uint8_t otype; uint8_t olen; // option type // current option length

3. API Reference uint8_t ovalue[0]; packed; // option value 3.1.4. Mesh Option Fragmentation Format struct mesh_header_option_frag_format { uint16_t id; struct { uint16_t resv:1; uint16_t mf:1; uint16_t idx:14; offset; packed; // identity of fragmentation // reserved // more fragmentation // fragmentation offset 3.1.5. Mesh Callback Format typedef void (* espconn_mesh_callback)(int8_t result); 3.1.6. Mesh Scan Callback Format typedef void (* espconn_mesh_scan_callback)(void *arg, int8_t status); 3.1.7. Mesh Scan User Callback Format typedef void (* espconn_mesh_usr_callback)(void *arg); 3.2. Packet APIs Note: For the packet APIs, please refer to ESP8266 Non-OS SDK API Guide via the following link: http://www.espressif.com/en/support/download/documents#overlay=en/admin/content.

4. Sample Code 4. Sample Code 4.1. Device For details, please refer to: ESP8266_MESH_DEMO/blob/master/mesh_demo/demo/mesh_demo.c. 4.2. Mobile or Server void controller_entrance(parameter list) { /*Add your codes to check status*/ /*Add your codes to build control packet*/ uint8_t json_control_data[] = {/*Add your codes*/; uint16_t control_data_len = sizeof(json_control_data) struct mesh_header_format *mesh_header = NULL; /* src_addr should be the combination of IP and port of Mobile or Server. You can set the address to zero, then the root device will fill in the section. If you fill in the section by yourself, please make sure the value is right.*/ uint8_t src_addr[] = {0,0,0,0,0,0, dst_addr[] = {xx,xx,xx,xx,xx,xx; mesh_header = (struct mesh_header_format *)espconn_mesh_create_packet(dst_addr, src_addr, false, true, M_PROTO_JSON, control_data_len, false, 0, false, 0, false, 0, 0); if (!mesh_header) { printf( alloc resp packet fail\n ); return; if (espconn_mesh_set_usr_data(mesh_header, resp_json_packet_body, resp_data_len)) { printf( set user data fail\n );

4. Sample Code free(mesh_header); return; // sent control packet espconn_mesh_sent(esp, mesh_header, mesh_header->len); free(mesh_header); 4.3. Getting Topology void topology_entrance(parameter list) { /*Add your codes to check status*/ /*Add your codes to build getting topology packet*/ bool res; struct mesh_header_format *mesh_header = NULL; struct mesh_header_option_format *topo_option = NULL; uint8_t src_addr[] = {0,0,0,0,0,0; uint8_t dst_addr[] = {xx,xx,xx,xx,xx,xx; // MAC address of root device uint8_t dev_mac[6] = {xx,xx,xx,xx,xx,xx; // zero represents topology of all devices uint16_t ot_len = sizeof(*topo_option) + sizeof(struct mesh_header_option_header_type) + sizeof(dev_mac); mesh_header = (struct mesh_header_format *)espconn_mesh_create_packet( dst_addr, src_addr, false, true, M_PROTO_NONE, 0, true, ot_len, false, 0, false, 0, 0); if (!mesh_header) { printf( alloc resp packet fail\n ); return; topo_option = (struct mesh_header_option_format *)espconn_mesh_create_option( M_O_TOPO_REQ, dev_mac, sizeof(dev_mac));

4. Sample Code if (!topo_option) { printf( alloc topo option fail\n ); free(mesh_header); return; res = espconn_mesh_add_option(mesh_header, topo_option); free(topo_option); if (res) { printf( add topo option fail\n ); free(mesh_header); return; // send packet of getting topology espconn_mesh_sent(esp, mesh_header, mesh_header->len); free(mesh_header); 4.4. Parsing Topology Response void topology_parser_entrance(uint8_t *topo_resp, uint16_t len) { /*Add your codes to check parameter*/ uint16_t oidx = 1; struct mesh_header_format *mesh_header = NULL; struct mesh_header_option_format *topo_option = NULL; mesh_header = (struct mesh_header_format *)topo_resp; if (!mesh_header->oe) { printf( no option exist\n ); return; /* you need parse all the options one by one in the packet header */ while(espconn_mesh_get_option(mesh_header, M_O_TOPO_RESP, oidx++, &topo_option)) {

4. Sample Code uint16_t dev_count = topo_option->olen/6; process_dev_list(topo_option->ovalue, dev_count); 4.5. Dev-App For details of the example codes, please refer to: ESP8266_MESH_DEMO/blob/master/mesh_demo/include/user_config.h ESP8266_MESH_DEMO/blob/master/mesh_demo/demo/mesh_demo.c

Espressif IOT Team www.espressif.com Disclaimer and Copyright Notice Information in this document, including URL references, is subject to change without notice. THIS DOCUMENT IS PROVIDED AS IS WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY, NON-INFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE. All liability, including liability for infringement of any proprietary rights, relating to use of information in this document is disclaimed. No licenses express or implied, by estoppel or otherwise, to any intellectual property rights are granted herein. The Wi-Fi Alliance Member logo is a trademark of the Wi-Fi Alliance. The Bluetooth logo is a registered trademark of Bluetooth SIG. All trade names, trademarks and registered trademarks mentioned in this document are property of their respective owners, and are hereby acknowledged. Copyright 2016 Espressif Inc. All rights reserved.