Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

kristianml

Medlemmer
  • Innlegg

    33
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    2

Alt skrevet av kristianml

  1. Jeg lurer på om jeg måtte sette opp polling på hver enkelt temperatur-device for at det skulle fungere. Og etter at jeg gjorde det så har jeg ikke sett noe mer på det. Det er på første versjon av Z-water, ikke z-water2 som selges nå.
  2. Ut i fra første post sitt innhold tenkte jeg først at jeg nå fikk det nødvendige sparket for å gå fra Homeseer til Home Assistant, men det står jo ganske tydelig i teksten at dette gjelder tilgang app-tilgang for integrasjoner som Google/Alexa/IFTTT og at vanlig remote tilgang gjennom myhs fremdeles er gratis. Jeg bruker ingen slike integrasjoner, så får meg betyr altså dette ingen endring som helst.
  3. Høres veldig ut som at du bruker mobilt nett med CG-NAT (routeren din deler ekstern IPv4-adresse med andre kunder pga at operatør ikke har tilstrekkelig antall adresser tilgjengelig, så det blir litt tilfeldig hvor du prøver å koble til dersom du går mot IP). Ta en titt på følgende diskusjon, særlig siste post.
  4. Har jobbet videre de to siste kveldene på scriptet som laget AI-kunst, så nå har jeg et script som med AI generer dagens værvarsel (midt på dagen) til et tegneseriebilde i japansk manga-stil. Data fra Yr sitt varsel blir konvertert til ord og beskrivelser for vær, vind, regn og skydekke, f.eks (skyet, stille vind og styrtregn). Har testet litt og det fungerer ganske bra. F.eks. om det varsles mye vind og regn så genereres bilder av folk som kjemper med paraplyer. I dag er det mye regn, så dagens bilde viser mennesker i en japansk landsby, med paraplyer, stående i en oversvømmelse. Og det er praktisk talt oversvømmelse utenfor huset nå med alt regner som er. Skjermen for værvarselet er bare 4.2" stor og har 300x400 i oppløsning. Fungerer allikevel ganske ok. Vedlagt er bilder fra skjerm i går, i dag sammen med AI-kunstskjermen omtalt tidligere, samt et eksempel på et originalt bilde generert av AI før det ble tilpasset skjermen. Script i powershell som tidligere 🙂
  5. Nyeste prosjekt for e-papir-skjerm som jeg har småplukket litt på noen dager: Script for å koble til ChatGPT sitt bildegenererende API (Dall-E 3) og be den daglig generere et bilde basert på input. Input er statisk per nå, ""create a random artistic nature photo with the colors white, black and red", men en fremtidig mulighet kan være å generere input mer random med en ordliste og noen regler. Det fungerer ganske bra med statisk input, for hvert bilde som genereres er vidt forskjellig fra det forrige. Det krever betalt brukerkonto hos chatgpt og hvert bilde koster omtrent 80 øre å generere. Bildet skaleres av scriptet for å passe med oppløsning på skjerm, og siden dette er epapir så er skjermen begrenset til fargene hvit, sort og rød, men bruker til gjengjeld minimalt med strøm og går på batteri. Script er powershell, men det kaller et python script for å laste opp bildefilen til skjermens aksesspunkt fordi jeg aldri fikk til å sende parametre på en måte som aksesspunktet tolket korrekt med powershell. Opplastet bilde viser på skjermen, original fra chatgpt og et annet eksempel på bilde som er generert med samme input. #Script to generate a daily artistic image using AI-model Dall-e-3 from OpenAI, and scale/convert the image for OpenEPaperLink #OpenEPaperLink: https://github.com/jjwbruijn/OpenEPaperLink/wiki # Register API-key: https://platform.openai.com/api-keys # Add billing: https://platform.openai.com/account/billing/overview #OpenAI API-docs: https://platform.openai.com/docs/introduction Add-Type -AssemblyName System.Drawing $path = "\AI-art\" $filename = (Get-Date).toString("dd.MM.yyyy") + "_" + (Get-Random) + ".png" $outputFilename = "ai-art.jpg" [int]$screenWidth = 640 [int]$screenHeight = 384 $epapirMAC = "0000021E73677438" $epapirAPIP = "http://192.168.1.180/imgupload" $epapirDither = "1" $requestSuccess = $true $chatGPTAPIKey = "key" $chatGPTAPIUri = "https://api.openai.com/v1/images/generations" $chatGPTAPIPrompt = "create a random artistic nature photo with the colors white, black and red" $chatgptHeaders = @{ "Authorization" = "Bearer $chatGPTAPIKey" "Content-Type" = "application/json" } #Cost is dependant on size, model and quality. Using Dall-e 3 and "normal" quality: 1024x1024 (square) is $0.04, 1792x1024 (landscape) is $0.08 $chatgptBody = @{ "model" = "dall-e-3" "prompt" = $chatGPTAPIPrompt "n" = 1 "size" = "1792x1024" } try { $chatgptResponse = Invoke-WebRequest -Uri $chatGPTAPIUri -Headers $chatgptHeaders -Body (ConvertTo-Json $chatgptBody) -Method Post $chatgptData = $chatgptResponse | ConvertFrom-Json } catch { $requestSuccess = $false } if ( $requestSuccess ) { try { $downloadRequest = Invoke-WebRequest -Uri $chatgptData.data.url -OutFile ($path+$filename) } catch { $requestSuccess = $false } } if ( $requestSuccess ) { $OldImage = [System.Drawing.Bitmap]::FromFile($path+$filename) $Bitmap = New-Object -TypeName System.Drawing.Bitmap -ArgumentList $screenWidth, $screenHeight $NewImage = [System.Drawing.Graphics]::FromImage($Bitmap) #Retrieving the best quality possible $NewImage.SmoothingMode = "HighQuality" $NewImage.InterpolationMode = "HighQualityBicubic" $NewImage.PixelOffsetMode = "HighQuality" $NewImage.DrawImage($OldImage, $(New-Object -TypeName System.Drawing.Rectangle -ArgumentList 0, 0, $screenWidth, $screenHeight)) #Save as JPG with best quality possible $EncoderParam = [System.Drawing.Imaging.Encoder]::Quality $EncoderParamSet = New-Object System.Drawing.Imaging.EncoderParameters(1) $EncoderParamSet.Param[0] = New-Object System.Drawing.Imaging.EncoderParameter($EncoderParam, 100) $JPGCodec = [System.Drawing.Imaging.ImageCodecInfo]::GetImageEncoders() | Where-Object{$_.MimeType -eq 'image/jpeg'} $Bitmap.Save(($path+$outputFilename),$JPGCodec, $EncoderParamSet) $OldImage.Dispose() $NewImage.Dispose() $Bitmap.Dispose() python.exe uploadimage.py ($path+$outputFilename) $epapirMAC $epapirAPIP $epapirDither } Python-scriptet: # Based on https://github.com/jjwbruijn/OpenEPaperLink/wiki/Image-upload import requests import sys image_path = sys.argv[1] mac = sys.argv[2] # destination mac address dither = sys.argv[4] # set dither to 1 is you're sending photos etc url = sys.argv[3] # ip address of your access point #url = "http://" + apip + "/imgupload" payload = {"dither": dither, "mac": mac} # Additional POST parameter files = {"file": open(image_path, "rb")} # File to be uploaded # Send the HTTP POST request response = requests.post(url, data=payload, files=files) # Check the response status if response.status_code == 200: print("Image uploaded successfully!") else: print("Failed to upload the image.")
  6. Jeg kjøpte aksesspunkt og noen mindre skjermer fra NIC i Nederland: https://www.tindie.com/products/electronics-by-nic/openepaperlink-mini-ap-v3-zigbee-wifi-gateway/ Og den store skjermen kjøpte jeg ved å sende melding til personen ATC1441 på Discord-kanalen med samme navn: https://discord.gg/9bs5BEtp Merk at den store skjermen mangler støtte for en del av den nyere funksjonaliteten som er omtalt på https://github.com/jjwbruijn/OpenEPaperLink/wiki eller på Discord, men den fungerer fint for meg pga at jeg genererer bildet selv og laster opp til skjermen fremfor å benytte innebygget funksjonalitet eller json-format på tegning av grensesnitt.
  7. Jeg vil bare påpeke at det er @NeoIDsom har funnet løsningen her. Jeg har bare benyttet meg av hans for å gjøre løsningen mer tilgjengelig for meg selv 🙂 Og du har helt rett om -depth @Smurfen, det har ingen funksjon i den sammenhengen. Den kom med under en klipp&lim av convertto-json lenger opp i scriptet mitt (upublisert del mot annet api)
  8. Dette er Powershell-script som er proof-of-concept, så bør struktureres bedre men fungerer som lineær fremgangsmåte: $petrolDataTokenResponse = Invoke-WebRequest -Uri "https://api.drivstoffappen.no/api/v1/authorization-sessions" $petrolDataToken = ($petrolDataTokenResponse | ConvertFrom-Json).token #konventer til Byte-array (Det viser seg kun at første siffer flyttes til siste posisjon. Kunne trolig vært løst med strengmanipulasjon fremfor å konvertere til byte-array) $tokenBytes = [System.Text.Encoding]::UTF8.GetBytes($petrolDataToken) #splitt ut første element i array, for en shift left $first, $rest = $tokenBytes #shift left $tokenBytes = $rest + $first #konventer til String. $tokenShifted = [System.Text.Encoding]::UTF8.GetString($tokenBytes) $md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider $utf8 = New-Object -TypeName System.Text.UTF8Encoding $md5Hash = [System.BitConverter]::ToString($md5.ComputeHash($utf8.GetBytes($tokenShifted))) #Må fjerne - fra string, og endre til lower-case $md5Hash = ($md5Hash.Replace("-","")).ToLower() $petrolDataHeaders = @{ "X-API-KEY" = $md5Hash "X-CLIENT-ID" = "com.raskebiler.drivstoff.appen.ios" } #$gAPI = "https://httpbin.org/headers" # brukt for test av headers #$petrolDataResponse = Invoke-WebRequest -Uri "https://api.drivstoffappen.no/api/v1/brands" -Headers $petrolDataHeaders -Method Get $petrolDataResponse = Invoke-WebRequest -Uri "https://api.drivstoffappen.no/api/v1/stations?stationTypeId=1" -Headers $petrolDataHeaders -Method Get #$petroldataresponse.content | Set-Content ($path+"\cache\petrol.json") #Lagre JSON med enten stasjoner eller selskaper $petrolData = $petrolDataResponse.Content | ConvertFrom-Json -Depth 100 $petrolData[([String[]]$petrolData.id).indexOf("534")] #Esso Svinesund
  9. Takk til NeoID! Jeg testet dette selv og kan bekrefte at det fungerer fint. Riktignok oversatt til Powershell siden jeg ikke bruker HA og ikke er stødig i Python. Jeg kan dele koden dersom noen er interessert, men ellers er det vel ikke relevant i Home Assistant-sammenheng i denne diskusjonen. Men, det ser ut til at datamodellen er noe endret fra tidligere? Drifstofftype er nå en ID, ikke "D", "95" etc. Feltet DiscountID eksisterer ikke lenger, så navn er en kombinasjon av "brandID"+"name". Så det må gjøres et kall til /brands som beskrevet over for å finne navn på selskap. Her er et eksempel på JSON for en stasjon: { "id": 509, "brandId": 1, "countryId": 1, "stationTypeId": 1, "name": "Svinesund E6", "location": "Svinesundparken 2, 1789 Berg i Østfold", "latitude": "59.12838", "longitude": "11.273174", "pending": 0, "deleted": 0, "createdAt": "2020-10-18T20:29:43.000+0000", "updatedAt": "2024-02-06T10:07:06.000+0000", "prices": [ { "id": 509, "fuelTypeId": 1, "currency": "Kr", "price": 19.49, "lastUpdated": 1707214026469, "createdAt": "2024-01-08T22:26:06.000+0000", "deleted": 0 }, { "id": 509, "fuelTypeId": 2, "currency": "Kr", "price": 18.99, "lastUpdated": 1707214026469, "createdAt": "2024-01-08T22:26:06.000+0000", "deleted": 0 }, { "id": 509, "fuelTypeId": 3, "currency": "Kr", "price": 22.31, "lastUpdated": 1707213631499, "createdAt": "2024-01-08T22:26:06.000+0000", "deleted": 0 }, Det hadde vært praktisk med et endepunkt/parameter for oppslag på spesifikk stasjons-ID, men det har jeg ikke funnet.
  10. Hjemme hos oss spør fruen ofte "kan jeg sette på vask nå?" (strømpris) eller "hvilket søppel er det som hentes denne uken" eller kommenterer "når ser det ut som at det er høy sjø!" (vi bor ved sjø), mens jeg selv ofte lurer på om det var i dag eller i morgen det er postlevering, og hva blir været? Så for å få denne informasjonen lett tilgjengelig og oppdatert så lot jeg meg friste og hev meg på denne nye trenden med bruk av epapir-skjermer for smarthus (https://github.com/jjwbruijn/OpenEPaperLink) En epapir-skjerm er lettlest i alt lys, er lett å plassere siden den bruker batteri, men egner seg ikke til live-data som oppdateres ofte. Det eksisterer en integrasjon med Home Assistand, men jeg bruker Homeseer så måtte løse dette på egenhånd. Man sender data til skjermenes aksesspunkt med HTTP Post. Må si meg ganske fornøyd med resultatet. Dette er en 7.5" skjerm. Planen var å bruke prosjektet til å lære meg Python, men jeg feiget ut når jeg skjønte rekkevidden av integrasjonene og trøbbelet med å feilsøke dette i ukjent språk. Jeg valgte derfor å bruke PowerShell, som er noe jeg kan men som er uvanlig brukt for slike behov. Det gjorde API-er enkelt for meg, men gav meg noen utfordringer rundt å generere bildet som ble sendt til skjermen. Skjermen har kun fargene hvit, sort og rød, så bildedata som sendes kan ikke ha noen form for aliasing rundt fonter eller grafikk. Det var krevende å finne en font som passet i lite format uten aliasing. Data som vises er. Strømpris for dagen i dag, eller dagen i dag + 8 timer dersom neste dags priser er tilgjengelig. Data fra Moskus sin Tibberseer i Homeseer. Grafen tilpasses også dersom det er negative strømpriser. Dager for levering av post fra Bring sitt API: https://developer.bring.com/ Varslet tidevann fra Kartverket sitt API: https://www.kartverket.no/api-og-data/tidevann-og-vannstandsdata Søppeltømming fra Norkart. Her er det ikke fritt publisert API med med hjelp fra innlegg her på forumet fra Moskus og Clio75 så kom jeg et stykke på vei, men det var endringer i både URL og annet som gjorde at jeg måtte grave en del selv for å finne ut av dette. Vær neste halve dag og data om soloppgang, solnedgang og elevasjon fra Yr.no: https://api.met.no/ Strømforbruk fra Homeseer. Her har jeg enheter som logger forbruk, og med events og scripts i Homeseer mellomlagrer jeg informasjon i virtuelle devicer og lagrer daglig informasjon til CSV-filer. Disse CSV-filene benyttes som grunnlag for å beregne siste 30 dagers forbruk. Data fra eksterne API som bare trenger daglige oppdateringer blir cachet, slik at jeg ikke kaller disse API-ene mange ganger per dag. Kun Yr, havnivå og Tibberseer kalles hver time. Scriptet som gjør alt dette er per nå ganske tilpasset Homeseer og mitt oppsett der. Plan fremover nå er å oversette dette til Python slik at det er mer aktuelt å dele scriptet. Dersom noen lurer på noe spesifikt om bruk av API kan jeg delen denne delen av scriptet, kanskje i en annen diskusjon 🙂
  11. Ser også at Defa reklamerer for sin Power elbillader. Jeg har ingen erfaringer med den, men den virker interessant siden den støtter den åpne standarden OCPP 2.0.1 (inkl. wehicle to grid), og kan tilkobles både med wifi, LAN og 4/5G. Støtter lading etter strømpris gjennom sin egen app, dersom man ikke lager noe selv gjennom boksen sitt API. https://www.defa.com/no/produkt/defa-power-ladestasjon-22kw-m-6-meter-kabel-og-display/ Siden de reklamerer så tydelig for at de støtter åpen standard, så virker det jo som at det også er noe de mener er et konkurransefortrinn for dem. Jeg antar dokumentasjon er tilgjengelig og kan sjekkes. Har selv Easee og er fornøyd med det. Føler ikke at jeg har behov for lokal styring, men i en lengre horisont er det vel sannsynlig at jeg vil angre på det (når Easee avvikler skytjeneste om 0-20 år.
  12. Jeg testet akkurat, og den vil fungere med eurostikk og med vanlig schuko hvor kabelen er vinklet 90 grader fra stikket (typisk tilkoblingsledning) men trolig ikke dersom kabel går rett ut fra stikket (typisk tykke skjøteledninger). Edit: jeg testet i vertikalt dobbeltstikk inne, siden den normalt står i enkeltstikk ute. Kom akkurat på at jeg har også et horisontalt dobbeltstikk ute. Det er nok litt knapt med plass til en annen kabel dersom det er et horisontalt dobbeltstikk med lokk, og pinnene også står horisontalt.
  13. Har en slik Popp-bryter som det er lenket til ovenfor. Har fungert helt fint i 4-5 år utendørs. Den har god rekkevidde og måler også effekt og forbruk.
  14. Bare et tips siden jeg ser du bruker HS. Jeg benytter mcsMQTT-plugin for å lagre data fra HS direkte til InfluxDB. Plugin kan brukes på det viset selv om du ikke er interessert i MQTT-funksjonaliteten.
  15. Dersom du er litt teknisk anlagt, har du vurdert å bruke InfluxDB? Det er en database som egner seg spesielt bra for tidsserier. Det vil si at du kan logge oppdateringene fra målerne dine når de kommer, uavhengig av tid, og allikevel kunne aggregere opp timebaserte verdier og visualisere dem i grensesnitt eller hente verdier ut til Grafana. Helt nøyaktig blir det jo ikke, avhengig av hvor ofte måleren sender oppdatert verdi, men bra nok? Jeg prøvde å løse et lignende behov som deg for å avdekke hvor mye strøm vi brukte på oppvarming, varmtvann, klesvask osv. Kom så langt at jeg fikk lagret verdier i InfluxDB fra HS4 og gjorde noen proof-of-concept spørringer i databasen, men så la jeg det litt på vent av andre årsaker.
  16. Takk for tipset! Det er nok en ok workaround som jeg kan teste. Jeg ser at "tibber root" endrer status til "completed" eller noe lignende når den stopper, så mulig jeg kan lage en event på enten det eller at verdi ikke er endret på et tidsrom, for å unngå restarter når det ikke er nødvendig.
  17. Jeg har problemer med at live-data fra Tibber stopper med noen dagers mellomrom. Det hjelper da å trykke "restart listener". I config til plugin er det definert at listener skal restarte automatisk. Jeg aktiverte debug-log og ser at listener faktisk blir restartet men ved reconnect får den "connection refused". Det skyldes vel enten midlertidig driftsproblemer hos Tibber, eller kanskje plugin overskrider en terskel for datamengde? Kan jeg gjøre noe får å få dette til å bli mer robust, eller kan plugin kanskje endres slik at den prøver en ny restart på et senere tidspunkt? 11.29.2023 06:27:07 Legacy-Plugin Z-Wave Device: Bryter Varme Z-Water VBV returtemp Set to 37,77 (C) 11.29.2023 06:26:58 Legacy-Plugin TibberSeer Debug StartLiveMeasurementListener done! 11.29.2023 06:26:58 Legacy-Plugin TibberSeer ERROR StartLiveMeasurementListener FAILED! Ex.Message: Query execution failed: Received error when trying to fetch streaming device xxxxxxxsensurertxxxxx: Error: http://tibber_iot.production:3033/devices/xxxxxxsensurertxxxxxxxx/status connect ECONNREFUSED 10.0.3.11:3033 (locations: line: 1, column: 189) 11.29.2023 06:26:55 Legacy-Plugin Z-Wave Device: Termostat Kitchen Termostat kitchen Temperature 4 Set to 25,7 (C) 11.29.2023 06:26:54 Legacy-Plugin TibberSeer Debug StartLiveMeasurementListener starting... 11.29.2023 06:26:54 Legacy-Plugin TibberSeer Debug TibberRealtime new, root: 135 11.29.2023 06:26:54 Legacy-Plugin TibberSeer Debug RestartRealtime done! 11.29.2023 06:26:54 Legacy-Plugin TibberSeer Warning RestartRealtime triggered... 11.29.2023 06:26:49 Legacy-Plugin TibberSeer Warning RealTime measurements are not running. Waiting 5 seconds before restarting thread... 11.29.2023 06:26:47 Legacy-Plugin Z-Wave Device: Bryter Varme Z-Water VBV turtemp Set to 40,06 (C) 11.29.2023 06:26:47 Legacy-Plugin Z-Wave Device: Bryter Varme Z-Water VBV turtemp Set to 40,06 (C) 11.29.2023 06:26:44 Legacy-Plugin TibberSeer Warning RealTime measurements are not running. Waiting 10 seconds before restarting thread... 11.29.2023 06:26:34 Legacy-Plugin TibberSeer Warning RealTime measurements are not running. Waiting 20 seconds before restarting thread... 11.29.2023 06:26:24 Legacy-Plugin TibberSeer Warning RealTime measurements are not running. Waiting 30 seconds before restarting thread... 11.29.2023 06:26:21 Legacy-Plugin TibberSeer Warning IObserver OnCompleted: Live measurement stream has been terminated. 11.29.2023 06:26:21 Legacy-Plugin TibberSeer Debug IObserver OnError: The WebSocket is in an invalid state ('CloseReceived') for this operation. Valid states are: 'Open, CloseSent'
  18. Jeg hadde samme problemstilling med Ice for to-tre år tilbake. Fasiten fra deres tekniske support var at Ice og de fleste mobiloperatører ikke har tilstrekkelig offentlige IP-adresser tilgjengelig til å dekke alle mobile enheter (eller trådløse routere) og enhetene derfor i praksis deler eksternt tilgjengelige IP-er, og operatøren deretter NAT-er dette til enhetene i deres eget nett. Kalles CG-NAT. De kunne ikke garantere meg annet enn at min IP ikke var delt med andre enheter på samme mast som min. Derfor vil det ikke fungere med tilkobling fra internett og inn til IP, for uten kontekst av en forespørsel fra den mobile enheten så vet ikke operatør hvilken interne IP den skal rute forespørselen til. Ekstern IP kunne også endres ganske ofte. Jeg kunne betale ekstra månedlig for at de skulle reserver IP til meg. En skulle tro IPv6 endrer dette, så mulig dette fungerer annerledes nå. Eller kanskje vpn.telia.no er et APN hvor IP ikke deles på dette viset?
  19. Kan bekrefte at Z-TRM3 ikke er lydløs. Kommer klikk fra den.
  20. Jeg har tre stykk Z-TRM3 med uoffisiell firmware, vært i drift i 1,5 år. Benytter HS4, z-wave plugin 3.ett-eller-annet og UZB1. Inkludert insecure. Jeg husker at den ene av dem sluttet å respondere ved 2-3 tilfeller første måned eller to, inntil jeg oppgraderte til uoffisiell firmware. Siden har de vært stabile og fine. Jeg må derimot polle for å være sikker på at enkelte verdier er pålitelig oppdatert. Jeg mener det er termostatens status og en av temperaturene jeg må polle. Har dessverre ingen tips til hva som kan være løsning, annet enn å bekrefte at det fungerer hos meg med UZB1.
  21. Dette er ikke et script, men dekker kanskje eller forenkler behovet ditt?
  22. For meg høres det ut som at oppdaterte z-water2 er en nedgradering av forrige versjon. Jeg vet ikke hvilke forbedringer 800-chip innebærer, men alt annet er jo en dårligere løsning? Færre utganger, færre innganger og ikke innebygget strømforsyning.
  23. Den uoffisielle firmware er lenket til i et tidligere innlegg i denne diskusjonen. Den var nødvendig for min del for å få korrekt temperaturinformasjon. Jeg måtte fjerne termostaten, og inkludere den på nytt etter oppdatering. Lenke til innlegg:
  24. Mulig dette er en aktuell løsning? Aner ikke om man kan få til dette med Home Assistant
  25. Vet ikke om opprinnelig firmware er tilgjengelig noe sted, eller om det er mulig å flashe til den. Dersom du ikke klarer å inkludere så kan du prøve å resette enheten til fabrikkinnstillingene ved å holde inne knappen i minst ti sekunder. Og de vanlige problemkildene: kortest mulig avstand til hub ved inkludering, og "insecure" inkludering fungerer ofte bedre.
×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.