Compare commits
No commits in common. "8b1cba3996c57dcb5913720f61abdd2dfb1cb0e3" and "035cbf3561932ec116952fc667599f9956ab5e20" have entirely different histories.
8b1cba3996
...
035cbf3561
|
|
@ -6,21 +6,6 @@ when:
|
||||||
branch: main
|
branch: main
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
build-fetcher:
|
|
||||||
image: woodpeckerci/plugin-docker-buildx
|
|
||||||
privileged: true
|
|
||||||
settings:
|
|
||||||
platforms: linux/amd64
|
|
||||||
registry: git.georgew.dev
|
|
||||||
repo: git.georgew.dev/georgew/surf-hub-fetcher
|
|
||||||
tags: latest
|
|
||||||
dockerfile: fetcher/Dockerfile
|
|
||||||
context: fetcher
|
|
||||||
username:
|
|
||||||
from_secret: FORGEJO_USER
|
|
||||||
password:
|
|
||||||
from_secret: FORGEJO_TOKEN
|
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
image: docker:28-cli
|
image: docker:28-cli
|
||||||
privileged: true
|
privileged: true
|
||||||
|
|
@ -29,13 +14,6 @@ steps:
|
||||||
- /home/george:/home/george
|
- /home/george:/home/george
|
||||||
environment:
|
environment:
|
||||||
APP_NAME: *app_name
|
APP_NAME: *app_name
|
||||||
FORGEJO_USER:
|
|
||||||
from_secret: FORGEJO_USER
|
|
||||||
FORGEJO_TOKEN:
|
|
||||||
from_secret: FORGEJO_TOKEN
|
|
||||||
commands:
|
commands:
|
||||||
- echo $FORGEJO_TOKEN | docker login git.georgew.dev -u $FORGEJO_USER --password-stdin
|
- cp -r . /home/george/$APP_NAME/
|
||||||
- mkdir -p /home/george/$APP_NAME
|
- docker compose -p $APP_NAME -f /home/george/$APP_NAME/docker-compose.yaml up -d --pull always --force-recreate
|
||||||
- cp docker-compose.yaml /home/george/$APP_NAME/
|
|
||||||
- docker compose -p $APP_NAME -f /home/george/$APP_NAME/docker-compose.yaml pull
|
|
||||||
- docker compose -p $APP_NAME -f /home/george/$APP_NAME/docker-compose.yaml up -d --force-recreate --remove-orphans
|
|
||||||
|
|
@ -25,20 +25,6 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- grafana_data:/var/lib/grafana
|
- grafana_data:/var/lib/grafana
|
||||||
|
|
||||||
fetcher:
|
|
||||||
image: git.georgew.dev/georgew/surf-hub-fetcher:latest
|
|
||||||
container_name: surf-fetcher
|
|
||||||
restart: always
|
|
||||||
networks:
|
|
||||||
- web_traffic
|
|
||||||
depends_on:
|
|
||||||
- influxdb
|
|
||||||
environment:
|
|
||||||
- INFLUX_URL=http://influxdb:8086
|
|
||||||
- INFLUX_TOKEN=${INFLUX_TOKEN}
|
|
||||||
- INFLUX_ORG=${DOCKER_INFLUXDB_INIT_ORG}
|
|
||||||
- INFLUX_BUCKET=${DOCKER_INFLUXDB_INIT_BUCKET}
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
influxdb_data:
|
influxdb_data:
|
||||||
grafana_data:
|
grafana_data:
|
||||||
|
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
FROM node:20-slim
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
COPY package*.json ./
|
|
||||||
RUN npm install --production
|
|
||||||
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
CMD ["node", "index.js"]
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
const { InfluxDB, Point } = require('@influxdata/influxdb-client');
|
|
||||||
const axios = require('axios');
|
|
||||||
|
|
||||||
const token = process.env.INFLUX_TOKEN;
|
|
||||||
const url = process.env.INFLUX_URL;
|
|
||||||
const org = process.env.DOCKER_INFLUXDB_INIT_ORG;
|
|
||||||
const bucket = process.env.DOCKER_INFLUXDB_INIT_BUCKET;
|
|
||||||
|
|
||||||
const client = new InfluxDB({ url, token });
|
|
||||||
const writeApi = client.getWriteApi(org, bucket);
|
|
||||||
|
|
||||||
async function fetchSurfData() {
|
|
||||||
try {
|
|
||||||
// Change these coordinates to your local beach!
|
|
||||||
// These are for Bondi Beach, Sydney as an example.
|
|
||||||
const lat = -33.89;
|
|
||||||
const lon = 151.27;
|
|
||||||
|
|
||||||
console.log("🌊 Fetching latest swell data...");
|
|
||||||
const response = await axios.get(`https://marine-api.open-meteo.com/v1/marine?latitude=${lat}&longitude=${lon}¤t=swell_wave_height,swell_wave_period`);
|
|
||||||
|
|
||||||
const swellHeight = response.data.current.swell_wave_height;
|
|
||||||
const swellPeriod = response.data.current.swell_wave_period;
|
|
||||||
|
|
||||||
const point = new Point('surf_conditions')
|
|
||||||
.tag('location', 'local_break')
|
|
||||||
.floatField('swell_height', swellHeight)
|
|
||||||
.floatField('swell_period', swellPeriod);
|
|
||||||
|
|
||||||
writeApi.writePoint(point);
|
|
||||||
// Important: Flush the buffer to ensure data is sent
|
|
||||||
await writeApi.flush();
|
|
||||||
|
|
||||||
console.log(`✅ Sent: ${swellHeight}m at ${swellPeriod}s`);
|
|
||||||
} catch (error) {
|
|
||||||
console.error("❌ Fetch error:", error.message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fetch every hour
|
|
||||||
setInterval(fetchSurfData, 1000 * 60 * 60);
|
|
||||||
fetchSurfData();
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
{
|
|
||||||
"name": "surf-hub-fetcher",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "Polls surf APIs and sends data to InfluxDB",
|
|
||||||
"main": "index.js",
|
|
||||||
"dependencies": {
|
|
||||||
"@influxdata/influxdb-client": "^1.33.0",
|
|
||||||
"axios": "^1.6.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue