Fjern rapportbyggingen fra enok
test / test (push) Successful in 1m26s

Energirapporter lages i hvert prosjektlager, ikke i verktøyets eget lager.
rapport.yml og bygninger/ er fjernet. Mappen inneholdt en kundes IFC-modell
og bygningsbeskrivelse, som hører hjemme i prosjektlageret.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015GeH3y8fwTaTudaD88P57o
This commit is contained in:
bl
2026-09-15 15:26:20 +02:00
co-authored by Claude Opus 5
parent 81544d73e6
commit be1514bd83
5 changed files with 4 additions and 560 deletions
-76
View File
@@ -1,76 +0,0 @@
name: Energirapporter
# Lager energirapport for hver bygning i `bygninger/` og legger PDF, JSON og CSV ved
# utgivelsen. Se `bygninger/LES-MEG.md` for hvilke filtyper som kan ligge der.
on:
release:
types: [published]
workflow_dispatch:
jobs:
rapporter:
runs-on: fish
defaults:
run:
shell: fish {0}
steps:
- name: Hent koden
uses: https://gitea.com/actions/checkout@v6
- name: Sørg for en Rust-verktøykjede
run: |
# Kjørebrukeren har rustup, men ingen standardkjede er satt. Uten dette svarer
# cargo med at den ikke vet hvilken versjon den skal bruke.
if not cargo --version >/dev/null 2>&1
rustup default stable
end
cargo --version
- name: Bygg enok
run: cargo build --release --locked
- name: Importer BIM-filer som ikke har en TOML fra før
run: |
for f in (find bygninger -type f \( -iname '*.ifc' -o -iname '*.gbxml' -o -iname '*.csv' \) 2>/dev/null)
set toml (string replace -r '\.[^.]+$' '.toml' $f)
if not test -f $toml
echo "Importerer $f"
./target/release/enok import $f --ut $toml
end
end
- name: Beregn og lag rapporter
run: |
mkdir -p dist
set feil 0
for t in (find bygninger -type f -name '*.toml' 2>/dev/null)
set navn (basename $t .toml)
echo "::group::$navn"
if ./target/release/enok beregn $t --ut ut/$navn
cp ut/$navn/rapport.pdf dist/$navn-energirapport.pdf
cp ut/$navn/resultat.json dist/$navn-resultat.json
cp ut/$navn/maaned.csv dist/$navn-maaned.csv
gzip -c ut/$navn/timeserie.csv > dist/$navn-timeserie.csv.gz
else
echo "Beregningen av $navn feilet"
set feil 1
end
echo "::endgroup::"
end
ls -la dist
exit $feil
- name: Legg ved utgivelsen
if: github.event_name == 'release'
env:
TOKEN: ${{ github.token }}
run: |
set REL_ID (curl --silent --fail --header "Authorization: token $TOKEN" \
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/releases/tags/$GITHUB_REF_NAME" | jq -r '.id')
for f in (find dist -type f)
echo "Laster opp "(basename $f)
curl --silent --show-error --fail --header "Authorization: token $TOKEN" \
--form "attachment=@$f" \
"$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/releases/$REL_ID/assets?name="(basename $f)
end
+4 -8
View File
@@ -9,7 +9,7 @@ varmekilder og drift — og et typisk klimaår, og gir 8760 timesverdier, et ful
fra netto energibehov til vektet levert energi, en energikarakter og en ferdig rapport i PDF. fra netto energibehov til vektet levert energi, en energikarakter og en ferdig rapport i PDF.
``` ```
enok beregn bygninger/nordhusstykket-5.toml enok beregn bygning.toml
``` ```
``` ```
@@ -243,22 +243,18 @@ vindu,Stue sør,3.0,2.8,180,90,,0.76,2
## Rapporter fra byggeserveren ## Rapporter fra byggeserveren
Arbeidsflytene i `.gitea/workflows/` kjører på vertskjøreren `fish` og utløses når en Rapportene lages i hvert prosjektlager, ikke i enok. enoks egne arbeidsflyter kjører på
utgivelse publiseres, på samme måte som de andre prosjektene. vertskjøreren `fish` på samme måte som de andre prosjektene:
| Fil | Hva den gjør | | Fil | Hva den gjør |
| --- | --- | | --- | --- |
| `test.yml` | Formatering, clippy og tester på hver push | | `test.yml` | Formatering, clippy og tester på hver push |
| `release.yml` | Bygger enok og legger binærfilen ved utgivelsen | | `release.yml` | Bygger enok og legger binærfilen ved utgivelsen |
| `rapport.yml` | Lager energirapport for hver bygning i `bygninger/` og legger PDF, JSON og CSV ved utgivelsen |
IFC-, gbXML- og CSV-filer i `bygninger/` importeres automatisk til TOML dersom det ikke
allerede finnes en TOML-fil med samme navn. Se `bygninger/LES-MEG.md`.
### Energirapport fra et byggeprosjekt ### Energirapport fra et byggeprosjekt
Et prosjektlager med sin egen IFC-modell og `bygning.toml` trenger ikke Rust. Det henter Et prosjektlager med sin egen IFC-modell og `bygning.toml` trenger ikke Rust. Det henter
binærfilen fra enoks utgivelse: binærfilen fra enoks siste utgivelse:
```yaml ```yaml
name: Energirapport name: Energirapport
-18
View File
@@ -1,18 +0,0 @@
# Bygninger
Legg én fil per bygning her. Byggeserveren regner ut energirapporten og legger PDF, JSON og
CSV ved utgivelsen når du setter en tagg som begynner med `v` eller `rapport-`.
| Filtype | Kommer fra |
| -------- | --------------------------------------------------- |
| `.toml` | Bygningsbeskrivelse skrevet for hånd, eller importert |
| `.ifc` | Vectorworks: *Fil → Eksporter → Export IFC Project* |
| `.gbxml` | BIM-verktøy som eksporterer gbXML |
| `.csv` | Vectorworks: *Fil → Eksporter → Export Worksheet* |
IFC-, gbXML- og CSV-filer blir importert til TOML automatisk dersom det ikke allerede finnes
en TOML-fil med samme navn. Importen får med geometri, U-verdier og himmelretninger, men ikke
ventilasjon, lekkasjetall eller varmekilder. Åpne den importerte TOML-filen, fyll ut det som
mangler, og sjekk den inn — da brukes den i stedet for importen neste gang.
Eksempler på ferdige bygningsbeskrivelser ligger i `../eksempler/`.
File diff suppressed because one or more lines are too long
-457
View File
@@ -1,457 +0,0 @@
# Importert med enok. Fyll ut feltene som er merket nedenfor.
# Oppvarmet BRA er satt til 139.5 m², summen av rommene i etasjene over terreng. Rom [m²]: Stue 39.5, Kjøkken 22.6, Soverom 15.4, Gang/trapperom 11.2, Entré 10.6, Soverom 9.3, Soverom 9.2, Kott 7.3, Kott 4.6, Kott 4.1, Kott 3.6, Vindfang 1.2, Toalett 0.9.
# Disse rommene er regnet som oppvarmet, men navnet tyder på at de ikke er det: Kott 3.6 m², Kott 4.1 m², Kott 7.3 m², Kott 4.6 m². Trekk dem fra oppvarmet_bra om de står uoppvarmet.
# 30 bygningsdeler er utelatt fordi geometrien ikke ga noe areal.
# 17 bygningsdeler mangler U-verdi i IFC-filen. Legg inn U-verdier, eller la enok bruke typiske verdier for byggeåret.
# Arealene er regnet av geometrien: trekantene er gruppert etter retning, og den største gruppen er delens hovedflate. Himmelretningene følger flatenormalen. Kontroller begge mot tegningen.
# IFC beskriver ikke drift, lekkasjetall eller energiforsyning. Fyll inn [ventilasjon], [infiltrasjon], [oppvarming], [tappevann] og [klima] før beregning.
# Modellen har egenskaper for drift og forsyning, og disse er tatt i bruk: YearOfConstruction.
# Etasjen «Kjeller» ligger under terreng og er satt opp som en uoppvarmet sone med 75 m² gulv. Kjellerveggene er regnet 2.4 m under terreng uten noe over. Står en del av grunnmuren over bakken, sett `over_terreng` i meter på veggene; utslaget er lite, om lag én prosent per meter.
# Er kjelleren oppvarmet likevel, slett [[sone]] og legg flatene inn i klimaskjermen. Går det uisolerte varmerør der, sett `andel_distribusjonstap = 1.0` på sonen.
# Modellen oppgir posisjon 38.8894° nord, -77.0353° øst. Kontroller at den stemmer, og sett `kommune` under [klima] deretter.
[bygning]
navn = "nordhusstykket-5"
kategori = "smaahus"
byggeaar = 1950
oppvarmet_bra = 139.533
antall_boenheter = 1
beskrivelse = "Importert fra IFC"
[klima]
[[flate]]
navn = "Roof Slab"
type = "tak"
areal = 130.11978717725776
orientering = 0.0
helning = 14.999984009080658
masseklasse = "middels"
masseplassering = "fordelt"
mot = "ute"
kommentar = "importert fra IFC"
[[flate]]
navn = "Etasjeskille"
type = "gulv"
areal = 77.04260758445601
orientering = 0.0
helning = 0.0
u_verdi = 0.31
masseklasse = "lett"
masseplassering = "fordelt"
mot = "uoppvarmet"
sone = "Kjeller"
kommentar = "1. etg., importert fra IFC"
[[flate]]
navn = "Yttervegg panel ute og porøs huntonitt inne"
type = "vegg"
areal = 55.719888250487756
orientering = 180.0
helning = 90.0
u_verdi = 0.93
masseplassering = "fordelt"
mot = "ute"
kommentar = "2. etg., importert fra IFC"
[[flate]]
navn = "Yttervegg panel ute og porøs huntonitt inne"
type = "vegg"
areal = 59.50176490568849
orientering = 270.0
helning = 90.0
u_verdi = 0.93
masseklasse = "lett"
masseplassering = "fordelt"
mot = "ute"
kommentar = "1. etg., importert fra IFC"
[[flate]]
navn = "Yttervegg panel ute og porøs huntonitt inne"
type = "vegg"
areal = 41.833542336937
orientering = 0.0
helning = 90.0
u_verdi = 0.93
masseklasse = "lett"
masseplassering = "fordelt"
mot = "ute"
kommentar = "1. etg., importert fra IFC"
[[flate]]
navn = "Slab on Grade-100mm"
type = "gulv"
areal = 16.3663225
orientering = 0.0
helning = 0.0
u_verdi = 3.51
masseklasse = "tung"
masseplassering = "fordelt"
mot = "uoppvarmet"
sone = "Kjeller"
kommentar = "1. etg., importert fra IFC"
[[flate]]
navn = "Yttervegg panel ute og porøs huntonitt inne"
type = "vegg"
areal = 54.21918162153324
orientering = 90.0
helning = 90.0
u_verdi = 0.93
masseklasse = "lett"
masseplassering = "fordelt"
mot = "ute"
kommentar = "2. etg., importert fra IFC"
[[flate]]
navn = "Etasjeskille-loft"
type = "tak"
areal = 32.594422635
orientering = 0.0
helning = 0.0
u_verdi = 0.45
masseklasse = "lett"
masseplassering = "fordelt"
mot = "uoppvarmet"
kommentar = "2. etg., importert fra IFC"
[[sone]]
navn = "Kjeller"
volum = 176.1231
fast_effekt = 0.0
kommentar = "Etasje «Kjeller» ligger 2.35 m under referansenivået. Rom [m²]: Bod 10.4, Gang 11.1, Rom 21.1, Teknisk rom 2.2, Bod 9.3, Vaskrom 9.8, Vaskrom 11.1"
[[sone.flate]]
navn = "Kjellermur med treullsement-2"
type = "vegg"
areal = 1.4834999999999998
orientering = 90.0
helning = 90.0
u_verdi = 0.46
masseklasse = "lett"
masseplassering = "fordelt"
mot = "grunn"
dybde = 2.35
over_terreng = 0.0
kommentar = "Kjeller, importert fra IFC"
[[sone.flate]]
navn = "Kjellermur 25 cm uisolert"
type = "vegg"
areal = 16.33814305
orientering = 90.0
helning = 90.0
u_verdi = 3.39
masseklasse = "tung"
masseplassering = "fordelt"
mot = "grunn"
dybde = 2.35
over_terreng = 0.0
kommentar = "Kjeller, importert fra IFC"
[[sone.flate]]
navn = "Kjellermur 30 cm uisolert"
type = "vegg"
areal = 22.69398933457598
orientering = 180.0
helning = 90.0
u_verdi = 3.13
masseklasse = "tung"
masseplassering = "fordelt"
mot = "grunn"
dybde = 2.35
over_terreng = 0.0
kommentar = "Kjeller, importert fra IFC"
[[sone.flate]]
navn = "Kjellermur 30 cm uisolert"
type = "vegg"
areal = 15.028989334576002
orientering = 270.0
helning = 90.0
u_verdi = 3.13
masseklasse = "tung"
masseplassering = "fordelt"
mot = "grunn"
dybde = 2.35
over_terreng = 0.0
kommentar = "Kjeller, importert fra IFC"
[[sone.flate]]
navn = "Kjellermur 25 cm uisolert"
type = "vegg"
areal = 0.33587572106361
orientering = 135.0
helning = 90.0
u_verdi = 3.39
masseklasse = "tung"
masseplassering = "fordelt"
mot = "grunn"
dybde = 2.35
over_terreng = 0.0
kommentar = "Kjeller, importert fra IFC"
[[sone.flate]]
navn = "Kjellermur 25 cm uisolert"
type = "vegg"
areal = 14.155249999999999
orientering = 0.0
helning = 90.0
u_verdi = 3.39
masseklasse = "tung"
masseplassering = "fordelt"
mot = "grunn"
dybde = 2.35
over_terreng = 0.0
kommentar = "Kjeller, importert fra IFC"
[[sone.flate]]
navn = "Kjellermur 25 cm uisolert"
type = "vegg"
areal = 7.481249999999999
orientering = 180.0
helning = 90.0
u_verdi = 3.39
masseklasse = "tung"
masseplassering = "fordelt"
mot = "grunn"
dybde = 2.35
over_terreng = 0.0
kommentar = "Kjeller, importert fra IFC"
[[sone.flate]]
navn = "Kjellermur 25 cm uisolert"
type = "vegg"
areal = 2.35212255
orientering = 270.0
helning = 90.0
u_verdi = 3.39
masseklasse = "tung"
masseplassering = "fordelt"
mot = "grunn"
dybde = 2.35
over_terreng = 0.0
kommentar = "Kjeller, importert fra IFC"
[[sone.flate]]
navn = "Kjellermur 30 cm uisolert"
type = "vegg"
areal = 9.688000000000002
orientering = 90.0
helning = 90.0
u_verdi = 3.13
masseklasse = "tung"
masseplassering = "fordelt"
mot = "grunn"
dybde = 2.35
over_terreng = 0.0
kommentar = "Kjeller, importert fra IFC"
[[sone.flate]]
navn = "Kjellergulv"
type = "gulv"
areal = 78.88690000000003
orientering = 0.0
helning = 0.0
u_verdi = 3.85
masseklasse = "tung"
masseplassering = "fordelt"
mot = "grunn"
dybde = 2.35
over_terreng = 0.0
kommentar = "Kjeller, importert fra IFC"
[[sone.flate]]
navn = "Kjellermur 30 cm uisolert"
type = "vegg"
areal = 21.215968003727976
orientering = 0.0
helning = 90.0
u_verdi = 3.13
masseklasse = "tung"
masseplassering = "fordelt"
mot = "grunn"
dybde = 2.35
over_terreng = 0.0
kommentar = "Kjeller, importert fra IFC"
[[sone.flate]]
navn = "Kjellermur med treullsement-2"
type = "vegg"
areal = 0.731
orientering = 0.0
helning = 90.0
u_verdi = 0.46
masseklasse = "lett"
masseplassering = "fordelt"
mot = "grunn"
dybde = 2.35
over_terreng = 0.0
kommentar = "Kjeller, importert fra IFC"
[grunn]
[[vindu]]
navn = "V-5 #3833"
areal = 0.8400000000000001
antall = 1.0
orientering = 180.0
helning = 90.0
u_verdi = 2.4
dor = false
kommentar = "importert fra IFC"
[[vindu]]
navn = "W-01 #16334"
areal = 0.45
antall = 1.0
orientering = 0.0
helning = 90.0
u_verdi = 2.4
dor = false
kommentar = "importert fra IFC"
[[vindu]]
navn = "W-01 #16303"
areal = 0.45
antall = 1.0
orientering = 0.0
helning = 90.0
u_verdi = 2.4
dor = false
kommentar = "importert fra IFC"
[[vindu]]
navn = "V-3 #11303"
areal = 1.4300000000000002
antall = 1.0
orientering = 89.92370720902136
helning = 90.0
u_verdi = 2.4
dor = false
kommentar = "importert fra IFC"
[[vindu]]
navn = "V-3 #11350"
areal = 1.4300000000000002
antall = 1.0
orientering = 89.92370720902136
helning = 90.0
u_verdi = 2.4
dor = false
kommentar = "importert fra IFC"
[[vindu]]
navn = "V-2 #3207"
areal = 1.56
antall = 1.0
orientering = 0.0
helning = 90.0
u_verdi = 2.4
dor = false
kommentar = "importert fra IFC"
[[vindu]]
navn = "V-2 #3882"
areal = 1.56
antall = 1.0
orientering = 180.0
helning = 90.0
u_verdi = 2.4
dor = false
kommentar = "importert fra IFC"
[[vindu]]
navn = "V-4 #10945"
areal = 1.0450000000000002
antall = 1.0
orientering = 270.0
helning = 90.0
u_verdi = 2.4
dor = false
kommentar = "importert fra IFC"
[[vindu]]
navn = "V-2 #3110"
areal = 1.56
antall = 1.0
orientering = 0.0
helning = 90.0
u_verdi = 2.4
dor = false
kommentar = "importert fra IFC"
[[vindu]]
navn = "V-2 #3160"
areal = 1.56
antall = 1.0
orientering = 0.0
helning = 90.0
u_verdi = 2.4
dor = false
kommentar = "importert fra IFC"
[[vindu]]
navn = "V-2 #3730"
areal = 1.56
antall = 1.0
orientering = 180.0
helning = 90.0
u_verdi = 2.4
dor = false
kommentar = "importert fra IFC"
[[vindu]]
navn = "VD-1 #3549"
areal = 2.9400000000000004
antall = 1.0
orientering = 89.92370720902136
helning = 90.0
u_verdi = 2.0
dor = true
kommentar = "importert fra IFC"
[[vindu]]
navn = "D-01 #3801"
areal = 1.9110000000000003
antall = 1.0
orientering = 180.0
helning = 90.0
u_verdi = 2.0
dor = true
kommentar = "importert fra IFC"
[[vindu]]
navn = "VD-2 #10977"
areal = 1.4625
antall = 1.0
orientering = 270.0
helning = 90.0
u_verdi = 2.0
dor = true
kommentar = "importert fra IFC"
[kuldebroer]
[infiltrasjon]
skjerming = "moderat"
[ventilasjon]
type = "naturlig"
[tappevann]
system = "aapent"
[oppvarming]
[distribusjon]
type = "punkt"
[kjoling]
ingen = true
[lufting]
ingen = false
[drift]