7 Commits
0.0.3 ... 0.1.3

Author SHA1 Message Date
955b528dd0 fix
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline failed
2025-12-15 17:47:58 +01:00
95cef39b1d car values 2
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline failed
2025-12-15 17:43:18 +01:00
d499d451ba car values
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2025-12-15 17:42:36 +01:00
2a4452e67f drop some obsolete files
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2025-01-24 16:29:20 +01:00
71d347632c once per hour
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2025-01-24 16:24:22 +01:00
33c5205ea6 fix schedule
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2025-01-24 14:18:21 +01:00
6a82c30db7 fix
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2025-01-24 14:02:17 +01:00
6 changed files with 76 additions and 64 deletions

View File

@@ -4,23 +4,25 @@ steps:
settings:
repo: ${FORGE_NAME}/${CI_REPO}
registry:
from_secret: container_registry
tags: latest,${CI_COMMIT_SHA},${CI_COMMIT_TAG}
from_secret: local_registry
tags: latest,${CI_COMMIT_TAG}
username:
from_secret: container_registry_username
from_secret: local_username
password:
from_secret: container_registry_password
from_secret: local_password
dockerfile: Dockerfile
when:
- event: [push, tag]
- event: tag
scan_image:
image: aquasec/trivy
commands:
- trivy image $FORGE_NAME/$CI_REPO:$CI_COMMIT_SHA --quiet --exit-code 1
- trivy image $FORGE_NAME/$CI_REPO:$CI_COMMIT_TAG --quiet --exit-code 1
when:
- event: [push, tag]
- event: tag
deploy:
image: quay.io/wollud1969/k8s-admin-helper:0.1.3
image: quay.io/wollud1969/k8s-admin-helper:0.4.1
environment:
KUBE_CONFIG_CONTENT:
from_secret: kube_config

View File

@@ -3,7 +3,7 @@ kind: CronJob
metadata:
name: pv-energy-calculator
spec:
schedule: "1 1 * * *"
schedule: "15 * * * *"
jobTemplate:
spec:
template:

View File

@@ -12,3 +12,16 @@ CREATE TABLE pv_energy_by_month (
);
CREATE TABLE car_energy_by_month (
id serial NOT NULL PRIMARY KEY,
month integer NOT NULL,
year integer NOT NULL,
created_at timestamp NOT NULL DEFAULT now(),
last_changed timestamp,
update_counter integer NOT NULL DEFAULT 0,
baseline_energy real NOT NULL,
current_energy real NOT NULL DEFAULT 0.0,
CONSTRAINT car_energy_by_month__month_year_unique UNIQUE(month, year)
);

View File

@@ -51,3 +51,55 @@ INSERT INTO pv_energy_by_month
update_counter = pv_energy_by_month.update_counter + 1,
current_energy = (SELECT e FROM last_pv_energy_of_yesterday) - pv_energy_by_month.baseline_energy;
WITH
today AS (
SELECT now() AS d
),
yesterday AS (
SELECT date_trunc('day', today.d - '1 day'::interval) AS d,
extract(month from today.d - '1 day'::interval) AS m,
extract(year from today.d - '1 day'::interval) AS y
FROM today
),
first_car_of_yesterday AS (
SELECT min(measurements.time) as t
FROM measurements,
yesterday
WHERE time >= yesterday.d AND
time < yesterday.d + '1 day'::interval AND
measurements.application = 'Car'
),
last_car_of_yesterday AS (
SELECT max(measurements.time) as t
FROM measurements,
yesterday
WHERE time >= yesterday.d AND
time < yesterday.d + '1 day'::interval AND
measurements.application = 'Car'
),
first_car_energy_of_yesterday AS (
SELECT cast(measurements.values->'TotalImportEnergy'->>'value' AS real) AS e
FROM measurements,
first_car_of_yesterday
WHERE measurements.time = first_car_of_yesterday.t AND
measurements.application = 'Car'
),
last_car_energy_of_yesterday AS (
SELECT cast(measurements.values->'TotalImportEnergy'->>'value' AS real) AS e
FROM measurements,
last_car_of_yesterday
WHERE measurements.time = last_car_of_yesterday.t AND
measurements.application = 'Car'
)
INSERT INTO car_energy_by_month
(month, year, baseline_energy)
VALUES(
(SELECT m FROM yesterday),
(SELECT y FROM yesterday),
(SELECT e FROM first_car_energy_of_yesterday)
)
ON CONFLICT ON CONSTRAINT car_energy_by_month__month_year_unique
DO UPDATE
SET last_changed = now(),
update_counter = car_energy_by_month.update_counter + 1,
current_energy = (SELECT e FROM last_car_energy_of_yesterday) - car_energy_by_month.baseline_energy;

View File

@@ -1,10 +0,0 @@
#!/bin/bash
sv() {
cat pvec.sql | sed 's/%Y%/'$1'/' | sed 's/%M%/'$2'/' | sed 's/%D%/'$3'/' | psql -d udi-hottis
}
sv 2025 01 02

View File

@@ -1,45 +0,0 @@
import psycopg
from loguru import logger
def main():
try:
conn = psycopg.connect()
logger.info("Database connection opened")
except Exception as e:
logger.error(f"Error when opening database connection {e}"(
return
try:
with conn.cursor(cursor_factory=psycopg.extras.DictCursor) as cursor:
select_stmt = psycopg.sql.SQL("""
SELECT ...
""")
cursor.execute(select_stmt, (...))
row = cursor.fetchone()
if not row:
logger.error(f"No data found")
return
value = row["bla"]
# calculation
insert_stmt = psycopg.sql.SQL("""
INSERT ...
""")
cursor.execute(insert_stmt, (...))
conn.commit()
logger.info(f"Data successfully written to database")
except Exception as e:
logger.error(f"Error when selecting or writing database {e}")
conn.rollback()
finally:
conn.close()
logger.info("Database connection closed")
if __name__ == "__main__":
main()