Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon! 🥇🥈🥉

Vinnerliste

Populært innhold

Viser innholdet med mest poeng siden 28. feb. 2025 i alle områder

  1. Jeg har laget min første Home Assistant-integrasjon - Google pollen! Jeg kan egentlig ikke Python, men kan programmere i andre språk. Så jeg klarer å lese og forstå Python, men ikke å «skrive det fra bunn». Ble ganske imponert over Github Copilot, som ganske kjapt og enkelt lagde en fungerende kode som jeg kunne bruke som utgangspunkt! Koden ligger her: https://github.com/svenove/home-assistant-google-pollen
    5 poeng
  2. ...og så kan det jo være greit å ha i bakhånd litt top-notch medisinsk verneutstyr i tilfelle media slipper ut et nytt virus som vi må beskytte oss mot:
    4 poeng
  3. Omsider fått litt system på Piene mine. Fant ikke noe jeg likte på nett så laget selv... https://www.printables.com/model/1220361-rpi-5-nvme-poe-cabinet-and-rack Og når jeg først var i seget så fixet jeg automatisk backup til Synology etter denne oppskriften...
    3 poeng
  4. Fil med oppdatert Guide ligger vedlagt (Beklager feilen der!) En fullverdig oppdateringslogg kommer så fort den er klar, jeg ville dele den med dere så fort vi fikk filene oversendt! I korte trekk: - Oppdatering av kildekode til nyeste versjon - Endring fra Zigbee End device til Router device - Rettet feil som resulterte i Zigbee drop - Endret så komfyrvakten kan slås av/på via Zigbee Verdiene du har unknown på i oversiken i HA rapporterer ikke komfyrvakten noe data på. Vakten rapporterer: - Effekt (W) - kWh - Temperatur (Når vakten er aktiv og trekker strøm). Rundt den nye muligheten til å kunne slå på relé via Zigbee så har vi fått det vurdert at dette er innenfor kravene for sikkerhet. I tilfellet hvor vakten har slått ut og den forsøkes å slås på igjen vil den igjen slå ut så lenge det er en fare tilstede. 140279X-Firmware.zip
    2 poeng
  5. Hei alle sammen! En gledens dag er kommet og vi kan endelig slippe FW oppdateringen til Namron Komfyrvakt! Selve oppdateringen må gjennomføres via Bluetooth og guide ligger vedlagt i zip-filen. Kjør oppdatering og kom gjerne med feedback! 140279X-Firmware.zip
    2 poeng
  6. Eg fekk det til! Det var ein nyare versjon av z-wave plugin tilgjengelig (3.0.11.0), oppdaterte til denne og tok ny rescan og då dukka resten av child-devicane opp. Eg har ordna meg med HS4-lisens, men har per no ikkje sett nokon store fordeler med å oppgradere. Til no var dette det aller første tilfellet av trøbbel med inkludering av z-wave, og det løyste seg denne gongen òg. Det stemmer med prinsippet at z-wave skal vere z-wave med krav til kompabilitet på tvers av ulike fabrikat - i motsetning til zigbee der det kan vere ganske bob-bob om det fungerer på tvers eller ei. Eg har ein heil del NodeMCU-kort til bl.a. garasjeportovervåking, temperaturmålingar m.m., og samtlige av desse må rekonfigurerast ved overgang til HS4, då HS3-plugin ikkje er støtta av HS4. Så dette er den største og viktigaste grunnen til at eg ikkje har oppgradert. Fordi resten fungerer faktisk knirkefritt.
    2 poeng
  7. Her er kode for å hente inn pris for hver time i dag og i morgen. Den henter også inn pris for aktuell time, men det bruker jeg ikke til noe. Jeg er kun interessert i attributten "prices". Hvis du skal bruke aktuell pris i sensorens tilstand så ville jeg satt scan_interval til en mye høyere verdi, feks en gang i døgnet. Og heller trigget en oppdatering med en automasjon som kjører hver hele time med action: homeassistant.update_entity data: entity_id: - sensor.hvakosterstrommen_price_today command_line: - sensor: scan_interval: 1800 command: > echo "{\"prices\":" $( curl -s 'https://www.hvakosterstrommen.no/api/v1/prices/{{ now().strftime('%Y/%m-%d') }}_NO2.json' ) "}" name: "hvakosterstrommen_price_today" value_template: "{{ (value_json.prices | selectattr('time_start', 'match', now().strftime('%Y-%m-%dT%H:00')) | list | first)['NOK_per_kWh'] }}" unit_of_measurement: "NOK/kWh" json_attributes: - prices - sensor: scan_interval: 1800 command: > echo "{\"prices\":" $( curl -s 'https://www.hvakosterstrommen.no/api/v1/prices/{{ (now()+timedelta(days=1)).strftime('%Y/%m-%d') }}_NO2.json' ) "}" name: "hvakosterstrommen_price_tomorrow" value_template: "{{ (value_json.prices | selectattr('time_start', 'match', (now()+timedelta(days=1)).strftime('%Y-%m-%dT%H:00')) | list | first)['NOK_per_kWh'] }}" unit_of_measurement: "NOK/kWh" json_attributes: - prices
    2 poeng
  8. @Venin Da har du kommet i kontakt med en som ikke viste bedre, jeg skal prate med gutta på support. Men vi jobber med home assistant integrasjon as we speak :)
    2 poeng
  9. Her er den forenklede flowen jeg kom fram til, basert på den @SveinHa laget. Veldig enkel, den henter lista over stasjoner, filtrerer ut de jeg skal ha (hvis noen vil bruke den, kan de endre ID-en i Chosen Stations-switchen til det man trenger) og så skal jeg sende resultatet til Home Assistant som MQTT, til en MQTT-sensor for hver stasjon. Denne skal jeg så sette til å varsle meg i det øyeblikket en av stasjonene går under 19 kroner. Dermed kan jeg fylle de seks kannene til Mad Max når det er grei pris. 😀 [{"id":"15c0f11d3fc4b3f7","type":"tab","label":"Bensinpriser","disabled":false,"info":"","env":[]},{"id":"fb3c8172638a8fb7","type":"function","z":"15c0f11d3fc4b3f7","name":"List all stations & create flow.stations","func":"var brands = flow.get(\"brands\");\nvar statsRaw = flow.get(\"stationsRaw\");\n//flow.set(\"Stations\",msg.payload);\n//node.warn( \"pl.length: \" + statsRaw.length);\nvar arr = [];\nvar arr2 = [];\nvar obj2 = {}\nvar msg2 = {}\nvar i = 0;\nvar j = 0;\nfor (i = 0;i < statsRaw.length;i++){\n let obj = {}\n //if (i == 2150)i++;\n //if (i == 2302)i++;\n //if (i == 2305)i++;\n //if (i == 3512)i++;\n obj.id = statsRaw[i].id;\n obj.name = statsRaw[i].name || \"-\"\n // Find brand from brandId\n for (j = 0;j < brands.length;j++){\n if (Number(statsRaw[i].brandId) == Number(brands[j].id)){\n obj.brand = brands[j].name || \"-\"\n obj.logo = brands[j].pictureUrl || \"-\"\n //node.warn(i + \" \" + j + \" \" + brands[j].name);\n break;\n }\n }\n obj.location = statsRaw[i].location || \"-\"\n // Add prices, some stations miss prices, skip these\n //node.warn(\"Add prices\");\n var obj3 = {}\n //console.log(statsRaw[i].prices.length);\n if (statsRaw[i].hasOwnProperty(\"prices\")){ // skip no-price stations\n for (j = 0;j < statsRaw[i].prices.length;j++){\n //node.warn(\"Add prices: \" + i + \" \" + j);\n var ftid = statsRaw[i].prices[j].fuelTypeId;\n if (ftid == 1 && statsRaw[i].prices[j].price != 0){ \n obj3.D = {}\n obj3.D.price = statsRaw[i].prices[j].price;\n obj3.D.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.D.type = \"D\";\n }\n if (ftid == 2 && statsRaw[i].prices[j].price != 0){ \n obj3.B95 = {}\n obj3.B95.price = statsRaw[i].prices[j].price;\n obj3.B95.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.B95.type = \"B95\";\n } \n if (ftid == 3 && statsRaw[i].prices[j].price != 0){\n obj3.B98 = {}\n obj3.B98.price = statsRaw[i].prices[j].price;\n obj3.B98.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.B98.type = \"B98\";\n }\n if (ftid == 4 && statsRaw[i].prices[j].price != 0){\n obj3.FD = {}\n obj3.FD.price = statsRaw[i].prices[j].price;\n obj3.FD.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.FD.type = \"FD\";\n }\n }\n }//skip to here\n// console.log(obj3);\n obj.prices = obj3;\n\n \n arr.push(obj);\n}\nmsg2.payload = arr;\nflow.set(\"stationsPrepd\",arr);\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":450,"y":60,"wires":[["c2d1e13e56588a8a","c1c5aa4d46a165c5"]]},{"id":"c2d1e13e56588a8a","type":"debug","z":"15c0f11d3fc4b3f7","name":"debug 163","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":730,"y":60,"wires":[]},{"id":"3ca26b9597ee0d04","type":"http request","z":"15c0f11d3fc4b3f7","name":"API Request","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/brands?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":170,"y":460,"wires":[["a9261673840aeca8"]]},{"id":"a9261673840aeca8","type":"json","z":"15c0f11d3fc4b3f7","name":"","property":"payload","action":"","pretty":false,"x":170,"y":500,"wires":[["25f7fa92bc718299"]]},{"id":"25f7fa92bc718299","type":"change","z":"15c0f11d3fc4b3f7","name":"set flow.brands","rules":[{"t":"set","p":"brands","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":180,"y":540,"wires":[[]]},{"id":"29b1a398cccaf5a6","type":"change","z":"15c0f11d3fc4b3f7","name":"set.flow.token2","rules":[{"t":"set","p":"token2","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":180,"y":420,"wires":[["3ca26b9597ee0d04"]]},{"id":"095efa33e8e7ca2a","type":"http request","z":"15c0f11d3fc4b3f7","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":170,"y":160,"wires":[["94baceb2b3417947"]]},{"id":"94baceb2b3417947","type":"function","z":"15c0f11d3fc4b3f7","name":"Process Token","func":"//console.log(\"Dieselpriser innhentes\");\nmsg.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":180,"y":200,"wires":[["bd3b870b7b49c6c2"]]},{"id":"fb42916801687aaf","type":"json","z":"15c0f11d3fc4b3f7","name":"","property":"payload","action":"","pretty":false,"x":150,"y":320,"wires":[["03a73177837e15f9"]]},{"id":"3bc1810bb50310ce","type":"http request","z":"15c0f11d3fc4b3f7","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":170,"y":280,"wires":[["fb42916801687aaf"]]},{"id":"03a73177837e15f9","type":"change","z":"15c0f11d3fc4b3f7","name":"set flow.stationsRaw","rules":[{"t":"set","p":"stationsRaw","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":200,"y":360,"wires":[["fb3c8172638a8fb7"]]},{"id":"caac60185af71f64","type":"delay","z":"15c0f11d3fc4b3f7","name":"","pauseType":"delay","timeout":"4","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":160,"y":120,"wires":[["095efa33e8e7ca2a"]]},{"id":"c1c5aa4d46a165c5","type":"split","z":"15c0f11d3fc4b3f7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":370,"y":180,"wires":[["58e35b7807c9b092"]]},{"id":"58e35b7807c9b092","type":"switch","z":"15c0f11d3fc4b3f7","name":"Chosen stations","property":"payload.id","propertyType":"msg","rules":[{"t":"eq","v":"2088","vt":"num"},{"t":"eq","v":"25148","vt":"num"},{"t":"eq","v":"156","vt":"num"},{"t":"eq","v":"167","vt":"num"},{"t":"eq","v":"235","vt":"num"},{"t":"eq","v":"946","vt":"num"},{"t":"eq","v":"815","vt":"num"},{"t":"eq","v":"2263","vt":"num"}],"checkall":"true","repair":false,"outputs":8,"x":540,"y":160,"wires":[["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"]]},{"id":"b56273e5ea99c3fc","type":"inject","z":"15c0f11d3fc4b3f7","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"*/10 6-20 * * *","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":150,"y":60,"wires":[["caac60185af71f64"]]},{"id":"c843fa224c3d90f9","type":"debug","z":"15c0f11d3fc4b3f7","name":"debug 170","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":730,"y":360,"wires":[]},{"id":"2268b0ed56350566","type":"function","z":"15c0f11d3fc4b3f7","name":"Convert to message","func":"msg.topic = \"Bensinstasjoner\";\nvar kjede = msg.payload.brand;\nvar navn = msg.payload.name;\nconst diff = new Date().getTime() - msg.payload.prices.B95.lastUpdated;\nvar timer = Math.floor(diff/1000/60/60);\nvar minutter = Math.floor((diff/1000/60/60 - timer )*60);\nmsg.payload['stasjon'] = kjede + ' ' + navn;\nmsg.payload['pris'] = msg.payload.prices.B95.price;\nmsg.payload['timer'] = timer;\nmsg.payload['minutter'] = minutter;\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":160,"wires":[["ca552240d225b271"]]},{"id":"ca552240d225b271","type":"change","z":"15c0f11d3fc4b3f7","name":"Remove unnecessary fields from array","rules":[{"t":"delete","p":"payload.prices","pt":"msg"},{"t":"delete","p":"payload.id","pt":"msg"},{"t":"delete","p":"payload.logo","pt":"msg"},{"t":"delete","p":"payload.name","pt":"msg"},{"t":"delete","p":"payload.brand","pt":"msg"},{"t":"delete","p":"payload.location","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":280,"wires":[["c843fa224c3d90f9"]]},{"id":"bd3b870b7b49c6c2","type":"md5","z":"15c0f11d3fc4b3f7","name":"MD5","fieldToHash":"shiftedToken","fieldTypeToHash":"msg","hashField":"md5Hash","hashFieldType":"msg","x":150,"y":240,"wires":[["3bc1810bb50310ce","29b1a398cccaf5a6"]]},{"id":"7c6ba7685c1bbfb6","type":"comment","z":"15c0f11d3fc4b3f7","name":"Show chosen stations with price and update time","info":"","x":460,"y":20,"wires":[]}] @SveinHa Det stemmer at de har ladere på Esso i Mandalskrysset. Og så er det McDonald's der også, det er sikkert en ren tilfeldighet... 🤣 Ellers ser jeg at det nye oppsettet ditt gir ekstra felter i arrayen, men mente du å duplisere dem, eller skulle du egentlig ta bort de gamle feltene?
    2 poeng
  10. Du finner mye omtale av denne switchen her:
    1 poeng
  11. Jeg ville vært forsiktig med å bruke det bittelille releet i en shelly til VVB. Den skal stå på mange timer i strekk. Selv har jeg gått for en 25A kontaktor som er styrt av en shelly, da skal det ikke være noen risiko for varmgang. Men dette krever jo elektriker.
    1 poeng
  12. Du har jo også f.eks. https://www.elektroimportoren.no/shelly-1pm-gen3/1403029/Product.html Problemet med "smartplugs" på bereder er ikke den smarte biten men rett og slett at de har en Schuko-kontakt (vanlig 16A stikkontakt/støpsel) i begge ender og selv om de er godkjent for 16A har de vist seg å ikke tåle på langt nær 16A over lang tid og det viser seg på brannstatistikken...
    1 poeng
  13. Nå har jeg Aeotec Heavy Duty Switch på vv-bereder, både hjemme og på hytta. Ser du ikke vurderer den som alternativ, den bruker jo Zwave. Det jeg kan legge til er at jeg tidligere har benyttet en Verisure smartplugg på vv-berederen (2 kW) på hytta i 10 år uten problemer. Ingen synlige spor etter varmgang på den, slik det var på både pluggen og stikkontakten på min 3kW bereder hjemme (den har ikke vært tilkoblet styring før den ble tilkoblet Aeotec switchen). Regelen nå er jo at alle nye vv-beredere over 1500W skal tilkobles fast - ergo ingen plugg som kan plugges i en smartplugg. Men det gjelder jo kun nye enheter, så det er ingen som krever at du endrer noe her. Selv byttet jeg til Aeotec også på hytta når jeg uansett skulle ha elektriker inn på et annet oppdrag, slik du også vurderer her nå. Finner du en egne enhet så er jobben fort gjort og en potensiell bekymring fjernet.
    1 poeng
  14. Jeg bruker helt vanlige alkaliske batterier, de siste par årene kjøpt på Clas Ohlson. Har også brukt Ikea sine. Hvor lenge de har vart er jeg litt usikker på, men kan ikke se at jeg har opplevd behov for bytte så ofte at det har vært til plage. Home Assistant (HACS integrasjonen Battery Notes) logger kun når jeg sist byttet batteri, så det jeg kan si er at de på hytta har vart i 5 mnd, de i garasjen i 4 mnd, mens huset nylig ble byttet uten at jeg husker hvor lenge de da hadde vart, men tipper minst 4 mnd. Huset og garasjen åpnes flere ganger daglig, den på hytta mye sjeldnere. Oppladbare er naturligvis interessant å vurdere fremover. Jeg bruker Ikea sine i de sensorene jeg har kjøpt fra Ikea og annet smarthusutstyrsom aksepterer 1,2v batterier. Ang evt døde batterier og mangel på nye så er det mulig både å låse igjen og låse opp døren fra innsiden uten at det står batterier i. Dette er beskrevet i brukerveiledningen på side 24: "4. Lås opp ved å vri dørvrideren (C) 90 grader, mot hengslene. Vri hele veien forbi ”kneppet”. 5. Dra in hakrereilen (B) med dørvrideren (D).". Hvis dette er en leilighet der døren er eneste vei ut på bakkenivå er det lurt å lære alle i leiligheten hvordan dette fungerer. Det er lettere å få det til om behov brått oppstår hvis man har gjort det i praksis et par ganger i ro og fred.
    1 poeng
  15. Denne satt langt inne!! Nå ser det ihvertfall ut til at jeg har fått kontakt. Etter å ha sendt e-post til systemair support fikk jeg beskjed om disse default verdiene: - address = 0 - Baudrate = 1200 - Parity = None - Stopbits = 1 Fikk fortsatt ikke mottatt noe med disse. Leste litt mer og kom over noe om at slave address 0 bare var mulig å sende til. Brukte så QModMaster til å skrive til modbus register 17001 og legge inn ny slave adresse. Nå har jeg kontakt og får det opp i HA.
    1 poeng
  16. Du har også en annen mer direkte metode som kan brukes. En automasjon som, når prisen går under aktuelt nivå, deaktiverer automasjonene som skal skru av vv-bereder mm. Du vil da trenge en automasjon som aktiverer disse automasjonene igjen når prisen går over valgt nivå. Jeg bruker denne metoden for de automasjoene som styrer klargjøring av hytta (oppvarming av hytta og varmtvann mm). Enn så lenge aktiverer jeg disse manuelt etter å ha sjekket strømprisene et døgn eller to før vi skal til hytta, slik at vi både utnytter de billigste timene og skrus på ting i en slik rekkefølge at hytta holder seg innenfor valgt effekt-trinn (har regler for det også, men greit å ha litt kontroll på rekkefølgen på oppvarmingen). Disse automasjoene har da en aksjon helt til slutt som deaktiverer den aktuelle automasjonen:
    1 poeng
  17. Jeg har tatt i bruk hjelpere for å få bedre kontroll på mine automasjoner. I dette tilfellet mener jeg du kan oppnå det du vil ved å opprette en Boolean/Toggle hjelper. Så lager du en automasjon som skrur den på når strømprisen er under valgt nivå og en annen automasjon som skrur den av når prisen går over dette nivået. Deretter kan du bruke denne hjelperen som et vilkår (at den må være av for at vilkåret skal være oppfylt) for automasjoene som skal skru av de aktuelle utstyret.
    1 poeng
  18. Lag deg en output til bryteren og tegn opp med og/eller mellom de forskjellige input-variablene. Da blir det litt enklere å få oversikt over logikken
    1 poeng
  19. Den er jo ikke støttet i HS3, så sannsynligheten for at det noensinne vil fungere er svært liten. Men hvorfor bruke HS3? Det er nesten 5 år siden HS4 kom, og den er fullstendig overlegen på alle mulige måter. Der har du nå en ny plugin som heter Zwave plus, og som i bunn og grunn er det samme som Zwave JS (som brukes i Home Assistant). Antallet støttede enheter er helt enormt, og IDLock er på listen. Så vidt meg bekjent skal alle IDLock fungere utmerket med Zwave JS. Men da må du altså enten bruke Homeseer 4 og Zwave plus, eller Home Assistant.
    1 poeng
  20. DETTE! Jeg tar imot strømstøtten med åpne armer all den tid den tilbys, men om det hadde vært brukt like mye penger på å subsidiere både aktive og passive sparetiltak hadde det vært mye bedre for oss alle. Vi har en høyere energibruk per innbygger enn vi trenger å ha, og det er der skoen trykker. Ikke på strømprisen. Og for å kaste inn noen kjetterske tanker; den strømmen vi sparer her til lands gjennom nye sparetiltak kan vi jo selge til kontinentet. Det er vinn-vinn. Kaster inn denne n00b-tanken helt mot slutten; vi har verdens nest(?) lengste kystlinje her, kun slått av Canada. Og denne kystlinjen er velsignet med fenomenet Golfstrømmen. Det MÅ da være mulig å lage fjernvarmeanlegg og varmekraftverk langsmed hele kysten fra Bodø og sørover som utnytter denne havvarmen?
    1 poeng
  21. Hei Pål, dette er absolutt et stykke arbeid dere bør prioritere høyt og i min bok bør dette være et absolutt krav i avtalen med underleverandør. Zigbee2mqtt har bred støtte hos de aller fleste store hjemmeautomasjons sytemene - Home Assistant: https://www.zigbee2mqtt.io/guide/usage/integrations/home_assistant.html - ioBroker: https://github.com/arteck/ioBroker.zigbee2mqtt - Homey: https://homey.app/no-no/app/com.gruijter.zigbee2mqtt/Zigbee2MQTT/ - openHABian: https://www.zigbee2mqtt.io/guide/installation/04_openhabian.html - Homeseer: https://homeseer.com/zigbee-plus-plugin/ - Domoticz: https://wiki.domoticz.com/Zigbee2MQTT m.fl..... At dere støtter Z2M fullt ut vil øke deres potensielle kundemasse betraktelig.
    1 poeng
  22. Hei! Vil bare komme med en oppdatering her 🙂 Vi er nå i siste fase med test og leverandøren har fått luket ut bugs og Zigbee dropp. Vi vil slippe oppdateringen så fort FW er ferdig testet og signert. Oppdateringen må gjennomføres på både sensor og kontakt igjennom Bluetooth. nrfTools appen er å foretrekke og er tilgjengelig for både Android og IOS. Takk for at dere er tolmodige! /Pål - Namron
    1 poeng
  23. Jeg trakk en mengde trekkerør selv til datakabling da huset ble bygget i 2000. Løsningen den gang var veldig enkel, med et «skap» for spredenett i mellomrommet i veggen. Rørene i toppen er bare trukket gjennom bjelken, mens de i bunn er sikret med halvparten av et skjøtestykke for trekkerør. Denne metoden kan sikkert brukes i et skikkelig skap også, du trenger bare en plate med passende hull til å feste enden av røret i.
    1 poeng
  24. Nå vil jeg påstå at det aller meste av den 3D printingen jeg gjør har en vesentlig nytteverdi men noe som er bare for gøy gjør jeg selvsagt også . Tenkte denne tråden kunne samle en del av det mindre seriøse vi 3D printere driver med. For å starte en plass så har jeg irritert meg litt på fløyten i plystrekjelen, lite og varierende lyd... Dette MÅ jo kunne fikses enkelt tenkte jeg og lastet ned og printet noen fløyter. Ikke alle var på langt nær gode nok men spesielt EN utmerket seg med tydelig lyd med ganskje beskjeden "vind". Laget meg et adapter til kjelen etter mål fra den utvalgte fløyten i Onshape og gjorde et forsøk. INGEN lyd... Blåste i den og den virket helt fint... Fant en spesiallaget fløyte som skulle være designet for akkurat dette bruket, justerbar til og med, men lite hell med den også... Etterhvert ble den en del forsøk men varierende hell (litt pent språk for "elendig") og endte opp med bl.a. disse her: Den store oransje er "spesialdesignet" og de 2 mindre er mine modifikasjoner som hadde en smule nedsmelting pga feil materiale... Den røde til høyre er første forsøk med ferdigfløyte fra nett og resten er nå diverse forsøk... De svarte nede til venstre er Tsjernobyl utgavene, total nedsmelting, ikke på kjelen men i 3D printeren... PC-FR er ikke helt enkelt i bruk men tåler temperatur opp i rundt 150 grader uten deformering... Har nå laget en mengde seljefløyter så dette burde jo ikke være såååå vanskelig... Er endt opp slik: Ikke veeeeeldig imponerende men i alle fall bedre enn utgangspunktet...
    1 poeng
  25. Har du prøvd integrasjonen? https://www.home-assistant.io/integrations/smartthings
    1 poeng
  26. Ansvarsrett har nå ikke noe med dette å gjøre, men en må nok oppfylle kravene i FEK ja: Den som har det faglige ansvaret for arbeid knyttet til elektriske anlegg i egen bolig og fritidsbolig skal oppfylle kravene i første ledd eller ha relevant fagbrev og tre års praksis fra bygging og vedlikehold av lavspenningsanlegg.
    1 poeng
  27. Ser ut til at jeg løste denne selv. Tydeligvis en enhet som er blitt rebrandet flere steder "Artig" å se at rødt lys betyr at man bruker den som sengelampe. Mye rart folk finner på å putte inn i elektroniske enheter. Link til manual (ikke helt lik siden det bl.a. er snakk om NFC og app, men jeg antar at iallefall programmene for de forskjellige fargene er korrekt) https://www.manualslib.com/manual/2063353/Vilmorin-Vilma.html?page=4#manual
    1 poeng
  28. Snart 3 år er gått. 433MHz fungerer fortsatt som den skal. Z-wave tok kvelden for ett år siden. Mulig det er noe fukt som har kommet seg inn i enhet. Siden 1 av 2 fungerer så har jeg ikke orket å demontere. Skulle begge feile så tror jeg muligens jeg kommer til å begynne å kikke på noe slikt (Lorawan)
    1 poeng
  29. Jeg fant en måte for å hente ut stasjons-ID, det var lett da jeg fattet det. Det blir for mye data for en debug-node, så da må det jo filtreres. Jeg la til en switch-node som slapp igjennom de som hadde et navn der msg.payload.name inneholdt det stasjonen heter. Jeg har også en som søker på adressen, da kan man dekke et større område. Her er flowen med switchnoden som søker opp stasjoner etter navn og adresse, satt opp med å søke på Mandal som sted og Åseral som navn (der det ligger en Tank-stasjon): [{"id":"15c0f11d3fc4b3f7","type":"tab","label":"Bensinpriser","disabled":false,"info":"","env":[]},{"id":"fb3c8172638a8fb7","type":"function","z":"15c0f11d3fc4b3f7","name":"List all stations & create flow.stations","func":"var brands = flow.get(\"brands\");\nvar statsRaw = flow.get(\"stationsRaw\");\n//flow.set(\"Stations\",msg.payload);\n//node.warn( \"pl.length: \" + statsRaw.length);\nvar arr = [];\nvar arr2 = [];\nvar obj2 = {}\nvar msg2 = {}\nvar i = 0;\nvar j = 0;\nfor (i = 0;i < statsRaw.length;i++){\n let obj = {}\n //if (i == 2150)i++;\n //if (i == 2302)i++;\n //if (i == 2305)i++;\n //if (i == 3512)i++;\n obj.id = statsRaw[i].id;\n obj.name = statsRaw[i].name || \"-\"\n // Find brand from brandId\n for (j = 0;j < brands.length;j++){\n if (Number(statsRaw[i].brandId) == Number(brands[j].id)){\n obj.brand = brands[j].name || \"-\"\n obj.logo = brands[j].pictureUrl || \"-\"\n //node.warn(i + \" \" + j + \" \" + brands[j].name);\n break;\n }\n }\n obj.location = statsRaw[i].location || \"-\"\n // Add prices, some stations miss prices, skip these\n //node.warn(\"Add prices\");\n var obj3 = {}\n //console.log(statsRaw[i].prices.length);\n if (statsRaw[i].hasOwnProperty(\"prices\")){ // skip no-price stations\n for (j = 0;j < statsRaw[i].prices.length;j++){\n //node.warn(\"Add prices: \" + i + \" \" + j);\n var ftid = statsRaw[i].prices[j].fuelTypeId;\n if (ftid == 1 && statsRaw[i].prices[j].price != 0){ \n obj3.D = {}\n obj3.D.price = statsRaw[i].prices[j].price;\n obj3.D.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.D.type = \"D\";\n }\n if (ftid == 2 && statsRaw[i].prices[j].price != 0){ \n obj3.B95 = {}\n obj3.B95.price = statsRaw[i].prices[j].price;\n obj3.B95.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.B95.type = \"B95\";\n } \n if (ftid == 3 && statsRaw[i].prices[j].price != 0){\n obj3.B98 = {}\n obj3.B98.price = statsRaw[i].prices[j].price;\n obj3.B98.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.B98.type = \"B98\";\n }\n if (ftid == 4 && statsRaw[i].prices[j].price != 0){\n obj3.FD = {}\n obj3.FD.price = statsRaw[i].prices[j].price;\n obj3.FD.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.FD.type = \"FD\";\n }\n }\n }//skip to here\n// console.log(obj3);\n obj.prices = obj3;\n\n \n arr.push(obj);\n}\nmsg2.payload = arr;\nflow.set(\"stationsPrepd\",arr);\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":450,"y":120,"wires":[["c1c5aa4d46a165c5"]]},{"id":"c2d1e13e56588a8a","type":"debug","z":"15c0f11d3fc4b3f7","name":"debug 163","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1070,"y":120,"wires":[]},{"id":"3ca26b9597ee0d04","type":"http request","z":"15c0f11d3fc4b3f7","name":"API Request","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/brands?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":130,"y":520,"wires":[["a9261673840aeca8"]]},{"id":"a9261673840aeca8","type":"json","z":"15c0f11d3fc4b3f7","name":"","property":"payload","action":"","pretty":false,"x":130,"y":560,"wires":[["25f7fa92bc718299"]]},{"id":"25f7fa92bc718299","type":"change","z":"15c0f11d3fc4b3f7","name":"set flow.brands","rules":[{"t":"set","p":"brands","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":140,"y":600,"wires":[[]]},{"id":"29b1a398cccaf5a6","type":"change","z":"15c0f11d3fc4b3f7","name":"set.flow.token2","rules":[{"t":"set","p":"token2","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":140,"y":480,"wires":[["3ca26b9597ee0d04"]]},{"id":"095efa33e8e7ca2a","type":"http request","z":"15c0f11d3fc4b3f7","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":130,"y":220,"wires":[["94baceb2b3417947"]]},{"id":"94baceb2b3417947","type":"function","z":"15c0f11d3fc4b3f7","name":"Process Token","func":"//console.log(\"Dieselpriser innhentes\");\nmsg.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":140,"y":260,"wires":[["bd3b870b7b49c6c2"]]},{"id":"fb42916801687aaf","type":"json","z":"15c0f11d3fc4b3f7","name":"","property":"payload","action":"","pretty":false,"x":110,"y":380,"wires":[["03a73177837e15f9"]]},{"id":"3bc1810bb50310ce","type":"http request","z":"15c0f11d3fc4b3f7","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":130,"y":340,"wires":[["fb42916801687aaf"]]},{"id":"03a73177837e15f9","type":"change","z":"15c0f11d3fc4b3f7","name":"set flow.stationsRaw","rules":[{"t":"set","p":"stationsRaw","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":160,"y":420,"wires":[["fb3c8172638a8fb7"]]},{"id":"caac60185af71f64","type":"delay","z":"15c0f11d3fc4b3f7","name":"","pauseType":"delay","timeout":"4","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":120,"y":180,"wires":[["095efa33e8e7ca2a"]]},{"id":"c1c5aa4d46a165c5","type":"split","z":"15c0f11d3fc4b3f7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":630,"y":60,"wires":[["58e35b7807c9b092","dfc5843690a9476d"]]},{"id":"58e35b7807c9b092","type":"switch","z":"15c0f11d3fc4b3f7","name":"Chosen stations","property":"payload.id","propertyType":"msg","rules":[{"t":"eq","v":"2088","vt":"num"},{"t":"eq","v":"25148","vt":"num"},{"t":"eq","v":"156","vt":"num"},{"t":"eq","v":"167","vt":"num"},{"t":"eq","v":"235","vt":"num"},{"t":"eq","v":"946","vt":"num"},{"t":"eq","v":"815","vt":"num"},{"t":"eq","v":"2263","vt":"num"},{"t":"eq","v":"976","vt":"num"},{"t":"eq","v":"980","vt":"num"},{"t":"eq","v":"25185","vt":"num"}],"checkall":"true","repair":false,"outputs":11,"x":540,"y":280,"wires":[["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["2268b0ed56350566"],["f388aaacde3e75dc"],["f388aaacde3e75dc"],[]]},{"id":"b56273e5ea99c3fc","type":"inject","z":"15c0f11d3fc4b3f7","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"600","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":150,"y":120,"wires":[["caac60185af71f64"]]},{"id":"c843fa224c3d90f9","type":"debug","z":"15c0f11d3fc4b3f7","name":"debug 170","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":750,"y":380,"wires":[]},{"id":"2268b0ed56350566","type":"function","z":"15c0f11d3fc4b3f7","name":"Convert to message","func":"var kjede = msg.payload.brand;\nvar navn = msg.payload.name;\nconst diff = new Date().getTime() - msg.payload.prices.B95.lastUpdated;\nvar timer = Math.floor(diff/1000/60/60);\nvar minutter = Math.floor((diff/1000/60/60 - timer )*60);\nmsg.topic = kjede + ' ' + navn;\nmsg.payload['pris'] = msg.payload.prices.B95.price;\nmsg.payload['timer'] = timer;\nmsg.payload['minutter'] = minutter;\nmsg.payload['epoch'] = (msg.payload.prices.B95.lastUpdated / 1000);\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":780,"y":280,"wires":[["ca552240d225b271"]]},{"id":"ca552240d225b271","type":"change","z":"15c0f11d3fc4b3f7","name":"Remove unnecessary fields from array","rules":[{"t":"delete","p":"payload.prices","pt":"msg"},{"t":"delete","p":"payload.id","pt":"msg"},{"t":"delete","p":"payload.logo","pt":"msg"},{"t":"delete","p":"payload.name","pt":"msg"},{"t":"delete","p":"payload.brand","pt":"msg"},{"t":"delete","p":"payload.location","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":400,"wires":[["c843fa224c3d90f9","f61b2fc090523858"]]},{"id":"bd3b870b7b49c6c2","type":"md5","z":"15c0f11d3fc4b3f7","name":"MD5","fieldToHash":"shiftedToken","fieldTypeToHash":"msg","hashField":"md5Hash","hashFieldType":"msg","x":110,"y":300,"wires":[["3bc1810bb50310ce","29b1a398cccaf5a6"]]},{"id":"7c6ba7685c1bbfb6","type":"comment","z":"15c0f11d3fc4b3f7","name":"Show chosen stations with price and update time","info":"","x":260,"y":20,"wires":[]},{"id":"f61b2fc090523858","type":"mqtt out","z":"15c0f11d3fc4b3f7","name":"Send til Home Assistant","topic":"","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"36159a16.2aa98e","x":790,"y":420,"wires":[]},{"id":"2daf93cf704c36b4","type":"mqtt in","z":"15c0f11d3fc4b3f7","name":"Oppdater bensinpriser ved oppstart av Home Assistant","topic":"Oppdater bensinpriser","qos":"2","datatype":"auto-detect","broker":"36159a16.2aa98e","nl":false,"rap":true,"rh":0,"inputs":0,"x":260,"y":60,"wires":[["caac60185af71f64"]]},{"id":"f388aaacde3e75dc","type":"debug","z":"15c0f11d3fc4b3f7","name":"debug 171","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":770,"y":340,"wires":[]},{"id":"7b6fe343aff9ceaa","type":"switch","z":"15c0f11d3fc4b3f7","name":"Finne stasjoner på navn","property":"payload.name","propertyType":"msg","rules":[{"t":"cont","v":"Åseral","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":830,"y":120,"wires":[["c2d1e13e56588a8a"]]},{"id":"cd85b29ad0d8b086","type":"switch","z":"15c0f11d3fc4b3f7","name":"Finne stasjoner på adresse","property":"payload.location","propertyType":"msg","rules":[{"t":"cont","v":"Mandal","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":840,"y":160,"wires":[["732f30ae5c2bfea3"]]},{"id":"dfc5843690a9476d","type":"switch","z":"15c0f11d3fc4b3f7","name":"Fjerne rene ladestasjoner","property":"payload.prices","propertyType":"msg","rules":[{"t":"nempty"}],"checkall":"true","repair":false,"outputs":1,"x":870,"y":60,"wires":[["7b6fe343aff9ceaa","cd85b29ad0d8b086"]]},{"id":"732f30ae5c2bfea3","type":"debug","z":"15c0f11d3fc4b3f7","name":"debug 172","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1070,"y":160,"wires":[]},{"id":"36159a16.2aa98e","type":"mqtt-broker","name":"Hytte-Pi","broker":"192.168.1.101","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closePayload":"","willTopic":"","willQos":"0","willPayload":""}] Og sånn ser det foreløpig ut i Home Assistant hos meg, jeg har gjort så det er den virkelige tiden siden oppdateringen som teller, at ikke tiden bare hopper framover hvert kvarter. I tillegg har jeg endret punktum til komma i kronebeløpet og laget en statistikkgraf. Jeg satte den i gang i dag morges, så det er ikke mye statistikk ennå, og ingen har endret seg. Til slutt la jeg inn en automasjon som reagerer når laveste bensinpris kommer under 19 kroner. Da får jeg en E-post til mobilen (som jeg alltid har med meg), og Aeotec Z-Wave-sirena i ganga lager skipsklokkelyd. Da er det på tide å kjøre kannene til stasjonen og fylle dem for båten! 😁
    1 poeng
  30. @29gun Alle frittstående relè vi har er potensialfri. Det vil si at spenningen du kjører inn på releet er spenningen du får ut. På tilkobling A kan du kjøre hvilken spenning du ønsker inn, og det er som nevnt det samme ut. Driften av produktet er 230V.
    1 poeng
  31. Godt poeng, og takk for tipset dette vil gjøre løsningen min enda bedre! En PID-regulering med dynamisk effektstyring kan gi enda mer presis regulering, og siden jeg allerede har effektmåling kan jeg justere effekten gradvis i stedet for bare å slå av og på slik at temperaturen holder seg mer stabil uten at ovnen pendler unødvendig. Dette er absolutt verdt å teste ut og igjen takk for tipset 🙂
    1 poeng
  32. Vet det ble en duplisering nå men tanken er å ta bort de gamle på litt sikt. Nå har jeg begge deler, både den gamle teite varianten og den nye riktigere...
    1 poeng
  33. Bruk smartplugger som gir deg kontroll over strømeffekt og forbruk, også kjøper du den ovnen du vil ha uten å være begrenset av at den må være smart ;-)
    1 poeng
  34. Gjort en quick and dirty fix... Legg inn denne: i stedet for den opprinnelige: [{"id":"c622a1c1b5d187fe","type":"function","z":"2447f70b5f1095ba","name":"List all stations & create flow.stations","func":"var brands = flow.get(\"brands\");\nvar statsRaw = flow.get(\"stationsRaw\");\n//flow.set(\"Stations\",msg.payload);\n//node.warn( \"pl.length: \" + statsRaw.length);\nvar arr = [];\nvar arr2 = [];\nvar obj2 = {}\nvar msg2 = {}\nvar i = 0;\nvar j = 0;\nfor (i = 0;i < statsRaw.length;i++){\n let obj = {}\n //if (i == 2150)i++;\n //if (i == 2302)i++;\n //if (i == 2305)i++;\n //if (i == 3512)i++;\n obj.id = statsRaw[i].id;\n obj.name = statsRaw[i].name || \"-\"\n // Find brand from brandId\n for (j = 0;j < brands.length;j++){\n if (Number(statsRaw[i].brandId) == Number(brands[j].id)){\n obj.brand = brands[j].name || \"-\"\n obj.logo = brands[j].pictureUrl || \"-\"\n //node.warn(i + \" \" + j + \" \" + brands[j].name);\n break;\n }\n }\n obj.location = statsRaw[i].location || \"-\"\n // Add prices, some stations miss prices, skip these\n var obj3 = {}\n let objFt = []\n let ftidStr = \"\";\n if (statsRaw[i].hasOwnProperty(\"prices\")){ // skip no-price stations\n for (j = 0;j < statsRaw[i].prices.length;j++){\n var ftid = statsRaw[i].prices[j].fuelTypeId;\n if (ftid == 1) ftidStr = \"D\";\n else if (ftid == 2) ftidStr = \"B95\";\n else if (ftid == 3) ftidStr = \"B98\";\n else if (ftid == 4) ftidStr = \"FD\";\n else ftidStr = \"-\";\n // New pricestructure 02.03.25\n objFt.push({\"fuelTypeID\":statsRaw[i].prices[j].fuelTypeId,\"type\":ftidStr,\"price\":statsRaw[i].prices[j].price,\"lastUpdated\":statsRaw[i].prices[j].lastUpdated});\n obj3.new = objFt;\n\n if (ftid == 1 && statsRaw[i].prices[j].price != 0){ \n obj3.D = {}\n obj3.D.price = statsRaw[i].prices[j].price;\n obj3.D.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.D.type = \"D\";\n }\n if (ftid == 2 && statsRaw[i].prices[j].price != 0){ \n obj3.B95 = {}\n obj3.B95.price = statsRaw[i].prices[j].price;\n obj3.B95.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.B95.type = \"B95\";\n } \n if (ftid == 3 && statsRaw[i].prices[j].price != 0){\n obj3.B98 = {}\n obj3.B98.price = statsRaw[i].prices[j].price;\n obj3.B98.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.B98.type = \"B98\";\n }\n if (ftid == 4 && statsRaw[i].prices[j].price != 0){\n obj3.FD = {}\n obj3.FD.price = statsRaw[i].prices[j].price;\n obj3.FD.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.FD.type = \"FD\";\n }\n }\n }//skip to here\n// console.log(obj3);\n obj.prices = obj3;\n\n \n arr.push(obj);\n}\nmsg2.payload = arr;\nflow.set(\"stationsPrepd\",arr);\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":280,"y":560,"wires":[["ee9831abc8e3a182"]]}] Dette gir noen nye felt i flow.stationsPrepd som du igjen kan hente ut med denne: [{"id":"eeb0ef3e1e4c1567","type":"inject","z":"2447f70b5f1095ba","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[2088,25148,2263]","payloadType":"json","x":620,"y":1220,"wires":[["0d4e5a87fd3822c7"]]},{"id":"0d4e5a87fd3822c7","type":"function","z":"2447f70b5f1095ba","name":"List valgte stasjoner","func":"let selected = msg.payload;\nlet stats = flow.get(\"stationsPrepd\");\nlet arr = []\n\nfor (let i in selected){\n for (let j in stats){\n if (stats[j].id == selected[i]){\n for (let k in stats[j].prices.new){\n// node.warn(stats[j].name);\n// node.warn(stats[j].prices.new[k].type);\n// node.warn(stats[j].prices.new[k].price);\n// let dt = new Date(stats[j].prices.new[k].lastUpdated);\n// node.warn(dt.toLocaleString(\"nb-NO\"));\n }\n arr.push(stats[j]);\n }\n \n }\n}\n\nmsg.payload = arr;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":860,"y":1220,"wires":[["88658fb3f9f8c6ae"]]},{"id":"88658fb3f9f8c6ae","type":"debug","z":"2447f70b5f1095ba","name":"debug 14","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1050,"y":1220,"wires":[]}] ...og hvis du fjerner kommentar (//) fra de 5 linjene i "List valgte stasjoner" så kommer resultatet direkte i loggen også... Edit#2: Da skal de være oppegående... Ser Esso Mandalskrysset har en del priser som ikke dukker opp i drivstoffappen, sannsynligvis strøm...
    1 poeng
  35. Supert. Jeg ser der henger igjen noe litt hårete programmering fra gamle dager... Skal fikse litt opp i det om litt...
    1 poeng
  36. Modbus skjema hvis noen vil forsøke den veien. EnSy modbus schematic layout.pdf
    1 poeng
  37. Jeg spurte noen som holder på med folie og fikk noen striper kuttet bredde av display 3M Scotchcal film series 40 Mulig noen er bedre egnet, og vet ikke hvordan det er å bytte ved slittasje, men har holdt i flere måneder nå( ble montert sensommeren) opprinnelig film sikkert fra produksjon av display som fulgte med ID lock var mer plastikkaktig men holdt lenge og var enkel å fjerne når jeg byttet andreas
    1 poeng
  38. Jeg har rullet 10cm glava rundt varmtvannstanken, ikke foretatt noen før/ettermålinger, men kjenner med hånden at det er godt og varmt på innsiden av glavaen, så det utgjør en stor forskjell.
    1 poeng
  39. Jeg vil dele en erfaring med måling av temperatur i varmtvannsbereder og integrasjon til Homey. Selv bruker jeg Home Assistant, men kan ikke anbefale det annet enn til de som ønsker en ny hobby… 😅. Da min bror flyttet inn i nytt hus og ønsket seg noen enkle smarthusfunksjoner anbefalte jeg Homey, basert på hva jeg har lest om Homey og hørt fra andre som bruker systemet. Ble selvsagt litt skuffet over at ESPHome ikke uten videre fungerer på Homey, valgte derfor en komponent jeg så var kompatibel for å kunne lese av temperatur i vv-bereder: https://www.kjell.com//no/produkter/smarte-hjem/smarte-hjem-losninger/fibaro-smarte-hjem/fibaro-smart-implant-z-wave-enhet-p51353 Det fysiske arbeid med å koble til 4 stk DS18B20 sensorer var ikke veldig mye enklere enn et ESP2866 kort, det måtte loddes. I tillegg måtte vi finne en egnet strømkilde og lodde på den også. Lodding er litt skryt, vi løste dette med varmluftspistol og slike loddeskjøter https://www.kjell.com/no/sok?q=loddeskjøt. Den store fordelen med bruk av Fibaro enheten kom ved integrasjon i Homey. Første forsøk var ingen suksess, da ble den oppdaget som en ukjent zwave enhet uten temperatursensorer. Installerte derfor Fibaro sin app i Homey, slettet «ukjent zwave enhet» og startet integrasjon av zwave enhet på nytt. Da ble den detektert korrekt og alle de 4 tempsensorene ble automatisk integrert. Den har også en intern temperatursensor. Her slapp vi å lese av og kode inn korrekt ID per tempsensor, slik man må i ESPHome, det var heller ikke nødvendig med noen motstand mellom sensorene. Resultatet er at Homey nå vet hva temperaturen er på flere punkt i berederen. Denne gangen valgte jeg ikke å montere noen sensor i bunn. Det jeg synes er interessant å måle er temperaturen litt over og videre opp, så mange nivå som praktisk mulig. Denne gangen styrt av 4 stk tilgjengelig sensorer, montert på nivå ca 1/4, 2/4, 3/4 og på toppen. Planen videre er å bruke temperaturen midt på (2/4) til å starte oppvarming uansett pris når den går under en viss temperatur. Dette fordi det tar minst 4 timer å varme hele berederen (200l 3kw), så ved å starte når omtrent halvparten er brukt opp vil det allerede etter 2 timer begynne å få effekt. Min erfaring med egen bereder (300l 3kw) er at det vannet som varmes opp av varmeelementet i bunn ikke flyter opp til toppen, men ligger i ro og at varmen til slutt smitter over på det som er over, ref bildet under. Oppsummert: For de som er komfortable med å koble elektronikk, men gjerne slipper kodearbeid er Fibaro et godt produkt til dette formålet, spesielt for Homey brukere.
    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.