Kunjal Mahajan
Published

Temperature Alert via Telegram and Buzzer

It is a project to measure temperature of indoor things or in industries using BOLT Wifi module, LM35, Buzzer and alert using Telegram.

BeginnerProtip1,282
Temperature Alert via Telegram and Buzzer

Things used in this project

Hardware components

Bolt WiFi Module
Bolt IoT Bolt WiFi Module
×1
LM35 Temperature Sensor
×1
USB-A to Micro-USB Cable
USB-A to Micro-USB Cable
×1
Buzzer
Buzzer
×1
Breadboard (generic)
Breadboard (generic)
×1
Male/Male jumpers
×4

Software apps and online services

Bolt Cloud
Bolt IoT Bolt Cloud
python 3 - Spyder
Telegram

Story

Read more

Schematics

Hardware Connections

Code

conf.py

Python
"""Configurations for telegram_alert.py"""
bolt_api_key = "XXXX"                 # This is your Bolt Cloud API Key
device_id = "XXXX"                    # This is the device ID and will be similar to BOLTXXXX where XXXX is some numbers
telegram_chat_id = "@XXXX"            # This is the channel ID of the created Telegram channel. Paste after @ symbol.
telegram_bot_id = "botXXXX"           # This is the bot ID of the created Telegram Bot. Paste after bot text.
threshold = 380                       # Threshold beyond which the alert should be sent

temperature_alert.py

Python
import requests                 # for making HTTP requests
import json                     # library for handling JSON data
import time                     # module for sleep operation

from boltiot import Bolt        # importing Bolt from boltiot module
import conf                     # config file

mybolt = Bolt(conf.bolt_api_key, conf.device_id)

def get_sensor_value_from_pin(pin):
    """Returns the sensor value. Returns -999 if request fails"""
    try:
        response = mybolt.analogRead(pin)
        data = json.loads(response)
        if data["success"] != 1:
            print("Request not successfull")
            print("This is the response->", data)
            return -999
        sensor_value = int(data["value"])
        return sensor_value
    except Exception as e:
        print("Something went wrong when returning the sensor value")
        print(e)
        return -999


def send_telegram_message(message):
    """Sends message via Telegram"""
    url = "https://api.telegram.org/" + conf.telegram_bot_id + "/sendMessage"
    data = {
        "chat_id": conf.telegram_chat_id,
        "text": message
    }
    try:
        response = requests.request(
            "GET",
            url,
            params=data
        )
        print("This is the Telegram URL")
        print(url)
        print("This is the Telegram response")
        print(response.text)
        telegram_data = json.loads(response.text)
        return telegram_data["ok"]
    except Exception as e:
        print("An error occurred in sending the alert message via Telegram")
        print(e)
        return False


while True:
    # Step 1
    sensor_value = get_sensor_value_from_pin("A0")    
    print("The current temperature value is:", (100*sensor_value/1024), "degree Celsius")
    
    # Step 2
    if sensor_value == -999:
        print("Request was unsuccessfull. Skipping.")
        time.sleep(10)
        continue
    
    # Step 3
    if sensor_value >= conf.threshold:
        print("Sensor value has exceeded threshold")
        response = mybolt.digitalWrite('0','HIGH')
        time.sleep(10)
        message = "Alert! Temperature value has exceeded " + str(conf.threshold*100/1024) + \
                  ". The current value is " + str(sensor_value*100/1024)
        telegram_status = send_telegram_message(message)
        print("This is the Telegram status:", telegram_status)
        response = mybolt.digitalWrite('0','LOW')

    # Step 4
    time.sleep(10)

prediction_graph.js

JavaScript
The code must be as it is. ( Specifically the lowercase and upper case alphabets in the code)
setChartLibrary('google-chart');
setChartTitle('Temperature Prediction using Polynomial Regression');
setChartType('predictionGraph');
setAxisName('time','temp');
setCrosshair(true);
mul(0.0977);
plotChart('time_stamp','temp');

Credits

Kunjal Mahajan
1 project • 1 follower

Comments