# TibberH4X by Mums - Ladda ner timvärden i CSV-format!
# API-slutpunkten
$apiUrl = "https://api.tibber.com/v1-beta/gql"
# Din personliga token (kopieras från developer.tibber.com)
$token = "XXxxxXXXXXxxxXXXXXXxxXXxxxXXXXxxxXX"
# GraphQL-frågan (last: 30000 anger hur många timvärden som ska laddas ner. Det ska gå att utelämna för att få alla värden, men jag får då felmeddelande)
# (Matematik: 8760 timmar per år)
$query = @"
{
viewer {
homes {
timeZone
address {
address1
postalCode
city
}
owner {
firstName
lastName
contactInfo {
email
mobile
}
}
consumption(resolution: HOURLY, last: 30000) {
nodes {
from
to
cost
unitPrice
unitPriceVAT
consumption
consumptionUnit
}
}
currentSubscription {
status
priceInfo {
current {
total
energy
tax
startsAt
}
}
}
}
}
}
"@
# HTTP-huvud
$headers = @{
"Authorization" = "Bearer $token"
"Content-Type" = "application/json"
}
# GraphQL payload
$body = @{
query = $query
} | ConvertTo-Json
# Skicka POST-förfrågan
$response = Invoke-RestMethod -Uri $apiUrl -Method Post -Headers $headers -Body $body
# Kontrollera om "homes" finns och innehåller data
if ($response.data.viewer.homes.Count -gt 0) {
# Loopa genom varje hus och kolla om det finns konsumtionsdata
foreach ($house in $response.data.viewer.homes) {
if ($house.consumption -ne $null) {
$consumptionData = $house.consumption.nodes
# Exportera konsumtionsdata till CSV
$consumptionData | Select-Object `
@{Name="from"; Expression={ $_.from }},
@{Name="to"; Expression={ $_.to }},
@{Name="cost"; Expression={ if ($_.cost) { $_.cost } else { "N/A" } }},
@{Name="unitPrice"; Expression={ if ($_.unitPrice) { $_.unitPrice } else { "N/A" } }},
@{Name="unitPriceVAT"; Expression={ if ($_.unitPriceVAT) { $_.unitPriceVAT } else { "N/A" } }},
@{Name="consumption"; Expression={ if ($_.consumption) { $_.consumption } else { "N/A" } }},
@{Name="consumptionUnit"; Expression={ if ($_.consumptionUnit) { $_.consumptionUnit } else { "N/A" } }} |
Export-Csv -Path "consumption_data.csv"
Write-Host "Konsumtionsdata har exporterats till consumption_data.csv"
break
} else {
Write-Host "Inget konsumtionsdata för detta hus."
}
}
} else {
Write-Host "Inga hus hittades i svaret."
}