Project in progress
ECOPlant - Plant Monitoring

ECOPlant - Plant Monitoring

A simulation of how technology is able to monitor the growth of a plant by using Internet of Things and cloud services.

  • 2,989 views
  • 1 comment
  • 21 respects

Components and supplies

Apps and online services

About this project

Overview

As some of us are enthusiastic gardener (amateur), this project helps to monitor the real time state of a plant such as the temperature, humidity, light and lastly, soil moisture level. The user can also receive a photo of the plant through the telegram bot when requested. The telegram bot can also be used to notify the user when the plant needs attention.

The user can also receive a message about the current condition of the plant when a correct nfc card is detected. The user can also use the Blynk app to check the condition of the plant and even use it to play a tune using the buzzer.

The application also has a Web UI, which allows the user to view both the historical and real time data which is being stored in the AWS DynamoDB. User can also login as an administrator in order to control the sensor settings.

The photo which the telegram bot took, will be stored in the AWS S3 which can be view in the Web UI of our application.

Code

server.pyPython
This list of codes is meant for inserting, getting and updating data to the AWS DynamoDB
from flask import Flask, render_template, jsonify, request
import datetime
from gpiozero import LED
import dynamodb
import jsonconverter as jsonc

app = Flask(__name__)

@app.route("/api/sensorData/<rows>",methods=['POST','GET'])
def apiSensorData(rows):
    data = {
        'data': jsonc.data_to_json(dynamodb.getSensorData(rows))
    }
    return jsonify(data)

@app.route("/api/tenMinData",methods=['POST','GET'])
def apiAverage():
    data = jsonc.data_to_json(dynamodb.getSensorAvgData())
    return jsonify(data)

led = LED(21)
@app.route("/api/setLedState/<on>",methods=['POST','GET'])
def apiSetLed(on):
    if str(on) == "1":
        led.on()
    else:
        led.off()
    return jsonify(True)

@app.route("/api/getLimitData",methods=['GET'])
def apiGetLimit():
    data = jsonc.data_to_json(dynamodb.getLimitData())
    return jsonify(data)

@app.route("/api/updateLimit",methods=['POST'])
def apiUpdateLimit():
    ok = dynamodb.updateLimitTable(request.get_json())
    return jsonify(ok)

@app.route("/api/getImages",methods=['GET'])
def apiGetImage():
    urls = dynamodb.getImagesUrl()
    return jsonify(urls)

@app.route("/")
def home():
    return render_template("index.html")

@app.route("/admin.html")
def admin():
    return render_template("admin.html")

@app.route("/login.html")
def login():
    return render_template("login.html")

app.run(debug=True,host="0.0.0.0")

Custom parts and enclosures

step_by_step_tutorial_lJSRfETEGC.pdf

Schematics

Fritzing Diagram
Untitled 8donej8bwx

Comments

Similar projects you might like

Windows 10 IoT Plant Monitoring System

Project tutorial by Team BME-AUT

  • 11,650 views
  • 4 comments
  • 55 respects

Plant Monitoring System using AWS IoT

Project tutorial by CJA3D

  • 31,146 views
  • 6 comments
  • 78 respects

Cardiac Monitoring System - EKG

Project showcase by Zorzonel Vlad

  • 11,017 views
  • 7 comments
  • 35 respects

Plant Monitoring Using Alexa

Project tutorial by TeamNature

  • 5,485 views
  • 1 comment
  • 17 respects

WaterPi: Houseplant Remote Watering and Monitoring System

Project tutorial by Demirhan Aydin

  • 30,531 views
  • 16 comments
  • 136 respects
Add projectSign up / Login