Uploaded by aTscxyw61qupiM

IoT-hms

advertisement
instructables
IoT Plant Monitoring System (With IBM IoT Platform)
by Qixyqix
Overview
The Plant Monitoring System (PMS) is an application built with individuals who are in the working class with a
green thumb in mind.
Today, working individuals are busier than ever before; advancing their careers and managing their finances.
Working hours are ever longer, leaving these people less time to do things which they enjoy.
This creates a problem for people who have green thumbs, work extra long hours and do not have any domestic
helper at home to tend to their plants.
Thus, the PMS was created to assist such individuals in providing better care, yet ensuring optimum growth for
their plants at home while they work.
Summary of steps
The following is a summary of the steps that will be done
1.
2.
3.
4.
5.
Connecting of hardware
Setting up IBM Bluemix IoT Platform
Register for twilio
Setup raspberry pi (Plant Monitoring Device) node red
Setup bluemix node redSetup Webserver
IoT Plant Monitoring System (With IBM IoT Platform): Page 1
Step 1: Connect Hardware
Hardware Requirements
2 Raspberry Pis
1 Breadboard
1 GPIO Ribbon Cable
1 GPIO Extension Board (T-Cobbler Kit)
1 MCP3008 ADC (Analog Digital Converter)
1 DHT_11 Sensor
2 10k Ohm Resistors
1 Light Dependent Resistor
1 Soil Moisture Sensor (YL-69)
1 Water Level Sensor
26 Cables (16 Male to Male, 10 Male to Female)
Connect the parts!
Refer to the 2nd Image of this step for the fritzing diagram and connect the parts accordingly
IoT Plant Monitoring System (With IBM IoT Platform): Page 2
Step 2: Create IoT Platform Resources
1. Log in your Bluemix account and proceed to the IoT BoilerPlates Starter Page section
https://new-console.ng.bluemix.net/catalog/starters/internet-of-things-platform-starter
2. Enter your app name and host name Wait for Bluemix to setup your app and the status shows “Your
app is running” If it is still not running after 10 minutes, you may have to restart your app by clicking
the restart button located at the top right corner
3. From the side bar, click on “Connections” Click on the iotf service link from the listed connections
You will be redirected to the IOT service configuration Click on the “Launch” button to be redirected
to the iotf console
4. Take note of the link you are redirected to for example:
https://suwdek.internetofthings.ibmcloud.com/dashboard/ The 6 letters infront of
“.internetofthings.ibmcloud.com/dashboard/” is your organization ID. Take note of it.
IoT Plant Monitoring System (With IBM IoT Platform): Page 3
Step 3: Create Device Type and Device
1.
2.
3.
4.
5.
You should be in your IOT Platform console.
From the left sidebar, click on the devices icon
Click on “Device Types” from the top
Click on “Add Device Type” from the top right corner
Enter the following information:
1. Type: Device
2. Name: raspberrypi
3. Description: Raspberry Pi
6.
7.
8.
9.
Click on Next, then click on Done
Click on “Browse” from the top
Click on “Add Device”
Enter the following information:
1. Select existing device type: raspberrypi
2. DeviceID: pms1
10. Click next till you reach the summary
11. Click on done
12. You will be redirected to the Device Credentials page. Please take note of your device details. This
is important as the authentication token cannot be recovered
Step 4: Create Service Credentials for Cloudant
1.
2.
3.
4.
5.
6.
7.
Go back to your bluemix console (https://console.bluemix.net/dashboard/apps)
Click on the cloudantNoSQLDB service under the Cloud Foundry Services
On the side, click on Service Credentials
Click on the New Credential Button
Click Add
Click View Credentials in the Action column of your newly created service credentials
Take note of these credentials. You will need them later for modification of the app.py code
IoT Plant Monitoring System (With IBM IoT Platform): Page 4
Step 5: Register for Twilio
1. Register for a new twilio account at https://www.twilio.com/
2. Upon registration, you will be prompted to name a project. In my case, i named it Plant Monitoring
system.
3. From the sidebar, click on all products and services and click on programmable SMS.
4. Click on “Get Started” As you do not have a twilio number, click on “Get a number”
5. A pop up with a number will show. Click on “use this number”
6. Take note of this twilio number, you will need it later.
7. Go to the console dashboard
8. Take note of your account SID and Auth Token
Step 6: Install Required Packages on Plant Monitoring Device
1. Install Node red
sudo npm install -g --unsafe-perm node-red
2. Install paho
sudo pip install paho-mqtt
3. Install Watson IoT node for node red
sudo npm i -g node-red-contrib-ibm-watson-iot
4. Install BCM2835
1. wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.52.tar.gz
2. tar zxvf bcm2835-1.52.tar.gz
3. cd bcm2835-1.48
4. ./configure
5. make
6. sudo make check
7. sudo make install Install
5. Node DHT-Sensor
sudo npm install node-dht-sensor
6. Install Node Contrib DHT Sensor
sudo npm install --unsafe-perm -g node-red-contrib-dht-sensor
7. Restart your pi
sudo reboot now
Step 7: Setup Node Red Application for Plant Monitoring Device
Start your node red by opening the Terminal and typing
node-red start
IoT Plant Monitoring System (With IBM IoT Platform): Page 5
<p>Welcome to Node-RED<br>===================</p><p>20 Feb 07:07:34 - [info] Node-RED version: v0.16.2
20 Feb 07:07:34 - [info] Node.js version: v7.8.0
20 Feb 07:07:34 - [info] Linux 4.4.50-v7+ arm LE
20 Feb 07:07:36 - [info] Loading palette nodes
{ MODE: { MODE_0: 0, MODE_1: 1, MODE_2: 2, MODE_3: 3 },
CS: { none: 64, high: 4, low: 0 },
ORDER: { msb: false, lsb: true },
Spi: [Function: Spi] }
20 Feb 07:07:42 - [info] Settings file : /home/pi/.node-red/settings.js
20 Feb 07:07:42 - [info] User directory : /home/pi/.node-red
20 Feb 07:07:42 - [info] Flows file
: /home/pi/.node-red/start
20 Feb 07:07:42 - [info] Server now running at <a href="http://127.0.0.1:1880/"> http://127.0.0.1:1880/
</a>
20 Feb 07:07:42 - [info] Starting flows
20 Feb 07:07:43 - [info] Started flows</p>
Open your browser and connect to the node red application
Click on the hamburger icon, hover over "import" and click on "clipboard" then paste the code provided below in
<p>[{"id":"d9ac3f49.78dc1","type":"tab","label":"Flow 1"},{"id":"9b23dde8.8ae15","type":"pimcp3008","z":"d9ac3f49.78dc1","name":"MCP3008","pin":0,"dnum":0,"x":636.99
6208190918,"y":148.48046493530273,"wires":[["cc10fa6a.91d7f8"]]},{"id":"cc10fa6a.91d7f8","type":"function","z":"d9ac3f49.78dc1","name":"Store light sensor values","fun
c":"global.set(\"light\", msg.payload)\nreturn msg;","outputs":1,"noerr":0,"x":869.984447479248,"y":146.67577171325684,"wires":[[]]},{"id":"ab38a13c.d6ce7","type":"inject",
"z":"d9ac3f49.78dc1","name":"Get values","topic":"","payload":"","payloadType":"date","repeat":"3","crontab":"","once":false,"x":107.6093978881836,"y":118.00001716613
77,"wires":[["b1fa33c1.cd03"]]},{"id":"55163f38.0f1fb","type":"inject","z":"d9ac3f49.78dc1","name":"Send to bluemix","topic":"","payload":"","payloadType":"date","repeat":"
60","crontab":"","once":false,"x":128.00001525878906,"y":274.000036239624,"wires":[["22b20b42.1732f4"]]},{"id":"87b483ab.ccaff","type":"function","z":"d9ac3f49.78dc1","
name":"Format the msg","func":"light = global.get('light')\nsoil = global.get('soil')\nwater = global.get('water')\ntemperature = global.get('temperature')\nhumidity = global.get('
humidity')\nid = global.get('DeviceId')\nmsg.payload = {'d': {'ip':'169.254.134.248','data':{'lightValue':light,'soilMoisture':soil, 'temperature':temperature, 'humidity': humidity,'wat
erLevel':water,'timeTaken':new Date().toString()}}};\nreturn msg;","outputs":1,"noerr":0,"x":560.9961547851562,"y":396.6641960144043,"wires":[["62fa8f9a.ef532"]]},{"id":"62
fa8f9a.ef532","type":"json","z":"d9ac3f49.78dc1","name":"","x":736.9883003234863,"y":398.515661239624,"wires":[["204a6503.df7aca","8f8d1209.41256"]]},{"id":"de7e0a7
a.f3cc68","type":"pimcp3008","z":"d9ac3f49.78dc1","name":"ADC (Water)","pin":"1","dnum":0,"x":646.1000709533691,"y":187.6000156402588,"wires":[["f72a6071.a693e"]]
},{"id":"aaa299b.bd09168","type":"pimcp3008","z":"d9ac3f49.78dc1","name":"ADC (Soil)","pin":"2","dnum":0,"x":636.1000709533691,"y":226.6000099182129,"wires":[["394
4c728.9166f8"]]},{"id":"f72a6071.a693e","type":"function","z":"d9ac3f49.78dc1","name":"Store water sensor values","func":"global.set(\"water\", msg.payload)\nreturn msg;
","outputs":1,"noerr":0,"x":870.0000228881836,"y":184.00001525878906,"wires":[[]]},{"id":"3944c728.9166f8","type":"function","z":"d9ac3f49.78dc1","name":"Store water se
nsor values","func":"global.set(\"soil\", msg.payload)\nreturn msg;","outputs":1,"noerr":0,"x":870.0000228881836,"y":225.00000953674316,"wires":[[]]},{"id":"33acaa7e.373c
e6","type":"function","z":"d9ac3f49.78dc1","name":"Store Temperature Value","func":"global.set(\"temperature\", parseFloat(msg.payload))\nreturn msg;","outputs":1,"noerr
":0,"x":868.1001281738281,"y":270.60001373291016,"wires":[[]]},{"id":"9d8a6040.48843","type":"rpi-dht22","z":"d9ac3f49.78dc1","name":"","topic":"DHT11","dht":"11","pint
ype":"0","pin":"19","x":626.1000900268555,"y":282.6000118255615,"wires":[["33acaa7e.373ce6","405fe354.61d30c"]]},{"id":"405fe354.61d30c","type":"function","z":"d9ac3f
49.78dc1","name":"Store Humidity Value","func":"global.set(\"humidity\", parseFloat(msg.humidity))\nreturn msg;","outputs":1,"noerr":0,"x":858.1000747680664,"y":315.80
00373840332,"wires":[[]]},{"id":"204a6503.df7aca","type":"wiotp out","z":"d9ac3f49.78dc1","authType":"d","qs":"false","qsDeviceId":"","deviceKey":"","deviceType":"","devi
ceId":"","event":"data","format":"json","qos":"2","name":"","x":897.1001224517822,"y":414.00006198883057,"wires":[]},{"id":"8f8d1209.41256","type":"debug","z":"d9ac3f49
.78dc1","name":"","active":true,"console":"false","complete":"payload","x":919.1001224517822,"y":379.20001125335693,"wires":[]},{"id":"f7f3df6d.8a3eb","type":"wiotp in","
z":"d9ac3f49.78dc1","authType":"d","deviceKey":"","deviceType":"","deviceId":"","command":"RecordValues","commandType":"g","qos":"2","name":"","x":180.100013732
91016,"y":489.60006284713745,"wires":[["c6b07b74.194948","31ba5ffa.4299b"]]},{"id":"89b9f230.889f8","type":"switch","z":"d9ac3f49.78dc1","name":"","property":"payload
","propertyType":"msg","rules":[{"t":"eq","v":"true","vt":"str"}],"checkall":"true","outputs":1,"x":457.10001373291016,"y":174.8000659942627,"wires":[["9b23dde8.8ae15","de
7e0a7a.f3cc68","aaa299b.bd09168","9d8a6040.48843"]]},{"id":"c6b07b74.194948","type":"function","z":"d9ac3f49.78dc1","name":"Set recording","func":"global.set(\"Recor
dValues\",msg.payload)\nreturn msg;","outputs":1,"noerr":0,"x":449.1000108718872,"y":486.8000144958496,"wires":[[]]},{"id":"b1fa33c1.cd03","type":"function","z":"d9ac3f
49.78dc1","name":"Get record values setting","func":"msg.payload = global.get(\"RecordValues\");\nreturn msg;","outputs":1,"noerr":0,"x":269.1000061035156,"y":177.800
0659942627,"wires":[["89b9f230.889f8"]]},{"id":"f75c8052.b73d8","type":"inject","z":"d9ac3f49.78dc1","name":"","topic":"Set default on start","payload":"","payloadType":"d
ate","repeat":"","crontab":"","once":true,"x":107.10007858276367,"y":72.60006904602051,"wires":[["cd5b2dd8.31093"]]},{"id":"cd5b2dd8.31093","type":"function","z":"d9ac3
f49.78dc1","name":"Set recording to true","func":"global.set(\"RecordValues\",\"true\");\nglobal.set(\"DeviceId\",\"pms1\");\nreturn msg;","outputs":1,"noerr":0,"x":393.10000
99182129,"y":69.8000020980835,"wires":[[]]},{"id":"22b20b42.1732f4","type":"function","z":"d9ac3f49.78dc1","name":"Get record values setting","func":"msg.payload = glo
bal.get(\"RecordValues\");\nreturn msg;","outputs":1,"noerr":0,"x":288.10003662109375,"y":340.8000602722168,"wires":[["a5c1ec24.46f3c"]]},{"id":"a5c1ec24.46f3c","type":
"switch","z":"d9ac3f49.78dc1","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"true","vt":"str"}],"checkall":"true","outputs":1,"x":468.1000595092
7734,"y":339.80003452301025,"wires":[["87b483ab.ccaff"]]},{"id":"31ba5ffa.4299b","type":"debug","z":"d9ac3f49.78dc1","name":"","active":true,"console":"false","complete
":"payload","x":440.10009002685547,"y":532.2000160217285,"wires":[]}]</p>
Make sure to change the "data" and "RecordValues" IoT watson nodes such that it can connect to your
application.
IoT Plant Monitoring System (With IBM IoT Platform): Page 6
IoT Plant Monitoring System (With IBM IoT Platform): Page 7
Step 8: Setup Node Red Application for Server
1. Log into your bluemix account and go to the dashboard
(https://console.bluemix.net/dashboard/apps)
2. Click on the link to your application which is found under the "Route" Column of the list of your
Cloud Foundry Apps
3. You will be redirected to another page, click on "go to your node red editor"
Similar to the previous step, click on the hamburger icon, hover over "import" and click on "clipboard" then paste
the code provided below in
<p>[{"id":"5ef69739.4622e8","type":"tab","label":"Flow 4","disabled":false,"info":""},{"id":"ff6a8be6.47bb08","type":"ibmiot in","z":"5ef69739.4622e8","authentication":"bound
Service","apiKey":"","inputType":"evt","logicalInterfaceId":"","ruleId":"","deviceId":"","applicationId":"","deviceType":"","eventType":"+","commandType":"","format":"json","
name":"My RaspberryPi Gateway","service":"registered","allDevices":true,"allApplications":"","allDeviceTypes":true,"allEvents":true,"allCommands":"","allFormats":"","qos
":0,"x":150,"y":60,"wires":[["fd7826e.ba07ed8"]]},{"id":"fd7826e.ba07ed8","type":"function","z":"5ef69739.4622e8","name":"Store Pi Payload","func":"var value=msg.payloa
d\nmsg.Value=value\nreturn msg;","outputs":1,"noerr":0,"x":150,"y":160,"wires":[["36d60c30.cf6bf4"]]},{"id":"36d60c30.cf6bf4","type":"cloudant in","z":"5ef69739.4622e8","
name":"","cloudant":"","database":"sensor","service":"sp-1530218-cloudantNoSQLDB","search":"_all_","design":"","index":"","x":350,"y":160,"wires":[["5ac01466.11499c"]]}
,{"id":"5ac01466.11499c","type":"function","z":"5ef69739.4622e8","name":"Check if IP Exist","func":"msg.exist=false;\nif(msg.payload.length!=0){\n
for(var i=0;i<msg.pa
yload.length;i++){\n ="" if(msg.payload[i].pi.ip="=msg.deviceId){\n " msg.exist="true;\n " break;\n ="" }\n ="" }\n="" \n}\nreturn="" msg;","outputs":1,"noerr":0,"x":100,"y":2
80,"wires":[["423e0c3f.a29a14"]]},{"id":"423e0c3f.a29a14","type":"switch","z":"5ef69739.4622e8","name":"","property":"exist","propertytype":"msg","rules":[{"t":"false"},{"t":"
true"}],"checkall":"true","repair":false,"outputs":2,"x":290,"y":280,"wires":[["d8ac7a14.abdca8"],["f1aa9184.9aa62"]]},{"id":"d8ac7a14.abdca8","type":"function","z":"5ef6973
9.4622e8","name":"create="" document","func":"msg.payload="{'Pi':{'ip':msg.deviceId,'description':'','SendNotiMsg':false,'RecordValues':true,'Data':[msg.Value.d.data]}}\nret
urn" msg;","outputs":1,"noerr":0,"x":510,"y":220,"wires":[["8970318.faf35d"]]},{"id":"8970318.faf35d","type":"cloudant="" out","z":"5ef69739.4622e8","name":"","cloudant":"",
"database":"sensor","service":"sp-1530218-cloudantnosqldb","payonly":true,"operation":"insert","x":710,"y":220,"wires":[]},{"id":"f1aa9184.9aa62","type":"function","z":"5ef6
9739.4622e8","name":"update="" document","func":"var="" doc="" ;\nfor(var="" i="0;i<msg.payload.length;i++){\n " msg.payload[i].pi.data.push(msg.value.d.data)\n ="" }\n
}\nmsg.payload="doc\nreturn" msg;","outputs":1,"noerr":0,"x":490,"y":280,"wires":[["c6d00c4b.1133f","bd6f8b88.6d8f58"]]},{"id":"c6d00c4b.1133f","type":"cloudant="" out","
z":"5ef69739.4622e8","name":"","cloudant":"","database":"sensor","service":"sp-1530218-cloudantnosqldb","payonly":true,"operation":"insert","x":730,"y":280,"wires":[]},{"id
":"ab7a1a2c.a693e8","type":"inject","z":"5ef69739.4622e8","name":"check="" db","topic":"","payload":"","payloadtype":"date","repeat":"5","crontab":"","once":false,"oncede
lay":0.1,"x":90,"y":497,"wires":[["fa28a205.3b18e"]]},{"id":"fa28a205.3b18e","type":"cloudant="" in","z":"5ef69739.4622e8","name":"","cloudant":"","database":"sensor","ser
vice":"sp-1530218-cloudantnosqldb","search":"_all_","design":"","index":"","x":250,"y":497,"wires":[["ab4b353f.73e5c8","350cf9f3.3ac216"]]},{"id":"ab4b353f.73e5c8","type":
"function","z":"5ef69739.4622e8","name":"get="" activated="" pi","func":"var="" activatedids="[];\nfor(var" if(msg.payload[i].pi.recordvalues){\n ="" activatedids.push({'payl
oad':msg.payload[i].pi.ip});\n ="" }\n}\nreturn="" [activatedids];","outputs":1,"noerr":0,"x":440,"y":497,"wires":[["6436cfde.857a9"]]},{"id":"a7fc5617.180d58","type":"twilio=""
out","z":"5ef69739.4622e8","service":"_ext_","twilio":"","from":"","number":"","name":"","x":930,"y":440,"wires":[]},{"id":"bd6f8b88.6d8f58","type":"function","z":"5ef69739.4
622e8","name":"check="" if="" notification="" option="" is="" on","func":"var="" sendmsg="false;\nif(msg.payload.Pi.SendNotiMsg==true){\n " if(msg.value.d.data.lightvalu
e="">400 || msg.Value.d.data.soilMoisture>600||msg.Value.d.data.temperature>28 || msg.Value.d.data.temperature<25 || msg.Value.d.data.waterLevel>300){\n
sg=true\n
sendM
}\n}\nmsg.payload=sendMsg\nreturn msg;","outputs":1,"noerr":0,"x":600,"y":360,"wires":[["cca33d71.c2a21","4af3f470.59702c"]]},{"id":"cca33d71.c2a21","type
":"switch","z":"5ef69739.4622e8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"true"}],"checkall":"true","repair":false,"outputs":1,"x":850,"y":380,"wires
":[["a0c1e4bf.fa39d8"]]},{"id":"4af3f470.59702c","type":"debug","z":"5ef69739.4622e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"p
ayload","x":870,"y":320,"wires":[]},{"id":"a0c1e4bf.fa39d8","type":"function","z":"5ef69739.4622e8","name":"Set Msg Payload","func":"msg.payload=\"Your current plant en
virontment is not Condusive.\"\n
+\"\\n This is the current environment details\"\n
midity: \"+msg.Value.d.data.humidity\n
+\"\\n Temperature: \"+msg.Value.d.data.temperature\n
+\"\\n Light Value: \"+msg.Value.d.data.lightValue\n
+\"\\n Hu
+\"\\n Soil Moisture: \"+msg.Value.d.data.soilMoisture\n
+\"\\n Water Level: \"+msg.Value.d.data.waterLevel\nreturn msg;","outputs":1,"noerr":0,"x":730,"y":440,"wires":[["a7fc5617.180d58"]]},{"id":"6436cfde.857a9","type":"functi
on","z":"5ef69739.4622e8","name":"Set Payload","func":"msg.deviceId = msg.payload;\nmsg.payload = true;\nreturn msg;","outputs":1,"noerr":0,"x":630,"y":497,"wires":[["
37eba0a0.59ea4","7a069f4a.6a542"]]},{"id":"37eba0a0.59ea4","type":"ibmiot out","z":"5ef69739.4622e8","authentication":"boundService","apiKey":"","outputType":"cmd","d
eviceId":"pms1","deviceType":"raspberrypi","eventCommandType":"RecordValues","format":"boolean","data":"true","qos":"2","name":"IBM IoT","service":"registered","x":8
20,"y":497,"wires":[]},{"id":"7a069f4a.6a542","type":"debug","z":"5ef69739.4622e8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"fals
e","x":830,"y":557,"wires":[]},{"id":"350cf9f3.3ac216","type":"function","z":"5ef69739.4622e8","name":"Get Deactivated Pi","func":"var deactivatedIds = [];\nfor(var i=0;i<m
sg.payload.length;i++){\n ="" if(!msg.payload[i].pi.recordvalues){\n ="" deactivatedids.push({'payload':msg.payload[i].pi.ip});\n ="" }\n}\nreturn="" [deactivatedids];","output
s":1,"noerr":0,"x":450,"y":557,"wires":[["c88ac813.15e468"]]},{"id":"c88ac813.15e468","type":"function","z":"5ef69739.4622e8","name":"set="" payload","func":"msg.devicei
d="msg.payload;\nmsg.payload" =="" false;\n\nreturn="" msg;","outputs":1,"noerr":0,"x":630,"y":557,"wires":[["2335fad3.ebf726"]]},{"id":"2335fad3.ebf726","type":"ibmiot="
" out","z":"5ef69739.4622e8","authentication":"boundservice","apikey":"","outputtype":"cmd","deviceid":"pms1","devicetype":"raspberrypi","eventcommandtype":"recordval
ues","format":"boolean","data":"false","qos":"2","name":"ibm="" iot","service":"registered","x":820,"y":617,"wires":[]}]<="" p=""></msg.payload.length;i++){\n ></msg.paylo
ad.length;i++){\n ></p>
Make sure to change the twilio node so that your twilio credentials and twilio number is configured in the node
IoT Plant Monitoring System (With IBM IoT Platform): Page 8
Step 9: Setup Pi Web Server
IN YOUR SECOND RASPBERRY PI...
Install required packages
Open the terminal and type in the following commands:
sudo pip install gpiozero
sudo pip install flask
sudo pip install gevent
sudo pip install cloudant
File Structure
Refer to the image of this step for the file structure
Download and add additional static content
In order to ensure that our web applications looks and works as described, we will need to download and add
some additional static content for it to work.
Bootstrap v3.3.7
https://github.com/twbs/bootstrap/releases/download/v3.3.7/bootstrap-3.3.7-dist.zip
FontAwesome v5.0.1
https://use.fontawesome.com/releases/v5.0.1/fontawesome-free-5.0.1.zip
jQuery v3.1.0
https://blog.jquery.com/2016/07/07/jquery-3-1-0-released-no-more-silent-errors/
Morrisjs v0.5.0
https://github.com/morrisjs/morris.js/archive/0.5.0.zip
Raphael v2.2.0
https://api.github.com/repos/DmitryBaranovskiy/raphael/zipball/v2.2.0
Bootstrap
1. Open downloaded zip file (bootstrap-3.3.7-dist.zip)
IoT Plant Monitoring System (With IBM IoT Platform): Page 9
2. Open the bootstrap-3.3.7-dist folder
3. Extract all contents to Application/static/bootstrap
FontAwesome
1.
2.
3.
4.
Open downloaded zip file (fontawesome-free-5.0.1.zip)
Open the fontawesome-free-5.0.2 folder
Open the web-fonts-with-css folder
Extract all contents to Application/static/font-awesome
jQuery
1. Download jquery-3.1.0.js and jquery-3.1.0.min.js
2. Put both javascript files in Application/static/jquery
Morrisjs
1. Open the downloaded zip file (morris.js-0.5.0.zip)
2. Open the morris.js-0.5.0 folder
3. Extract all contents to Application/static/morrisjs
Raphael
1. Open the downloaded zip file (raphael-2.2.0.zip)
2. Open the raphael-2.2.0 folder
3. Extract all contents to Application/static/raphael
Picture of Setup Pi Web Server
Step 10: Add Code for Files in Web Server
Download the following files and add them to their respective directories within pi web server
Remember to change the service credentials in the app.py fileto your cloudant service credentials
NOTE: Due to an issue with uploading the index.html file, I have uploaded it as a .txt file. Please rename it to index.html after
downloading it
http://www.instructables.com/ORIG/FB0/F20H/JDUKFI2C/FB0F20HJDUKFI2C.py
…
http://www.instructables.com/ORIG/F77/CAYJ/JDUKFI3A/F77CAYJJDUKFI3A.css
…
http://www.instructables.com/ORIG/F40/L1TX/JDUKFIGO/F40L1TXJDUKFIGO.txt
…
IoT Plant Monitoring System (With IBM IoT Platform): Page 10
Download
Download
Download
Step 11: Start It!
In your web server pi, run the following commands:
cd Application
sudo python app.py
Nice system. Maybe with something like this, I could actually keep plants alive.
IoT Plant Monitoring System (With IBM IoT Platform): Page 11
Download