Home Assistant: Open source Python3 home automation - deel 2


Eerste deel: Home Assistant - Open source Python3 home automation (Pinned posts deel 1)

Wat is Home Assistant?

Home Assistant (afgekort tot HA, soms ook HASS) is een open source automation platform gebouwd met Python 3. Het kan veel verschillende soorten en merken devices in huis (en daarbuiten) tracken en besturen. De installatie is ook vrij eenvoudig en er is een zeer snel groeiende community. Leuk detail is dat het project door een in de VS wonende Nederlander (Paulus Schoutsen) is gestart.

Demo
Een werkende demo-omgeving is te vinden op https://demo.home-assistant.io/. Je kan daar door verschillende Lovelace (UI) setups klikken, zodat je een goed beeld krijgt bij alles wat mogelijk is met Home Assistant en Lovelace.

Ingebouwde UI
Home Assistant heeft een ingebouwde web UI geschikt voor mobiel, tablet en desktop. Om de interface te kunnen gebruiken hoef je dus geen app te installeren, maar dat kan wel. Er zijn apps voor iOS en Android. Het grote voordeel van deze apps is dat je meteen ingebouwde mogelijkheden hebt voor Device Tracking, Notificaties en dat je sensoren van je telefoon kan uitlezen. Een goed overzicht van de mogelijkheden per platform is hier te vinden.

De standaard interface ziet er ongeveer zo uit, maar kan dus volledig naar eigen voorkeur opgezet worden:


Verschillende varianten

Over de jaren heen is Home Assistant fors gegroeid. Waar het eerst 'enkel' een Python applicatie was kwam daar later een eigen OS en een management systeem bij. En als je dat dan allemaal combineerde in één systeem, dan had je de optie die "Hass.io" genoemd werd. Volg je het nog? :P

Nu, omdat er vaak verwarring ontstond door deze tombola aan namen heeft het Home Assistant team begin 2020 besloten om iets aan deze verwarring te doen. Sindsdien worden de volgende termen gebruikt:
Home Assistant
Home Assistant is een alles-in-een home automation operating system voor je huis. Het is een veilig, makkelijk up-to-date te houden systeem wat het meest krachtige home automation platform ter wereld draait. And guess what? In de kern draait het Home Assistant Core - zie hieronder. Als je deze all-in-one oplossing draait kan je gebruik maken van Home Assistant add-ons.
Legacy: dit complete systeem is wat eerder (voor 2020) werd aangeduid als "Hass.io".
Home Assistant Core
Home Assistant Core is (letterlijk) de kern van Home Assistant: dit is de Python applicatie die daadwerkelijk de aansturing van je huis voor zijn rekening neemt. Home Assistant Core is ook datgene wat je gebruikt als je zelf een Docker of Python venv installatie draait: deze maken gebruik van enkel de Python applicatie Home Assistant Core. Dit wordt ook wel eens een "stand-alone installatie" genoemd.

Hoe te installeren?

Je kunt Home Assistant op allerlei platformen installeren waarvan de Raspberry Pi de meest gebruikte is. Let erop dat het installeren op een SD-Card met standaard logging en recording settings de card zwaar belast. Kijk bij de tips voor oplossingen hiervoor. Eind mei heeft Home Assistant geprobeerd duidelijkheid te scheppen in de verschillende officieel ondersteunde installatiemethodes in een blog: https://www.home-assistan...nd-community-guides-wiki/. Hieronder een overzicht daarvan:
Recommended: Home Assistant
Home Assistant biedt een zeer eenvoudig te installeren "all-in-one" oplossing. Hiermee installeer je een volledige en kant-en-klare installatie van Home Assistant die je eenvoudig kan uitbreiden met add-ons. Het "Getting Started" stappenplan op de Home Assistant website leidt je door de benodigde stappen heen. Hiermee installeer je in een paar tellen Home Assistant op je Raspberry Pi 3 of 4, een Tinkerboard, Odroid, of een Intel NUC Dit is voor verreweg de meeste gebruikers de aanbevolen installatiemethode.

Je kan ook gebruik maken van Home Assistant in een virtuele machine. Dit is een geavanceerde oplossing om de Home Assistant "all-in-one" oplossing met add-ons en het gemak van de supervisor te gebruiken zonder daar één fysiek apparaat helemaal voor vrij te maken. Je draait dan Home Assistant als virtual machine op je eigen ESXi of Proxmox server - hiervoor moet je natuurlijk wel al over zo'n server beschikken. Images / virtual disks voor deze oplossing zijn hier te vinden. (Dit is een geavanceerde oplossing. Als ESXi, Proxmox en vmdk je niets zegt dan is deze installatiemethode niet geschikt voor je.)
Home Assistant Container
Een andere populaire oplossing is het draaien van Home Assistant Core in een container (bijv Docker omgeving). Dit is bruikbaar als je zelf voldoende ervaring hebt met het opzetten van een besturingssysteem waarop Docker draait én je geen behoefte hebt aan de add-ons die je met de gewone Home Assistant wel zou krijgen, omdat je ze bijvoorbeeld zelf in een Docker container naast Home Assistant wil draaien. Met deze methode draai je enkel de kern van Home Assistant, zonder de extra Supervisor en OS lagen.
Home Assistant Supervised
Dit is een soort van hybride oplossing tussen boven genoemde installatiemethodes. Hiermee installeer je de volledige Home Assistant op een bestaand Linux besturingssysteem. Hierbij heb je dus alle voordelen van het all-in-one systeem (zoals de Supervisor en add-ons) zonder dat je een systeem enkel en alleen voor Home Assistant moet gebruiken. Dit is ook een wat meer geavanceerde installatiemethode dan de generieke Home Assistant installatie, maar erg populair in de community omdat het toch de "full experience" geeft zonder er een apparaat volledig voor in te zetten.
Home Assistant Core (aka Python venv)
Voor geavanceerde gebruikers / developers is er ook de mogelijkheid om Home Assistant Core te draaien in een virtual environment van Python, ook wel een venv installatie genoemd. Hiermee draai je Home Assistant rechtstreeks op een bestaande Python installatie. De aanwijzingen voor een venv-installatie op een Raspberry staan hier, terwijl de aanwijzingen voor een venv-installatie op andere omgevingen hier staan.
Andere platformen
Voor andere installaties, zoals op een NAS, een standaard Linux omgeving, Mac of Windows, kun je hier terecht voor een beschrijving door community leden: https://community.home-assistant.io/c/community-guides/

Configuratie van je eigen Home Automation

Configuratie van Home Assistant is tegenwoordig grotendeels webbased, maar kan ook via bestanden (YAML-formaat). Als onderdeel van de overgang naar versie 1.0 worden steeds meer configuratiemogelijkheden beschikbaar gemaakt via de front-end, waardoor Home Assistant ook voor mensen die niet in YAML code willen werken heel bruikbaar is.

Een Home Assistant installatie bestaat uit een combinatie van integraties (om apparaten zoals lampen, speakers, media spelers aan te sturen) en automations (om op basis van bepaalde triggers een bepaalde action uit te voeren.

Integraties, custom components en add-ons

Officiële integraties

De services of apparaten waarmee Home Assistant "out-of-the-box" mee kan werken, worden integraties genoemd. Voor een complete lijst van zogenaamde integrations (inmiddels al meer dan 1500) zie:
https://www.home-assistant.io/integrations#all. Hieronder slechts een select aantal van mogelijke integraties met Home Assistant:Fun fact: dankzij de cast integratie kan je zelfs je interface casten naar een Google Home Hub:


Add-ons
Draai je het all-in-one Home Assistant (wat vroeger Hass.io genoemd werd), dan kan je gebruik maken van zogenaamde add-ons. Add-ons breiden de functionaliteit rondom Home Assistant uit, zoals bijvoorbeeld een MQTT server, een editor voor je configuratie of een Adblocker voor je netwerk. Hoewel deze add-ons misschien wel met Home Assistant praten en eenvoudig vanuit Home Assistant te configureren en bedienen zijn, zijn het geen nieuwe integraties of veranderen ze de werking van Home Assistant niet. Het is dus een stuk software wat je naast je Home Assistant draait, om zo je apparaat meer taken op zich te laten nemen.
Een overzicht met beschikbare add-ons is hier te vinden.
HACS (Home Assistant Community Store)
HACS is een custom component die een soort marktplaats voor andere custom components implementeert. Oftewel: na het installeren van HACS krijg je toegang tot een enorme verzameling van custom components voor Home Assistant. Dit kan bestaan uit nieuwe integraties maar ook uit modules of cards en themes voor gebruik in Lovelace. Al deze items zijn vanuit HACS te installeren, bij te werken en weer te verwijderen. HACS (of custom_components) passen dus (in tegenstelling tot add-ons) wél de werking of mogelijkheden van Home Assistant aan. Iedere installatievorm kan gebruik maken van HACS.


(Klik voor een bewegende demo)
Community projecten
Home Assistant heeft een grote community en er komen regelmatig nieuwe componenten bij.
Kijk daarvoor ook hier: https://community.home-assistant.io/c/projects

Automation

Een platform als Home Assistant wil je natuurlijk gebruiken om bepaalde taken in je huis te automatiseren. In Home Assistant werkt dat met Automations.

Automations werken volgens het principe trigger -> condition -> action
Het is belangrijk dat je deze basis snapt, want ongeacht hoe je automations gaat invoeren (via de frontend of yaml), de basisstructuur blijft altijd hetzelfde.

Dus: "Als dit gebeurt" (trigger) -> "En aan deze voorwaarden wordt voldaan" (condition) -> "Voer dan dit uit" (action).

Simpel voorbeeld in yaml:
YAML:
1
2
3
4
5
6
7
8
automation:
  alias: Turn on light when sun sets
  trigger:
    platform: sun
    event: sunset
  action:
    service: light.turn_on
    entity_id: light.livingroom

Een uitgebreider voorbeeld:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Example configuration.yaml entry
group:
  living_room:
    - light.table_lamp
    - light.ceiling
    - switch.christmas_lights

automation:
  alias: Turn on light when sun sets
  trigger:
    platform: sun
    event: sunset
    offset: "-01:00:00"
  condition:
    platform: state
    entity_id: device_tracker.paulus
    state: home
  action:
    service: homeassistant.turn_on
    entity_id: group.living_room

YAML configuratie is over het algemeen "voor gevorderden". Automations zijn ook eenvoudig via de frontend aan te maken:


Een aantal tweakers hebben hun config gedeeld: kijk daar ook eens ter inspiratie.

Tips en aanbevelingen

Yaml: spatiegevoelig...
YAML is extreem gevoelig voor spaties en tabs. Als vuistregel: inspringen doe je altijd per even aantal spaties en tabs worden niet gebruikt. Hoewel een tool als yamllint misschien aan kan geven dat je "valid yaml" hebt, wil dat nog niet zeggen dat het ook "valid configuration" is voor Home Assistant. Als je wijzigingen in yaml bestanden hebt gemaakt, kan je eenvoudig je wijzigingen controleren door in de frontend naar "Instellingen" -> "Serverbeheer" -> "Controleer configuratie" te gaan voordat je (op hetzelfde tabblad) delen van je configuratie kan herladen of Home Assistant herstarten.
Tip bij gebruik van een SD-Card
Als je gaat installeren op een SD-Card is het aan te raden om de database en log van Home Assistant weg te laten schrijven naar een usb-stick of andere externe locatie, omdat de vele schrijfacties die hierbij komen kijken niet goed zijn voor de levensduur van je SD-Card. Hier een handleiding betreft het gebruik van een usb-stick.
Het lezen/schrijven naar de database kun je sowieso beperken als je de Recorder en Logbook wat beperkter opzet. Het is vaak helemaal niet nodig om bepaalde zaken te loggen.
Externe toegang en beveiliging
Als je je Home Assistant platform ook van buitenaf wilt kunnen benaderen is het aan te raden om de verbinding goed te beveiligen.
Indien je Home Assistant (de all-in-one oplossing) gebruikt kun je die doen met de DuckDNS Addon.
Andere losse tips & aanbevelingen
Sommige van onderstaande tips zijn onnodig of verlopen op een andere manier als je van de all-in-one Home Assistant installatie gebruik maakt!
  • Om makkelijk je Home Assistant configuratie bestanden aan te passen maak je een samba share aan.
    Uitleg hierover vind je in deze video rond 6:30
  • Het is sterk aan te raden om je bestanden te bewerken met Notepad++ of Atom. In Notepad++ kun je de Code Taal dan op YAML zetten waardoor het makkelijker leesbaar is en je fouten sneller ontdekt.
  • Vaak is het zo dat het herstarten van Home Assistant via de GUI of zelfs via de commandline erg lang kan duren. Je kunt Hassctl gebruiken om te herstarten. Als het afsluiten namelijk te lang duurt wordt het hiermee na 1 minuut hard gestopt. Dit heeft tot nu toe nog nooit voor problemen gezorgd.
  • Nadat je configuratie bestanden hebt aangepast moet je Home Assistant herstarten, maar om zeker te zijn dat dat niet mislukt vanwege incorrecte code kun je eerst een "check config" doen (instellingen -> server beheer -> controleer configuratie). In een terminal kan je ook dit commando runnen (vanaf versie 0.29): $ hass --script check_config.
  • Bij Templates (onder Developer Tools) http://JOUWHASSURL/dev-template kun je ook templates controleren.
  • De ingebouwde icons die je kan gebruiken komen van https://materialdesignicons.com/, waar je ook voorbeelden kan zien.

Inspiratie / voorbeelden van anderen

Home Assistant Community resources
Configuraties en componenten van en door Tweakers

Andere relevante topics

Tweakers: Show je eigen Home Assistant setup
Er is een speciaal "show je eigen Home Assistant setup" topic waar vele prachtige voorbeelden staan van mede-tweakers. In dit topic zie je goed wat voor een sterk en flexibel product Home Assistant is met zijn goed configureerbare Lovelace frontend.
Zigbee2Mqtt
Er is nu een specifiek Zigbee2mqtt topic!. Zigbee2mqtt is open source software waarmee je je zigbee apparaten via MQTT kunt uitlezen en aansturen. Met deze software en relatief goedkope hardware die je ervoor nodig hebt, heb je in principe geen andere Zigbee hubs meer nodig zoals Philips Hue, Xiaomi Gateway of Trädfri. Dat scheelt dus geld en extra devices.
deCONZ - Zigbee gateway van Dresden Elektronik
Een andere zigbee Gateway oplossing is deCONZ. deCONZ is een Zigbee gateway ontwikkeld door Dresden Elektronik. Met deze gateway kun je Zigbee devices van verschillende fabrikanten aansturen door middel van de Phoscon web-app. De deCONZ gateway is los te gebruiken maar ook in combinatie met verschillende domotica applicaties zoals Home Assistant.
Node-RED
Een alternatief systeem voor het bouwen van automatiseringen binnen Home Assistant is Node-RED. Node-RED is een applicatie waarmee je zonder (veel) programmeerervaring toch krachtige automatiseringen kan maken vanuit je browser, met een eenvoudige grafische interface. Daarnaast heeft het volledige ondersteuning voor Javascript ingebouwd, zodat je in zogenaamde 'function nodes' eigen krachtige logica kan programmeren indien gewenst.



Heb je ook een configuratie die je met ons wilt delen? Of misschien heb je zelf een handig component gemaakt? Laat het een van de topicstarters weten dan kunnen we de link hier opnemen!

Topicstart overgenomen uit het vorige topic, kudo's voor @BKJ en @PuckStar

[Voor 255% gewijzigd door Hmmbob op 27-05-2020 11:17. Reden: Installatiemethodes bijgewerkt, HACS demo plaatje gefixt]

ZZP'er en kijken of MoneyMonk iets voor jou is? DM me voor 50% korting in het eerste jaar (en ik 'n cadeaubon)!


Acties:
  • +1Henk 'm!
  • Pinned

  • ricardogn
  • Registratie: Februari 2010
  • Laatst online: 14-03 20:49
Hierbij nog even de volledige uitleg hoe je het doet om je Nest Dev account van je oude installatie naar de nieuwe te zetten.

Ga naar je oude: .storage/core.config_entries

Zoek daarin naar:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
    "data": {
        "entries": [
            {
                "connection_class": "cloud_push",
                "data": {
                    "impl_domain": "nest",
                    "tokens": {
                        "access_token": "REDACTED",
                        "expires_in": 315360000
                    }
                },
                "domain": "nest",
                "entry_id": "*****",
                "options": {},
                "source": "user",
                "title": "Nest (via configuration.yaml)",
                "version": 1
            },  <== REMOVE THIS COMMA IF THIS IS THE LAST ENTRY IN THE LIST
                    OR ADD A COMMA IF IT IS NOT THE LAST ENTRY AND THERE'S NO COMMA
        ]
    },
    "key": "core.config_entries",
    "version": 1


Kopieer en plak deze naar je nieuwe. Let wel op dat dit precies komt. Want het JSON format. Is het de laatste entry, dan moet je comma goed zetten.

Bron: Home assistant forum

Acties:
  • +2Henk 'm!
  • Pinned
DeadMetal schreef op donderdag 14 november 2019 @ 12:09:
Overigens was er gisteren een livestream van het HA team, je kan het hier terugkijken. Met de hoogtepunten van dit jaar en de plannen van volgend jaar.
Voor de luie mensen even embedded:

ZZP'er en kijken of MoneyMonk iets voor jou is? DM me voor 50% korting in het eerste jaar (en ik 'n cadeaubon)!


Acties:
  • +7Henk 'm!
  • Pinned

  • PerlinNoise
  • Registratie: November 2012
  • Niet online
Heb voor een Tweaker een handleiding geschreven voor een aan/uit thermostaat via HA

Begaande grond: Esp32 met Xiaomi temp sensor
Tweede verdieping: Esp 32 met relais aan CV.

Misschien dat anderen er ook wat aan hebben. :)

Acties:
  • +11Henk 'm!
  • Pinned

  • Repsect
  • Registratie: Februari 2009
  • Laatst online: 15:20
Repsect schreef op vrijdag 24 januari 2020 @ 12:46:
Ik ben van plan om een tablet permanent aan de muur te hangen om daarop met full kiosk browser Home Assistant te kunnen bedienen. Maar waar moet zo'n tablet nu aan voldoen?

Mijn eisen zijn:
  • Minimaal 10".
  • Minimaal full HD resolutie.
  • Android tablet (zodat de front camera gebruikt kan worden om het scherm aan te zetten).
  • Er moet een nette case voor zijn, waarmee de voedingskabel weggewerkt kan worden.
  • Moet wel lekker werken, dat wil zeggen dat ik snelheid belangrijk vindt.
Ik heb zelf nog een iPad Air 2 liggen, maar zover ik weet kan ik daarvan de front camera niet gebruiken om het scherm automatisch aan en uit te laten gaan. Dus die zou daarom afvallen.

Door de Mediamarkt BTW actie is de Samsung Galaxy Tab A 10.1 WiFi (2019) 2GB wel leuk geprijsd. Of misschien toch iets meer uitgeven voor 3GB RAM en de Samsung Galaxy Tab A 10.1 WiFi (2019) 3GB pakken?

Voor deze tablets zijn mooie cases te krijgen van Vidabox, maar wel ontzettend duur.Of misschien toch gaan voor een Lenovo Tab P10? Die heeft haptic feedback wat me wel prettig lijkt met het bedienen. Echter kan ik daar geen nette cases voor vinden.

Lastig dus. Hebben jullie aanvullingen of ideeën?
Om hier nog even op terug te komen:

Ik ben gegaan voor de Samsung Galaxy Tab A 10.1 WiFi (2019) 3GB. Ik draai hier enkel de Fully Kiosk Browser op en ik het vrije RAM geheugen varieert tussen 1 à 1,5 GB. De 2GB had dus wellicht volstaan, maar vond ik toch wat krap.

Ik heb verder gekozen voor de Vidabox fixed wall mount, omdat deze op een inbouwdoos gemonteerd kon worden. Dan hoeven er dus geen extra gaten in de muur geboord te worden.

Dat ziet er dan vervolgens zo uit (klik voor groot):





De kiosk modus krijg ik niet goed werkend: Dan gaat het scherm constant aan en uit. Maar de kiosk modus heb ik ook niet per se nodig en dan werkt het wel goed. Het scherm gaat netjes aan als ie beweging ziet en gaat vervolgens weer uit.

Nu moet ik alleen mijn ui-lovelace.yaml een beetje fine-tunen, zodat alles nog wat beter en mooier op het scherm past.

En ik moet nog kijken of ik een USB-C kabel door een 19mm loze leiding naar de meterkast getrokken krijg. Nu moet ik nog even de tablet van de muur afpakken om 'm op te laden :+.

EDIT (toevoeging):
Het is gelukt om een 5 meter lange micro-USB kabel door een 19mm loze leiding te trekken. Op de micro-USB kabel heb ik een verloopstukje naar een USB-A aansluiting gezet, waarop de originele kabel van de Samsung tablet aangesloten kan worden. Op deze manier kan je de tablet ook nog van de muur afhalen en het stekkertje even losmaken.

Vervolgens heb ik in de meterkast een Fibaro Wall Plug 2 (Z-Wave plus) tussen de oplader en een stopcontact gezet. Met de Fully Kiosk Browser is het mogelijk om het accupercentage van de tablet uit te lezen. Dan nog even twee automations aangemaakt:
  • Accu onder 35% --> opladen
  • Accu boven de 75% --> stoppen met opladen
Geen omkijken meer naar dus :) .

[Voor 9% gewijzigd door Repsect op 31-01-2020 17:32]

Signature


Acties:
  • +8Henk 'm!
  • Pinned

  • Meelobee
  • Registratie: November 2001
  • Laatst online: 13:20

Meelobee

‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‎‎¯\_(ツ)_/¯

Meelobee schreef op maandag 3 februari 2020 @ 23:50:
[...]
Een betere variant, geeft op de knop 'Vandaag' & 'Morgen' aan, in plaats van 1 dag & 0 dagen. 8)
Voor de volledigheid hier de uitleg voor de volledige card:

Benodigd:

Garbage Collection component - via [HACS] of [Github]
Card Templater - via [HACS] of [Github]
Card-Mod - via [HACS] of [Github] (De 'mod-card' optie gebruiken vanwege de horizontal-stack, zie documentatie.)


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
card:
  cards:
    - card:
        entity: sensor.papier_2
        name_template: >-
          {%- if is_state("sensor.papier_2", "0")%} Vandaag {% elif
          is_state("sensor.papier_2", "1")%} Morgen {% else %} {{
          states.sensor.papier_2.attributes.days }} dagen {%- endif %}
        show_name: true
        show_state: false
        state_image:
          '0': /local/images/trash_card/papier.png
          '1': /local/images/trash_card/papier.png
          '2': /local/images/trash_card/papier_bw.png
        type: picture-entity
      entities:
        - sensor.papier_2
      type: 'custom:card-templater'
    - card:
        entity: sensor.gft_rest
        name_template: >-
          {%- if is_state("sensor.gft_rest", "0")%} Vandaag {% elif
          is_state("sensor.gft_rest", "1")%} Morgen {% else %} {{
          states.sensor.gft_rest.attributes.days }} dagen {%- endif %}
        show_name: true
        show_state: false
        state_image:
          '0': /local/images/trash_card/gft_rest.png
          '1': /local/images/trash_card/gft_rest.png
          '2': /local/images/trash_card/gft_rest_bw.png
        type: picture-entity
      entities:
        - sensor.gft_rest
      type: 'custom:card-templater'
    - card:
        entity: sensor.pmd
        name_template: >-
          {%- if is_state("sensor.pmd", "0")%} Vandaag {% elif
          is_state("sensor.pmd", "1")%} Morgen {% else %} {{
          states.sensor.pmd.attributes.days }} dagen {%- endif %}
        show_name: true
        show_state: false
        state_image:
          '0': /local/images/trash_card/pmd.png
          '1': /local/images/trash_card/pmd.png
          '2': /local/images/trash_card/pmd_bw.png
        type: picture-entity
      entities:
        - sensor.pmd
      type: 'custom:card-templater'
  type: horizontal-stack
style: |
  ha-card {
    radius: 10px;
    text-align: center
  }
type: 'custom:mod-card'


Geeft dit als resultaat:


De afbeeldingen zijn in kleur als de status morgen of vandaag is, anders zijn ze zwart/wit.

The Outsider


Acties:
  • +16Henk 'm!
  • Pinned

  • Slaut
  • Registratie: December 2014
  • Laatst online: 25-03 16:09
Afgelopen tijd heb ik een 'Bindicator' gemaakt. Een RGB led lamp die groen aan geeft wanneer GFT aan de straat gezet kan worden, of oranje voor plastic en blauw voor papier. Dit op basis van de 'morgen' sensor van Afvalwijzer.



Hardware is een Wemos D1 mini met een ws2812b 16 LED ring. Inmiddels is alles in een IKEA vinterfest 2019 huisje gestopt.

ESPhome code:
https://pastebin.com/gCt2wQSD

Automations:
https://pastebin.com/BfdfpKpB

Doordat er 16 adressable RGB LEDs in zitten is er nog meer mogelijk dan enkel 1 kleur aangeven, maar heb daar nog geen doel aan gekoppeld.

[Voor 12% gewijzigd door Slaut op 13-02-2020 13:34]


Acties:
  • +4Henk 'm!
  • Pinned
Yukkie schreef op donderdag 19 maart 2020 @ 16:30:
Ben ik de enige die het onhandig vind dat je Lovelace resources vanaf 107 in je configuraiton.yaml moeten staan? Als je nu via HACS een plugin toevoegd, moet je heel HA opnieuw opstarten :( Dat vind ik wel een achteruitgang qua usability.
Dat hoeft gelukkig ook niet, is een service voor: lovelace.reload_resources

Acties:
  • +2Henk 'm!
  • Pinned
Hier staat een en ander beschreven voor de IO:
https://www.hackster.io/beejayf/somfyduino-io-3d8283

En hier voor RTS:
http://somfy-domotica.blo...wiring-somfy-telis-4.html

Ik gebruik ESPhome voor de Wemos, die heeft onderstaande code:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
substitutions:
  device_name: somfy_remote

esphome:
  name: ${device_name}
  platform: ESP8266
  board: d1_mini

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_pwd

mqtt: !include config/mqtt.yaml

switch:
  - platform: gpio
    pin: GPIO12
    id: up
    inverted: yes
  - platform: gpio
    pin: GPIO13
    id: down
    inverted: yes
  - platform: gpio
    pin: GPIO 14
    id: stop
    inverted: yes

cover:
  - platform: template
    name: "${device_name}_cover"
    assumed_state: true
    open_action:
      - switch.turn_on: up
      - delay: 500ms
      - switch.turn_off: up
    close_action:
      - switch.turn_on: down
      - delay: 500ms
      - switch.turn_off: down
    stop_action:
      - switch.turn_on: stop
      - delay: 500ms
      - switch.turn_off: stop

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

Acties:
  • +5Henk 'm!
  • Pinned
Hmmbob schreef op donderdag 30 april 2020 @ 08:01:
[...]

Met hulp van de codeowner van cast op GitHub kunnen terug traceren naar het onderliggende probleem: cast MOET nu network_mode: host hebben bij de docker config om goed te werken - ook al definieer je de IP adressen van de media spelers.

Dat had ik niet, want mijn home assistant zat achter een traefik reverse proxy.

Vanavond even rommelen om traefik weer werkend te krijgen icm network_mode: host en dan klopt het allemaal weer.
Ok, ik heb het weer werkend zoals ik het graag wil :)
Uitgangspunt:
Ik heb Home Assistant in Docker draaien en wil daarbij liever geen gebruik maken van de --net=host optie, waarmee Home Assistant "transparant" integreert in de network stack van de host. Dat wil ik niet, omdat ik zo min mogelijk poorten open wil hebben op mijn host en daarom een Traefik reverse proxy heb draaien die al het verkeer afhandelt naar de achterliggende docker containers:

YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# docker-compose.yaml
  homeassistant:
    image: homeassistant/home-assistant:0.109.1 #manual updates
    container_name: homeassistant
    restart: unless-stopped
    depends_on:
      - traefik
      - mqtt
      - zigbee2mqtt
    labels:
      - traefik.backend=[[redacted]]
      - traefik.frontend.rule=Host:[[redacted]]
      - traefik.frontend.entrypoint=https
      - traefik.docker.network=traefik
      - traefik.enable=true
      - traefik.port=8123
    networks:
      - traefik
    ports:
      - 8300:8300 #emulated Hue
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /home/pi/docker/homeassistant:/config
    privileged: true     #Due to gpio
Het probleem:
Met deze setup werkt discovery/zeroconf niet. Tot en met 0.108.9 had ik daar geen last van, want a) ik gebruikte dit niet en b) ik kon cast handmatig configureren:

YAML:
1
2
3
4
5
6
#configuration.yaml:
cast:
  media_player:
    - host: 192.168.xx.xxx
    - host: 192.168.xx.xxx
    - host: 192.168.xx.xxx

De cast devices waren hiermee gewoon bereikbaar (dit werkt natuurlijk alleen als ze een vast IP hebben). Echter, met de update naar 0.109.0 waren al mijn cast devices ineens niet meer te benaderen. Dat is lastig, want dan doet ook mijn deurbel het niet meer :+
De oplossing
In een Github issue heeft de codeowner mee gezocht naar de oorzaak van het probleem en die bleek in mijn docker configuratie te zitten. Want, zoals gezegd, ik draai Home Assistant niet met --net=host (ook al staat dat wel zo in de installatie documentatie.....)

De oplossing bestond uit het instellen van de avahi-reflector op de host (mijn Pi), zodat mDNS verkeer tussen de verschillende netwerken (mijn LAN en het Docker netwerk) gekopieerd wordt. Dat was eigenlijk verrassend simpel:

code:
1
2
3
4
5
6
7
8
9
10
# Install the Avahi-daemon
sudo apt-get install avahi-daemon

# Turn on the reflector. Go into /etc/avahi/avahi-daemon.conf and change the reflector section to:
 [reflector]
 enable-reflector=yes
 reflect-ipv=no

# (re)start the Avahi daemon to reload config
sudo service avahi-daemon restart


En HA staat nu heerlijk in een docker zonder --net=host te spinnen op 109.1 met verbonden cast devices.

[Voor 11% gewijzigd door Hmmbob op 30-04-2020 14:59]

ZZP'er en kijken of MoneyMonk iets voor jou is? DM me voor 50% korting in het eerste jaar (en ik 'n cadeaubon)!


Acties:
  • +10Henk 'm!
  • Pinned
Ok, ik zou mijn nieuwe Lovelace setup nog eens online slingeren. Bij deze :+

Link naar GitHub: https://github.com/hmmbob/HomeAssistantConfig
En omdat ploatjuhs het altijd goed doen:



Gifjes opgenomen op de desktop terwijl Chrome een telefoon na deed. Op GitHub is de uitgebreide write-up te vinden.

[Voor 7% gewijzigd door Hmmbob op 01-05-2020 21:21]

ZZP'er en kijken of MoneyMonk iets voor jou is? DM me voor 50% korting in het eerste jaar (en ik 'n cadeaubon)!


Acties:
  • +20Henk 'm!
  • Pinned

  • Ronker32
  • Registratie: Mei 2018
  • Laatst online: 11:55
meneerdeman schreef op maandag 4 mei 2020 @ 15:23:
[...]


Ja deze had ik gezien en al mee gespeeld, maar gooi ik daarvan alles in mijn configuration.yaml (op het stukje van de customize en script na)? En pas ik mijn versterker dan in dit stukje aan:
sequence:
- service: media_player.volume_set
data:
entity_id: media_player.ca_hall
volume_level: '0.35'
Precies, waar hier media_player.ca_hall als entity_id staat, pas je die aan naar jouw versterker. En inderdaad even goed opletten dat je de juiste stukken in de juiste .yaml's gooit. Ik heb het als volgt ingericht, wellicht ook voor mede-Tweakers interessant. De buttons reageren overigens op alle media die wordt afgespeeld op het geselecteerde afspeelmedium, werkt voor mij ideaal als mediabediening.

De links voor de radiostreams heb ik hier vandaan gehaald.
Front-end


YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
cards:
  - cards:
      - entity: script.play_media
        hold_action:
          action: more-info
        show_icon: true
        show_name: false
        tap_action:
          action: toggle
        theme: Google Light Theme
        type: button
      - entity: script.pause_media
        hold_action:
          action: more-info
        show_icon: true
        show_name: false
        tap_action:
          action: toggle
        theme: Google Light Theme
        type: button
      - entity: script.stop_media
        hold_action:
          action: more-info
        show_icon: true
        show_name: false
        tap_action:
          action: toggle
        theme: Google Light Theme
        type: button
    type: horizontal-stack
  - entities:
      - entity: input_number.volume_radio
    show_header_toggle: false
    theme: Google Light Theme
    type: entities
  - cards:
      - entities:
          - entity: input_select.radio_station
        show_header_toggle: false
        theme: Google Light Theme
        type: entities
      - entities:
          - entity: input_select.afspeelmedium
        show_header_toggle: false
        theme: Google Light Theme
        type: entities
    type: horizontal-stack
title: Mediabediening
type: vertical-stack
configuration.yaml
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
input_select:
  radio_station:
    name: Selecteer radiostation
    icon: mdi:radio
    options:
      - 100% NL
      - NPO Radio 1
      - NPO Radio 2
      - NPO 3FM
      - Q-Music
      - Radio 10
      - Radio 538
      - Sky Radio
      - SLAM!
      - Veronica
  afspeelmedium:
    name: Afspeelmedium
    icon: mdi:television-play
    options:
      - Woonkamer
      - Slaapkamer
      - Chromecast Woonkamer
      - Chromecast Slaapkamer

input_number: 
  volume_radio:
    name: Volume
    icon: mdi:volume-high
    initial: 0.5
    min: 0
    max: 1
    step: 0.05
automations.yaml
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- alias: Radio volume
  trigger:
    platform: state
    entity_id: input_number.volume_radio
  action:
    service: media_player.volume_set
    data_template:
      entity_id: >
        {% if is_state("input_select.afspeelmedium", "Woonkamer") %} media_player.woonkamer
        {% elif is_state("input_select.afspeelmedium", "Slaapkamer") %} media_player.slaapkamer
        {% elif is_state("input_select.afspeelmedium", "Chromecast Woonkamer") %} media_player.chromecast_woonkamer
        {% elif is_state("input_select.afspeelmedium", "Chromecast Slaapkamer") %} media_player.chromecast_slaapkamer
        {% elif is_state("input_select.afspeelmedium", "Nest") %} media_player.nest
        {% endif %}
      volume_level: '{{  states.input_number.volume_radio.state  }}'
scripts.yaml
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  play_media:
    alias: Media afspelen
    icon: mdi:play
    sequence:
      -  service: media_player.play_media
         data_template:
           entity_id: >
            {% if is_state("input_select.afspeelmedium", "Woonkamer") %} media_player.woonkamer
            {% elif is_state("input_select.afspeelmedium", "Slaapkamer") %} media_player.slaapkamer
            {% elif is_state("input_select.afspeelmedium", "Chromecast Woonkamer") %} media_player.chromecast_woonkamer
            {% elif is_state("input_select.afspeelmedium", "Chromecast Slaapkamer") %} media_player.chromecast_slaapkamer
            {% elif is_state("input_select.afspeelmedium", "Nest") %} media_player.nest
            {% endif %}
           media_content_id: >
            {% if is_state("input_select.radio_station", "100% NL") %} https://stream.100p.nl/100pctnl.mp3
            {% elif is_state("input_select.radio_station", "NPO Radio 1") %} https://icecast.omroep.nl/radio1-bb-mp3
            {% elif is_state("input_select.radio_station", "NPO Radio 2") %} https://icecast.omroep.nl/radio2-bb-mp3
            {% elif is_state("input_select.radio_station", "NPO 3FM") %} https://icecast.omroep.nl/3fm-bb-mp3
            {% elif is_state("input_select.radio_station", "Q-Music") %} https://icecast-qmusicnl-cdp.triple-it.nl/Qmusic_nl_live_96.mp3
            {% elif is_state("input_select.radio_station", "Radio 10") %} http://19993.live.streamtheworld.com/RADIO10.mp3
            {% elif is_state("input_select.radio_station", "Radio 538") %} https://18973.live.streamtheworld.com/RADIO538.mp3
            {% elif is_state("input_select.radio_station", "Sky Radio") %} https://19993.live.streamtheworld.com/SKYRADIO.mp3
            {% elif is_state("input_select.radio_station", "SLAM!") %} https://stream.slam.nl/slam_mp3
            {% elif is_state("input_select.radio_station", "Veronica") %} https://20873.live.streamtheworld.com/VERONICA.mp3
            {% endif %}
           media_content_type: 'audio/mp4'

  pause_media:
    alias: Media afspelen pauzeren
    icon: mdi:pause
    sequence:
      -  service: media_player.media_pause
         data_template:
           entity_id: >
            {% if is_state("input_select.afspeelmedium", "Woonkamer") %} media_player.woonkamer
            {% elif is_state("input_select.afspeelmedium", "Slaapkamer") %} media_player.slaapkamer
            {% elif is_state("input_select.afspeelmedium", "Chromecast Woonkamer") %} media_player.chromecast_woonkamer
            {% elif is_state("input_select.afspeelmedium", "Chromecast Slaapkamer") %} media_player.chromecast_slaapkamer
            {% elif is_state("input_select.afspeelmedium", "Nest") %} media_player.nest
            {% endif %}

  stop_media:
    alias: Media afspelen stoppen
    icon: mdi:stop
    sequence:
      -  service: media_player.media_stop
         data_template:
           entity_id: >
            {% if is_state("input_select.afspeelmedium", "Woonkamer") %} media_player.woonkamer
            {% elif is_state("input_select.afspeelmedium", "Slaapkamer") %} media_player.slaapkamer
            {% elif is_state("input_select.afspeelmedium", "Chromecast Woonkamer") %} media_player.chromecast_woonkamer
            {% elif is_state("input_select.afspeelmedium", "Chromecast Slaapkamer") %} media_player.chromecast_slaapkamer
            {% elif is_state("input_select.afspeelmedium", "Nest") %} media_player.nest
            {% endif %}

Acties:
  • +1Henk 'm!
  • Pinned

  • barrymossel
  • Registratie: Juni 2003
  • Laatst online: 25-03 09:11
Voor de Zigbee2MQTT gebruikers melding voor OTA updates. Moet voor elk device apart. Zal vast met een template kunnen. Iemand daar ideeën over?

YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#Zigbee update
- alias: 'Update melding Hoeklamp'
  initial_state: 'true'
  trigger:
    platform: state
    entity_id: binary_sensor.hoeklamp_update_available
    from: 'off'
    to: 'on'
  action:
    - service: notify.mobile_app_barrys10
      data:
        title: 'Hoeklamp'
        message: 'Er is een update beschikbaar voor de hoeklamp. Wil je updaten?'
        data:
          actions:
            - action: update_hoeklamp
              title: Updaten
          color: '#F92772'
          priority: high
          ttl: 0

- alias: 'Update hoeklamp melding action'
  initial_state: 'on'
  trigger:
    - platform: event
      event_type: mobile_app_notification_action
      event_data:
        action: update_hoeklamp
  action:
    - service: mqtt.publish
      data:
        topic: zigbee2mqtt/bridge/ota_update/update
        payload: Hoeklamp

- alias: 'Update hoeklamp klaar'
  initial_state: 'true'
  trigger:
    platform: state
    entity_id: binary_sensor.hoeklamp_update_available
    from: 'on'
    to: 'off'
  action:
    - service: notify.mobile_app_barrys10
      data:
        title: 'Hoeklamp'
        message: 'De update van de hoeklamp is klaar.'
        data:
          color: '#F92772'
          priority: high
          ttl: 0
    - service: homeassistant.turn_off
      entity_id: light.hoeklamp

Acties:
  • +9Henk 'm!
  • Pinned

  • Yoki1985
  • Registratie: Augustus 2007
  • Nu online
Zoals begin van de week beloofd is hier een writeup van hoe ik mijn CI/CD pipeline voor homeassistant heb ingericht

Mijn opzet was dat ik een Staging omgeving en een Productie omgeving had voor mijn home-assistant. De staging wil ik nieuwe dingen kunnen uittesten zonder de productie kapot te maken (WAF)! Aangezien ik dan ook snel terug naar de vorige status terug wil kunnen leek het mij aangewezen om te werken met GIT. Aangezien Github nog geen CI/CD pipeline had toen ik met het project begon heb ik gekozen voor Gitlabs.

Eenmaal dat ik hier mij project had aangemaakt heb ik (minimum) 2 branches aangemaakt nl: Staging & Master.

De bedoeling hiervan is dat de code in de Staging branch terecht komt op de staging server en de Master branch naar de productie branch. En dat liefst volledig automatisch.

Mijn server infrastructuur is een synology NAS waar ik homeassistant draai in een docker omgeving. De folder structuur die ik hanteer is de volgende:



Hierin komen de config files van mijn docker containers te staan. De containers start ik dmv docker-compose. De configuratie bestanden hiervan kan je vinden in mijn gitlab repository

Om nu de CI/CD pipeline van gitlab aan te spreken dien je een “.gitlab-ci.yml” configuratie file toe te voegen aan je code.

In dit configuratie bestand definieer ik 2 pipelines: staging & production. Om er nu voor te zorgen dat bij de juiste branch ook de juiste pipeline getriggered wordt voeg ik onder iedere pipeline de optie “only” toe:



Hier kan je dan definieren bij welke branch iedere pipeline hoort. Hier kunnen dus meerdere branches per pipeline staan. Iedere pipeline is eigenlijk gewoon een linux docker container die opgespinned word en waar er dan een reeks commando’s op uitgevoerd worden. Bij de eigenschap “image” kan je aangeven welk docker image er gebruikt moet worden. Ik gebruik hier “alpine:latest”.

Aangezien dit een zeer kale linux versie is moeten we eerst een reeks ‘basis’ commando’s uitvoeren eer we onze deploy code kunnen laten runnen.

Eerst en vooral ga ik SSH, rsync, bash & GIT installeren. SSH ga ik gebruiken om vanuit de CI/CD pipeline connectie te maken met mijn Synology server. Rsync dient dan weer voor het overkopieren van bestanden & GIT spreekt natuurlijk voor zichzelf.

which ssh-agent || ( apk add --update openssh )
which rsync || ( apk add --update rsync )
apk add --update bash git
eval $(ssh-agent -s)


Daarna moet ik de SSH private key toevoegen aan de store van de docker image. De variabele SSH_PRIVATE_KEY heb ik gedefinieerd in de settings van gitlab bij “Settings > CI/CD > Variables”.

echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null


Hierna maak ik de .ssh folder aan en configureer de rechten van deze folder.

mkdir -p ~/.ssh
chmod 700 ~/.ssh


Als laatste test ik de SSH connectie nog even

ssh -o StrictHostKeyChecking=no -T "$TARGET_SERVER_USER@$TARGET_SERVER_HOST"


Nu de container volledig geconfigureerd is kunnen we beginnen met het deploy proces. Deze commando’s staan allemaal onder de optie “script”. Als eerste ga ik een tijdelijke deploy folder aanmaken op mijn synology server

ssh -p22 $TARGET_SERVER_USER@$TARGET_SERVER_HOST "mkdir -p /volume1/docker/_deploy/homeassistant/_tmp"


Ook deze variabelen komen uit de settings van gitlab.

Als de tijdelijke folder aangemaakt is op de server kunnen de bestanden in de branch naar deze folder gekopieerd worden. Ik exclude een aantal bestanden die ik niet nodig heb voor homeassistant zoals: .gitignore, README.md, …

rsync -rav -e ssh --exclude='.git/' --exclude='.gitignore' --exclude='README.md' --exclude='.gitlab-ci.yml' --delete-excluded ./ $TARGET_SERVER_USER@$TARGET_SERVER_HOST:/volume1/docker/_deploy/homeassistant/_tmp


Ik heb in mijn code 2 docker-compose files staan (docker-compose.staging.yml & docker-compose.production.yml). Afhankelijk in welke branch ik zit kopieer ik het juiste bestand naar de juiste folder op de server. Bij het verplaatsen hernoem ik ook direct mijn docker-compose bestand. Bv voor staging:

ssh -p22 $TARGET_SERVER_USER@$TARGET_SERVER_HOST "mv /volume1/docker/_deploy/homeassistant/_tmp/docker-compose.staging.yml /volume1/docker/homeassistant/staging/docker-compose.yml"


Het andere configuratie bestand kan ik nu verwijderen uit de tmp folder

ssh -p22 $TARGET_SERVER_USER@$TARGET_SERVER_HOST "rm /volume1/docker/_deploy/homeassistant/_tmp/docker-compose.production.yml"


Aangezien ik op mijn staging server GEEN automations wil laten draaien en enkel maar op mijn productie server, heb ik ook 2 automations.yaml bestanden (automations.staging.yaml & automations.production.yaml) De staging versie zal dan leeg zijn en de productie versie bevat dan wel de automations code.

1 van de 2 bestanden ga ik verwijderen en de andere ga ik hernoemen. Bv voor staging:

ssh -p22 $TARGET_SERVER_USER@$TARGET_SERVER_HOST "rm /volume1/docker/_deploy/homeassistant/_tmp/automations.production.yaml"
ssh -p22 $TARGET_SERVER_USER@$TARGET_SERVER_HOST "mv /volume1/docker/_deploy/homeassistant/_tmp/automations.staging.yaml /volume1/docker/_deploy/homeassistant/_tmp/automations.yaml"


Om toch een backup te hebben voor als er iets mis gaat ga ik eerst de huidige configuratie kopieren naar een backup folder

ssh -p22 $TARGET_SERVER_USER@$TARGET_SERVER_HOST "cp -r /volume1/docker/homeassistant/staging/app/ /volume1/docker/_deploy/homeassistant/_backup"


Nu is het tijd om de configuratie bestanden in onze branch over te kopieren naar de server

ssh -p22 $TARGET_SERVER_USER@$TARGET_SERVER_HOST "/bin/rsync -a /volume1/docker/_deploy/homeassistant/_tmp/ /volume1/docker/homeassistant/staging/app"


Als dit gelukt is dan ga ik de backup terug verwijderen

ssh -p22 $TARGET_SERVER_USER@$TARGET_SERVER_HOST "rm -rf /volume1/docker/_deploy/homeassistant"


Als aller laatste ga ik de docker container herstarten zodat de configuratie weer ingeladen word in homeassistant

ssh -p22 $TARGET_SERVER_USER@$TARGET_SERVER_HOST -tt "/usr/local/bin/docker restart ${DOCKER_CONTAINER_NAME}_staging"


Zo dit is de CI/CD pipeline die ik gebruik voor de deploy van mijn homeassistant. Deze pipeline wordt uitgevoerd op het moment dat ik een pull request start.

Mijn homeassistant code is te vinden op Gitlab. Nog niet alles is perfect zo is er nog het probleem om de dingen die ik doe in de GUI door te kopieren van staging naar productie dus als iemand daar een oplossing voor heeft mag die mij dat altijd laten weten.

Dit was mijn eerste blogpost/writeup die ik ooit gemaakt heb en ik hoop dat alles een beetje duidelijk is. Als er verbeteringen/opmerkingen zijn mogen jullie mij dit laten weten. Ook indien je verbeteringen hebt voor de code mag je dit laten weten.

Acties:
  • +15Henk 'm!
  • Pinned

  • Mozart
  • Registratie: September 2001
  • Laatst online: 16:49
Afgelopen weekend heb ik een dom slot slim gemaakt met behulp van een aqara deursensor en een micro switch. Het was ff prutsen maar het is gelukt, twee micro switches hebben het niet overleeft :)





Vanaf nu is het antwoord op de vraag: Is de achterdeur wel op slot? niet langer een trigger om het te gaan bekijken. En als het donker wordt en de deur is nog niet op slot -> notification :)

PSN: PcDCch


Acties:
  • +2Henk 'm!
  • Pinned

  • JackPoint
  • Registratie: Juli 2007
  • Laatst online: 24-03 22:04
Voor iedreen die met meerdere automations zit voor het wisselen van je theme, ooit heb ik onderstaande automation ergens vandaan gehaald. Deze heeft gelijk alle triggers.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- alias: 'Set HA theme for day and night'
  trigger:
    - platform: homeassistant
      event: start
    - platform: state
      entity_id: sun.sun
      to: above_horizon
    - platform: state
      entity_id: sun.sun
      to: below_horizon
  action:
    - service_template: frontend.set_theme
      data_template:
        name: >
          {% if states.sun.sun.state == "above_horizon" %}
            Light - Green
          {% else %}
            Dark - Green
          {% endif %}

Acties:
  • +4Henk 'm!
  • Pinned

  • K-Jay
  • Registratie: Augustus 2001
  • Laatst online: 25-03 21:17

K-Jay

Klaas Jan

Ik heb HA nu draaien op een NUC met Proxmox. Voor wie geïnteresseerd is in het installatieproces, ik heb er een tweakblogje aan gewijd :)

Beter remmen=sneller racen: loadcellmod


Acties:
  • +4Henk 'm!
  • Pinned

  • xenobia12345
  • Registratie: April 2002
  • Laatst online: 23-03 23:09
Voor degenen die elektrisch rijden en de telemetrie van de Kia e-Niro erin willen opnemen:

https://github.com/peet47/hassio_kia#entitie-card

Voorbeeld van resultaat:

Prometeia cooled P4 2,4B@3,15 Ghz, Abit IT7MAX2 v2.0, Corsair 3500C2 512 mb, 2x WD800JB RAID 0 striping


Acties:
  • +10Henk 'm!
  • Pinned

  • BertusG
  • Registratie: November 2003
  • Niet online
hhoekstra schreef op dinsdag 21 juli 2020 @ 13:53:
[...]


Je weet natuurlijk welke vraag er komt als je zoiets gaat posten. Heb je een automatische voer dispenser ?
Goed gezien, m'n hobby project van vorig jaar. Ontworpen en geprint op de 3D printer, met volledige communicatie via MQTT over het aantal porties en de actuele voorraad (via ultrasone sensor).

In eerste instantie had ik getimede porties, maar de kat leerde al snel de knop gebruiken om zelf een portie aan te vragen. I.v.m. gewichtscontrole krijgt hij per dagdeel 5 porties beschikbaar. Via MQTT kan ik ook communiceren met het ESP bordje over de portiegrootte. Dankzij de aandrijving met een NEMA17 stepper kan ik ook zeer precies het portie afmeten. Desondanks is de kat nog niet afgevallen :/

Om toch nog een beetje on-topic te blijven. Via HA kan ik nu gelukkig weer in één oogopslag zien wanneer hij z'n porties afneemt middels de knop.




Acties:
  • +1Henk 'm!
  • Pinned

  • Vaevictis_
  • Registratie: Maart 2000
  • Laatst online: 16:33
Hmmbob schreef op woensdag 5 augustus 2020 @ 09:14:
[...]

Check, dan snap ik het :)

Ik heb elders wel eens gelezen dat die API wat spotty is van tijd tot tijd, dus was al van plan om het lokaal te doen voor HA en te uploaden naar de API voor het wereldwijde beeld.
@Hmmbob Overigens zag ik nog wat foutjes in die code want die werkt niet meer met de actuele versie van HA. Dit is werkende code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
  - platform: command_line
    name: "Luftdata PM10"
    command: 'curl http://10.50.2.200/data.json'
    value_template: "{{ value_json.sensordatavalues[0].value | round(2) }}"
    unit_of_measurement: "µg/m³"
  - platform: command_line
    name: "Luftdata PM2.5"
    command: 'curl http://10.50.2.200/data.json'
    value_template: "{{ value_json.sensordatavalues[1].value | round(2) }}"
    unit_of_measurement: "µg/m³"
  # - platform: command_line
    # name: "Luftdata Temperature DHT22"
    # command: 'curl http://192.168.21.47/data.json'
    # value_template: "{{ value_json.sensordatavalues[2].value | round(1) }}"
    # unit_of_measurement: "°C"
  # - platform: command_line
    # name: "Luftdata Humidity DHT22"
    # command: 'curl http://192.168.21.47/data.json'
    # value_template: "{{ value_json.sensordatavalues[3].value | round(1) }}"
    # unit_of_measurement: "%"
  
  - platform: statistics
    name: pm10 stats
    entity_id: sensor.luftdata_pm10
    max_age:
      minutes: 60
      
  - platform: statistics
    name: pm25 stats
    entity_id: sensor.luftdata_pm2_5
    max_age:
      minutes: 60
 
  - platform: template
    sensors:
      air_quality_pm10:
        friendly_name: 'Air quality PM10'
        value_template: >-
          {%if states('sensor.pm10_stats_mean') | float<=25 %}EXCELLENT
          {% elif ('sensor.pm10_stats_mean') | float<=50 | float>25 %}GOOD
          {% elif ('sensor.pm10_stats_mean') | float<=90 | float>25 %}FAIR
          {% elif ('sensor.pm10_stats_mean')| float<=180 | float>90 %}INFERIOR
          {% elif ('sensor.pm10_stats_mean') | float>180 %}POOR
          {%- endif %}
 
  - platform: template
    sensors:
      air_quality_pm25:
        friendly_name: 'Air quality PM2.5'
        value_template: >-
          {%if states('sensor.pm25_stats_mean') | float<=15 %}EXCELLENT
          {% elif ('sensor.pm25_stats_mean') | float<=30 | float>15 %}GOOD
          {% elif ('sensor.pm25_stats_mean') | float<=55 | float>30 %}FAIR
          {% elif ('sensor.pm25_stats_mean') | float<=110 | float>55 %}INFERIOR
          {% elif ('sensor.pm25_stats_mean') | float>110 %}POOR
          {%- endif %}


Met dit als resultaat:


Acties:
  • +3Henk 'm!
  • Pinned

  • Rianata
  • Registratie: Januari 2010
  • Nu online

Rianata

Have you played Atari today?

Understanding YAML as it's used in Home Assistant Config files

Mijn Youtube kanaal | Mijn Twitch kanaal | Volvo XC40 P8 Recharge (MY21), 19" zomerbanden, warmtepomp


Acties:
  • +5Henk 'm!
  • Pinned

  • Petertje750
  • Registratie: November 2010
  • Laatst online: 14:18
Koepert schreef op zaterdag 15 augustus 2020 @ 10:35:
[...]


Ik had hetzelfde probleem kom ik net achter. de 'camera' van buienradar is statisch. Nu bovenstaande als URL/web pagina card toegevoegd. Hoe heb jij beeldverhouding staan? Of gebruik je een andere card? ik krijg bij bijna elke verhouding wel 1 schuifbalk..
Heb hem picture toegevoegd en met tab action voor de wolken voor moeder de vrouw en ziet er goed uit
Thx Martinvdm ;-)
YAML:
1
2
3
4
5
6
7
8
9
type: picture
image: >-
  https://image.buienradar.nl/2.0/image/animation/RadarMapRainNL?height=512&width=500&extension=gif&renderBackground=True&renderBranding=False&renderText=True&history=2&forecast=8&skip=4
tap_action:
  action: url
  url_path: >-
    https://image.buienradar.nl/2.0/image/animation/RadarMapCloudNL?height=512&width=500&extension=gif&renderBackground=True&renderBranding=False&renderText=True&history=3&forecast=16&skip=4
hold_action:
  action: none

[Voor 17% gewijzigd door Petertje750 op 15-08-2020 10:49]

Pagina: 1

Dit topic is gesloten.

Let op:
Zet je code tussen [code=yaml] [/code] tags om het goed leesbaar te houden.

Lees ook eerst even de topicstart voor je je vraag plaatst, wellicht wordt je vraag daar al beantwoord.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee