Vinnerliste
Populært innhold
Viser innholdet med mest poeng fra 06. feb. 2024 i alle områder
-
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
-
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
-
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
-
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
-
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
-
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 Svinesund1 poeng
Vinnerlisten er satt til Oslo/GMT+02:00