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

kristianml

Medlemmer
  • Innlegg

    39
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    2

kristianml vant dagen sist 15. februar

kristianml hadde mest likt innhold!

Hjemmeautomasjon

  • System
    HomeSeer

Nylige profilbesøk

Blokken for nylige besøkende er slått av og vises ikke for andre medlemmer.

kristianml sine prestasjoner

Kabelfører

Kabelfører (6/16)

  • Dedikert Sjeldent
  • Samarbeidspartner
  • Første innlegg
  • Reagerer godt
  • Uke én ferdig

Nylige merker

30

Nettsamfunnsomdømme

  1. Jepp, beklager litt feilinfo der 👍
  2. Bare et lite tips til andre som har vannmåler som ikke kan leses av trådløst, eller eventuelt man ikke har fått nøkkel. Homewizard har en enhet som leser av optisk/visuelt, er tilkoblet wifi og har lokalt API tilgjengelig, og støtter flere av de vanlige vannmålerne som er brukt her til lands. Kan gå på batteri og leser da av to ganger i døgnet til skytjeneste, men dersom tilkoblet strøm så kan den lese av kontinuerlig. API er kun tilgjengelig når den er tilkoblet strøm, og API er ganske enkelt med kun antall liter avlest og liter/minutter i øyeblikket. Det finnes modul for Home Assistant. Har montert denne hos meg selv. Fungerer helt fint, og var enkel å montere. Kan identifisere vannbruk ned på minuttet i HomeWizard sin app, men jeg tenker å få dette inn i smarthuset isteden. Så nå vet jeg hvor mye vann hver enkelt familiemedlem bruker når de dusjer, og kostnaden 🫢 https://api-documentation.homewizard.com/docs/v1/measurement/#watermeter-hwe-wtr https://helpdesk.homewizard.com/nb/articles/6287701-er-den-analoge-vannmaleren-min-kompatibel
  3. Ja de må være skikkelig skrudd til for å klare å stoppe flow, så da skjønner jeg at det var vanskelig å få oversikt over dette 👍
  4. Ja, så i 1 og 2 er det bra flow, ikke tre og fire, trolig pga at aktuator er stengt så klart.
  5. Opplevde det samme med ICE når jeg brukte det for noen år tilbake. Overvåkningskamera som var utilgjengelig i perioder. Kan dette være en aktuell problemstilling og løsning her:
  6. Jeg har nylig gjort dette i HS4 med den nye pluginen, men opplevde det omtrent som forventet unntatt en rar greie. Om jeg husker rett, trinn 1, velge source device, trinn to, velge assosiasjonsgruppe på source, trinn tre, velge endpoint. Men i listen over endpoint fant jeg at destination sine endpoints var repetert tre ganger nedover. Kun dersom jeg valgte den siste versjonen av endpoint så fungerte assosiasjonen.
  7. 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å.
  8. 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.
  9. 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.
  10. 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 🙂
  11. 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.")
  12. 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.
  13. 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)
  14. 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
  15. 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.
×
×
  • 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.