From 86286daa6abf5e59cafa50c13ca46ab49f39a9ec Mon Sep 17 00:00:00 2001 From: zsmithwx Date: Wed, 1 May 2024 04:48:47 -0500 Subject: [PATCH] Add temp.py --- temp.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 temp.py diff --git a/temp.py b/temp.py new file mode 100644 index 0000000..0d0a1f1 --- /dev/null +++ b/temp.py @@ -0,0 +1,61 @@ +from influxdb_client import InfluxDBClient, Point +from influxdb_client.client.write_api import SYNCHRONOUS +import requests +from datetime import datetime, timedelta +import pytz + +# Fetch data from NOAA Radar API +response = requests.get('https://api.weather.gov/radar/stations/SITE') +data = response.json() + +# Extract relevant information +radar_data = data['properties'] + +# Convert Zulu time to Central Time +zulu_time = datetime.fromisoformat(radar_data["latency"]["levelTwoLastReceivedTime"].replace("Z", "+00:00")) +zulu_time = zulu_time.replace(tzinfo=pytz.utc) +central_timezone = pytz.timezone('America/Chicago') +central_time = zulu_time.astimezone(central_timezone) + +# Calculate data age +current_time = datetime.now(tz=pytz.utc) +current_time = current_time.astimezone(central_timezone) +data_age = (current_time - central_time).total_seconds() / 60 # Convert seconds to minutes + +# Prepare data for InfluxDB +measurement = 'radar_station' +time = current_time.isoformat() + +# Create InfluxDB client +client = InfluxDBClient(url="", token="", org="") + +# Create write API +write_api = client.write_api(write_options=SYNCHRONOUS) + +# Define tags and fields +tags = {"id": radar_data["id"]} +fields = { + "name": str(radar_data["name"]), + "station_type": str(radar_data["stationType"]), + "elevation": float(radar_data["elevation"]["value"]), + "latency_current": float(radar_data["latency"]["current"]["value"]), + "latency_average": float(radar_data["latency"]["average"]["value"]), + "latency_max": float(radar_data["latency"]["max"]["value"]), + "resolution_version": str(radar_data["rda"]["properties"]["resolutionVersion"]), + "control_status": str(radar_data["rda"]["properties"]["controlStatus"]), + "shelter_temperature": float(radar_data["performance"]["properties"]["shelterTemperature"]["value"]), + "xmtr_temperature": float(radar_data["performance"]["properties"]["transmitterLeavingAirTemperature"]["value"]), + "output_power": float(radar_data["performance"]["properties"]["transmitterPeakPower"]["value"]), + "data_age_minutes": data_age, + + # Check if volume_coverage_pattern starts with 'R' or 'L', remove prefix if exists and convert to float + "vcp": float(str(radar_data["rda"]["properties"]["volumeCoveragePattern"])[1:]) if str(radar_data["rda"]["properties"]["volumeCoveragePattern"]).startswith('R') or str(radar_data["rda"]["properties"]["volumeCoveragePattern"]).startswith('L') else float(rad> + + # Add more fields as needed +} + +# Write data to InfluxDB +point = Point(measurement).time(time).tag("id", radar_data["id"]) +for field, value in fields.items(): + point.field(field, value) +write_api.write("Bucket", "Org", point) \ No newline at end of file