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

Hva har du automatisert idag/Hva har du gjort på dine prosjekter idag


Anbefalte innlegg

9 hours ago, harelabb said:

Konfigurer domoticz til å bruke en sikker port og slipp den inn i nettverket ditt.

Jeg brukte  dette før, for å kunne få opp domotizc fra RPIen på hytten på PCen hjemme.

 

Takk. Det er akkurat det jeg har, Domoticz på en RPi på hytta, som det kunne vært fordelaktiv å ha tilgang til hjemmefra. Og det er i grunnen alt jeg ønsker. 

 

Jeg har prøvd litt med å åpne porter og sette opp VPN på routeren på hytta, men jeg fikk det ikke til. Hørte at ved mobilt bredbånd (som er det jeg har på hytta) så har Telia sin egen brannmur (og muligens NATing) i tillegg, og noen mente man måtte endre APN også, og da gav jeg opp. Men hvis du har klart å tilgang til kun Domoticz på en enkel måte tar jeg gjerne imot en oppskrift. 😁

 

(På routeren hjemme (Ubiquiti EdgeRouter 4) har jeg satt opp OpenVPN, slik at jeg har tigang til hjemmenettverket fra laptop og mobil når jeg ikke er hjemme.)

 

Lenke til kommentar
Del på andre sider

DeVille skrev (1 time siden):

Hørte at ved mobilt bredbånd (som er det jeg har på hytta) så har Telia sin egen brannmur (og muligens NATing) i tillegg, og noen mente man måtte endre APN også, og da gav jeg opp.

Mistenker at det er samme problemstilling jeg sliter med. Har åpnet porter for både mqtt, vpn og ssh men alt er like dødt... Men VNC funker...

Lenke til kommentar
Del på andre sider

Har satt opp en OpenThread Border Router på en Raspberry Pi med et Silicon Labs Dev Kit som Radio Co-Processor for å danne et Thread nettverk.

 

Har laget et Matter Accessory Device (Light) basert på et Silicon Labs Dev Kit.

 

Bruker CHIP-TOOL for å teste ut.

 

Dette er for å teste ut hvordan Matter / Thread fungerer i praksis fra bunnen av.

Lenke til kommentar
Del på andre sider

Lys skal ikkje være lett, det stilles mange krav fra kjerringa og hun gidder ikkje bruke noen app så aller helst bør automatikken berre virke og når hun vil ha det anderledes så gud være nådig om noe overstyrer det.

 

Har styrt på i nokon dager og nå håper eg at eg ikkje trenger å endre noko med det første 🙂

 

Automatikken blir resatt kvar morning og det er den som styrer i henhold til satt timeplan til kjerringa trykker på dimmeren da skifter lyset i dimmeren farge for å vise at all automatikk blir stengt ute.

lights_livingroom_south.jpg

  • Like 2
Lenke til kommentar
Del på andre sider

Har laget et Matter over Thread device basert på et Silicon Labs EFRxG24 Dev Kit Board og lagt det til Apple Home (med Apple TV som Open Thread Border Router). Devicet støtter måling av temperatur, lysstyrke og lufttrykk. Men i Apple økosystemet synes den bare som en temperatursensor.

 

image.thumb.png.bc7fc1ab66a40ce99ab3d4aae9865e4b.png

Lenke til kommentar
Del på andre sider

  • 2 uker senere...

Da har jeg begynt å få på plass Matter / Thread støtte i kontrolleren som jeg har skrevet fra bunnen i c#. Var i utgangspunktet laget for Z-Wave, senere støtte for Mill Gen 3 WiFi og nå Matter.

 

Nå kan gjerne Mill snart komme ut med Matter støtte!

 

image.png.71de082045745dd969b2f5d84a4bfe13.png

 

image.png.39bb271e8fbe357b40d8356065201d2b.png

 

Endret av OlavT
  • Like 2
Lenke til kommentar
Del på andre sider

Jeg har ønsket meg dempet lys på badet om natten. Det er to lamper på badet, styrt av hver sin bryter. Den ene har E27 sokkel som nå er utstyrt med en smartlyspære. Jeg har ikke ønsket å ta i bruk sensorer og full automatikk, kun sikre at det er mulighet for dempet lys om natten. Derfor var tanken å lage en automasjon i Home Assistant som endret startstyrken på smartlyspære avhengig av tid. Men det er vanskelig å endre noe på en smartlyspære som ikke har strøm, og denne er jo av det meste av tiden.

Løsningen ble derfor å lage en automasjon som starter når lyset skrus på. Smartlyspæren er stilt inn til å bruke et par sekunder på å starte, derfor er det nok tid til å justere pærens innstillinger under oppstarten. Basert på tid på døgnet skrus lyset på med enten 20% effekt eller 100% effekt.

Den som vil ha fullt lys også på natten skrur på begge lamper. At den ene da gir lite lys betyr lite. Den som vil ha dempet lys skrur kun på lampen med smartlyspæren. Og den som klarer seg uten lys på natten skrur ikke på noe og slipper også å irritere seg over automatisk lys. 🙂

  • Like 2
Lenke til kommentar
Del på andre sider

On 22/11/2023 at 08:33, DeVille said:

Jeg har prøvd litt med å åpne porter og sette opp VPN på routeren på hytta, men jeg fikk det ikke til. Hørte at ved mobilt bredbånd (som er det jeg har på hytta) så har Telia sin egen brannmur (og muligens NATing) i tillegg, og noen mente man måtte endre APN også, og da gav jeg opp.

 

 

Det er korrekt, det gjelder de fleste leverandørene for mobilt bredbånd - du får ikke "public" IP mot routeren din, og ligger dermed bak NAT/CGNAT-løsning til leverandøren.

For Telia mener jeg APN for for å få public IP skal være "vpn.telia.no" . 
For Telenor var det ihvertfall i gamle dager "internet.public"  .
Setter du dette har du public IP på routeren din, tilsvarende det du har på vanlige hjemmebredbånd.
OBS OBS, husk brannmur da, for nå er du plutselig ikke beskyttet av nettleverandør lengre.
Du vil også nå i en eller annen grad kunne oppleve at bruteforceangrep osv bruker av mobilt bredbånd-kvoten din. Tipper det er marginalt, men et "hull" kan ha store konsekvenser.

Det lureste er å kjøre VPN av noe slag, som initieres fra "innsiden".

  • Thanks 1
Lenke til kommentar
Del på andre sider

On 08/12/2023 at 13:18, quackyo said:

Det lureste er å kjøre VPN av noe slag, som initieres fra "innsiden".

 

Takk for forklaringen.

 

Jeg har en OpenVPN-server installert på routeren hjemme. Så hvis jeg da setter opp en OpenVPN-klient på RPi-en som står innenfor den mobile bredbånd-routeren på hytta, og initierer VPN-sesjonen derfra, da skal jeg altså hjemmefra få tilgang til en web-side på den samme RPi-en?

 

Lenke til kommentar
Del på andre sider

DeVille skrev (50 minutter siden):

Så hvis jeg da setter opp en OpenVPN-klient på RPi-en som står innenfor den mobile bredbånd-routeren på hytta, og initierer VPN-sesjonen derfra, da skal jeg altså hjemmefra få tilgang til en web-side på den samme RPi-en?

Det blir litt motsatt: OVPN serveren hjemme gjør at du får tilgang til hjemmenettet fra resten av verden, også hytta, men du må ha OVPN server på hytta for å få tilgang til det hyttenettet fra andre steder.

 

Jeg kjører både OVPN, Mosquitto og NodeRed på en RPi på hytta og det har så langt vært dønn stabilt etter jeg fikk satt opp 4G ruteren med riktig APN.

Lenke til kommentar
Del på andre sider

19 hours ago, DeVille said:

 

Takk for forklaringen.

 

Jeg har en OpenVPN-server installert på routeren hjemme. Så hvis jeg da setter opp en OpenVPN-klient på RPi-en som står innenfor den mobile bredbånd-routeren på hytta, og initierer VPN-sesjonen derfra, da skal jeg altså hjemmefra få tilgang til en web-side på den samme RPi-en?

 

 

Helt korrekt. en VPN-forbindelse er en toveis forbindelse, så når RPi på hytta har koblet opp til VPN-server hjemme vil du fra hytta kunne nå "Hjemme", og omvendt fra hjemme også nå hytte-nett.
Begge nettene vil også kunne nås fra andre steder du har VPN-forbindelse til HJEMME fra. F.eks fra en mobiltelefon. Da går du "via" hjemme for å nå hytta.

 

Det er greit å "se for seg" om du tenker at en VPN-forbindelse bare er en jækla lang nettverkskabel. 🙂


Men for å sette dette opp korrekt kreves litt forståelse av IP, ruting og eventuelt brannmur.

 

Endret av quackyo
  • Thanks 1
Lenke til kommentar
Del på andre sider

quackyo skrev (1 time siden):

Det er greit å "se for seg" om du tenker at en VPN-forbindelse bare er en jækla lang nettverkskabel. 🙂

Den kabelen min har enveisventil 🙂

 

Når jeg er tilkoblet over OVPN hjemmefra til hytta har jeg tilgang til alle enheter i hyttenettet men om jeg fjernstyrer RPIen på hytta med VNC og prøver å pinge hjemmenettet er det dødt, samme om jeg prøver å åpne en nettside i hjemmenettet fra hytta. Akkurat slik jeg trodde det skulle være... Har brukt standard OVPN oppsett funnet på nett men mulig der kan trikses til 2-veis forbindelse men det er ikke aktuelt for meg...

Lenke til kommentar
Del på andre sider

Det er ikke noe "triksing" - men ganske standard routing som skal til. Og eventuell brannmuråpning.
Du må sørge for at du har har ruter begge veier.


EKS:

Hjemmenett 10.0.0.0/24 , Router: 10.0.0.1, VPN-server: 10.0.0.5

Hyttenett: 10.10.0.0/24   , Router : 10.10.0.1, VPN-server : 10.10.0.5

 

I Hjemmenett må du da ha rute til hyttenett for at 10.10.0.0/24 skal rutes via IP-adressen til VPN-serveren din for å fortelle at dette ikke er internett-trafikk.
Dette settes ENTEN i rutingtabellen på hovedrouteren din ELLER på den spesifikke maskina du skal nå hyttenett fra.
Routingtabell i hjemmenett skal da se noe alla slik ut:
Defaultroute for "internett" 0.0.0.0 -> 10.0.0.1
VPNtrafikk 10.10.0.0/24 -> 10.10.0.5 

 

Så er det viktig å gjøre omvendt på "hyttenett", hvis ikke vil du ha enveistrafikk. 🙂


Rutene kan eventuelt begrenses til å bare gjelde spesifikke IPadresser (10.x.y.z/32) om du kun vil route til/fra spesifikke bokser.


Når dette er satt (riktig) skal det normalt sett funke. Men det må kanskje åpnes noe brannmur i tillegg på "VPNboks".

 

 

  • Like 1
Lenke til kommentar
Del på andre sider

  • 3 uker senere...

Could an Hour change the world?

What if an hour wasn't just an hour…but the spark we need for change? An Hour reminding us to make all other hours count.


Da har jeg lagd støtte for earth hour. Når bryteren "earth hour" er aktivert, vil alt lys ute og inne bli slått av og ingen bevegelsesensorer vil trigge lys. Men lysbrytere på vegg er fortsatt brukbar til de som eventuelt har forberedt seg dårlig og må en tur på do. Bryteren "earth hour" settes automatisk til påslått på angitt dato og tid.

Og som WWF skriver. Earth hour dreier seg ikke om å spare strøm, men er en hendelse for å rette fokus på miljøvern.

 

image.png.a4804708e50f56f7aac70d65eae15dfe.png

Endret av stigvi
  • Like 1
Lenke til kommentar
Del på andre sider

stigvi skrev (På 24.1.2023 den 8.10):

Men det jeg gjorde i helgen var å lage et system for å testlade bilen til kona i noen minutter på kveldstid og deretter varsle som melding på telefon hvis den ikke lader som forventet. Kona har en egen evne til å ikke trykke støpsel helt i bunn på bilens kontakt. Langt nok til at de elektriske kontaktene har forbindelse og at alt ser greit ut, men ikke langt nok til at låsepinnen klarer å låse fast støpsel og da vil ikke bilen starte lading, naturlig nok.


En oppdatering: Har tatt vekk testladingen. Nå tester jeg heller på om easee boks har oppdaget bil OG om bil har detektert at den er plugget til OG at bil har klart å låse fast kontakt.

Hvis ikke disse tre betingelsene er oppfylt så sendes det en melding på tlf i løpet av kvelden. Da fanges det opp at kona ikke trykker støpselet helt inn i kontakten.
 

  • Like 1
Lenke til kommentar
Del på andre sider

Home Assistant har kalender og oppgaveliste. I kalender legger jeg inn ferie slik at varme og lys styres riktig. I tillegg har jeg laget en trykknapp i HA for å opprette oppgaver over det jeg ikke bør glemme før avreise. I januar utgaven av HA (2024.01) er det lagt til tidspunkt for når en oppgave skal være ferdig og dette bruker jeg nå slik at jeg henter avreise fra kalender og setter "due_datetime".

 

alias: Ferieoppgaver
description: ""
trigger:
  - platform: state
    entity_id:
      - input_button.opprett_ferieoppgaver
condition: []
action:
  - service: todo.add_item
    data:
      item: Fyll vann i sluk på bad og vaskerom
      due_datetime: >-
        {{ (as_datetime(state_attr('calendar.ferie',
        'start_time'))-timedelta(hours=10)).isoformat() }}
    target:
      entity_id: todo.ferie
  - service: todo.add_item
    data:
      item: Ta ut søppel
      due_datetime: >-
        {{ (as_datetime(state_attr('calendar.ferie',
        'start_time'))-timedelta(hours=10)).isoformat() }}
    target:
      entity_id: todo.ferie
  - service: todo.add_item
    data:
      item: Lad batteri på gardiner
      due_datetime: >-
        {{ (as_datetime(state_attr('calendar.ferie',
        'start_time'))-timedelta(days=3)).isoformat() }}
    target:
      entity_id: todo.ferie
  - service: todo.add_item
    data:
      item: Sjekk hagemøbler
      due_datetime: >-
        {{ (as_datetime(state_attr('calendar.ferie',
        'start_time'))-timedelta(days=3)).isoformat() }}
    target:
      entity_id: todo.ferie
  - service: todo.add_item
    data:
      item: Sjekk mat i kjøleskap
      due_datetime: >-
        {{ (as_datetime(state_attr('calendar.ferie',
        'start_time'))-timedelta(hours=10)).isoformat() }}
    target:
      entity_id: todo.ferie
  - service: todo.add_item
    data:
      item: Stopp post og reklame
      due_datetime: >-
        {{ (as_datetime(state_attr('calendar.ferie',
        'start_time'))-timedelta(days=5)).isoformat() }}
    target:
      entity_id: todo.ferie
  - service: todo.add_item
    data:
      item: Klipp plen
      due_datetime: >-
        {{ (as_datetime(state_attr('calendar.ferie',
        'start_time'))-timedelta(days=1)).isoformat() }}
    target:
      entity_id: todo.ferie
  - service: todo.add_item
    data:
      item: Ta inn nøkler til utekraner
      due_datetime: >-
        {{ (as_datetime(state_attr('calendar.ferie',
        'start_time'))-timedelta(hours=10)).isoformat() }}
    target:
      entity_id: todo.ferie
  - service: todo.add_item
    data:
      item: Stopp avis
      due_datetime: >-
        {{ (as_datetime(state_attr('calendar.ferie',
        'start_time'))-timedelta(days=5)).isoformat() }}
    target:
      entity_id: todo.ferie
  - service: todo.add_item
    data:
      item: Steng krane til vaskemaskin
      due_datetime: >-
        {{ (as_datetime(state_attr('calendar.ferie',
        'start_time'))-timedelta(hours=3)).isoformat() }}
    target:
      entity_id: todo.ferie
  - service: todo.add_item
    data:
      item: Steng krane til oppvaskmaskin
      due_datetime: >-
        {{ (as_datetime(state_attr('calendar.ferie',
        'start_time'))-timedelta(hours=3)).isoformat() }}
    target:
      entity_id: todo.ferie
  - service: todo.add_item
    data:
      item: Stopp klima kl 1500 i Golf
      due_datetime: >-
        {{ (as_datetime(state_attr('calendar.ferie',
        'start_time'))-timedelta(days=1)).isoformat() }}
    target:
      entity_id: todo.ferie
  - service: todo.add_item
    data:
      item: Tøm vannbeholder på avfukter
      due_datetime: >-
        {{ (as_datetime(state_attr('calendar.ferie',
        'start_time'))-timedelta(hours=10)).isoformat() }}
    target:
      entity_id: todo.ferie
  - service: todo.add_item
    data:
      item: Sjekk låser på glassdører
      due_datetime: >-
        {{ (as_datetime(state_attr('calendar.ferie',
        'start_time'))-timedelta(hours=10)).isoformat() }}
    target:
      entity_id: todo.ferie
mode: single

 

  • Like 3
Lenke til kommentar
Del på andre sider

  • 2 uker senere...

Har nå 2 egenutviklede Matter over Thread devicer lagt til i nettverket for testing.

 

Kjører nå en kontroller med støtte for Matter, varmepumpe med Modbus over TCP og Z-Wave.

 

image.thumb.png.5106ea246d0b4fec758440e0112c03ad.png

 

Oppsettet for Matter er:

- Raspberry PI 4

- Nordic Semiconductor nRF52840 Dongle som Radio Co-processor for OpenThreadBorder Router

- OpenThread Border Router Software

- Python Matter Server (i Docker container)

 

Har skrevet noen guider / huskelister her:

 

olavt/open-thread-border-router-rcp-nordic-semiconductor: How to prepare a Nordic Semiconductor nRF52840 Dongle to run as a RCP for Open Thread Border Router (github.com)

 

olavt/open-thread-border-router-silicon-labs (github.com)

 

olavt/matter-sensor-thread (github.com)

 

Guidene er ikke helt ryddige og egner seg kanskje mest som huskelister for meg selv akkurat slik de er nå.

Endret av OlavT
  • Like 2
Lenke til kommentar
Del på andre sider

Fikk endelig renovasjonen inn i Home Assistant til å se ut slik jeg ville:

image.png.a41542f33787f0bc724d2d3d1d624c7b.png

 

reinstallerte "minrenovasjon" (https://github.com/eyesoft/home_assistant_min_renovasjon) etter at den sluttet å fungere etter en oppdatering.  Satte opp template for å få endret fra å vise dato, til å vise gjenværende dager.

 

så nå blir det enklere å se når søppeldunken må trilles ned til veien

 

kode:

Spoiler

Jeg er ikke veldig flink med template-funksjonen, så det er ikke sikkert dette er den mest optimale løsningen, men det ser ut til å fungere

 

type: vertical-stack
cards:
  - type: custom:mushroom-title-card
    title: Renovasjon
    alignment: center
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: Restavfall
        secondary: >-
          {% set days_left = (strptime(states('sensor.restavfall'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left >= 2 -%}

          Om {{ days_left }} dager

          {% elif days_left == 1 %}

          I morgen

          {% elif days_left == 0 %}

          I dag!

          {% else %}

          Ukjent

          {%- endif %}
        icon: mdi:trash-can-outline
        multiline_secondary: true
        icon_color: grey
        fill_container: true
        entity: sensor.restavfall
        badge_icon: >-
          {% set days_left = (strptime(states('sensor.plast'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left == 1 %} 

          mdi:exclamation

          {%- endif %}
        badge_color: red
      - type: custom:mushroom-template-card
        primary: Plastavfall
        secondary: >-
          {% set days_left = (strptime(states('sensor.plast'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left >= 2 -%}

          Om {{ days_left }} dager

          {% elif days_left == 1 %}

          I morgen

          {% elif days_left == 0 %}

          I dag!

          {% else %}

          Ukjent

          {%- endif %}
        icon: mdi:spray-bottle
        multiline_secondary: true
        icon_color: purple
        fill_container: true
        entity: sensor.plast
        badge_icon: >-
          {% set days_left = (strptime(states('sensor.plast'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left == 1 %} 

          mdi:exclamation

          {%- endif %}
        badge_color: red
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: Glass/Metall
        secondary: >-
          {% set days_left = (strptime(states('sensor.glass_metallemballasje'),
          '%d/%m/%Y', today_at()) | as_local - today_at()).days %}

          {% if days_left >= 2 -%}

          Om {{ days_left }} dager

          {% elif days_left == 1 %}

          I morgen

          {% elif days_left == 0 %}

          I dag!

          {% else %}

          Ukjent

          {%- endif %}
        icon: mdi:bottle-wine
        multiline_secondary: true
        icon_color: orange
        fill_container: true
        entity: sensor.glass_metallemballasje
        picture: ''
        badge_icon: >-
          {% set days_left = (strptime(states('sensor.plast'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left == 1 %} 

          mdi:exclamation

          {%- endif %}
        badge_color: red
      - type: custom:mushroom-template-card
        primary: Bioavfall
        secondary: >-
          {% set days_left = (strptime(states('sensor.matavfall'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left >= 2 -%}

          Om {{ days_left }} dager

          {% elif days_left == 1 %}

          I morgen

          {% elif days_left == 0 %}

          I dag!

          {% else %}

          Ukjent

          {%- endif %}
        icon: mdi:food-apple-outline
        multiline_secondary: true
        icon_color: green
        fill_container: true
        entity: sensor.matavfall
        badge_icon: >-
          {% set days_left = (strptime(states('sensor.plast'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left == 1 %} 

          mdi:exclamation

          {%- endif %}
        badge_color: red
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: Papir
        secondary: >-
          {% set days_left = (strptime(states('sensor.papir'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left >= 2 -%}

          Om {{ days_left }} dager

          {% elif days_left == 1 %}

          I morgen

          {% elif days_left == 0 %}

          I dag!

          {% else %}

          Ukjent

          {%- endif %}
        icon: mdi:book-open-blank-variant
        multiline_secondary: true
        icon_color: blue
        fill_container: true
        entity: sensor.papir
        badge_icon: >-
          {% set days_left = (strptime(states('sensor.plast'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left == 1 %} 

          mdi:exclamation

          {%- endif %}
        badge_color: red

 

  • Like 1
Lenke til kommentar
Del på andre sider

Håvardgj skrev (11 timer siden):

Fikk endelig renovasjonen inn i Home Assistant til å se ut slik jeg ville:

image.png.a41542f33787f0bc724d2d3d1d624c7b.png

 

reinstallerte "minrenovasjon" (https://github.com/eyesoft/home_assistant_min_renovasjon) etter at den sluttet å fungere etter en oppdatering.  Satte opp template for å få endret fra å vise dato, til å vise gjenværende dager.

 

så nå blir det enklere å se når søppeldunken må trilles ned til veien

 

kode:

  Skjul innhold

Jeg er ikke veldig flink med template-funksjonen, så det er ikke sikkert dette er den mest optimale løsningen, men det ser ut til å fungere

 

type: vertical-stack
cards:
  - type: custom:mushroom-title-card
    title: Renovasjon
    alignment: center
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: Restavfall
        secondary: >-
          {% set days_left = (strptime(states('sensor.restavfall'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left >= 2 -%}

          Om {{ days_left }} dager

          {% elif days_left == 1 %}

          I morgen

          {% elif days_left == 0 %}

          I dag!

          {% else %}

          Ukjent

          {%- endif %}
        icon: mdi:trash-can-outline
        multiline_secondary: true
        icon_color: grey
        fill_container: true
        entity: sensor.restavfall
        badge_icon: >-
          {% set days_left = (strptime(states('sensor.plast'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left == 1 %} 

          mdi:exclamation

          {%- endif %}
        badge_color: red
      - type: custom:mushroom-template-card
        primary: Plastavfall
        secondary: >-
          {% set days_left = (strptime(states('sensor.plast'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left >= 2 -%}

          Om {{ days_left }} dager

          {% elif days_left == 1 %}

          I morgen

          {% elif days_left == 0 %}

          I dag!

          {% else %}

          Ukjent

          {%- endif %}
        icon: mdi:spray-bottle
        multiline_secondary: true
        icon_color: purple
        fill_container: true
        entity: sensor.plast
        badge_icon: >-
          {% set days_left = (strptime(states('sensor.plast'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left == 1 %} 

          mdi:exclamation

          {%- endif %}
        badge_color: red
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: Glass/Metall
        secondary: >-
          {% set days_left = (strptime(states('sensor.glass_metallemballasje'),
          '%d/%m/%Y', today_at()) | as_local - today_at()).days %}

          {% if days_left >= 2 -%}

          Om {{ days_left }} dager

          {% elif days_left == 1 %}

          I morgen

          {% elif days_left == 0 %}

          I dag!

          {% else %}

          Ukjent

          {%- endif %}
        icon: mdi:bottle-wine
        multiline_secondary: true
        icon_color: orange
        fill_container: true
        entity: sensor.glass_metallemballasje
        picture: ''
        badge_icon: >-
          {% set days_left = (strptime(states('sensor.plast'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left == 1 %} 

          mdi:exclamation

          {%- endif %}
        badge_color: red
      - type: custom:mushroom-template-card
        primary: Bioavfall
        secondary: >-
          {% set days_left = (strptime(states('sensor.matavfall'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left >= 2 -%}

          Om {{ days_left }} dager

          {% elif days_left == 1 %}

          I morgen

          {% elif days_left == 0 %}

          I dag!

          {% else %}

          Ukjent

          {%- endif %}
        icon: mdi:food-apple-outline
        multiline_secondary: true
        icon_color: green
        fill_container: true
        entity: sensor.matavfall
        badge_icon: >-
          {% set days_left = (strptime(states('sensor.plast'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left == 1 %} 

          mdi:exclamation

          {%- endif %}
        badge_color: red
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-template-card
        primary: Papir
        secondary: >-
          {% set days_left = (strptime(states('sensor.papir'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left >= 2 -%}

          Om {{ days_left }} dager

          {% elif days_left == 1 %}

          I morgen

          {% elif days_left == 0 %}

          I dag!

          {% else %}

          Ukjent

          {%- endif %}
        icon: mdi:book-open-blank-variant
        multiline_secondary: true
        icon_color: blue
        fill_container: true
        entity: sensor.papir
        badge_icon: >-
          {% set days_left = (strptime(states('sensor.plast'), '%d/%m/%Y',
          today_at()) | as_local - today_at()).days %}

          {% if days_left == 1 %} 

          mdi:exclamation

          {%- endif %}
        badge_color: red

 



Dette du har gjort her med maler skal i teorien og i praksis ikke være nødvendig. Home Assistant skal vise noe tilsvarende helt på egenhånd.

Her har jeg satt en sensor til 

image.png.65242cf690e919f31490d83610b503b6.png

 

.. og HA viser "Neste uke" i kortet.
image.png.4086f4eee97b2e2ae1131aeac97f5af0.png

Settes dato til sensoren til 20. januar, viser kortet dette:
image.png.bd0de13bed6c76c80c380282db689e3b.png

For at dette skal virke, må sensor ha device_class satt til timestamp og sensor må ha en tilstand som tolkes som en dato og tid med tidssone, altså at den faktisk er en timestamp.

Og i samme åndedrag - hvis en sensor har device_class satt til duration så vil et flyttall vises som timer, minutter og sekunder.
Her er en sensor brukt som har verdien 1,2 og dette vises som 1:12:00
image.png.08b80d44530352ba945de9111014cbd8.png


Men du har fått det til å virke slik du vil ha det og det er det viktigste. Min kommentar er bare til info om at det skal være mulig å gjøre dette på en lett måte.

Endret av stigvi
  • Like 2
Lenke til kommentar
Del på andre sider

typisk at noen skal komme og forklare en enklere måte når jeg endelig har brukt tid på å finne ut av en tungvindt måte 😛

 

Takk for tips @stigvi, om jeg skal endre dette en gang senere får jeg implementere metoden din 🙂

 

 

Edit:

 

etter å ha pirket litt borti det igjen for å se om jeg fant igjen deviceclass til sensoren, så finner jeg ut at denne har atributter som viser antall dager før neste tømming, så all matematikken/kodingen jeg har gjort er helt overflødig 🙄

image.thumb.png.cb1c9fdc92cb1ea240807d059f174b3e.png

Endret av Håvardgj
  • Confused 1
Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • 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.