Skip to content

Commit f640f13

Browse files
committed
initial setup
1 parent cf89542 commit f640f13

5 files changed

+176
-0
lines changed

.gitignore

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
.vscode
2+
.DS_Store
3+
mobile/lib/config/env.dart
4+
mobile/android/app.properties
5+
mobile/lib/config/env.dart
6+
mobile/ios/Runner/env.plist
7+
mobile/android/key.properties
8+
mobile/android/app/google-services.json
9+
.DS_Store/
10+
.DS_Store
11+
.env
12+
.cache_ggshield
13+
secret
14+
.env.yaml
15+
.stage-env.yaml
16+
.prod-env.yaml
17+
.idea/*

javascript/retrieveAirQualityData.js

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import React, { useState, useEffect } from "react";
2+
3+
const AirQualityData = () => {
4+
const [data, setData] = useState([]);
5+
const [token, setToken] = useState(""); // Input field for the access token
6+
7+
const airQloudId = "your_airqloud_id"; // Replace with the AirQloud ID for City X
8+
9+
useEffect(() => {
10+
// Make the API request
11+
const fetchData = async () => {
12+
try {
13+
const response = await fetch(
14+
`https://api.airqo.net/api/v2/devices/measurements/airqlouds/${airQloudId}?token=${token}`
15+
);
16+
if (response.ok) {
17+
const result = await response.json();
18+
setData(result.data);
19+
} else {
20+
console.error("Error fetching data");
21+
}
22+
} catch (error) {
23+
console.error("Error:", error);
24+
}
25+
};
26+
27+
if (token && airQloudId) {
28+
fetchData();
29+
}
30+
}, [token, airQloudId]);
31+
32+
return (
33+
<div>
34+
<h1>City X Air Quality Data</h1>
35+
<p>Input your access token:</p>
36+
<input
37+
type="text"
38+
value={token}
39+
onChange={(e) => setToken(e.target.value)}
40+
/>
41+
<div>
42+
{data.map((measurement) => (
43+
<div key={measurement.id}>
44+
<p>Date: {measurement.date}</p>
45+
<p>PM2.5: {measurement.pm25}</p>
46+
{/* Include more data fields as needed */}
47+
</div>
48+
))}
49+
</div>
50+
</div>
51+
);
52+
};
53+
54+
export default AirQualityData;

mobile/retrieveAirQualityData.dart

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:http/http.dart' as http;
3+
import 'dart:convert';
4+
5+
class AirQualityList extends StatefulWidget {
6+
@override
7+
_AirQualityListState createState() => _AirQualityListState();
8+
}
9+
10+
class _AirQualityListState extends State<AirQualityList> {
11+
List<Map<String, dynamic>> data = [];
12+
final String token = 'your_access_token'; // Replace with the access token
13+
14+
@override
15+
void initState() {
16+
super.initState();
17+
fetchData();
18+
}
19+
20+
Future<void> fetchData() async {
21+
final String siteId = 'your_site_id'; // Replace with the Site ID for City X
22+
final String apiUrl =
23+
'https://api.airqo.net/api/v2/devices/measurements/sites/$siteId?token=$token';
24+
25+
final response = await http.get(Uri.parse(apiUrl));
26+
if (response.statusCode == 200) {
27+
final List<dynamic> jsonData = json.decode(response.body)['data'];
28+
setState(() {
29+
data = jsonData.cast<Map<String, dynamic>>();
30+
});
31+
} else {
32+
throw Exception('Failed to load data');
33+
}
34+
}
35+
36+
@override
37+
Widget build(BuildContext context) {
38+
return Scaffold(
39+
appBar: AppBar(
40+
title: Text('City X Air Quality Data'),
41+
),
42+
body: ListView.builder(
43+
itemCount: data.length,
44+
itemBuilder: (context, index) {
45+
final measurement = data[index];
46+
return ListTile(
47+
title: Text('Date: ${measurement['date']}'),
48+
subtitle: Text('PM2.5: ${measurement['pm25']}'),
49+
// Include more data fields as needed
50+
);
51+
},
52+
),
53+
);
54+
}
55+
}

php/retrieve-air-quality-data.php

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
$airqloudId = 'your_airqloud_id'; // Replace with the AirQloud ID for City X
3+
$accessToken = 'your_access_token'; // Replace with your access token
4+
5+
$apiUrl = "https://api.airqo.net/api/v2/devices/measurements/airqlouds/$airqloudId?token=$accessToken";
6+
7+
$ch = curl_init($apiUrl);
8+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
9+
10+
$response = curl_exec($ch);
11+
12+
if ($response) {
13+
$data = json_decode($response, true);
14+
if ($data && isset($data['data'])) {
15+
foreach ($data['data'] as $measurement) {
16+
echo "Date: " . $measurement['date'] . "\n";
17+
echo "PM2.5: " . $measurement['pm25'] . "\n";
18+
// Include more data fields as needed
19+
echo "\n";
20+
}
21+
} else {
22+
echo "Error: Unable to fetch data\n";
23+
}
24+
} else {
25+
echo "Error: cURL request failed\n";
26+
}
27+
28+
curl_close($ch);
29+
?>

python/retrieve_air_quality_data.py

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import requests
2+
3+
airqloud_id = 'your_airqloud_id' # Replace with the AirQloud ID for City X
4+
access_token = 'your_access_token' # Replace with your access token
5+
6+
api_url = f"https://api.airqo.net/api/v2/devices/measurements/airqlouds/{airqloud_id}?token={access_token}"
7+
8+
response = requests.get(api_url)
9+
10+
if response.status_code == 200:
11+
data = response.json()
12+
if 'data' in data:
13+
for measurement in data['data']:
14+
print(f"Date: {measurement['date']}")
15+
print(f"PM2.5: {measurement['pm25']}")
16+
# Include more data fields as needed
17+
print()
18+
else:
19+
print("Error: Unable to fetch data")
20+
else:
21+
print("Error: Request failed")

0 commit comments

Comments
 (0)