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

Vinnerliste

Populært innhold

Viser innholdet med mest poeng siden 19. mars 2024 i alle områder

  1. Gjenskapte det gode gamle kjøkken-wattmeteret. 🙂 Koden ligger her: https://github.com/svenove/ESPHome-ESP32-2424S012-LVGL
    7 poeng
  2. https://rc.home-assistant.io/blog/2024/03/27/release-20244/ Det er ikke så mye mer å si enn JUHU!!!! Endelig muligheter for å kategorisere automasjoner og så flesker de til med å kunne kategorisere og merke hva som helst annet. Jeg tenkte på min egen PID regulering som holder huset i rette effekttrinn på nettleie. Her er listen over gulvvarme og andre varmekilder hardkodet i et skript for å få rett prioritering. Men det kunne vært løst mer elegant med å sette en merkelapp på hver varmekilde som angir prioritering. Da kan skriptet lages universelt og blir lettere å dele.
    5 poeng
  3. Ny 3D printer i huset: Prusa MK4. Skrevet litt om det her: https://www.sveinha.com/j3/index.php/hobby/3d-printing/165-ny-printer-prusa-mk4
    4 poeng
  4. Jeg hadde lyst å ha en temperaturføler på kontor/arbeidsplass som rapporterte måleverdier til min egen Home Assistant. Her er et innlegg om hvordan det ble løst. Jeg bestemte meg for å bruke en esp32 sammen med en BME280 sensor. På esp32 har jeg brukt esphome. På arbeidsplass er det et gjestenettverk som denne kan bruke. I esphome settes wifi opp slik som vist nedenfor. Hvis den ikke kommer på nett innen 1 minutt, vil den opprette et lokalt wifi nett som en kan koble seg til med mobil og deretter legge inn hvilket wifi nett sammen med passord som esp32 skal bruke. Esphome kaller det et "Fallback hotspot". Dette er en engangs-konfigurasjon. wifi: ssid: "hjemmenett" password: !secret heime_wifi domain: .lan power_save_mode: none ap: ssid: "Kontordings Fallback Hotspot" password: "et eller annet passord" Og så har jeg tatt vekk api: i fra yaml-filen fordi jeg ikke vil at esp32 skal prøve å sende data til en Home Assistant som ikke er der via standard api. Deretter laget jeg en time komponent der en hvert 15. minutt sender temperatur, fuktighet og trykk via en https post til en webhook. time: - platform: sntp id: sntp_time timezone: Europe/Oslo servers: - 0.pool.ntp.org - 1.pool.ntp.org - 2.pool.ntp.org on_time: - seconds: 0 minutes: /15 then: - http_request.post: url: https://hooks.nabu.casa/en_eller_annen_url.......... verify_ssl: false headers: Content-Type: application/json json: |- root["kontortemperatur"] = id(temp).state; root["kontorfuktighet"] = id(hum).state; root["kontortrykk"] = id(pres).state; Så gjenstår bittelitt konfigurasjon i HA En lager en ny automasjon som har en webhook trigger. Data som esp32 sender, kan en hente ved hjelp av {{ trigger.json.navnpåsensor | float(0) }} Webhook ID som automasjonen foreslå, lar en være uforandret. Trykk på tannhjulet bak webhook ID og ta vekk avkrysningen på "kun tilgjengelig fra det lokale nettverket" Så må en inn på oppsett for Home Assistant Cloud. Nederst der er det en seksjon for Webhook'er. Her trykker en "Administrer" på den webhook som automasjonen har opprettet og kopierer url som står der. Denne url skal en bruke i sin helhet i esp32. Så det var egentlig det hele. Dataene tikker inn hver 15. minutt. Har en ikke Nabu Casa sin skytjeneste så er det andre måter å sette opp denne url'en på, men har en først gått denne veien så har en vel kontroll på hvordan en får aksess til sin HA utenfra via en webhook. Oppsettet for BME280 er her, men ikke så veldig relevant for dette med webhooks. Den er standard esphome.... sensor: - platform: bme280_i2c temperature: name: "${devicename} Temperature" id: temp oversampling: 16x filters: - offset: -3.3 pressure: name: "${devicename} Pressure" id: pres filters: - offset: 7.0 humidity: name: "${devicename} Humidity" id: hum address: 0x76 iir_filter: 16x update_interval: 60s
    4 poeng
  5. Jeg har solceller på taket, og ønsker selvfølgelig å utnytte disse maksimalt. For å klare dette har jeg laget en styrings-rutine som jeg gjerne mottar kommentarer på. Kanskje har du en bedre metode, eller kanskje kan du få inspirasjon til å gjøre noe tilsvarende selv? Jeg bruker Homeseer, men det er sikkert mulig å lage tilsvarende med andre systemer. Her er min oppskrift, steg for steg: 1: Systemet starter på kvelden med å finne ut hva som er teoretisk produksjon neste dag, under optimale forhold. Dette gjøres ved å se på statistikk fra tilsvarende måned. 2: Deretter sjekkes værvarselet, for å finne ut hvor mye reduksjon i effekten jeg kan vente meg. Systemet sjekke skyer og regn, og finner ut hvor mye som blir tapt, sånn ca. 3: Deretter regner systemet ut sannsynlig forbruk. dette gjøres på bakgrunn av temperatur, vind, termostater og antall personer hjemme. 4: På dette punktet vet systemet om det vil være kraftoverskudd. Nå må avgjørelsen tas om strømmen skal brukes eller selges. Dersom strømmen er dyr så lønner det seg å selge, og heller kjøpe med strømstøtte til eget forbruk. Denne avgjørelsen vises ved hjelp av et tall, som indikerer hvor lurt det er å bruke selv opp i mot å selge. 5. Ved hjelp av tallet fra punkt 4 så styres oppvarming av vann og et lite basseng. Dersom det blir lav strømproduksjon dagen etter så varmes vannet om natten, da nettleien er rimeligere. Dersom det er ventet bra produksjon så utsettes oppvarmingen av vannet til solcellene har begynt å levere overskudd. Mange spør meg om det er mye å spare på dette, og faktisk så ble total besparelse i 2023 på over 3000 kr! Dermed er det vel ingen tvil om at det lønner seg å automatisere! Er det andre som har gjort noe tilsvarende, eller kanskje noe som er enda bedre? I så fall så håper jeg du legger igjen en kommentar. Regnestykke for sist natt: Dersom jeg ikke hadde styrt noe som helst, så ville vannet blitt varmet på natten, i timene etter bruk. Det hadde kostet Kr 1,27 pr KWH, altså totalt kr 51 i strøm. På dagtid ville da solstrømmen blitt solgt i stedet, noe som ville gitt meg kr 29. Totalt har det varme vannet da kostet meg Kr 22,- Dersom jeg i stedet varmer vannet med solstrøm så koster det meg ingenting. forskjellen her blir altså på 22 pr natt. Ja, jeg er klar over at den egenproduserte strømmen ikke er gratis. Men siden denne prisen er konstant uansett så har jeg valgt å trekke den ut i fra regnestykket.
    3 poeng
  6. Shelly Uni er et snopt produkt, har to stk. Den ene er koblet mot headerne på hovedkortet til en Intel NUC for å kunne remote slå av/på eller kjøre restart av den. En annen er koblet til en parafinovn + DS18B20 på en hytte som kun har 12v strøm for remote kunne starte ovnen, siden tradisjonell ring hytta varm ikke funker lengre nå som 2G og 3G-nettet forsvinner.
    2 poeng
  7. @stigvi https://www.aliexpress.us/item/1005006300643795.html?gatewayAdapt=4itemAdapt Så rimelig fet ut.
    2 poeng
  8. Her er kode for å lese DS18B20: Bibliotekene er: Dalles DS18B20 ser ut som en transistor men er egentlig en IC. Den finnes i TO-92 (som en liten transistor) pakning men også bygget inn i en vanntett rustfri probe med lang kabel: Den er superenkel å bruke til å lese temperaturer med og koster lite. Det eneste den trenger er en pull-up resistor på 4,7k (Mellom + og Data) Spenningen kan være mellom 3 og 5,5V (Altså kan du bruke 3,3V spenningen fra ESP32en om det trengs. Mange sensorer Du kan koble opptil 32 stk DS18B20 etter hverandre på samme kabelen (Kun 1 pullup resistor) Du kan spørre etter antallet slik: deviceCount = sensors.getDeviceCount(); Og du leser dem slik: Temp1=sensors.getTempCByIndex(0); Temp2=sensors.getTempCByIndex(1); Alarmer Biblioteket inneholder også kode for alarmer om du ikke vil kode dem selv. Da må du også finne adressen til sensoren: DeviceAddress Temp1Addr; sensors.getAddress(Temp1Addr, 0); så kan du sette alarmtemperaturene: sensors.setHighAlarmTemp(Temp1Addr, 26.5); sensors.setLowAlarmTemp(Temp1Addr, 19); Og teste om alarmen er aktiv: if (sensors.hasAlarm(Temp1Addr)) { OBS Den trigger både på høy og lav så du må lese temp for å finne ut hvem. Leseintervaller Når du skal bruke den med MQTT må du bestemme deg for NÅR den skal rappportere temperaturen. Hver gang temperaturen endrer seg (mer en x grader)? Fast hvert x sekund Hver gang du ber om det. For den har passert over/under en granse (Alarm) De to første kan hardkodes eller de kan ha en default verdi og så kan de endres med MQTT kommandoer. Interupt Om du skal lese dem hvert x sekund kan du bruke et interupt. (Om du bruker en delay kan jo ikke ESP32 gjøre noe annet fornuftig mens den venter) Et interupt avbryter prosessoren med det den driver med og kjører en rutine, når rutinen er ferdig fortsetter prosessoren der den slapp. Rutinen som skal kjøres merkes med IRAM_ATTR slik at compileren legger den i instruksjons RAM for at den skal kunne kjøres raskt: void IRAM_ATTR onTimer(){ itsTimeNow=1; } En slik rutine bør gjøre så lite som mulig for ikke å forstyrre prosessoren for mye. Det enkelste er å bare sette en variabel. Denne bør deklareres med voilatile for at compileren skal holde den i RAM (og ikke i et register) slik at hovedprogrammet kan lese den correct: volatile int itsTimeNow = 0; I hoved loop'en kan vi nå teste på denne slik: if (itsTimeNow==1 ) { read_temp(); MQTTclient.publish("TempTestClient/Temp1", String(Temp1)); itsTimeNow=0; // Reset } Timer ESP32 har flere (2-4) harware timere som vi kan bruke til å kalle på interuptet. Du deklarerer den slik: hw_timer_t *My_timer = NULL; og setter den til å telle slik: My_timer = timerBegin(0, 8000, true); Fordi disse timerne teller VELDIG fort har jeg her brukt en "prescaler" på 8000 som gjør at jeg kan be om et interupt hver gang den når 10000 og det vil utgjøre et sekund: timerAttachInterrupt(My_timer, &onTimer, true); // Kobler interupt rutinen til timeren timerAlarmWrite(My_timer, 100000, true); //10000 = 1 Sek Altså hvert 10sek her timerAlarmEnable(My_timer); //start Her er et forslag til MQTT kode som poster temp fra 2 sensorer på forskjellige vis:
    2 poeng
  9. Bare til info. Jeg ville aldri valgt Plejd. Jeg har hus kun med smarte pærer, bevegelsesensorer og Zigbee knapper på batteri. Alle gamle Elko lysbrytere er tatt vekk. Satt litt på spissen - det er ikke et smarthus verdig å ikke ha et smart lys. Jeg har full kontroll på hvert lyspunkt og har definert over 100 forskjellige scener for lys som setter lys i forskjellige tilstander. Tror ikke de som kommer på besøk har problem med det. Ingen har behov for å trykke på en lysbryter. De er der bare for å være en nødløsning hvis Home Assistant eller zigbee2mqtt skulle stoppe.
    2 poeng
  10. Ja, *feil her*. Når det er sagt, selv ville jeg så godt det lar seg gjøre satset på kun en, eller noen få protokoller. Flytter inn i nytt hus snart og skal prøve holde meg så godt det lar seg gjøre med kun Zigbee.
    2 poeng
  11. Du har en unik mulighet til å få et velfungerende og samtidig smart hus når alt elektrisk skal byttes ut. Det er forskjellige meninger om dette, du kan lese noe av det i denne tråden: Ut fra min egen erfaring kan jeg gi følende råd: Velg komponenter som støtter åpne standarder for smarthus (Zwave/Zigbee/Thread&Matter) fremfor Wifi. Wifi i seg selv er helt fint og er rett valg for kameraer og andre løsninger som krever mye data, men brytere/dimmere og sensorer uten kamera trenger ikke den bånbredden. Ulempen med wifi er at slike produkter i mange tilfeller er avhengig av skytjenester og da risikerer du både at tjenesten blir lagt ned eller ilagt en kostnad per måned som kan økes. Zigbee/Zwave/Thread er lokale radioprotokoller som bygger egne mesh nettverk (alle enheter fast tilkoblet strøm er en router i nettverket) og fungerer lokalt mellom en koordinator (som din Conbee II stick) som igjen knyttes til en smarthussentral. Derfor er svaret mitt når du spør om elektrikerens anbefaling av utstyr at Bluetooth er bedre enn Wifi men ikke like bra som Zigbee (Bluetooth bygger ikke mesh). Valg av smarthussentral/systme er neste valg. Her må du dessverre velge mellom å ha stort åpenhet i valg av utstyr kombinert med høyere krav til egeninnsats og kometanse eller et meg begrenset valg av utstyr om du ønsker et enklere (og kanksje? mer driftsikkert) system. Selv har jeg erfaring med Home Assistant og Homey Pro. HA er mest krevende men støtter også mest utstyr (trolig av alle systemer som finnes!), mens Homey er enklere å komme i gang med samtidig som det har avanserte muligheter og rimelig bred støtte for utstyr. Futurehome har jeg kun lest om, men forstår at det er vesentlig mer begrenset i valg av utstyr men også enklere å bruke. Hvis du har anlednign til å velge smarte brytere/dimmere/kontakt og annet som elektriker skal montere som støttes av Futurehome så har du muligheten til å bytte til dette senere om du finner ut at Home Assistant blir for krevende. Men siden du allerede har det støtter jeg tanken om å prøve det videre, det har blitt vesentlig enklere de siste årene og hvis du primært bruker de offisielle integrasjonene i HA (og lite fra HACS - Home Assistant Community Store) så er stabiliteten nå svært god. Lykke til med smarthus - for mange av oss er dette en interessant hobby! 🙂
    2 poeng
  12. Jeg kommer nok til å fortsette med Node-Red. Har ikke sett helt på siste skrik av automations i Home-Assistant, men jeg forstår at det er samme som før med noen små-forberedelser. Jeg har også filosofien at jeg ønsker ting simplest mulig med færrest mulig avhengigheter, men jeg tenker at siden jeg kjører Node-Red som add-on i Home-Assistant blir det litt som en del av samme system. Samtidig vet jeg at jeg kunne gjort mye av det jeg gjør i Node-Red også rett i Home-Assistant, men jeg liker å ha alt på en plass (mer oversiktlig). Derfor kommer jeg mest sannsynlig til å bruke Node-Red fremover. Aller helst ville jeg skrevet automasjoner i PowerShell, men selv om det eksisterer muligheter for det, så er det ikke på noen måte implementert godt. Node-Red er visuelt, og jeg syns det er mer egnet i automasjon av bygg. Da kan man se på systemet mer som en helhet, et stort nett av automasjon og ikke hundrevis av enkelt-automasjoner.
    2 poeng
  13. Jeg går ikke med på at det er en lidelse, jeg tror det er et sunnhetstegn sånn at man holder interessen oppe - da orker man å vedlikeholde koden når den feiler...
    2 poeng
  14. Man kan jo hente litt inspirasjon fra Meteorologisk Institutt hvis man skal lage seg et lite værhus å sette sensoren i 🙂
    2 poeng
  15. Jeg driver med fotografering når jeg får tid til å unslippe husets automatiseringer. Da er det nyttig å vite når gylden og blå time starter og stopper så jeg har lagd et kort i Home Assistant som viser meg dette. Men dette har vært basert på hjemmeposisjon. Det er jo mindre interessant når en er på reise så jeg endret dette til å være basert på telefonens posisjon. Sun2 er navnet på en integrasjon som jeg bruker for å hente klokkeslett når solen er i bestemte høyder. Og telefonens posisjon kommer i fra Home Assistant appen for Android. Jeg setter en ny posisjon når jeg selv har flyttet meg mer enn 50km. alias: Ny posisjon til sun2 description: "" trigger: - platform: state entity_id: - device_tracker.pixel_7 condition: [] action: - service: sun2.get_location data: location: phone response_variable: location - if: - condition: template value_template: >- {{ distance(location.latitude, location.longitude, 'device_tracker.pixel_7') > 50 }} then: - service: sun2.update_location metadata: {} data: location: phone latitude: "{{ state_attr('device_tracker.pixel_7', 'latitude') }}" longitude: "{{ state_attr('device_tracker.pixel_7', 'longitude') }}" time_zone: "{{ state_attr('sensor.pixel_7_current_time_zone', 'time_zone_id') }}" mode: single
    2 poeng
  16. Gøy å våkne til at det har kommet så mange svar på innlegget mitt. Det er tydelig at dette engasjerer! Jeg får begynne fra toppen 😉 Stigvi: du påpeker at jeg har tatt ut denne prisen fra regnestykket. Det har jeg gjort fordi innlegget mitt dreide seg om besparelsen ved automasjonen, ikke besparelser ved solcellene i seg selv. Men jeg skal komme tilbake til spørsmålet ditt om litt 🙂 hflatoey: Jeg kjenner ingen som tar opp lån for så å investere de lånte pengene i aksjefond. Jeg har gjort denne investeringen for å spare penger, og for meg så fungerer det. Men det er ikke dermed sagt at det fungerer for alle. Jeg har dette som en liten bi-jobb, og har sett mange prosjekter som rett og slett ikke lønner seg. Alt avhenger av ditt forbruksmønster. Men jeg skal som sagt komme tilbake til mitt regnestykke om litt. SveinHa: Jeg synes det høres rart ut at det ville ta så lang tid å tjene inn en ny varmepumpe. Riktignok er det en dyrere med luft/vann, men jeg synes dette hørtes dyrt ut. Selv hadde jeg en luft/luft varmepumpe som tok kvelden for 2 år siden, og de måledataene jeg har fra den perioden viser ganske tydelig at besparelsen med varmepumpe er ganske stor. Jeg husker ikke tallene i farten, men det var ikke snakk om mange årene. For øvrig så ser det ut som om vi har ganske like fremgangsmåter. Jeg liker oppsettet ditt, og ser at vi har tenkt ganske så likt. Jeg har også vurdert å bruke en leverandør av soldata som en faktor i systemet mitt, men jeg synes det var gøy å se hvor godt jeg kunne treffe ut i fra de faktorene jeg hadde. thoralex: Det er tydelig at du enten har et langt lavere strømforbruk enn hva jeg har eller et langt større solcelle-anlegg. Sannsynligvis det første. Jeg er langt ifra å kunne dekke 60% fra solcellene nå i mars. Grunnen er nok et dårligere isolert hus i kombinasjon med at jeg ikke bor alene. Ikke har jeg mulighet til å fyre med ved, heller. Jeg holder meg under 10kwt-trinnet på vinteren, og satser på 5kwt-trinnet på sommeren. I Julen måtte jeg bite i det sure eplet i forbindelse med julebesøk, og da røyk jeg faktisk på 10kwt-trinnet også. Ellers så er det interessant å lese om din tilnærming 😉 Men så til det som sikkert flere av dere har ventet på, nemlig regnestykket som viser hva dette koster meg. Jeg finansierer innkjøpet gjennom huslånet, og levetiden er omtrent like lang som nedbetalingstiden på lånet. Mine kostnader er derfor en %-andel av huslånet, noe som også betyr at prisen svinger etter hva rentene er. Jeg betalte selv 185.000 etter enova-støtte, og betaler ca 12.000 i året. For det får jeg levert ca 12.500-13.000 kwt. Dette gir meg altså en pris på max 96 øre pr kwt. For ett år siden, når rentene var lavere, så var prisen nøyaktig halvparten, 48 øre. Dette er rimelig, spesielt siden det ikke er nettleie på egenprodusert strøm. Nettopp derfor er det viktig å bruke så mye av strømmen selv. Dersom man baserer seg på å selge strømmen for å tjene penger, da har man investert feil. Jeg skal legge frem flere tall senere, men akkurat nå har jeg jobb som venter 🙂
    2 poeng
  17. Jeg prøver meg med en liten "leksjon". Du kan belaste 3 stk. 16 A sikringer fult ut på 3x32A hovedsikring. På skolen lærte jeg å sette opp antall kurser og belastning i Ampere i en tabell med fasene som kolonner og sikringene som rader. I moderne regneark er det en kjapp måte å få oversikt over sikringsstørrelsen som kreves som hovedsikring Normalt regnes det med en samtidighetsfaktor for dimensjonering av sikringsstørrelser på inntak/Hovedsikringer. Dette fordi det er sjeldent det utnyttes full effekt på en kurs som ikke har fast effektforbruk og det er sjeldent alle effekter benyttes akkurat samtidig. Samtidighetsfaktoren settes til 0,6 som en tommelfingerregel i bransjen. Dersom samtidighetsfaktoren settes til 0,5 kan det settes inn 6 stk. 1-fase 16A sikringer. Da må risikovurderingen fra elektriker inneholde et punkt om hvorfor samtidighetsfaktoren er redusert til 0,5. Dette er etter mine erfaringer for lite reserve til at jeg vil anbefale denne installasjonen. Når tilførsel er 3-fase bør belastning pr fase være nærmest mulig likt. Forskjellig strøm igjennom fasene vil gi det som kalles skjevlast og kan føre til at hovedsikringen slår ut tidligere enn ønskelig. Gitt eksemplene over ville jeg gått for 4 16A kurser på 3-fase 32A sikring. Da har du også reserve kapasitet så hovedsikringen ikke skal trippe ved maks belastning i henhold til prosjektert anlegg.(Ref. NEK400:2018 §132) Dette vil svekke automaten over tid og den vil trippe tidligere og tidligere. Da blir du forbannet og klager på den teite elektrikeren som installerte dette. Ved 3-fase 40A blir bildet litt annerledes. Her vil samtidighetsfaktor på 0,6 være akseptabelt for 6 stk. 1-fase sikringer på 16A. Faktisk er samtidighetsfaktoren 0,625. Noe som er høyere enn normalt. 40A/64A=0,625 I dette eksempelet har du også en liten reserve (eller buffer om du vil kalle det det) opp til hovedsikringens størrelse. Et annet tema er om du har kapasitet i eksisterende installasjon til å ta ut en så betydelig sikringsstørrelse til garasjen. Det må elektriker som skal utføre arbeide vurdere og gi deg den informasjonen du trenger for å sette av nok økonomiske ressurser til at oppdraget kan gjennomføres. Dersom det er tenkt elbil lading i garasjen blir det ikke så rett frem som i eksemplene over. Da må det legges til grunn at kursen til laderen skal beregnes som 100% belastet til enhver tid. 4. sikring i tabell 2 blir da ikke mulig å installere. Og vi er tilbake til tabell 1 med en liten twist på 2 av kursene som fortsatt har 0,6 i samtidighetsfaktor. Det samme vil gjelde for resterende eksempler og redusere antall sikringer som det er mulig å installere i garasjen. 3-fase 32A sikring og samtidighetsfaktor = 0,5 3-fase 40A sikring og samtidighetsfaktor = 0,6 3-fase lading av elbil er et omdiskutert tema da det ikke pr. dags dato finnes ladere beregnet for 3 fase tilkobling av IT/TT nett på markedet. EASE laderen kan kobles for 3-fase 230V lading, men da utføres ikke installasjonen i henhold til standarder definert av Norges tekniske komite (NEK). Link til artikkel i Teknisk Ukeblad: https://www.tu.no/artikler/er-trefaselading-pa-det-saernorske-stromnettet-egentlig-tillatt/509999 Om dere er forvirret nå så forstår jeg det. Selv erfarne elektrikere går surr i alle regler og krav i en hektisk hverdag, så "sit back and let the pros do their job". Dette er ikke fasit, men er basert på erfaringer fra arbeid som elektriker og som prosjektleder i boligprosjekter. Andre har andre erfaringer og vil kunne komme med annen informasjon og/eller utfyllende informasjon. La elektriker som skal utføre arbeidet ta avgjørelsen på hva som er best da det er de som skal skrive samsvarserklæring til slutt.
    2 poeng
  18. Har ikke noen bilder, men Intel har dokumentert headerne her: Front Panel Header for Intel® NUC Rele 1 og rele 2 på Uni-en kobles til reset og power, og ADC kan kobles til +5v dc, da kan man i HA lage seg en template sensor på om Intel NUC-en er av eller på, 0v = av, og 5v = på.
    1 poeng
  19. Vanskelig å si uten å vite hvilken versjon du har 😀 Du kjører update.sh scriptet. Evt leser det og utfører kommandoene som står der, evt med tilpasninger til din installasjon (f.eks. hvis du ikke bruker systemd). Se https://github.com/Koenkk/zigbee2mqtt/blob/master/update.sh for siste versjon. Prinsippet har vært det samme i lang tid, men jeg tror det er flikket litt på scriptet underveis.
    1 poeng
  20. Det kan godt være men til det skjer med Skybatteri så er eg kunde der 🙂
    1 poeng
  21. 1 poeng
  22. Jeg bruker denne løsningen for styring av Systemair VSR300 og den er organisert slik, om jeg har forstått spørsmålet ditt rett. https://github.com/cmragnar/HomeAssistant-VSR300-Modbus
    1 poeng
  23. Laget kart for "Robert" (Automower 315X): Grønn er omrisset av klippeområdet manuelt plukket fra kommunekart.com, blå er GPS-spor fra Robert og oransje er siste spor (der han er nå), alt presentert i en standard Node-RED Dashboard chart node...
    1 poeng
  24. Jeg ser jeg kommer litt sent inn i samtalen, men ville bare legge til et par bekreftende ord til det andre allerede skriver. Siden du vil ha det som ser ut og virker som et dumt hus, men er smart, så ville jeg fått elektriker til å lage det som et dumt anlegg, men bare bytte ut dimmere og brytere med smarte enheter. Zigbee er et trygt valg, og har du mange nok noder på fast strøm vil du sjeldent/aldri oppleve problemer med dekning. Du skal også kunne utvide og binde batteribrytere direkte til kabla enhter i Zigbee config (uten at jeg har testa og fått det til selv), slik at du ikke er avhengig av at hub'en er operativ. Personlig vil jeg helst ha ingenting av "infrastruktur" på wifi. Er jeg flink å lage separat wifi for slike enheter er det litt bedre, men mange gjør ikke det, og den dagen du vil bytte passord fordi "alle har tilgang" så faller også hele huset ut. Jeg har selv en miks av Zigbee og ZWave, og begge fungerer strålende. Zigbee har litt flere dingsebomser å velge mellom, som jeg tipper er litt fordi du ikke må sertifisere produktene for å smekke logoen på eska. ZWave må (ihvertfall tidligere) igjennom en prosess og følge strenge retningslinjer, noe som fører til færre dingser å velge mellom, og gjerne marginalt dyrere produkt. Det positive der er gjerne at det ofte kan være litt bedre kvalitet. Vil også slå et slag om å kjøre på med Home Assistant med en gang, istedenfor å gå via FutureHome eller Homey. Du kan gjøre mye med de to sistnevnte, men om du tenker å ta steget en gang uansett må du sette opp _alt_ på nytt. Her i huset klarer ikke fruen seg uten HA-appen, da jeg har lagt inn ting som shoppinglister og kamera. Det er også digg å kunne skreddersy visning akkurat som du vil ha det. Lykke til! Det er en morsom (og utfordrende) verden med smarthus
    1 poeng
  25. Det har du helt rett i, skrev litt uten å tenke der vist ..
    1 poeng
  26. https://github.com/thomasloven/hass-plejd Å ha både zwave, Zigbee, wifi og Bluetooth i samme hus, går fint.
    1 poeng
  27. PowerControl er en plugin for HomeSeer som vil forenkle styring av strømforbruk etter strømpriser. Den lager automatisk ett konfigurerbart antall On/Off devicer i HS ved første gangs kjøring. Devicene slås Off og On ettersom prisene er høye eller lave. Det fins to typer devicer, Max og Min. En Max device går Off når prisen går over en grense, en Min device går On når prisen går under en grense. Du kan definere så mange slike devicer som du vil. En parameterfil definerer devicer og prisgrenser etc. Denne kan editeres fra web-grensesnitt. Disse devicene lager da eventer i HS som igjen kan styre fysiske devicer som varme, varmtvann osv. Du kan og definere hvor lenge en device kan være av- eller påslått, eller innenfor et gitt tidsrom. Grensesne kan settes som pris i øre, eller når pris går over eller under gjennomsnittspris. Uansett vil programmet finne de laveste prisene med de gitte kriterier, Du kan også knytte en device opp mot en eksisterende HS device ved hjelp av en Shadow device. I tillegg til ON/OFF kan denne også sende verdier til HS device, som feks termostat setpunkt. PowerControl kan lese effektforbruk ved hjelp av en AMS måler på HAN porten, og sende data til HS. Effektforbruk kan også hentes fra HS om det fins der feks, fra Tibber. Programmet kan redusere maks effektforbruk ved å slå devicer av for å holde forbruket under en bestemt grense pr time for å redusere nettleie. Forbruk og priser vises grafisk, og du kan også logge enkeltforbrukere og vise forbruket i diagram. Eksempler på bruk Du kan kombinere flere devicer i HS ved hjelp av eventer og lage en varmestyring som virker slik: - Sett dag og natt-temperatur i HS. Kombiner så dette med en PriceControl-devicer som: -Setter ned temperatur hvis strømmen blir ekstra dyr basert på en fast grense, eller høyere enn gjennomsnitt den dagen. - Setter opp temperaturen om strømprisen går under en fast grense, under strømstøtte grensen, eller under gjennomsnitt. - Slår av devicer om effektforbruk en time går over en grense. Les mer i Help dokumentet. PowerControl kan også lese effektforbruk ved hjelp av en AMS måler på HAN porten, og sende data til HS samt logges til fil. Dette er ingen skybasert løsning og den er leverandør-uavhengig. Priser hentes gratis fra ENTSO-E. Web status display Visning av priser og forbruk. Dynamisk oppdatering av Charts. Tekst nederst viser øyeblikkets strømpris, forbruk og total for timen. Oppdateres en gang i minuttet. Chart som viser pris og forbruk oppdateres en gang i timen. Kjekt å henge på veggen for å følge med. Konfigurerbare Devicer du kan knytte til events i HS. Her for å styre varmepumpe. Sette ned varme ved høy pris og sette opp varme ved ekstra lav pris. Logging av forbrukere vises grafisk Planlagt videre utvikling Direkte styring av varmepumper, panelovner etc. I dag kan man bruke Powercontrol til å styre en varmekilde som i eksemplet over. Det krever dog ganske mange events i HS når flere devicer skal kombineres. Alternativt kan du lage et script. Enklere er det å kombinere flere devicer i PowerCntrol, og så sende temperatursettpunkt, viftehastighet etc direkte til varmepumpe- eller panelovn-device i HS så slipper du å lage masse events som er vanskelig å endre. Temperatur settpunkt etc vil kunne redigeres i PowerControl web grensesnitt. Release V1.2.0.2 06.03.2023 Nytt Entsoe API Fikset bruk av default verdier om ikke priser blir hentet. Kan slå av prishenting helt ved å sette PriceArea blank Det holder å bytte exe fil om du allerede har PowerControl Release V1.3.0.0 25.03.2023 Bugfix: Feiler pgr av endring av antall priser fra Entsoe Grafikk: Plotter priser og forbruk. se: Grafikk Ny ini fil: PowerControlData.ini. Visning av Månedsmaks og gjennomsnitt av 3 høyste verdier - nettleie avgift. Lese forbruk fra HomeSeer - Tibber Release V2.0.0.0 Forbedret web brukergrensesnitt. Alle parametere du bruker ofte kan endres i web grensesnitt. Parametere lagres og du trenger ikke restarte. Devicer kan legges til og slettes. Beregninger av max og min events kan oppdateres uten restart. Dvs, lett å teste parametersetting. ToolTip hjelp på mange parametere. Grafikk. Total strømforbruk og pris vises grafisk. Logging av device forbruk med grafikk. Du kan sette opp logging av alle HomeSeer devicer, som varmeovner, varmtvann etc og logge dette. Resultatet vises grafisk og som HS devicer om ønskelig. Forenkler identifisering av store forbrukere og feil i automasjonsoppsett. Automatisk bytte til høyere månedsmaksgrense for forbruk. Går du over effektleddet en måned så settes neste maksgrense som limit. Ny max-device paramter OffAboveLimit. Går prisen over denne grensen i øre slås device helt av. Lesing av Euro kurs fra Norges Bank endret til JSON på grunn av endringer i webservice. Standardavvik til døgnpriser lagt til som device i HomeSeer. Kan brukes til å detektere flate priser. Lesing av forbruk fra AMS leser forbedret feilhåndtering Release V2.0.0.2 Det var en bug i V2.0 som gjorde at oppstart feilet om en parameter i ini filen PowerControlData.ini var blank. Du kan legge inn noen dummy data her, som feks DayConsumptionTimes=25.04.2023;13;14;19 DayHourConsumption=0,5;0,0;0,7 Eller laste ned V2.0.02 hvor dette er rettet. Les også kapitlet Minimumskonfigurasjon i det oppdaterte Help dokumentet om hva som minimum må kofiguerers for å få igang plugin. Release V3.0.0.0 For å forenkle oppsett av devicer er det laget forhåndsdefinerte device typer kalt Device Functions. Ved å velge en Function reduserer du parameterantallet. Du kan selv også definere og endre Device Functions. Ønsker du å bruke Device Functions for eksisterende devicer må du legge inn en parameter på hver device som definerer dens funksjon. Se under. Ny strømstøtte-modell av 2023 er lagt inn. Du må sannsynligvis endre noen av device parametere på grunn av dette. Priser med og uten strømstøtte vises. Forbedret lesning av effektforbruk fra HomeSeer/ Tibber. NB! Se manual om oppsett. Eventer er endret slik at også Max type plottes som rødt når de er ON. Ønsker du å beholde det gamle slik at de plottes som blå når de er OFF kan du endre dette i config fanen. Parameter PlotMaxAsRed = False i INI fil under [General] Mere Tooltip help er lagt til. Bytt filen PowerControlTooltip.ini i HomeSeer\Config Release V3.0.0.1 Det snek seg inn en liten bug som gjør at priser uten strømstøtte ikke blir flyttet over til neste dag etter midnatt. Dette har ingen praktisk betydning, for beregninger. 3.0.0.1 er releaset. Det holder å bytte exe fil hvis du oppdaterer fra 3.0.0.0 Release V3.0.0.2 06.04.2024 Bugfix: Tooltip help tekst for Device setup manglet. Bugfix: Strømstøtte priser blir feil når pris er under grense- 73 øre. Nytt: La til timespan for når Max priser-devicer er lov å slå av. Dvs, innenfor dette tidsrommet blir ikke device slått av uansett. (grunnet klage fra kona om kaldt kontor om morgenen) Dynamisk oppdatering av Charts. Tekst nederst som viser øyeblikkets strømpris, forbruk og total for timen. Oppdateres en gang i minuttet. Chart som viser pris og forbruk oppdateres en gang i timen. Kjekt å henge på veggen for å følge med. Ny parameter under Config- Chart & Log «Chart Font Size». Her kan du sette font på Chart for å lette lesing. Default= 12 NB. For detaljer om hvordan oppgradere les nederst i dokumentasjonen. HSPI_PowerControl V3.0.0.2.zip PowerControlHelp - V3.0.0.2.pdf
    1 poeng
  28. Release V3.0.0.2 06.04.2024 Bugfix: Tooltip help tekst for Device setup manglet. Bugfix: Strømstøtte priser blir feil når pris er under grense- 73 øre. Nytt: La til timespan for når Max priser er lov å slå av. Dvs, innenfor dette tidsrommet blir ikke device slått av. Dynamisk oppdatering av Charts. Tekst nederst som viser øyeblikkets strømpris, forbruk og total for timen. Oppdateres en gang i minuttet. Chart som viser pris og forbruk oppdateres en gang i timen. Kjekt å henge på veggen for å følge med. Ny parameter under Config- Chart & Log «Chart Font Size». Her kan du sette font på Chart for å lette lesing. Default= 12
    1 poeng
  29. Her er kode for å styre addresserbare LEDS Bibliotekene er: Litt om LED Å slå på en LED er vanligvis noe av det aller første en gjør når en starter med å leke med ESP32. ESP32 har til og med en onboard LED på pinne 2 som en kan bruke til testing uten eksterne komponenter. En LED har ingen (stor) indre motstand som en lyspære og må ha en ekstern motstand for å begrense strømmen slik at den ikke brenner opp. Max støm på LEDen finner du i spesifiksjonen på den, der finner du også spenningsfallet over selve LEDen (Forward Voltage). Om den site ikke er oppgitt kan du slå den opp (typisk) i en tabell. Her er en kalkulator for motstand: https://www.digikey.com/en/resources/conversion-calculators/conversion-calculator-led-series-resistor Husk at ESP32 pinnen selv ikke tåler mer enn typisk 20mA. (Noen sier 40mA) Det lange beinet skal til +: Skal du ha 3 LEDs (Feks Rød, gul og Grønn) må du bruke 3 pinner på ESP32en og en egen motstand for hver LED. RGB Led Men det finnes LED som har alle 3 fargene bygget inn i samme LED, -en RGB LED. Her er alle mins koblet sammen og ført ut på den lengste pinnen: OBS De finnes både i "common Anode" og "Common Catode", husk å sjekke hva du kjøper. Her må du fremdeles ha en motstand for hver farge og bruke 3 pinner. RGB LED Strips De første LED stripene som kom var koblet slik at alle LEDene hadde sin egen motstand og fargene var ført ut på hver sin tilkobling: Disse oppfører seg altså litt som en RBG LED men drar veldig mye strøm på grunn av alle LEDene. Du kan altså ikke koble disse direkte til pinner på ESP32en men må sette en driver-boks i mellom eller en havlvleder som feks en MOS-Fet. (Det kommer en egen guid senere om MOS-Fet) For å få hvitt lys skal en slå på både Rød, grønn og Blå samtidig. Dette blir ikke helt hvitt så derfor ble det laget striper med en egen hvit LED i tillegg: RGBW. Til interiør belysning var det ønskelig med en varmere hvit og derfor kom RGBWW som har enda en ekstra LED som er warm-white. Adresserbare LED MEN fordi LEDstrips ble så poppulære bygget man etterhvert inn en egen liten IC på hver eneste LED på stripen slik at disse kunne styres med et signal fra ESP32en. Dette gjorde også at en kunne styre hver enkelt LED på stripen helt separat og ikke alle de RØD samtidig slik som på RGB stripene. Senere ble disse ICene integrert i selve LEDen. Disse LED stippene har altså bare 3 tilkoblinger: + - og data og hver IC sender dataene videre til nestemann. De trenger ingen motstander eller MOS-Fet og har egen strøm strømforskyning som kan være 24V for å kunne ha lange striper uten spenningsfall. Adresseringen er "relativ" slik at førstemann på stripa er nr 0 og nestemann er nr 1 osv. Dette skjer ved at ICen "teller opp" adressen med 1 og sender videre. Du kan altså klippe og skjøte hvor du vil og adressene er fremdeles fortløpende fra den første som får data og videre bortover. OBS Det betyr osgå at stripene har en rettning som du må følge når du kobler. Blir det brudd i datastrømmen slukker hele resten av rekka. De har derfor begynt å produsere striper med en esktra backup datakanal (merket BO - BI) Enkelt Adresserbare LED Det finnes også enkelt LED som er adresserbare. Jeg er veldig glad i slike for å la ESP32en kommunisere statuser med omverdenen. Her trenger jeg bare en pinne på ESP32en og en motstand (330 ohm) mellom ESP32en og LEDen og så kan jeg koble meg videre med så mange ekstra LED jeg bare trenger uten å bruke flere pinner eller motstander 🙂 Kode Koden for å jobbe med Adresserbare LED er super enkel. Alt skjer i biblioteket FastLED: #include "FastLED.h" #define NUM_LEDS 264 \\ Antall LED på stripa CRGB leds[NUM_LEDS]; \\ Et "array" led LEDene #define PIN 4 \\ Pinnen der datakabelen på stripen er tilkoblet void setup() { FastLED.addLeds<WS2812, PIN, RGB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip ); } WS2812 er typen IC på LED stripen. Så er det bare å skru på en og en LED slik: leds[Pixel].r = red; leds[Pixel].g = green; leds[Pixel].b = blue; der Pixel er adressen til LEDen, og første LED er 0. og red, green, blue er verdier fra 0 til 255 for styrken på lyset. Eller slik om du foretrekker det: leds[Pixel] = CRGB(Red, Green, Blue); eller slik leds[Pixel] = CHSV(Hue, Saturation, Value); Når du har satt alle veridene på alle LEDene du ønsker, sender du det til stripe med denne kommandoen: FastLED.show(); Du lager ganske fort en par forenklings rutiner som feks disse: void setPixel(int Pixel, byte red, byte green, byte blue) { leds[Pixel].r = red; leds[Pixel].g = green; leds[Pixel].b = blue; } void setAll(byte red, byte green, byte blue) { for(int i = 0; i < NUM_LEDS; i++ ) { setPixel(i, red, green, blue); } showStrip(); } Jeg har ikke noe MQTT kode her for det klarer dere selv, men jeg har en liten kodesnutt som kjøres dersom barnebarna roper "Alexa show me rainbow" som dere kan få:
    1 poeng
  30. Sa opp Verisure og installerte Homely nå i månedsskiftet. Har gruet meg litt til å legge inn denne 'integrasjonen' (:D) for å få Homely-sensorene inn i HA, men det gikk greiere enn jeg så for meg. Bruker Portainer, så det var litt kluss med env.-variabler før det spilte, men det gikk nå fint til slutt. Takk for innsatsen, @Ronniehl og dere andre som har testet!
    1 poeng
  31. Både ja og nei. Du får med node-red når du kjører en backup av HA. Det er en stor fordel. Node red og HA snakker sammen via websockets og rest-api. Det er ikke den mest effektive måten å gjøre det på, men samtidig greit nok. Men det er to separate systemer og ingenting endrer på det, selv om det er gjort enkelt å installere via en add-on. Nå kjenner jeg ikke til node-red, annet enn at det er et grafisk system. Hvor fort tar det til seg Home Assistant sin nye funksjonalitet? Kan du slå av / på lys basert på område, etasje eller merkelapp.
    1 poeng
  32. Det er ikke helt slik det fungerer i Home-Assistant. Interface i Home-Assistant baserer seg på YAML-kode. Du kan enten skrive YAML-koden selv, eller bruke GUI til å generere dette. Før gikk dette under navnet "Lovelace", nå går det under navnet "Dashboard" https://www.home-assistant.io/dashboards/ Du viser dette via nettleser på iPad, eller eller via Home-Assistant appen.
    1 poeng
  33. YES! Da skjønte jeg det @Petterpotet. Takker.
    1 poeng
  34. Går du inn på devicen, trykker + på automations får og "do something when" får du opp noen forslag:
    1 poeng
  35. Velger å poste her pga tittelen på tråden 🙂 Jeg har kjørt HomeSeer siden tidenes morgen men jar begynt å tenke litt på HA. Før jeg tenker mer må jeg ha klarhet i en veldig viktig ting: Har HA noen tilsvarende funksjonalitet som -Jon00s Alexa helper Som gjør det mulig å spørre Alexa om ting i smarthuset og få svar -HSTouch Mulighet til å enkelt designe touch interface til en iPad (eller tilsvarende)
    1 poeng
  36. Fungerer utmerket den her. Men den sender events, så du må trigge på disse. Bruker du Node-Red kan du importere denne: [{"id":"4d3659659ad81942","type":"server-state-changed","z":"0481d1d9b9b1d87e","name":"Livingroom Wallswitch Action","server":"ce440416.77f1e8","version":4,"outputs":1,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.zigbee_livingroom_wallswitch_action","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is_not","output_only_on_state_change":true,"x":620,"y":920,"wires":[["4cfb5b9adc55ecc8"]]},{"id":"4cfb5b9adc55ecc8","type":"switch","z":"0481d1d9b9b1d87e","name":"Switch Actions","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"on_l1","vt":"str"},{"t":"eq","v":"off_l1","vt":"str"},{"t":"eq","v":"brightness_move_up_l1","vt":"str"},{"t":"eq","v":"brightness_move_down_l1","vt":"str"},{"t":"eq","v":"brightness_stop_l1","vt":"str"},{"t":"eq","v":"on_l2","vt":"str"},{"t":"eq","v":"off_l2","vt":"str"},{"t":"eq","v":"brightness_move_up_l2","vt":"str"},{"t":"eq","v":"brightness_move_down_l2","vt":"str"},{"t":"eq","v":"brightness_stop_l2","vt":"str"},{"t":"eq","v":"on_l3","vt":"str"},{"t":"eq","v":"off_l3","vt":"str"},{"t":"eq","v":"brightness_move_up_l3","vt":"str"},{"t":"eq","v":"brightness_move_down_l3","vt":"str"},{"t":"eq","v":"brightness_stop_l3","vt":"str"},{"t":"eq","v":"on_l4","vt":"str"},{"t":"eq","v":"off_l4","vt":"str"},{"t":"eq","v":"brightness_move_up_l4","vt":"str"},{"t":"eq","v":"brightness_move_down_l4","vt":"str"},{"t":"eq","v":"brightness_stop_l4","vt":"str"}],"checkall":"false","repair":false,"outputs":20,"x":775,"y":920,"wires":[["5b23dd782539ced5"],["50604be90b827992"],["8bb45d836b4cb11c"],["7a288fd45d0d27cc"],["cf7ae0527c612bb3"],["5b0a57b2b0729c85"],["04166aaa24e58df8"],[],[],[],[],[],[],[],[],["17bc73f26310bb03"],["8827eea195645256"],["30fad7039808adbe"],["ec746b28673cb5cd"],["5f22c01ff304b15a"]],"l":false},{"id":"ce440416.77f1e8","type":"server","name":"Home Assistant","version":4,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m"}]
    1 poeng
  37. Sorry, fikk ikke med meg denne tidligere. Virker som noe feil med respons fra homely (jeg slacka visst med feilhåndteringen der). Bygger en ny versjon nå med noe feilhåndtering, kan du teste den og se om det funker? Publiseres nå, så klar om ca 5 min. 🙂
    1 poeng
  38. Jeg har hatt en vanlig Zigbee temperatur sensor for innebruk som henger ute under en "plankebaldakin". Der kan det ikke regne på den og da går det bra. Det passer utmerket da sola ikke kan skinne på den der den henger. En tett boks vil gjøre at den reagerer langsomt. Og om den har fuktmåling så blir det helt feil.
    1 poeng
  39. Første gang jeg har oppdatert til beta. FANTASTISK. 🙂
    1 poeng
  40. 40 A * 397,9 = 15 916 W maks strømtrekk. Bare husk nok sikringer. Ut ifra listen din kan du dele opp ganske bra. Egen til fryser egen til kompressor egen til mikro egen til ventilasjon egen til stikk og lys kjøkkenområde egen til garasjeport egen til elbillader egen til generelle stikk og lys osv..
    1 poeng
  41. Har automatisert en Viwa vannstopper sammen med et Fibaro smart implant. Nå kan jeg se og styre vannstopper fra Homey. Betydelig rimeligere å kjøpe billige Tuya zigbee sensorer (har 6 st allerede) fra Aliexpress enn å kjøpe et komplett system fra f.eks. Høiax eller Waterguard.
    1 poeng
  42. https://www.elektroimportoren.no/fibaro-z-wave-roller-shutter-4/95019/Product.html Fibaro Z-Wave Roller Shutter 4 med 800-chipen. Spennende at Fibaro lanserer noe nytt, kanskje vi ser flere produkter fremover. De har ikke skrevet noe på side egne sider enda, så er nok ganske nytt. Fant en sammenligningstabell med Shutter 3 vs Shutter 4.
    1 poeng
  43. Det kan være en smart løsning. Jeg valgte en litt annen variant av det: En variabel settes til verdien "Dag", "Kveld"(som også er skumringstiden om morgenen) og "Natt" ut fra klokke og soloppgang/solnedgang. Ved "Dag" går lyset på 100%, "Kveld" rundt 30% og "Natt" rundt 1%. Dimmeprosentene kan variere noe ut fra dimmertype og lyskilde. Mange veier til en smart løsning av dette... En lysautomasjon jeg er spesielt fornøyd med er på soverommet. En HUE LED-stripe og HUE bevegelssensor under sengen. Ved bevegelse dimmer LED-stripen opp til 100/255 i løpet av 5 sekund, står på et minutt og dimmer ned igjen i løpet av 2 minutt. Da kommer lyset på ikke så veldig brått og forsvinner igjen helt umerkelig. Veldig enkelt å få til når en kan sette "transition time" i dimmeren til litt høye verdier. Noen dimmere har ikke denne funksjonen og andre har en max på 5 sek. For å skryte litt av taklyset på soverommet også: Trådløs bryter limt på skapdøren til garderobeskapet (eneste praktiske plassen den kunne være) slår lyset på 1% om det er av og slår av om det er på. Så tar automasjonen over og sjekker om dimmeren står på 1%. Hvis så dimmes opp til 30% på kveld og 100% på dag. Langt trykk på bryter gir 100% uansett.
    1 poeng
  44. Kommer an på om knappen sender event for hold og slipp.......
    1 poeng
  45. For min del kan jeg ikke si noe om det, men vil gjerne bemerke to ting. Containeren er hos meg utrolig stabil, virker som en drøm. Homely fortalte meg at det vil komme en stor oppdatering slutten av mars, uten at jeg vet, hva den vil inneholder.
    1 poeng
  46. Fram til nå har jeg hatt en Aeotec door/window sensor 7 i postkassen, men denne har aldri funket optimalt da det blir for langt imellom huset og postkassen, og denne virker til og spise batterier når dekningen til z-wave nettverket er dårlig. Jeg kom over et innlegg i en Facebook gruppe en som hadde kjøpt 5stk av disse: https://www.espthings.io/index.php/2022/11/05/et-sw01-a-very-low-consumption-mailbox-switch/ I skrivende stund har han en igjen: ESPHome Postkasse-sensor - 1 igjen | FINN torget Mottok enheten etter noen få dager og startet testingen og løste noen utfordringer underveis som man alltids gjør med nye dippedutter 🙂 ESP-en eksponerer automatisk de nødvendige entitetene: Reset-bryter (Denne bryteren gjør at ESP-en går i deep sleep igjen) Batterispenning Status på switch 1 og 2. WiFi signalstyrke (RSSI). 3D-print kabinettet på espthings var for lite pga molex-kontakten til bryter inngangene blir for høg, så måtte lære meg litt Fusion360 for å modifisere høyden på det, la nok på ca 2cm. Det ble da også nok plass til og montere WiFi-antennen rett i boksen også. Den fjærbelastede trykkbryteren ble koblet slik at den er NO når lokket til postkassen er igjen. Når postkassen åpnes er den NC og trigger ESP-en. Neste utfordring var en liten nøtt. Jeg fikk som regel varsel annenhver gang om at postkassen var åpnet, årsak måtte finnes.. Jeg sjekket først nettverket: RSSI-en var for lav (89 dBm), så jeg flyttet aksesspunktet opp på kaldloftet, da ble den umiddelbart noe bedre (80dBm), dette er greit nok når det er snakk om såpass lave datamenger som skal over. Men fremdeles var det noe trøbbel. EIRP-en på aksesspunktet på 2,4ghz var satt til minimum 12dBm, så klienter under dette blir automatisk sparket ut for å ikke forringe WiFi-opplevelsen til andre. Satt EIRP-en ned til 0 og da funket den straks bedre, deaktiverte dermed 2.4ghz for klientene, slik at de nå kun kjører på 5ghz, så får IoT-enhetene bruke 2,4ghz/5ghz alt etter hva de velger selv. Neste utfordring var at Home-Asssistant ikke rakk og polle ESP-en før den gikk i deep-sleep etter 30 sekunder. Økte deep-sleep tiden til 60 sekunder og problemet var egentlig løst sånn sett, men med økt strømforbruk. Etter litt googling fant jeg ut at for deep-sleep enheter er ikke API-et og foretrekke, men MQTT. Da er det ESP-en selv som sender ut data til MQTT, i stedet for at HA skal polle data. Koden for dette er ganske rett fram: MQTT Client Component — ESPHome Alle entitetene dukker automatisk opp i HA også på MQTT. #api: # encryption: # key: !secret esphome_api_secret mqtt: broker: 1.1.1.1 username: esp-postkasse password: !secret esphome_mqtt_password Med MQTT fungerer enheten mye bedre, med det samme den har koblet til WiFi sender den ut data. Har testet ved og kjøre ping kontinuerlig mot enheten, og ved første ping-reply så sender den også ut data på MQTT. Jeg kan dermed putte den i deep sleep igjen etter 1 sekund og strømforbruket blir minimalt. Slik ser automasjonen i node-red:
    1 poeng
  47. Jeg hadde heller kjøpt denne: https://www.silabs.com/development-tools/wireless/z-wave/z-wave-800-dev-kit?tab=overview
    1 poeng
  48. Mitt Dieselprisbilde ser for tiden slik ut: Og et søkbart bilde med mer fleksibelitet men mindre nytteverdi... Her finner en ID som trengs i hovedbildet: Node-RED Flow: De 10 funksjonsnodene med bensinstasjonsnavn er det eneste som trenger endres for å tilpasse favorittene. Innholdet er slik: [{"id":"9103052baf82e5d0","type":"inject","z":"2447f70b5f1095ba","g":"1187eef693a5d073","name":"Hvert 10 min","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"*/10 6-23 * * *","once":true,"onceDelay":"5","topic":"","payload":"","payloadType":"date","x":140,"y":80,"wires":[["fb25d94b.139e78"]]},{"id":"c622a1c1b5d187fe","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","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 obj.id = statsRaw[i].id;\n// obj.name = msg.payload[i].name || \"-\"\n// obj.brand = msg.payload[i].brand || \"-\"\n// obj.discountInfo = msg.payload[i].discountInfo || \"-\"\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.brandId = msg.payload[i].brandId || \"-\"\n obj.location = statsRaw[i].location || \"-\"\n // Add prices\n var obj3 = {}\n //console.log(statsRaw[i].prices.length);\n for (j = 0;j < statsRaw[i].prices.length;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// 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":710,"y":880,"wires":[["6ffebf4f1340a92e","f193882be2dc7762"]]},{"id":"6ffebf4f1340a92e","type":"ui_table","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","name":"All stations","order":4,"width":"12","height":"22","columns":[{"field":"name","title":"","width":"26%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"brand","title":"","width":"27%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"location","title":"","width":"31%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"id","title":"id","width":"13%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":1,"cts":true,"x":1100,"y":880,"wires":[["fc1b2554d6e80f6b"]]},{"id":"fc1b2554d6e80f6b","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"add to favs","func":"var favs = flow.get(\"Favs\") || []\nvar pl = msg.payload;\nvar arr = [];\nvar exists = false;\narr = favs;\n\nfor (var i = 0;i < favs.length;i++){\n if (favs[i].id == pl.id) exists = true;\n}\nif (exists == false) arr.push(pl);\n\nflow.set(\"Favs\", arr);\nreturn msg; ","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":630,"y":920,"wires":[["6bfcbbe7c43dcc84"]]},{"id":"5fd3c4e366a636d6","type":"ui_table","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","name":"Selected stations","order":5,"width":"14","height":"23","columns":[{"field":"name","title":"name","width":"30%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"brand","title":"brand","width":"30%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"location","title":"location","width":"30%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"id","title":"id","width":"10%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":1,"cts":true,"x":1120,"y":920,"wires":[["03dc6f5b94c49e02"]]},{"id":"6bfcbbe7c43dcc84","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"List fav stations","func":"var favs = flow.get(\"Favs\") || []\nvar arr = []\nvar msg2 = {}\nfor (var i = 0;i < favs.length;i++){\n let obj = {}\n obj.id = favs[i].id;\n obj.name = favs[i].name;\n obj.brand = favs[i].brand;\n obj.location = favs[i].location;\n arr.push(obj);\n}\nmsg2.payload = arr;\nreturn msg2; ","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":860,"y":920,"wires":[["5fd3c4e366a636d6","f193882be2dc7762"]]},{"id":"03dc6f5b94c49e02","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"Remove station from fav","func":"var i,j = 0;\nvar favs = flow.get(\"Favs\") || []\nvar favs2 = []\nvar remove = msg.payload;\nvar arr = []\nvar msg2 = {}\nfor (i = 0;i < favs.length;i++){\n if (favs[i].id != remove.id){\n favs2[j] = favs[i];\n j++;\n }\n}\nflow.set(\"Favs\", favs2)\nreturn msg; ","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":890,"y":970,"wires":[["6bfcbbe7c43dcc84"]]},{"id":"4d95ecb3e17e80a4","type":"ui_table","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","name":"Drivstoffpriser","order":6,"width":"13","height":"23","columns":[{"field":"brand","title":"","width":"20%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"name","title":"","width":"25%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"type","title":"","width":"15%","align":"right","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"price","title":"Kr","width":"15%","align":"right","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"age","title":"hrs.","width":"15%","align":"right","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":1,"cts":true,"x":1110,"y":1010,"wires":[[]]},{"id":"bf43e528a5851b0d","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"List priser for favs","func":"var favs = flow.get(\"Favs\") || []\nvar stats = flow.get(\"stationsPrepd\") || []\nvar arr = []\nvar msg2 = {}\nvar now = Number(new Date());\nvar age = 0;\n\nfor (var i = 0;i < stats.length;i++){ //bla gjennom alle stasjoner\n for (var j = 0;j < favs.length;j++){ // bla gjennom favoritter\n if (stats[i].id == favs[j].id){ //er gjeldende stasjon i favoritter?\n// console.log(stats[i].prices);\n// for (var k = 0; k < stats[i].prices.length; k++){ // bla gjennom drivstofftyper\n for (var k in stats[i].prices){ // bla gjennom drivstofftyper\n// console.log(stats[i].id);\n let obj = {}\n obj.name = stats[i].name;\n obj.brand = stats[i].brand;\n obj.location = stats[i].location;\n obj.type = stats[i].prices[k].type;\n obj.price = stats[i].prices[k].price;\n obj.age = ((now - stats[i].prices[k].lastUpdated) / 3600 / 1000).toFixed(1);// + \"h\"; //age in hours\n arr.push(obj);\n }\n }\n }\n}\nmsg2.payload = arr;\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":870,"y":1010,"wires":[["4d95ecb3e17e80a4"]]},{"id":"f193882be2dc7762","type":"delay","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":660,"y":1010,"wires":[["bf43e528a5851b0d"]]},{"id":"d9d0882ba114f2ae","type":"ui_text_input","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"","label":"Søk...","tooltip":"","group":"0d788a3660f620b1","order":7,"width":"10","height":"1","passthru":true,"mode":"text","delay":300,"topic":"topic","sendOnBlur":true,"className":"","topicType":"msg","x":610,"y":840,"wires":[["dd937fc64214f72d"]]},{"id":"dd937fc64214f72d","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"List selected stations","func":"var stats = flow.get(\"stationsPrepd\") || []\nvar searchText = msg.payload;\nvar arr = [];\nvar msg2 = {}\nfor (var i = 0;i < stats.length;i++){\n let obj = {}\n obj.id = stats[i].id;\n obj.name = stats[i].name || \"-\"\n obj.brand = stats[i].brand || \"-\"\n obj.location = stats[i].location || \"-\"\n // plukk ut bare stasjoner som inneholder søkebegrepet\n if (obj.name.includes(searchText) || obj.brand.includes(searchText) || obj.location.includes(searchText)){\n arr.push(obj);\n }\n}\nmsg2.payload = arr;\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":880,"y":840,"wires":[["6ffebf4f1340a92e"]]},{"id":"13d4a47fe1d5ae74","type":"ui_text","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","order":1,"width":"12","height":"1","name":"","label":"Alle stasjoner","format":"{{msg.payload}}","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1340,"y":850,"wires":[]},{"id":"65cdb903a6486baf","type":"ui_text","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","order":2,"width":"14","height":"1","name":"","label":"Favoritter","format":"{{msg.payload}}","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1320,"y":880,"wires":[]},{"id":"6e102042f9d3270e","type":"ui_text","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","order":3,"width":"13","height":"1","name":"","label":"Priser","format":"{{msg.payload}}","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1310,"y":910,"wires":[]},{"id":"8aef97ddf9f7d1d0","type":"comment","z":"2447f70b5f1095ba","g":"1187eef693a5d073","name":"Hent drivstoffpriser fra Drivstoffappen","info":"","x":190,"y":50,"wires":[]},{"id":"cf5b28121ebac9d8","type":"comment","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"Vis universalliste drivstoffpriser i egen tab","info":"","x":720,"y":790,"wires":[]},{"id":"08c3e48feae420a1","type":"inject","z":"2447f70b5f1095ba","g":"1187eef693a5d073","name":"Hvert 60 min","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"0 0-5 * * *","once":true,"onceDelay":"5","topic":"","payload":"","payloadType":"date","x":140,"y":110,"wires":[["fb25d94b.139e78"]]},{"id":"fb25d94b.139e78","type":"http request","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","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":140,"y":280,"wires":[["9b28d83a.0226d"]]},{"id":"9b28d83a.0226d","type":"function","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","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":150,"y":320,"wires":[["bc5b206f4b80b029"]]},{"id":"bc5b206f4b80b029","type":"md5","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"MD5","fieldToHash":"shiftedToken","fieldTypeToHash":"msg","hashField":"md5Hash","hashFieldType":"msg","x":120,"y":360,"wires":[["09f4eac7c81a8f68","372632c4f60d8424"]]},{"id":"36db2ee7d9dbc9dc","type":"json","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"","property":"payload","action":"","pretty":false,"x":120,"y":440,"wires":[["029b804564b2042d"]]},{"id":"372632c4f60d8424","type":"http request","z":"2447f70b5f1095ba","g":"66fed02de14cd5a7","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":610,"wires":[["77f438e4db6a6f68"]]},{"id":"77f438e4db6a6f68","type":"json","z":"2447f70b5f1095ba","g":"66fed02de14cd5a7","name":"","property":"payload","action":"","pretty":false,"x":110,"y":650,"wires":[["82d67472bd4bb8a0"]]},{"id":"82d67472bd4bb8a0","type":"change","z":"2447f70b5f1095ba","g":"66fed02de14cd5a7","name":"set flow.brands","rules":[{"t":"set","p":"brands","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":140,"y":690,"wires":[[]]},{"id":"09f4eac7c81a8f68","type":"http request","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","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":140,"y":400,"wires":[["36db2ee7d9dbc9dc"]]},{"id":"32028735556d59eb","type":"comment","z":"2447f70b5f1095ba","g":"66fed02de14cd5a7","name":"Hente \"brands\" fra drivstoffappen","info":"","x":170,"y":570,"wires":[]},{"id":"029b804564b2042d","type":"change","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"set flow.stationsRaw","rules":[{"t":"set","p":"stationsRaw","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":170,"y":480,"wires":[["e6a31dc9dfb2064d"]]},{"id":"d9262ca78f365ae0","type":"comment","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"Hente \"stations\" fra drivstoffappen","info":"","x":180,"y":240,"wires":[]},{"id":"6d9e547c291b0fbc","type":"delay","z":"2447f70b5f1095ba","name":"+1 gang","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":420,"y":530,"wires":[["920c8e464a11c598"]]},{"id":"e6a31dc9dfb2064d","type":"change","z":"2447f70b5f1095ba","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"stationsPrepd","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":480,"wires":[["6d9e547c291b0fbc","920c8e464a11c598","c622a1c1b5d187fe"]]},{"id":"5301761a12ee53d3","type":"ui_button","z":"2447f70b5f1095ba","g":"1187eef693a5d073","name":"","group":"c5147f5beba7be52","order":23,"width":"3","height":"2","passthru":false,"label":"Oppdater","tooltip":"","color":"","bgcolor":"","className":"","icon":"","payload":"","payloadType":"str","topic":"topic","topicType":"msg","x":120,"y":150,"wires":[["fb25d94b.139e78"]]},{"id":"77e67d4e89c2c546","type":"group","z":"2447f70b5f1095ba","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["dc20c0baebcded39","52943a1fc077d28f","7014c2032a87fc3b","671050bdedc0c3cb","8e502b90702d3857","b1eaf76d80b124b2","13527989f83e29d2","a789bc33845b6aae","28fe85a134fe0971","dfb010ed7eafaf57","f10d3ac86fabfb52","4fdfe701f4a3afa0","920c8e464a11c598","80fadd7556b173c2","a25c248dc4ebd8e1","4845524c229e5de4","4bc7a1bfe0edbd3d","a0ed1589c7578ebc","313d717f04abb611","df6111373c9fcb74","9115f8c79d2fb5bf","bb875534cb2f1287","ef238c7de03c89ba","342412d6ccffa890","deb634361ea88282","7d2c0b671fe55eb5","73f01377bb3987bb","2ca32bed009a91c7","c4e4ad48e1be3967","fedddf6d961e47e1","f004caf9b1859658","f280cce61136ea5f","35afefb923880a86","13a80ea70008ef69","de080617e02b76c0","efb09c551659ae8e","c9be417364a0636a","c1e1c529d2ebbbe3","ba85ec803b447086","575ebc0b7826b668","a5b30e2c9a5b185b","5cdf4a4e44ba3e96","7907e0a5a1ff80b6","ee11d26aa7381961","c6597ae705c493fd","197fde062f906fe2","d3117ab9bbdc344d","a76caa7a16bac95c","99fbdbd6f1247a74","f41e2331b0b830d3","98ad46a8c1cec362","b4db27ab8e1249f9","211a49ea39c47dbf","345e2bc8bcaeeffd","f3a5b1da15641fda","f82266bbecc5f929","7ec8a975f4e62ea5","b4c42883c0d1b421","89f905a2a16a5653","bd92fd80ba8708f5","919354dd3a9d85e1","af920dde227a02ba","42965b35532dc0a6","198ea5a17cf29258","591771770c56781a","72b2d1bb06c9fd47","835b0df2bd3edcbb","69d3c375167219d4","e329d720082ab3ca"],"x":534,"y":9,"w":1182,"h":742},{"id":"2835c4be2e0c346c","type":"subflow","name":"subDrivstoffpris","info":"","category":"","in":[{"x":60,"y":80,"wires":[{"id":"629ced2da13dc595"}]}],"out":[{"x":440,"y":50,"wires":[{"id":"629ced2da13dc595","port":0}]},{"x":440,"y":110,"wires":[{"id":"629ced2da13dc595","port":1}]}],"env":[{"name":"station","type":"str","value":""},{"name":"statInt","type":"str","value":""},{"name":"statInt_Prev","type":"str","value":""}],"meta":{"version":"1.0","author":"SveinHa"},"color":"#DDAA99","outputLabels":["Trend","Skilt"]},{"id":"629ced2da13dc595","type":"function","z":"2835c4be2e0c346c","name":"Hjernen ;-)","func":"let sid = msg.id;\nvar station = msg.station;\nvar statInt = msg.statInt;\n//var statInt_Prev = statInt_Prev;\n\nvar prev = 0;\nvar diff = 0;\nvar msg2 = {}\n//console.log(msg.payload);\n//msg.payload = msg.payload.filter((/** @type {{ id: string; }} */ e) => e.id == sid);\nmsg.payload = msg.payload.filter((e) => e.id == sid);\n//console.log(msg.payload[0].brandId);\n//node.warn(msg);\n\n//msg.payload = msg.payload.filter((/** @type {{ discountInfo: string; }} */ e) => e.discountInfo == station); \n//console.log(msg.payload[0].prices.D.type);\n//msg.payload[0].type = msg.payload[0].prices.D.type;//.filter(e => e.type == 'D');\nvar price = msg.payload[0].prices.D.price;\n//console.log(price);\nvar now = Number(new Date());\nvar age = (now - msg.payload[0].prices.D.lastUpdated) / 3600 / 1000; //age in hours\nvar diffSymbol = \"\";\nflow.set(\"$parent.\" + statInt, price);\nprev = flow.get(\"$parent.\" + statInt + \"_Prev\") || 0\n\n//node.warn(\"ID: \" + msg.payload[0].id + \", name: \" + msg.payload[0].name + \", brand: \" + msg.payload[0].brand );\n\nvar snitt = flow.get(\"$parent.AvgPrice\");\nvar min = flow.get(\"$parent.MinPrice\");\nvar max = flow.get(\"$parent.MaxPrice\");\nvar lolim = snitt - ((max - min)/6);\nvar hilim = snitt + ((max - min)/6);\nif (price < lolim) msg2.color = \"LIME\";\nelse if (price > hilim) msg2.color = \"RED\";\nelse msg2.color = \"YELLOW\";\n//node.warn(min + \"-\" + lolim + \"-\" + snitt + \"-\" + hilim + \"-\" + max);\n\nif (price != prev) {\n var ts = new Date();\n flow.set(\"$parent.\" + statInt + \"_Diff\", Number((price - prev).toFixed(2)));\n flow.set(\"$parent.\" + statInt + \"_Prev\", price);\n flow.set(\"$parent.\" + statInt + \"_PrevT\", Number(ts));\n}\n\ndiff = flow.get(\"$parent.\" + statInt + \"_Diff\") || \"-\"\nvar tss = flow.get(\"$parent.\" + statInt + \"_PrevT\") || 0\nvar ageD = Number((Number(now) - Number(tss))) / 3600 / 1000; //age in hours\nif (ageD > 999.9) ageD = 999.9;\n\nif (diff >= 0) diffSymbol = \"<font color=RED> \" + diff;//.toFixed(2);\nelse diffSymbol = \"<font color=LIME> \" + diff;//.toFixed(2);\nflow.set(\"$parent.\" + statInt + \"_DiffS\", diffSymbol);\n\ndiffSymbol = flow.get(\"$parent.\" + statInt + \"_DiffS\") || \"-\"\nmsg2.payload = \"<font size=6>\" + price.toFixed(2) + \"<font size=2>\" + diffSymbol + \"(\" + ageD.toFixed(1) + \"h)\";\nmsg2.topic = station.slice(0,15); //Forkort for lange navn\nmsg2.age = age.toFixed(1);\nif (age < 1) { msg2.stationcolor = \"LIME\"; }\nelse if (age < 6) { msg2.stationcolor = \"YELLOW\"; }\nelse if (age <= 12) { msg2.stationcolor = \"ORANGE\"; }\nelse if (age > 12) { msg2.stationcolor = \"RED\"; }\n\n//node.warn(msg2.topic + \"Price: \" + price + \" Prev: \" + prev + \"Diff: \" + diff);\nmsg2.pri = flow.get(\"$parent.\" + statInt + \"_Pri\") \n//node.send([null,msg2]);\n//node.warn(\"$parent.\" + statInt + \"-\" + msg2.pri);\nmsg2.src = msg.payload[0].logo;\n\nmsg.payload = Number(price.toFixed(2));\nmsg.topic = station;\n\nreturn [msg, msg2];","outputs":2,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":220,"y":80,"wires":[[],[]]},{"id":"dc20c0baebcded39","type":"persist in","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Dieselpriser","storageNode":"8a6654beead70801","x":1500,"y":690,"wires":[]},{"id":"52943a1fc077d28f","type":"persist out","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Dieselpriser","storageNode":"8a6654beead70801","x":1280,"y":690,"wires":[["835b0df2bd3edcbb"]]},{"id":"7014c2032a87fc3b","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":5,"width":"6","height":"2","name":"Price 1","label":"<font color=\"{{msg.stationcolor}}\">{{msg.topic}} ({{msg.age}}h)","format":"<font color=\"{{msg.color}}\">Kr.{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1630,"y":140,"wires":[]},{"id":"671050bdedc0c3cb","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":15,"width":"6","height":"2","name":"Price 6","label":"<font color=\"{{msg.stationcolor}}\">{{msg.topic}} ({{msg.age}}h)","format":"<font color=\"{{msg.color}}\">Kr.{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1630,"y":440,"wires":[]},{"id":"8e502b90702d3857","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":17,"width":"6","height":"2","name":"Price 7","label":"<font color=\"{{msg.stationcolor}}\">{{msg.topic}} ({{msg.age}}h)","format":"<font color=\"{{msg.color}}\">Kr.{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1630,"y":500,"wires":[]},{"id":"b1eaf76d80b124b2","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":13,"width":"6","height":"2","name":"Price 5","label":"<font color=\"{{msg.stationcolor}}\">{{msg.topic}} ({{msg.age}}h)","format":"<font color=\"{{msg.color}}\">Kr.{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1630,"y":380,"wires":[]},{"id":"13527989f83e29d2","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":3,"width":"6","height":"2","name":"Price 0","label":"<font color=\"{{msg.stationcolor}}\">{{msg.topic}} ({{msg.age}}h)","format":"<font color=\"{{msg.color}}\">Kr.{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1630,"y":80,"wires":[]},{"id":"a789bc33845b6aae","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":9,"width":"6","height":"2","name":"Price 3","label":"<font color=\"{{msg.stationcolor}}\">{{msg.topic}} ({{msg.age}}h)","format":"<font color=\"{{msg.color}}\">Kr.{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1630,"y":260,"wires":[]},{"id":"28fe85a134fe0971","type":"debug","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"debug 89","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":710,"y":590,"wires":[]},{"id":"dfb010ed7eafaf57","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Last update","func":"msg.label = \"Siste oppdatering\";\n//var d = new Date(msg.headers.date);\nvar d = new Date();\n//node.warn(d);\nmsg.payload = d.toLocaleString('nb-NO' );//.slice(0,16);\n//node.warn(msg.payload);\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":720,"y":520,"wires":[["f10d3ac86fabfb52","a25c248dc4ebd8e1"]]},{"id":"f10d3ac86fabfb52","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":24,"width":"6","height":"2","name":"Siste oppdat","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"row-left","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1090,"y":520,"wires":[]},{"id":"4fdfe701f4a3afa0","type":"comment","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Vis utvalgte dieselpriser m/trend","info":"","x":690,"y":50,"wires":[]},{"id":"920c8e464a11c598","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":560,"y":360,"wires":[["28fe85a134fe0971","dfb010ed7eafaf57","313d717f04abb611","7d2c0b671fe55eb5","9115f8c79d2fb5bf","bb875534cb2f1287","ef238c7de03c89ba","342412d6ccffa890","deb634361ea88282","73f01377bb3987bb","efb09c551659ae8e","c1e1c529d2ebbbe3","7907e0a5a1ff80b6","72b2d1bb06c9fd47"]]},{"id":"80fadd7556b173c2","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":25,"width":"6","height":"1","name":"Legend","label":"<font color=\"LIME\"><1h <font color=\"YELLOW\"><6h <font color=\"ORANGE\"><=12h <font color=\"RED\">>12h<font color=#43464B>","format":"","layout":"row-left","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1080,"y":590,"wires":[]},{"id":"a25c248dc4ebd8e1","type":"change","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"flow.get.AvgPrice","rules":[{"t":"set","p":"payload","pt":"msg","to":"AvgPrice","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":900,"y":590,"wires":[["80fadd7556b173c2","4845524c229e5de4","575ebc0b7826b668"]]},{"id":"4845524c229e5de4","type":"change","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"Snitt","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1090,"y":560,"wires":[[]]},{"id":"4bc7a1bfe0edbd3d","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":7,"width":"6","height":"2","name":"Price 2","label":"<font color=\"{{msg.stationcolor}}\">{{msg.topic}} ({{msg.age}}h)","format":"<font color=\"{{msg.color}}\">Kr.{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1630,"y":200,"wires":[]},{"id":"a0ed1589c7578ebc","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":11,"width":"6","height":"2","name":"Price 4","label":"<font color=\"{{msg.stationcolor}}\">{{msg.topic}} ({{msg.age}}h)","format":"<font color=\"{{msg.color}}\">Kr.{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1630,"y":320,"wires":[]},{"id":"313d717f04abb611","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Esso Avaldsnes","func":"msg.id = 203; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Esso Avaldsnes'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'EssoAval'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":120,"wires":[["df6111373c9fcb74"]]},{"id":"df6111373c9fcb74","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1100,"y":120,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"9115f8c79d2fb5bf","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Uno-X Avaldsnes","func":"msg.id = 137; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Uno-X Avaldsnes'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'UnoXAval'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":200,"wires":[["c4e4ad48e1be3967"]]},{"id":"bb875534cb2f1287","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"YX 7-Eleven Norheim","func":"msg.id = 269; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'YX 7-Eleven Norheim'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'YX7ENorh'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":240,"wires":[["fedddf6d961e47e1"]]},{"id":"ef238c7de03c89ba","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Tanken Helganes - Flyplassvegen","func":"msg.id = 1546; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Tanken Helganes - Flyplassvegen'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'TankFlyp'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":790,"y":280,"wires":[["f004caf9b1859658"]]},{"id":"342412d6ccffa890","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Cirkle K Kvala","func":"msg.id = 187; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Circle K Kvala'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'CirKKval'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":320,"wires":[["f280cce61136ea5f"]]},{"id":"deb634361ea88282","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Revheim Storbilvask","func":"msg.id = 22828; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Revheim Storbilvask'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'RevhStor'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":750,"y":360,"wires":[["35afefb923880a86"]]},{"id":"7d2c0b671fe55eb5","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Esso Raglamyr","func":"msg.id = 216; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Esso Raglamyr'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'EssoRagl'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":160,"wires":[["2ca32bed009a91c7"]]},{"id":"73f01377bb3987bb","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Shell Norheim","func":"msg.id = 1342; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Shell Norheim'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'ShelNorh'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":400,"wires":[["13a80ea70008ef69"]]},{"id":"2ca32bed009a91c7","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1100,"y":160,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"c4e4ad48e1be3967","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1100,"y":200,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"fedddf6d961e47e1","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1100,"y":240,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"f004caf9b1859658","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1100,"y":280,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"f280cce61136ea5f","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1100,"y":320,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"35afefb923880a86","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1100,"y":360,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"13a80ea70008ef69","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1100,"y":400,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"de080617e02b76c0","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Beregn snittpris","func":"var sum = 0;\nvar temp = 0;\nvar antall = 0;\nvar minPrice = 999;\nvar maxPrice = 0;\n\nflow.keys().forEach(function(element) {\n// if(element.substring(element.length -5,element.length)!=\"_Prev\"){\n if(element.slice(-5) == \"_Prev\"){\n temp = flow.get(element.slice(0, element.length -5));\n sum += temp;\n antall += 1;\n if (temp > maxPrice) maxPrice = temp;\n if (temp < minPrice) minPrice = temp;\n //node.warn(element.slice(0,element.length -5) + \" Sum: \" + sum + \" Antall: \" + antall + \" temp: \" + temp);\n }\n})\nmsg.payload = (sum / antall).toFixed(2);\nflow.set(\"AvgPrice\", Number(msg.payload));\nflow.set(\"MaxPrice\", Number(maxPrice));\nflow.set(\"MinPrice\", Number(minPrice));\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":900,"y":660,"wires":[["ba85ec803b447086"]]},{"id":"efb09c551659ae8e","type":"delay","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":710,"y":660,"wires":[["de080617e02b76c0"]]},{"id":"c9be417364a0636a","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Sorter på pris, store in flow","func":"var statList = []\nvar i = 0;\nvar temp = \"\";\n// Hent alle stasjoner of pris\nflow.keys().forEach(function(element) {\n if(element.slice(-5) == \"_Prev\"){\n temp = flow.get(element.slice(0, element.length -5));\n var name = element.slice(0, element.length - 5);\n var value = flow.get(element.slice(0, element.length - 5));\n statList.push({ name, value });\n }\n})\n// Sort lav->høy pris\nstatList.sort( (A,B) => A.value - B.value ) \n//node.warn((statList));\nstatList.forEach(function(element) {\n flow.set(element.name + \"_Pri\", i);\n i++;\n// node.warn(element);\n})","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":940,"y":710,"wires":[[]]},{"id":"c1e1c529d2ebbbe3","type":"delay","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","pauseType":"delay","timeout":"100","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":720,"y":710,"wires":[["c9be417364a0636a"]]},{"id":"ba85ec803b447086","type":"debug","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Snittpris","active":true,"tosidebar":false,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":1080,"y":660,"wires":[]},{"id":"575ebc0b7826b668","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":26,"width":"6","height":"1","name":"Legend price","label":"","format":"<font color=\"LIME\" size=5>1/3 < <font color=\"YELLOW\">{{msg.payload}}<font color=\"RED\">< 1/3","layout":"row-left","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1090,"y":620,"wires":[]},{"id":"a5b30e2c9a5b185b","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":19,"width":"6","height":"2","name":"Price 8","label":"<font color=\"{{msg.stationcolor}}\">{{msg.topic}} ({{msg.age}}h)","format":"<font color=\"{{msg.color}}\">Kr.{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1630,"y":560,"wires":[]},{"id":"5cdf4a4e44ba3e96","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":21,"width":"6","height":"2","name":"Price 9","label":"<font color=\"{{msg.stationcolor}}\">{{msg.topic}} ({{msg.age}}h)","format":"<font color=\"{{msg.color}}\">Kr.{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1630,"y":620,"wires":[]},{"id":"7907e0a5a1ff80b6","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"CircleK Hafrsfjord","func":"msg.id = 3691; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'CircleK Hafrsfjord'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'CirKHafr'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":440,"wires":[["ee11d26aa7381961"]]},{"id":"ee11d26aa7381961","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1100,"y":440,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"c6597ae705c493fd","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1100,"y":480,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"197fde062f906fe2","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 0","width":"2","height":"2","order":2,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1630,"y":50,"wires":[[]]},{"id":"d3117ab9bbdc344d","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 1","width":"2","height":"2","order":4,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1630,"y":110,"wires":[[]]},{"id":"a76caa7a16bac95c","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 2","width":"2","height":"2","order":6,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1630,"y":170,"wires":[[]]},{"id":"99fbdbd6f1247a74","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 3","width":"2","height":"2","order":8,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1630,"y":230,"wires":[[]]},{"id":"f41e2331b0b830d3","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 4","width":"2","height":"2","order":10,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1630,"y":290,"wires":[[]]},{"id":"98ad46a8c1cec362","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 5","width":"2","height":"2","order":12,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1630,"y":350,"wires":[[]]},{"id":"b4db27ab8e1249f9","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 6","width":"2","height":"2","order":14,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1630,"y":410,"wires":[[]]},{"id":"211a49ea39c47dbf","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 7","width":"2","height":"2","order":16,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1630,"y":470,"wires":[[]]},{"id":"345e2bc8bcaeeffd","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 8","width":"2","height":"2","order":18,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1630,"y":530,"wires":[[]]},{"id":"f3a5b1da15641fda","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 9","width":"2","height":"2","order":20,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1630,"y":590,"wires":[[]]},{"id":"f82266bbecc5f929","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1530,"y":70,"wires":[["13527989f83e29d2","197fde062f906fe2"]]},{"id":"7ec8a975f4e62ea5","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1530,"y":130,"wires":[["7014c2032a87fc3b","d3117ab9bbdc344d"]]},{"id":"b4c42883c0d1b421","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1530,"y":190,"wires":[["4bc7a1bfe0edbd3d","a76caa7a16bac95c"]]},{"id":"89f905a2a16a5653","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1530,"y":250,"wires":[["a789bc33845b6aae","99fbdbd6f1247a74"]]},{"id":"bd92fd80ba8708f5","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1530,"y":300,"wires":[["a0ed1589c7578ebc","f41e2331b0b830d3"]]},{"id":"919354dd3a9d85e1","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1530,"y":360,"wires":[["b1eaf76d80b124b2","98ad46a8c1cec362"]]},{"id":"af920dde227a02ba","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1530,"y":420,"wires":[["b4db27ab8e1249f9","671050bdedc0c3cb"]]},{"id":"42965b35532dc0a6","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1530,"y":490,"wires":[["8e502b90702d3857","211a49ea39c47dbf"]]},{"id":"198ea5a17cf29258","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1530,"y":550,"wires":[["a5b30e2c9a5b185b","345e2bc8bcaeeffd"]]},{"id":"591771770c56781a","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1530,"y":610,"wires":[["5cdf4a4e44ba3e96","f3a5b1da15641fda"]]},{"id":"72b2d1bb06c9fd47","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Uno-X Tananger","func":"msg.id = 3589; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Uno-X Tananger'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'UnoXTana'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":480,"wires":[["c6597ae705c493fd"]]},{"id":"835b0df2bd3edcbb","type":"ui_chart","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","group":"c5147f5beba7be52","order":1,"width":"32","height":"20","label":"Dieselpris (4u).","chartType":"line","legend":"true","xformat":"dddd","interpolate":"step","nodata":"No data...","dot":false,"ymin":"","ymax":"","removeOlder":"4","removeOlderPoints":"","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#f9fafa","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#0501f9","#9467bd","#f5ed00"],"outputs":1,"useDifferentColor":false,"className":"","x":1410,"y":640,"wires":[["dc20c0baebcded39"]]},{"id":"69d3c375167219d4","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1240,"y":630,"wires":[["835b0df2bd3edcbb"]]},{"id":"e329d720082ab3ca","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"pri-pens","func":"switch (msg.pri){\n case 0:\n return [msg,null,null,null,null,null,null,null,null,null]\n case 1:\n return [null,msg,null,null,null,null,null,null,null,null]\n case 2:\n return [null,null,msg,null,null,null,null,null,null,null]\n case 3:\n return [null,null,null,msg,null,null,null,null,null,null]\n case 4:\n return [null,null,null,null,msg,null,null,null,null,null]\n case 5:\n return [null,null,null,null,null,msg,null,null,null,null]\n case 6:\n return [null,null,null,null,null,null,msg,null,null,null]\n case 7:\n return [null,null,null,null,null,null,null,msg,null,null]\n case 8:\n return [null,null,null,null,null,null,null,null,msg,null]\n case 9:\n return [null,null,null,null,null,null,null,null,null,msg]\n}\n","outputs":10,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1370,"y":310,"wires":[["f82266bbecc5f929"],["7ec8a975f4e62ea5"],["b4c42883c0d1b421"],["89f905a2a16a5653"],["bd92fd80ba8708f5"],["919354dd3a9d85e1"],["af920dde227a02ba"],["42965b35532dc0a6"],["198ea5a17cf29258"],["591771770c56781a"]]},{"id":"8a6654beead70801","type":"persist-store","filename":"persist-diesel.json","interval":"600"},{"id":"0d788a3660f620b1","type":"ui_group","name":"Drivstoffpriser","tab":"1083c01bcc75e66c","order":1,"disp":true,"width":"40","collapse":false,"className":""},{"id":"c5147f5beba7be52","type":"ui_group","name":"Wide","tab":"8b4128994ad0c3a1","order":2,"disp":false,"width":"40","collapse":false,"className":""},{"id":"1083c01bcc75e66c","type":"ui_tab","name":"Drivstoff","icon":"local_gas_station","order":24,"disabled":false,"hidden":false},{"id":"8b4128994ad0c3a1","type":"ui_tab","name":"Dieselpriser","icon":"drive_eta","order":23,"disabled":false,"hidden":false}] Regner med denne flow bare er å importere men må nok ha 2 opppdateringer av pris før tallene begynner å rime... Persist nodene er viktige på slike chart der tidsspennet er 1 mnd. (trasig å miste historikken ved blink i lyset...).
    1 poeng
  49. Dersom du skaffar ei røykmaskin som har enten en knapp på maskina eller lang ledning med knapp du må holde inne for å lage røyk kan du erstatte knappen med ein Shelly1. Den har isolert kontakt så kan koble sammen to ledningar og imitere at den er bryteren. Samtidig har den eit vidt spenningsområde du kan strømforsyne den med, 12v, 24-60v og vanleg 230v. (Her må du lese manualen nøye om du skal bruke 12v). Eg anbefaler 12v eller 24v om du kan finne det inni røykmaskina eller med ein batterieliminator ex. https://www.clasohlson.com/no/Batterieliminator-24-W/p/39-1511 Shelly1 er litt tryggare i bruk om du unngår å koble den på 230v. Shelly1 kan du bruke på same måte til å fjernstyre garasjeporten. Dei fleste portar har 24VDC på ein skruterminal så du kan strømforsyne Shelly1 med det og så brukar du releutgangen til å koble sammen bryterinngangen for åpne lukke port. Legg inn i Shelly1 en auto-off timer på ex 500ms. Då vil kvar aktivering av Shelly1 sende en puls til garasjeporten så vil porten enten gå opp eller ned. Du kan og montere en magnetkontakt og koble den til inngangen (velg detatched mode) og då vil du få status på om porten er åpen. Så kan du bruke enhver smartplugg til strømforsyninga til røykmaskina. La av/på bryteren på maskina stå på så kan du styre den med å slå av og på smartpluggen. Så kan du bruke ditt favorittautomasjonsprogram, eg ville brukt Home Assistant sidan det er det eg har og laga en automasjon. 2stk hjelpera input_boolean: Forvarme røykmaskin og input_button Kjør røykmaskin. 1 Automasjon trigges av Forvarme røykmaskin. Slå på smartplugg med en gang. Så legg du inn en timer slik at smartplugg slår seg av etter ex. 30 minutt. 1 Automasjon trigges av Kjør røykmaskin, aktiver Shelly1, slå på lys, vent x sekund, aktiver garasjeportåpner, etter x sekund slå av røykmaskin, slå av smartplugg. Så kan du vurdere om du vil ha automatisk lukking av porten etter x sekund, men det kan jo vere problematisk så det må du nesten risikovurdere. Røykmaskina burde du kunne montere i ei hylle på veggen opp under taket, så laga du eit rør ex. takrennerør eller PE-rør slik at du kan skyve maskina inn i røret. Når du då skal fylle røykvæske treng du berre trekke den litt til side og løfte den ned for å fylle. Rørkoblinga treng ikkje vere 100% tett, røyk blir det uansett. Så kan du forgreine og legge rør dit du vil. For å justere kor mykje røyk som kjem ut på kvar plass kan du strupe litt åpningen der det kjem mest røyk.
    1 poeng
  50. Beklager sent svar 🙂 Det gikk meget bra. 1. Kjøp Rithum Violet switch 2. Knytt den opp på WiFi 3. Kjøp Homey Pro Core hos Rithum (blir sendt automatisk til Violet switch) 4. Installer Rithum app på Homey Pro 5. Lag flow og den dukker automatisk opp på Violet switchen
    1 poeng
Vinnerlisten er satt til Oslo/GMT+02: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.