Pannag
Published

Weather Monitoring with Bolt and Arduino

Making weather updates more convenient and interactive with the Bolt IoT platform.

IntermediateFull instructions provided1 hour1,634
Weather Monitoring with Bolt and Arduino

Things used in this project

Story

Read more

Code

Python code

Python
Fetches API info in json format and configures Bolt to process.
import requests
from boltiot import Bolt
import time
import conf
import json
inputval=raw_input("Please Enter City name: ")
url='https://api.openweathermap.org/data/2.5/weather?q='+inputval+'&appid=d6b235132831e446bcd3df18f84b4724'
json_data=requests.get(url).json()
weather = json_data['weather'][0]['id']
mybolt=Bolt(conf.API_KEY,conf.DEVICE_ID)

while True:
      response1=mybolt.isOnline()
      c=json.loads(response1)
      cc=c['success']
      #print(weather)
      if cc!=1:
         print ("Error in retrieving information")
         break
      if weather==200:
         mybolt.digitalWrite(1,'LOW')
         mybolt.digitalWrite(2,'LOW')
         mybolt.digitalWrite(3,'LOW')
         mybolt.digitalWrite(4,'HIGH')
      if weather==202:
         mybolt.digitalWrite(1,'LOW')
         mybolt.digitalWrite(2,'LOW')
         mybolt.digitalWrite(3,'HIGH')
         mybolt.digitalWrite(4,'HIGH')
      if weather==500 or weather==501 or weather==502 or weather==503 or weather==504 or weather==511 or weather==520 or weather==521 or weather==522 or weather==523:
         mybolt.digitalWrite(1,'LOW')
         mybolt.digitalWrite(2,'HIGH')
         mybolt.digitalWrite(3,'HIGH')
         mybolt.digitalWrite(4,'HIGH')
      if weather==801 or weather==802 or weather==804:
         mybolt.digitalWrite(1,'HIGH')
         mybolt.digitalWrite(2,'HIGH')
         mybolt.digitalWrite(3,'HIGH')
         mybolt.digitalWrite(4,'HIGH')
      if weather==800:
         mybolt.digitalWrite(1,'LOW')
         mybolt.digitalWrite(2,'LOW')
         mybolt.digitalWrite(3,'LOW')
         mybolt.digitalWrite(4,'LOW')
      if weather==300 or weather==301 or weather==302 or weather==310 or weather==311 or weather==312 or weather==313 or weather==314 or weather==321:
         mybolt.digitalWrite(1,'LOW')
         mybolt.digitalWrite(2,'HIGH')
         mybolt.digitalWrite(3,'LOW')
         mybolt.digitalWrite(4,'LOW')   
      if weather==803:
         mybolt.digitalWrite(1,'HIGH')
         mybolt.digitalWrite(2,'HIGH')
         mybolt.digitalWrite(3,'LOW')
         mybolt.digitalWrite(4,'LOW')
      if weather==600 or weather==601 or weather==602 or weather==611 or weather==612 or weather==615 or weather==616 or weather==620 or weather==621 or weather==622:
         mybolt.digitalWrite(1,'LOW')
         mybolt.digitalWrite(2,'LOW')
         mybolt.digitalWrite(3,'HIGH')
         mybolt.digitalWrite(4,'LOW')
      if weather==701 or weather==711 or weather==721 or weather==731 or weather==740 or weather==751 or weather==761 or weather==762 or weather==771 or weather==781:
         mybolt.digitalWrite(1,'HIGH')
         mybolt.digitalWrite(2,'LOW')
         mybolt.digitalWrite(3,'LOW')
         mybolt.digitalWrite(4,'LOW')
      if weather==201 or weather==210 or weather==211 or weather==212 or weather==221 or weather==230 or weather==231 or weather==2323:
         mybolt.digitalWrite(1,'HIGH')
         mybolt.digitalWrite(2,'HIGH')
         mybolt.digitalWrite(3,'HIGH')
         mybolt.digitalWrite(4,'LOW')
      time.sleep(600)

Arduino Code

Arduino
Arduino Process the signals received from Bolt.
void setup() {
  pinMode(10, OUTPUT);
  pinMode(2,INPUT);
  pinMode(4,INPUT);
  pinMode(7,INPUT);
  pinMode(8,INPUT);
  pinMode(3,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(13,OUTPUT);
  pinMode(11,OUTPUT);
}
void pwm(int PIN){
  int i=0;
  for(i=0;i<=50;i++){
  analogWrite(PIN,i);
  delay(30);
  }
}
void flashhard(int PIN){
  for(int j=0;j<=2;j++){
  digitalWrite(PIN,HIGH);
  delay(50);
  digitalWrite(PIN,LOW);
  delay(50);
  }
}
void psmsoft(int PIN){
  for(int i=2;i<=50;i++){
  analogWrite(PIN,i);
  delay(30);
}
}
char msg;
void loop() {
  char a,b,c,d;
  a=digitalRead(2);
  b=digitalRead(4);
  c=digitalRead(7);
  d=digitalRead(8);
  delay(2);
  if (a==0 && b==0 && c==0 && d==0)
  msg=1;
  else if (a==1 && b==0 && c==0 && d==0)
  msg=2;
  else if (a==1 && b==1 && c==0 && d==0)
  msg=3;
  else if (a==1 && b==1 && c==1 && d==0)
  msg=4;
  else if (a==0 && b==0 && c==0 && d==1)
  msg=5;
  else if (a==0 && b==0 && c==1 && d==1)
  msg=6;
  else if (a==0 && b==1 && c==1 && d==1)
  msg=7;
  else if (a==1 && b==1 && c==1 && d==1)
  msg=8;
  else if (a==0 && b==0 && c==1 && d==0)
  msg=9;
  else if(a==0 && b==1 && c==0 && d==0)
  msg=10;
  switch(msg){
  case 1:
   digitalWrite(3,LOW);
   digitalWrite(6,LOW);
   digitalWrite(11,LOW);
   digitalWrite(5,LOW);
   digitalWrite(10,HIGH);
   
  break;
  case 2:
  digitalWrite(10,LOW);
  digitalWrite(3,LOW);
  digitalWrite(6,LOW);
  digitalWrite(11,LOW);
  flashhard(5);
  break;
  case 3:
  digitalWrite(10,LOW);
  digitalWrite(5,LOW);
  digitalWrite(11,LOW);
  psmsoft(6);
  pwm(3);
  break;
  case 4:
  digitalWrite(10,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  digitalWrite(11,LOW);
  flashhard(3);
  case 5:
  digitalWrite(10,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  flashhard(3);
  pwm(11);
  break;
  case 6:
  digitalWrite(10,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  psmsoft(11);
  flashhard(3);
  break;
  case 7:
  digitalWrite(10,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  digitalWrite(3,LOW);
  pwm(11);
  break;
  case 8:
  digitalWrite(10,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  digitalWrite(11,LOW);
  psmsoft(3);
  break;
  case 9:
  digitalWrite(10,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  digitalWrite(11,LOW);
  pwm(3);
  break;
  case 10:
  digitalWrite(10,LOW);
  digitalWrite(5,LOW);
  digitalWrite(6,LOW);
  digitalWrite(3,LOW);
  digitalWrite(11,HIGH);
  delay(1000);
  digitalWrite(11,LOW);
  delay(1000);
  break;
  case 11:
  digitalWrite(3,HIGH);
  delay(1000);
  digitalWrite(3,LOW);
  delay(1000);
  break;
  }
  }

Git Link Weather monitor with Bolt and Arduino

Codes

Credits

Pannag
1 project • 1 follower

Comments