Compare commits

...

5 Commits
0.7.0 ... 0.8.2

Author SHA1 Message Date
b5a10f3548 rollback to old database
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2026-01-31 14:10:41 +01:00
77ac8fecb2 fix ci script
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2026-01-31 11:54:34 +01:00
093805a249 encrypt script
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/tag/woodpecker Pipeline failed
2026-01-31 11:11:21 +01:00
cab9ed705e order by year
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/tag/woodpecker Pipeline was successful
2025-12-15 18:19:38 +01:00
2faa19bc54 stats 2
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2025-12-15 18:09:13 +01:00
4 changed files with 36 additions and 59 deletions

View File

@@ -14,41 +14,6 @@ steps:
when: when:
- event: tag - event: tag
scan:
image: quay.io/wollud1969/woodpecker-helper:0.5.1
environment:
TRIVY_TOKEN:
from_secret: trivy_token
TRIVY_URL:
from_secret: trivy_url
DTRACK_API_KEY:
from_secret: dtrack_api_key
DTRACK_API_URL:
from_secret: dtrack_api_url
commands:
- HOME=/home/`id -nu`
- TAG="${CI_COMMIT_TAG}"
- |
trivy image \
--server $TRIVY_URL \
--token $TRIVY_TOKEN \
--format cyclonedx \
--scanners license \
--output /tmp/sbom.xml \
$FORGE_NAME/$CI_REPO:$TAG
- cat /tmp/sbom.xml
- |
curl -X "POST" \
-H "Content-Type: multipart/form-data" \
-H "X-Api-Key: $DTRACK_API_KEY" \
-F "autoCreate=true" \
-F "projectName=$CI_REPO" \
-F "projectVersion=$TAG" \
-F "bom=@/tmp/sbom.xml"\
"$DTRACK_API_URL/api/v1/bom"
when:
- event: [push, tag]
deploy: deploy:
image: quay.io/wollud1969/k8s-admin-helper:0.4.1 image: quay.io/wollud1969/k8s-admin-helper:0.4.1
environment: environment:

4
deployment/encrypt-secrets.sh Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
gpg --pinentry-mode=loopback --symmetric --cipher-algo AES256 --armor --output secrets.asc secrets.txt

View File

@@ -1,15 +1,15 @@
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
jA0ECQMC4tvOFCp2PT7/0sE+AcZmiGwroHYdWW/vJA1sCoMrM2oW8xUc1KndDGto jA0ECQMIiv7iz3c3MUj+0sE1AWdfA7cItvT1AKu3kypomk9QYoEttRzH0AePc5No
dFev2KcoZ4FRL9liCrJ7on773bZFCTDu2xiBNMeKF1p8drub1Ej5l61Oq15mLTYf J2KfMlJ7ZKvWMjLIKLZ+qr4syI62FMozWM+iWC++WC6Bjy2z4etrDkRYluYioiuk
XjXknFiWWq4PTzhhy53zvDyIV5yIcGfjotpGC83/qH5CBWIcCw9PZHI5+uHRVRKL pUSh1UWXn1F9mk33s9bXO4C/TJXQivtA7K0o1vD8YCWkNApc+wzxOnp373Bba9kb
OpdTpekJ8ljPAGQ4F3vbOeBbG1PMoclx8r5SpKxLwQco2iaXd71dXHtPkEnLujd4 l1VVMRhUdobfTOmuubtVb/ioeC5Djxv8K59UWM3zs64Mpm4ctGIMiXIC2SQjMcga
ZRCthVNVfxrIIRcTJfgxewz2oJWYF9008nmtxpKzqfBtNpFIdBtnTTVvv2lfcVuS j4EjGq16qBhzOT5kwhEvg90Ksjej2rzk/cqfdc72zK1p5jSWAyeBUZva3qoBkCc/
S4eav9ljPPd/exZaT7fOGD/kuCdiiu6e0yGLzo2ykf0uBy7hG7ZJg8TH5e+LMBm9 ZgZ+PuXZDW1PO/0yTaIob0SfFrHFmnAGA074VEPlg8EJlHMZjd0eVfISwsIipBg7
Q1OFD+5LWeEsOEdSTlT5UbV5EaVEiawKWQn7rMZOyvBNiPwLaOlquHirWoll5eIm rpPyyEWkMSGhnObOX/C9lGbi3/3JNbH/Q2xfkTmjRtnTjpJ3CRsW8Dek59rTfVsu
OHgBVN0FiY/righpIoei/KP705FIg+hrpMUvc29PahiL8dgsxJycnKIo4t+2/nac dr7Z0gzLo7nDQRTraIfEpgS7xwjOWLV0iA5Fwjl9Vlg1WDao7RA0+uSPZwIxdnSS
H144hP/rqBeaobG05TkZIr+Cpt4rpwwfNWOHgmNFHVpxdmPfoeAmpT4nz760hTEN ma/Lj8XNaPYzmyeDFMcCcBaIXj9PzdONNxfKhqn57aA/94M7aUdgYSHfhgqdGBRW
2ol4Qh8xL7n4GFiCpNg8tNZiZkPPa/aRUAFxgdq5beossvKukxCexQmlCFvxITSG gE55Eyz+S0RgNiRGo2VIJudoUM3IWr0XM/DR943JEYs796TEUncd1oRHoJNRW5Se
x9RwssFMnT+wqTuzBN8neBeEF1d9AtAFQKPtg3wkMUyJAlYkxiGS/2NJuYDVpmEQ UtJurdyXfPqXPvyrj+4sqo/k8RhRdJW3EasuEfu1SHsK7EltDecZ
=Wr4f =KuBv
-----END PGP MESSAGE----- -----END PGP MESSAGE-----

View File

@@ -16,21 +16,13 @@ from app import oidc
@oidc.require_login @oidc.require_login
def pvstats(): def pvstats():
try: try:
stepX_time = time.time()
dbh = psycopg.connect() dbh = psycopg.connect()
engine = sqlalchemy.create_engine("postgresql+psycopg://", creator=lambda: dbh) engine = sqlalchemy.create_engine("postgresql+psycopg://", creator=lambda: dbh)
step0_time = time.time() df = pd.read_sql("SELECT month, cast(year AS varchar), current_energy AS value FROM pv_energy_by_month ORDER BY year, month", con=engine)
df = pd.read_sql("SELECT month, cast(year AS varchar), current_energy AS value FROM pv_energy_by_month", con=engine)
step1_time = time.time()
duration1 = step1_time - step0_time
logger.info(f"{duration1=}")
fig_1 = px.bar(df, x='month', y='value', color='year', barmode='group') fig_1 = px.bar(df, x='month', y='value', color='year', barmode='group')
step2_time = time.time()
duration2 = step2_time - step1_time
logger.info(f"{duration2=}")
fig_1.update_layout( fig_1.update_layout(
title=f"Jahreswerte Exportierte Energie {duration1:.3f}, {duration2:.3f}", title=f"Jahreswerte Exportierte Energie PV-Anlage",
xaxis_title="", xaxis_title="",
yaxis_title="", yaxis_title="",
legend_title="Jahr", legend_title="Jahr",
@@ -43,18 +35,34 @@ def pvstats():
) )
graph_html_1 = fig_1.to_html(full_html=False, default_height='30%') graph_html_1 = fig_1.to_html(full_html=False, default_height='30%')
df = pd.read_sql("SELECT month, cast(year AS varchar), current_energy AS value FROM car_energy_by_month ORDER BY year, month", con=engine)
fig_2 = px.bar(df, x='month', y='value', color='year', barmode='group')
fig_2.update_layout(
title=f"Jahreswerte Verbrauch Elektroauto",
xaxis_title="",
yaxis_title="",
legend_title="Jahr",
xaxis=dict(
tickmode="array",
tickvals=list(range(1, 13)), # Monate 112
ticktext=["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]
),
yaxis=dict(ticksuffix=" kWh")
)
graph_html_2 = fig_2.to_html(full_html=False, default_height='30%')
return render_template_string(f""" return render_template_string(f"""
<html> <html>
<head> <head>
<title>Jahreswerte PV-Energie</title> <title>Jahreswerte PV und Auto</title>
</head> </head>
<body> <body>
{graph_html_1} {graph_html_1}
{graph_html_2}
</body> </body>
</html> </html>
""") """)
except Exception as e: except Exception as e:
raise Exception(f"Error when querying energy export values: {e}") raise Exception(f"Error when querying energy values: {e}")
finally: finally:
if dbh is not None: if dbh is not None:
dbh.close() dbh.close()