Code Monkey home page Code Monkey logo

smart-home-talk's Introduction

Smart Home Talk

Zdroje pro "live coding demo" v rámci přednášky "Smart Home Trochu jinak"...

Home Assistant

Pokud instalujete na Raspberry Pi, doporučuji jako hassbian image, ale je možný i Docker (ten lze nainstalovat podle tohoto návodu):

docker run -d --name="home-assistant" -v `pwd`/config:/config -e "TZ=Europe/Prague" -p 8123:8123 homeassistant/home-assistant

Tímto příkazem si vytvoříme docker container s prolinkovanou složkou konfigurace. Pokud vše proběhlo správně, měla by se vám vytvořit složka config a na localhost:8123 by platforma měla běžet.

Sensory

Světla

Pouze jako demo. Do configuration.yaml vložíme tyto řádky:

light:
  - platform: demo

Zkontrolujeme konfiguraci a restartujeme platformu...

Teplota, Termostat, Spínání kotle...

Pod sensor: přidáme:

  - platform: demo
  - platform: demo

Zkontrolujeme konfiguraci a restartujeme platformu...

Vytvoříme průměrnou teplotu. Opět pod sensor: přidáme:

  - platform: template
    sensors:
      average_temperature:
      unit_of_measurement: "°C"
      value_template: >-
        {{ (float(states.sensor.outside_temperature.state) + float(states.sensor.outside_temperature_2.state)) / 2 | round(2) }}

Zkontrolujeme konfiguraci a restartujeme platformu...

Zobrazila se vám chyba v konfiguraci? Pokud ano, opravíme a opět restartujeme...

Přidáme komponentu pro spínání kotle (normálně jako GPIO, nyní jako boolean komponentu):

input_boolean:
  heating_enabled:

Zkontrolujeme konfiguraci a restartujeme platformu...

Přidáme termostat:

climate:
  - platform: generic_thermostat
    name: Thermostat
    heater: input_boolean.heating_enabled
    target_sensor: sensor.average_temperature
    min_temp: 10
    target_temp: 26
    cold_tolerance: 0.5
    hot_tolerance: 0
    initial_operation_mode: "auto"

Jméno termostatu tvoří pak následně jeho entity_id.

Zkontrolujeme konfiguraci a restartujeme platformu...

Skupiny

Některé skupiny jsou v základu vytvořené nebo si můžeme vytvářet vlastní v souboru groups.yaml:

thermostats:
  view: false
  entities: 
    - climate.thermostat

Uživatelské rozhraní

Pro GUI využijeme modul Lovelace GUI. Ten nám dovolí GUI konfigurovat opět pomocí psané konfigurace...

Přidáme:

lovelace:
  mode: yaml

A vytvoříme nový soubor ui-lovelace.yml:

title: Our Home
views:
  - title: Home
    path: default
    cards: 
      - type: thermostat
        entity: climate.thermostat
        name: Bedroom
      - type: horizontal-stack
        cards:
          - type: light
            name: Bedroom
            entity: light.bed_light
          - type: light
            name: Kitchen
            entity: light.kitchen_lights
      - type: history-graph
        entities: 
          - entity: sensor.average_temperature
            name: Average Temperature
          - entity: sensor.outside_temperature
            name: Outside Temperature
        hours_to_show: 48
        title: Temperature last 2 days
  - title: Domov
    path: default
    cards: 
      - type: thermostat
        entity: climate.thermostat
        name: Ložnice
      - type: horizontal-stack
        cards:
          - type: light
            name: Ložnice
            entity: light.bed_light
          - type: light
            name: Kuchyně
            entity: light.kitchen_lights
      - type: history-graph
        entities: 
          - entity: sensor.average_temperature
            name: Průměrná teplota
          - entity: sensor.outside_temperature
            name: Venkovní teplota
        hours_to_show: 48
        title: Teploty za poslední 2 dny
        

Zkontrolujeme konfiguraci a restartujeme platformu (a možná budeme muset v nastavení Lovelace aktivovat)...

Automatizace

Spuštění na základě změny stavu

- alias: 'Light state change sets wanted temperature'
  trigger:
    platform: state
    entity_id: light.bed_light
  action: 
    - service: climate.set_temperature
      data_template:
        entity_id: 
          - group.thermostats
        temperature: 22

Spuštění na základě změny času...

- alias: 'Afternoon'
  trigger:
    platform: time_pattern
    hours: '/1'
  condition:
    condition: 'time'
    after: '16:00:00'
    before: '22:00:00'
  action: 
    - service: climate.set_temperature
      data_template:
        entity_id: 
          - group.thermostats
        temperature: 25

Export Dat

$ sqlite3 config/home-assistant_v2.db
select state,created from states where entity_id = "sensor.average_temperature";

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.