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

Vinnerliste

Populært innhold

Viser innholdet med mest poeng fra 06. feb. 2024 i alle områder

  1. Er ikke helt ferdig med API'et enda pga sykdom og andre ting som må prioriteres, men her er koden for de av dere som er interessert. Det vil genere en gyldig X-API-KEY, helt uten brukernavn eller passord. 😛 def get_api_key(): # Get the session token r = requests.get('https://api.drivstoffappen.no/api/v1/authorization-sessions') api_token = r.json().get('token') # Shift the string by one byte shifted_bytes = bytearray(api_token.encode('utf-8'))[1:] + bytearray([api_token.encode('utf-8')[0]]) shifted_string = shifted_bytes.decode('utf-8') # Calculate the MD5 hash of the shifted string md5_hash = hashlib.md5(shifted_string.encode('utf-8')).hexdigest() return md5_hash Så kan du gjøre spørring via: @app.get('/api/v1/brands') async def get_brands(): headers = { 'X-API-KEY': get_api_key(), 'X-CLIENT-ID': APPLICATION_ID } r = requests.get('https://api.drivstoffappen.no/api/v1/brands', headers=headers) if not r.ok: return {"error": f"Request failed with status code {r.status_code}"} return r.json() Jeg er ikke sikker på om jeg vil sette opp et åpent API til alle og enhver, men jeg kommer nok til å hive min docker kontainer ut på github så snart jeg er fornøyd med den. Så er det en smal sak å drifte sin egen eller konvertere den til en HA integrasjon.
    5 poeng
  2. Kjøpte ein smart sikring fra Kina eg hadde tenkt å ha stående ute i garasjen til test men eg greide å kjøpa wi-fi istedenfor zigbee og da det er noen som trur at nesten alle Kina sikringer består av kun ein vippebryter og to kobbertråder så tenkte eg det hadde vært artig å sjå hvordan den ser ut inni 🙂 Sånn kvalitetsmessig føles plastikken på ABB sikringen litt meir robust ut ellers virker det ganske likt, det var ingen loddepunkter eg greide å rive fra kvarandre på Kina sikringen. ABB sikring, rundt 20 år gammal.
    3 poeng
  3. Takk, fungerte bra. Aldri brukt Node-Red før, men her er flowen min. [{"id":"7ce7a7849c9c8b4e","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"276071b26f3e49a2","type":"inject","z":"7ce7a7849c9c8b4e","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":160,"y":220,"wires":[["fb25d94b.139e78"]]},{"id":"fb25d94b.139e78","type":"http request","z":"7ce7a7849c9c8b4e","name":"Get Token","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/authorization-sessions","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":330,"y":220,"wires":[["9b28d83a.0226d"]]},{"id":"9b28d83a.0226d","type":"function","z":"7ce7a7849c9c8b4e","name":"Process Token","func":"msg.token = JSON.parse(msg.payload).token;\nmsg.tokenBytes = Buffer.from(msg.token);\nmsg.shiftedBytes = Buffer.concat([msg.tokenBytes.slice(1), msg.tokenBytes.slice(0, 1)]);\nmsg.shiftedToken = msg.shiftedBytes.toString();\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":520,"y":220,"wires":[["bc5b206f4b80b029"]]},{"id":"17f2e29c.f0c2b3","type":"http request","z":"7ce7a7849c9c8b4e","name":"API Request","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/stations?stationTypeId=1","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-API-KEY","valueType":"msg","valueValue":"md5Hash"},{"keyType":"other","keyValue":"X-CLIENT-ID","valueType":"other","valueValue":"com.raskebiler.drivstoff.appen.ios"}],"x":850,"y":220,"wires":[["77f3986f.d5f32c"]]},{"id":"77f3986f.d5f32c","type":"debug","z":"7ce7a7849c9c8b4e","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1030,"y":220,"wires":[]},{"id":"bc5b206f4b80b029","type":"md5","z":"7ce7a7849c9c8b4e","name":"MD5","fieldToHash":"shiftedToken","fieldTypeToHash":"msg","hashField":"md5Hash","hashFieldType":"msg","x":690,"y":220,"wires":[["17f2e29c.f0c2b3"]]}]
    1 poeng
  4. 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)
    1 poeng
  5. Perfekt, takk @kristianml og @NeoID. Må bare få skrevet om filteret i Node-RED flow'en nå. Var litt endringer der som du skrev.
    1 poeng
  6. 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
    1 poeng
Vinnerlisten er satt til Oslo/GMT+01:00
×
×
  • 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.