Introduction: Adding REST-based Web Services to IoT Device for IO Monitoring
This project is to make a simple RESTful Web service library for IoT Devices. The library is written with C language code and on WIZwiki-W7500ECO platform board from WIZnet. With it, users can implement a RESTful Web service on IoT devices easily. Monitoring IoT devices can be done by RESTful API based on JSON, as well.
* Frozen JSON parser and generator for C/C++ included
* APIs for HTTP POST method will be added
* The post will be update continuously
Step 1: Parts
WIZnet WIZwiki-W7500ECO Platform board
- WIZwiki-W7500ECO is a compact platform board based on W7500, which is a SOC chip that integrates an ARM Cortex-M0, 128KB Flash memory and hardwired TCP/IP core.
W7500 is the best fit to IoT devices.
A computer for using KEIL uVision5 IDE
- These library is developed and compiled with uVision5 IDE.
Step 2: Download, Build and RUN
Download the RESTful Web Server & I/O Control by REST API Project on GitHub repository
- GitHub Repository: https://github.com/hkjung/REST-web-server-WIZwiki-W7500eco-uVision5
Build and Firmware write to target board: WIZwiki-W7500ECO
- Project Build
- KEIL uVision5 project file can be found in below file path
- Projects/HTTP_Server_REST_API/W7500x_App.uvproj
- Firmware Write
- Writing firmware into WIZwiki-W7500ECO has three ways
- Using the CMSIS-DAP (Drag and Drop)
- Using the CMSIS-DAP (through Keil uVision5)
- Using the ISP (ISP, In-System Programming)
- For more details, Please refer to WIZnet wiki site; How to write the firmware into WIZwiki-W7500ECO
- Writing firmware into WIZwiki-W7500ECO has three ways
Step 3: REST API Design
REST API Document is under construction.
[:id] : pre-defined 4-IO pins, 'a', 'b', 'c', 'd'.
- 'a' : P30 pin (digital input / digital output / analog input)
- 'b' : P29 pin (digital input / digital output / analog input)
- 'c' : P28 pin (digital input / digital output / analog input)
- 'd' : P27 pin (digital input / digital output / analog input)
HTTP GET method:Get the device info and IO status / value
- http://w7500xRESTAPI.local/index
- http://w7500xRESTAPI.local/uptime
- http://w7500xRESTAPI.local/netinfo
- http://w7500xRESTAPI.local/userio
- http://w7500xRESTAPI.local/userio/:id
- http://w7500xRESTAPI.local/userio/:id/info
HTTP POST method:Enable the assigned IO
- http://w7500xRESTAPI.local/userio/:id
HTTP PUT method* (in development) : Set the IO status (digital output only) and IO configuration
- http://w7500xRESTAPI.local/userio/:id
- http://w7500xRESTAPI.local/userio/:id/info
HTTP DELETE method:Disable the assigned IO
- http://w7500xRESTAPI.local/userio/:id
Step 4: Testing: HTTP Get Method
Connect your board to your network and REST API Testing with test tool. These library has been tested on Postman Builder. For more details about Postman, please refer to Postman Chrome webstore.