HOW THE WORLD
GETS ITS WEATHER
Developer Evangelist @ The Weather
Channel and Weather Underground
@RaaveYadav | ryadav88 on Github
Ravi Yadav
How the world gets its weather
195,000 Personal Weather Stations
2.2 Billion forecast locations | 180 M Consumers /month
How the world gets its weather
Uptime: 99.95%
Latency ~ 25ms
Global Coverage
(US. East, US. West, EU, Asia)
AutoScale to +20Billion requests
per day
Scalability
Average 10’s of Billions requests per day
Versioned artifacts
and rollbacks
Partial deployments
Logging
Faster code-to-prod:
Less dependency b/w teams
Your favorite tech/language here
ARCHITECTURE: STORAGE POLYGLOTARCHITECTURE: STORAGE POLYGLOT
Real time data
and caching
- Historical Weather Data
- Data Migration
Gateway Data
Analytics
Archives
Images
Videos
Analytics
Informatica
Drupal
PERSONAL WEATHER STATIONPERSONAL WEATHER STATION
www.wunderground.com/weatherstation/whatispws.asp
www.wunderground.com/weatherstation/buyingguide.asp
WHAT YOU NEEDWHAT YOU NEED
1. Particle Photon
2. BME 280 MultiSensor (temperature, pressure, humidity)
3. USB to Micro cable
4. Prototyping board
5. Wires
fritzing.org
How the world gets its weather
DEVICE MODES -DEVICE MODES -
PHOTONPHOTON
Looking for Internet
Listening Mode OTA Firmware Update
BME 280
Multi Sensor
How the world gets its weather
How the world gets its weather
www.wunderground.com
How the world gets its weather
How the world gets its weather
PARTICLE WEB IDEPARTICLE WEB IDE
build.particle.io
#include "SparkFunBME280/SparkFunBME280.h"
//Global sensor object
BME280 mySensor;
float humidity = 999;
float tempF = 999;
float pascals = 999;
float inches = 999;
char SERVER[] = "rtupdate.wunderground.com";
char WEBPAGE [] = "GET /weatherstation/updateweatherstation.php?";
//Station Identification
char ID [] = "KCASANFR741"; //Your station ID here
char PASSWORD [] = "xxxxxxxx"; //your Weather Underground password here
TCPClient client;
void setup(){}
void loop(){}
void setup()
{
//***Driver settings********************************//
mySensor.settings.commInterface = I2C_MODE;
mySensor.settings.I2CAddress = 0x76;
//***Operation settings*****************************//
mySensor.settings.runMode = 3; //Normal mode
mySensor.settings.tStandby = 0;
mySensor.settings.filter = 4;
//OverSample can be: 0, skipped - 1 through 5
mySensor.settings.tempOverSample = 5;
mySensor.settings.pressOverSample = 5;
mySensor.settings.humidOverSample = 5;
Serial.begin(57600);
Serial.print("Program Startedn");
delay(10); //Make sure sensor had enough time to turn on.
//BME280 requires 2ms to start up.
mySensor.begin(); //Calling .begin() causes the settings to be loaded
}
void loop() {
tempF = mySensor.readTempF();
humidity = mySensor.readFloatHumidity();
pascals = mySensor.readFloatPressure();
inches = pascals * 0.0002953; // Calc for converting Pa to inHg (Wunderground expects inHg)
}
Serial.println("connecting...");
if (client.connect(SERVER, 80)) {
Serial.println("Connected");
client.print(WEBPAGE);
client.print("ID=");
client.print(ID);
client.print("&PASSWORD=");
client.print(PASSWORD);
client.print("&dateutc=now"); //can use 'now' instead of time if sending in real time
client.print("&tempf=");
client.print(tempF);
client.print("&humidity=");
client.print(humidity);
client.print("&baromin=");
client.print(inches);
//for sending multiple times per minute, specify frequency in seconds
client.print("&softwaretype=Particle-Photon&action=updateraw&realtime=1&rtfreq=5");
client.println();
Serial.println("Upload complete");
delay(200); // Without the delay it is unreliable
}else{
Serial.println(F("Connection failed"));
return;
}
https://github.com/ryadav88/photon-weather-demo
How the world gets its weather
www.wunderground.com/personal-weather-station/dashboard?ID=YourId
api.wunderground.com/api/APIKey/conditions/q/pws:KCASANFR741.json
Register for the API:
api.wunderground.com/api
To get data for your station:

More Related Content

PDF
Weather Underground - PWS, Data Ingestion and APIs
PDF
Data sniffing over air gaps 200524113012
PPTX
Data sniffing over Air Gap
PDF
Air quality monitor as510
PPT
Weather Stations and Weather Instruments
PDF
Wireless Open Weather (WOW)
PPT
Wireless weather station(eee499.blogspot.com)
PDF
Automatic Weather Station with Sun Tracker Energy Center
Weather Underground - PWS, Data Ingestion and APIs
Data sniffing over air gaps 200524113012
Data sniffing over Air Gap
Air quality monitor as510
Weather Stations and Weather Instruments
Wireless Open Weather (WOW)
Wireless weather station(eee499.blogspot.com)
Automatic Weather Station with Sun Tracker Energy Center

What's hot (19)

PDF
Zigbee based weather monitoring system
PDF
Intelligent Agricultural System with Weather Monitoring
PDF
Project 2 pbeiei
PPTX
Poster Presentation
DOC
Project report
PPTX
datalogger
PDF
Wireless Weather Station monitoring System
PPTX
PPTX
Monitoring 1
PPTX
Further improvements
PPTX
Rwh control system poster
PPTX
3 axis shock & vibration data logger
PDF
Smart rack sensor AKCP Inline Power Monitoring
PPTX
Research Project Presentation - Aaron Woychek
PDF
RemoteGP
DOCX
Iot gas pipe leakage detector insect robot
PPT
CWS - Professional Weather Stations
PPTX
Offshore Europe Technology Zone Presentation
PDF
[台灣人工智慧學校] Bridging AI to Precision Agriculture through IoT
Zigbee based weather monitoring system
Intelligent Agricultural System with Weather Monitoring
Project 2 pbeiei
Poster Presentation
Project report
datalogger
Wireless Weather Station monitoring System
Monitoring 1
Further improvements
Rwh control system poster
3 axis shock & vibration data logger
Smart rack sensor AKCP Inline Power Monitoring
Research Project Presentation - Aaron Woychek
RemoteGP
Iot gas pipe leakage detector insect robot
CWS - Professional Weather Stations
Offshore Europe Technology Zone Presentation
[台灣人工智慧學校] Bridging AI to Precision Agriculture through IoT
Ad

Similar to How the world gets its weather (20)

PPTX
Labs_BT_20221017.pptx
PDF
Oracle Drivers configuration for High Availability
PDF
Sierraware ARM hypervisor
PDF
VMworld 2013: vSphere Data Protection (VDP) Technical Deep Dive and Troublesh...
PDF
Rubén Santamarta - SCADA Trojans: Attacking the Grid [Rooted CON 2011]
PDF
R718WBUsermanual.pdf
PPTX
Using Compuware Strobe to Save CPU: 4 Real-life Cases from the Files of CPT G...
PDF
16 f887
PDF
Sataid auto-download
PDF
How to measure everything - a million metrics per second with minimal develop...
PDF
2010 03 papi_indiana
PDF
Analytics with Spark
PDF
PPTX
An Introduction to Microcontrollers part 2
PPTX
DPDK layer for porting IPS-IDS
PDF
Pic16F887
PDF
Using the Open Source OPC-UA Client and Server for Your IIoT Solutions | Jero...
PDF
Performance measurement and tuning
 
PDF
Web Template Mechanisms in SOC Verification - DVCon.pdf
DOCX
Lampiran 1.programdocx
Labs_BT_20221017.pptx
Oracle Drivers configuration for High Availability
Sierraware ARM hypervisor
VMworld 2013: vSphere Data Protection (VDP) Technical Deep Dive and Troublesh...
Rubén Santamarta - SCADA Trojans: Attacking the Grid [Rooted CON 2011]
R718WBUsermanual.pdf
Using Compuware Strobe to Save CPU: 4 Real-life Cases from the Files of CPT G...
16 f887
Sataid auto-download
How to measure everything - a million metrics per second with minimal develop...
2010 03 papi_indiana
Analytics with Spark
An Introduction to Microcontrollers part 2
DPDK layer for porting IPS-IDS
Pic16F887
Using the Open Source OPC-UA Client and Server for Your IIoT Solutions | Jero...
Performance measurement and tuning
 
Web Template Mechanisms in SOC Verification - DVCon.pdf
Lampiran 1.programdocx
Ad

Recently uploaded (20)

PDF
Zenith AI: Advanced Artificial Intelligence
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PPTX
Benefits of Physical activity for teenagers.pptx
PPT
What is a Computer? Input Devices /output devices
PDF
WOOl fibre morphology and structure.pdf for textiles
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
Getting Started with Data Integration: FME Form 101
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PPT
Module 1.ppt Iot fundamentals and Architecture
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PDF
A novel scalable deep ensemble learning framework for big data classification...
PDF
Unlock new opportunities with location data.pdf
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
Five Habits of High-Impact Board Members
PDF
August Patch Tuesday
PPTX
Chapter 5: Probability Theory and Statistics
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
sustainability-14-14877-v2.pddhzftheheeeee
PDF
A comparative study of natural language inference in Swahili using monolingua...
Zenith AI: Advanced Artificial Intelligence
Group 1 Presentation -Planning and Decision Making .pptx
Benefits of Physical activity for teenagers.pptx
What is a Computer? Input Devices /output devices
WOOl fibre morphology and structure.pdf for textiles
Final SEM Unit 1 for mit wpu at pune .pptx
Getting Started with Data Integration: FME Form 101
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
Module 1.ppt Iot fundamentals and Architecture
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Taming the Chaos: How to Turn Unstructured Data into Decisions
A novel scalable deep ensemble learning framework for big data classification...
Unlock new opportunities with location data.pdf
NewMind AI Weekly Chronicles – August ’25 Week III
Five Habits of High-Impact Board Members
August Patch Tuesday
Chapter 5: Probability Theory and Statistics
Univ-Connecticut-ChatGPT-Presentaion.pdf
sustainability-14-14877-v2.pddhzftheheeeee
A comparative study of natural language inference in Swahili using monolingua...

How the world gets its weather

  • 1. HOW THE WORLD GETS ITS WEATHER
  • 2. Developer Evangelist @ The Weather Channel and Weather Underground @RaaveYadav | ryadav88 on Github Ravi Yadav
  • 4. 195,000 Personal Weather Stations 2.2 Billion forecast locations | 180 M Consumers /month
  • 6. Uptime: 99.95% Latency ~ 25ms Global Coverage (US. East, US. West, EU, Asia) AutoScale to +20Billion requests per day Scalability Average 10’s of Billions requests per day Versioned artifacts and rollbacks Partial deployments Logging Faster code-to-prod: Less dependency b/w teams Your favorite tech/language here
  • 7. ARCHITECTURE: STORAGE POLYGLOTARCHITECTURE: STORAGE POLYGLOT Real time data and caching - Historical Weather Data - Data Migration Gateway Data Analytics Archives Images Videos Analytics Informatica Drupal
  • 8. PERSONAL WEATHER STATIONPERSONAL WEATHER STATION www.wunderground.com/weatherstation/whatispws.asp www.wunderground.com/weatherstation/buyingguide.asp
  • 9. WHAT YOU NEEDWHAT YOU NEED 1. Particle Photon 2. BME 280 MultiSensor (temperature, pressure, humidity) 3. USB to Micro cable 4. Prototyping board 5. Wires
  • 12. DEVICE MODES -DEVICE MODES - PHOTONPHOTON Looking for Internet Listening Mode OTA Firmware Update
  • 19. PARTICLE WEB IDEPARTICLE WEB IDE build.particle.io
  • 20. #include "SparkFunBME280/SparkFunBME280.h" //Global sensor object BME280 mySensor; float humidity = 999; float tempF = 999; float pascals = 999; float inches = 999; char SERVER[] = "rtupdate.wunderground.com"; char WEBPAGE [] = "GET /weatherstation/updateweatherstation.php?"; //Station Identification char ID [] = "KCASANFR741"; //Your station ID here char PASSWORD [] = "xxxxxxxx"; //your Weather Underground password here TCPClient client; void setup(){} void loop(){}
  • 21. void setup() { //***Driver settings********************************// mySensor.settings.commInterface = I2C_MODE; mySensor.settings.I2CAddress = 0x76; //***Operation settings*****************************// mySensor.settings.runMode = 3; //Normal mode mySensor.settings.tStandby = 0; mySensor.settings.filter = 4; //OverSample can be: 0, skipped - 1 through 5 mySensor.settings.tempOverSample = 5; mySensor.settings.pressOverSample = 5; mySensor.settings.humidOverSample = 5; Serial.begin(57600); Serial.print("Program Startedn"); delay(10); //Make sure sensor had enough time to turn on. //BME280 requires 2ms to start up. mySensor.begin(); //Calling .begin() causes the settings to be loaded }
  • 22. void loop() { tempF = mySensor.readTempF(); humidity = mySensor.readFloatHumidity(); pascals = mySensor.readFloatPressure(); inches = pascals * 0.0002953; // Calc for converting Pa to inHg (Wunderground expects inHg) } Serial.println("connecting..."); if (client.connect(SERVER, 80)) { Serial.println("Connected"); client.print(WEBPAGE); client.print("ID="); client.print(ID); client.print("&PASSWORD="); client.print(PASSWORD); client.print("&dateutc=now"); //can use 'now' instead of time if sending in real time client.print("&tempf="); client.print(tempF); client.print("&humidity="); client.print(humidity); client.print("&baromin="); client.print(inches); //for sending multiple times per minute, specify frequency in seconds client.print("&softwaretype=Particle-Photon&action=updateraw&realtime=1&rtfreq=5"); client.println(); Serial.println("Upload complete"); delay(200); // Without the delay it is unreliable }else{ Serial.println(F("Connection failed")); return; }
  • 26. api.wunderground.com/api/APIKey/conditions/q/pws:KCASANFR741.json Register for the API: api.wunderground.com/api To get data for your station: