keei / esp8266_iot_enabler

C MQTT client library for ESP8266 Soc

Home Page:http://beta.icviet.com/mqtt-client-library-for-esp8266/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Instructables page: http://www.instructables.com/id/An-inexpensive-IoT-enabler-using-ESP8266/

ESP8266 IoT enabler - Sends temperature/humidity readings from a DHT11 sensor to a MQTT broker and a Thingspeak channel - Listens for MQTT messages and turns on or off a relay connected to ESP8266. - Checks a Thingspeak channel periodically and turns on/off a relay if there is an update.

Connections: - GPIO0 to relay - GPIO2 to data pin of DHT11

Build:

  • Configure ESP8266 build environment:

  • Update user_config.h and change MQTT host and login details as well as WiFi login details. #define MQTT_HOST "your cloudmqtt instance name" #define MQTT_PORT your cloudmqtt instance port

    #define MQTT_USER "your cloudmqtt instance username" #define MQTT_PASS "your cloudmqtt instance password"

    #define STA_SSID "your WiFi SSID" #define STA_PASS "your WiFi password"

  • Update following two global variables in user_main.c to your values: char YOUR_THINGSPEAK_API_KEY[]= "xxxxxxxxxxxxxxxxx"; char YOUR_THINGSPEAK_CHANNEL[]= "xxxxxxxxx";

  • Connect GPIO0 to ground by changing the jumper position.

  • Clean, build and flash the firmware to the ESP8266 module.

  • Remove jumper and power cycle the ESP8266 module.

  • Connect GPIO0 to relay input by inserting the jumper.

  • Thats it. You can now view the readings and control the relay.

Operation: - Connects to a free online MQTT broker (cloudmqtt.com) - Subscribes to three topics - /esp8266/temperature, /esp8266/humidity and /esp8266/relay - Starts a timer that calls a function to periodically: - Send temperature/humidity readings to the MQTT broker - Send temperature and humidity readings to the following Thingspeak Channel: http://thingspeak.com/channels/21370 - Read the last value of field1 in the Thingspeak channel that corresponds to the relay state and if there is a change in the value then send appropriate MQTT messages to turn on/off relay.

- Defines a call back routine when MQTT messages are received
	- If a message is received on the /esp8266/relay topic, it will then
	  turn on or off relay by setting GPIO0 high or low.
	- Sends relay state to field3 of Thingspeak channel.

Display: - The temperature/humidity readings is available at https://thingspeak.com/channels/21370 - The relay state is also available in the Thingspeak channel. A value of -1.0 means the relay is off and 1.0 means it is on. - These readings can also be viewed through any MQTT client connected to the broker.

Control: - The relay can be turned on/off using any MQTT client connected to the same MQTT broker by sending a message, "on" of "off" to /esp8266/relay topic.

- The relay can also be turned on/off by updating field1 of the Thingspeak
  channel using the following URLs:

  on: https://api.thingspeak.com/update?key=YF2DC4HXFSUQUIEE&field1=1.0
  off: https://api.thingspeak.com/update?key=YF2DC4HXFSUQUIEE&field1=-1.0
  
  Copy/paste the URL in a broswer.  If the response is a non zero integer, it means
  the field was successfully updated.  If a zero is received back, try the URL again.

References: This project is based mainly on the following two git repos: https://github.com/tuanpmt/esp_mqtt https://github.com/Caerbannog/esphttpclient

About

C MQTT client library for ESP8266 Soc

http://beta.icviet.com/mqtt-client-library-for-esp8266/


Languages

Language:C 90.2%Language:Makefile 7.5%Language:C++ 2.3%