You’ll not get full working code in this guide but get full hints of code, resources. This guide will help to learn our regular readers in opposite direction of learning. Methodology is exactly like we did with Watson IoT platform (our GitHub repo has four sample codes). Here Are Some Tips, Resources For Writing to CouchDB/Cloudant From ESP32 Arduino. Our regular readers can recall about HTTP Post request towards IBM Watson IoT platform. In previous guide, we already written how to install CouchDB on Ubuntu cloud server. In the article on use-cases for CouchDB, we commented that with CouchDB we can omit the API development or rather middleware development part. Now look at the CouchDB documentation :
1 | https://docs.couchdb.org/en/stable/api/index.html |
Now look at our ESP32 Arduino code with DHT11 sensor.
One of the impressive features of CouchDB has is the native support for RESTful API. In fact, it is the only way to interact with the database. CouchDB acts both like a data store and an application server. Here is documentation on update handler :
---
1 | https://docs.couchdb.org/en/latest/ddocs/ddocs.html?highlight=update%20handler |
We talked about Futon on Web UI of administration :
1 | http://guide.couchdb.org/draft/tour.html |
Inside _design/app
we can create a update handler
. This inplace
handler will appends a timestamp and unique id field to our data before saving it to CouchDB. First we are showing two JavaScript for parsing. This handler will also add a creator
field :
1 2 3 4 5 6 7 8 9 | function(doc, req) { if (!doc) { var data = JSON.parse(req.body); data['_id'] = req.uuid; data.creator = req.userCtx.name; data.ts = new Date().getTime() } return [data, req.body] } |
This is for t
:
1 2 3 4 5 6 7 8 9 10 11 12 | function(t) { if ('s1' == t.did) { t.t && t.h && t.ts && 's1' == t.did ? emit(t.ts, { ts: t.ts, t: t.t, h: t.h }) : emit(t.ts, { ts: t.ts, e: t.error }) } } |
This guide gives the complete idea and resources to complete the above thing and create a HTML file with graph :
1 | http://ashishware.com/CouchDbIot.shtml |
Coming to ESP32 Arduino code part, here are two resources :
1 2 3 | http://blog.bitheap.net/2011/01/adding-data-to-couchdb-from-arduino.html https://github.com/prasmussen/SensorBox/blob/master/SensorBox.ino |
Again, look at our ESP32 Arduino code with DHT11 sensor.
The basic thing is same and the trick to send JSON is the part we did with IBM Watson IoT :
1 2 3 4 5 6 7 8 9 10 11 12 13 | String payload = "{\"d\":{\"Name\":\"" DEVICE_ID "\""; payload += ",\"temperature\":"; payload += temperature; payload += ",\"humidity\":"; payload += humidity; payload += "}}"; Serial.print("Sending payload: "); |
We hope that some of the readers will be successful to create own code. Who will not be successful, of course we will have full working code for them in future. There is another article which does not use Arduino but ESP32 with Lua :
1 | https://bsmulders.com/2017/06/serverless-iot/ |
Tagged With cloudant graph