Från klimatberäkning till beslutsstöd: integrera BM med era verktyg
BM:s klimatberäkningar behöver inte stanna i webbplattformen. Genom integrationer kan ni använda projektdata i era egna system, rapporter och arbetsflöden för att skapa effektivare processer och bättre beslutsunderlag.
- Uppföljning och analys i Power BI
Sammanställ data från flera projekt och följ upp klimatprestanda, nyckeltal och utveckling på portföljnivå. - Kvalitetssäkring av EPD:er
Få en samlad överblick över era miljövarudeklarationer (EPD:er) och kontrollera att de uppfyller era interna krav – för ett enskilt projekt eller över hela verksamheten. - Automatiserad projektgranskning med AI
Använd AI för att identifiera avvikelser och genomföra kvalitetskontroller enligt era egna rutiner och processer. - Anpassade integrationer
Koppla samman BM med befintliga system för projektering, kalkyl, uppföljning eller rapportering och skapa ett sömlöst informationsflöde genom hela projektets livscykel.
Vi utforskar gärna möjligheterna tillsammans med er organisation. Kontaktuppgifter hittar du längst ned på sidan. Du kan också läsa mer om våra rådgivningstjänster här.
Teknisk information
Exempelprojekt
För att exemplen nedan måste delning av analys vara aktiverad för utvalt projekt. Läs mer om delningsfunktionen i BM:s supportartikel: Dela analys.
I BM finns ett exempelprojekt som kan användas för testning. Öppna exempelprojektets publika analys i BM.
| Parameter i guiden | Värde | Var den hittas |
|---|---|---|
shareCode |
79fd21ff-a6d8-436a-ae73-d9ae4e41bd96 |
Efter /public/analysis/ i länken. |
versionId |
72932 |
Värdet på ?version= i länken. |
shareCode är guidens benämning på delningskoden. För ett annat testprojekt: använd kod och versions-ID från just den delningslänk BM tillhandahåller.
API-anrop
Basadress:
https://ivl-bmv2-swce-api.azurewebsites.net/api/v1
A. Hämta projekt via delningskod
GET /projects/by-code/{shareCode}
B. Begär beräkning för vald version
POST /project-versions/{versionId}/calculate-with-settings/{shareCode}
Skicka Content-Type: application/json och följande body:
{
"settingType": 0,
"includeA51FromTransportScenarios": false,
"includeOverview": true,
"includeProjectResourcesForWebGrid": true,
"includeProjectResourcesForResourceList": true,
"includeProjectResourcesForEPD": true,
"includeProjectResourcesForOwnChoices": true,
"includeMethodologyResult": true,
"includeTransports": true,
"useConservativeData": false,
"productSystemIds": null
}
Åtkomst och headers
Ingen Authorization-header eller cookie behövs i anropen.
Snabbtest i Postman
- Skapa ett GET-anrop och klistra in denna adress:
https://ivl-bmv2-swce-api.azurewebsites.net/api/v1/projects/by-code/79fd21ff-a6d8-436a-ae73-d9ae4e41bd96
Välj No Auth som första test och lägg till headers enligt ovan. Skicka anropet och kontrollera att svaret är JSON.
- Skapa ett POST-anrop till:
https://ivl-bmv2-swce-api.azurewebsites.net/api/v1/project-versions/72932/calculate-with-settings/79fd21ff-a6d8-436a-ae73-d9ae4e41bd96
Under Body → raw → JSON, klistra in kroppen från avsnitt 3. Skicka en gång och spara svaret.
Körbart exempel i Python
import json
from pathlib import Path
from urllib.request import Request, urlopen
from urllib.error import HTTPError, URLError
BASE = "https://ivl-bmv2-swce-api.azurewebsites.net/api/v1"
SHARE_CODE = "79fd21ff-a6d8-436a-ae73-d9ae4e41bd96"
VERSION_ID = 72932
settings = json.loads('''{
"settingType": 0,
"includeA51FromTransportScenarios": false,
"includeOverview": true,
"includeProjectResourcesForWebGrid": true,
"includeProjectResourcesForResourceList": true,
"includeProjectResourcesForEPD": true,
"includeProjectResourcesForOwnChoices": true,
"includeMethodologyResult": true,
"includeTransports": true,
"useConservativeData": false,
"productSystemIds": null
}''')
def fetch_json(path, payload=None):
data = None if payload is None else json.dumps(payload).encode("utf-8")
request = Request(
BASE + path,
data=data,
method="GET" if payload is None else "POST",
headers={"Accept": "application/json",
"Content-Type": "application/json"},
)
try:
with urlopen(request, timeout=60) as response:
return json.load(response)
except HTTPError as error:
raise RuntimeError(f"BM svarade med HTTP {error.code}. "
"Kontrollera delning, version och åtkomst med BM.") from error
except URLError as error:
raise RuntimeError("Kunde inte ansluta till BM.") from error
project = fetch_json(f"/projects/by-code/{SHARE_CODE}")
result = fetch_json(
f"/project-versions/{VERSION_ID}/calculate-with-settings/{SHARE_CODE}",
settings,
)
for filename, value in [("bm-project.json", project),
("bm-analysis.json", result)]:
Path(filename).write_text(
json.dumps(value, ensure_ascii=False, indent=2), encoding="utf-8"
)
print(f"Sparat {filename}")
# Spara även inställningarna så att resultatet går att tolka senare.
Path("bm-settings.json").write_text(
json.dumps(settings, indent=2), encoding="utf-8"
)
Fältbeskrivningar
| Fält | Betydelse |
|---|---|
includeA51FromTransportScenarios |
Inkludera A5.1 från transportscenarier. |
includeOverview |
Inkludera översiktsdata. |
includeProjectResourcesForWebGrid |
Resursdata för appens tabellvy. |
includeProjectResourcesForResourceList |
Resursdata för resurslistan. |
includeProjectResourcesForEPD |
Resursdata för EPD-vyn. |
includeProjectResourcesForOwnChoices |
Resursdata för egna val. |
includeMethodologyResult |
Resultat för metodval. |
includeTransports |
Transportdata. |
useConservativeData |
Använd konservativa data från Boverkets databas. |
productSystemIds |
Filter för produktsystem |
Felmeddelanden
| Symtom | Nästa steg |
|---|---|
| 401, 403 eller 404 | Kontrollera delningslänk och version med BM. |
| 400 eller 415 | Kontrollera JSON-kroppen och Content-Type. |
| 429, 5xx eller timeout | Kontakta oss för mer information |
| Fungerar i skript men inte i webbläsare | Kontrollera CORS/preflight tillsammans med BM. |
| 200 men oväntat innehåll | Spara svaret och låt BM bekräfta strukturen innan fält kopplas till nyckeltal. |
Kontaktperson