TibberH4X by Mums

   Här är ett powershell-script som laddar ner förbrukningsdata från tibber till en CSV-fil som kan öppnas i Excel. (Uppdaterad 2024-09-12)
# 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."
}
   kontakt: m r snabela a b c punkt s e
at freevisitorcounters.com