poniedziałek, 6 lipca 2020

Home Assistant - Jak ułożyć dane w kartach aby były tak jak chcemy - tips and tricks

Powitać.

Jednym z potężnych i niezaprzeczalnych plusów Home Assistant jest możliwość jego dostosowania do naszych potrzeb.

Mam sobie kod jak poniżej:

      - entity: weather.dark_sky
        type: weather-forecast
      - entity: weather.home
        type: weather-forecast
      - entities:
          - entity: binary_sensor.burze_dzis_net_frost_warning
          - entity: binary_sensor.burze_dzis_net_heat_warning
          - entity: binary_sensor.burze_dzis_net_precipitation_warning
          - entity: binary_sensor.burze_dzis_net_storm_warning
          - entity: binary_sensor.burze_dzis_net_storms_nearby
          - entity: binary_sensor.burze_dzis_net_tornado_warning
          - entity: binary_sensor.burze_dzis_net_wind_warning
        type: entities

który wygląda tak:

Używając dodatku Vertical stack https://www.home-assistant.io/lovelace/vertical-stack/ możemy te karty połączyć ze sobą. Oczywiście jest to jeden z przykładów, bo można łączyć różne elementy i encje w jeden pionowy zestaw.

      - type: vertical-stack
        in_card: true
        cards:
          - entity: weather.dark_sky
            type: weather-forecast
          - entity: weather.home
            type: weather-forecast
          - entities:
              - entity: binary_sensor.burze_dzis_net_frost_warning
              - entity: binary_sensor.burze_dzis_net_heat_warning
              - entity: binary_sensor.burze_dzis_net_precipitation_warning
              - entity: binary_sensor.burze_dzis_net_storm_warning
              - entity: binary_sensor.burze_dzis_net_storms_nearby
              - entity: binary_sensor.burze_dzis_net_tornado_warning
              - entity: binary_sensor.burze_dzis_net_wind_warning
            type: entities


Aby połączyć je natomiast poziomo możemy skorzystać z Glance https://www.home-assistant.io/lovelace/glance/ :

        - type: glance
          no_card: true
          title: "Salon"
          show_name: false
          entities:
            - sensor.salon_flora_temperature
            - sensor.humidity_158d000163e802
            - sensor.salon_flora_light_intensity
            - sensor.salon_flora_moisture


Z kolei menu 'Drop down' jest już trochę bardziej czasochłonne, ale również proste.

W configuration.yaml zdefiniowałem sobie plik dla takich właśnie przełączników:

input_select: !include input_select.yaml

W tym oto pliku:

light_scenes_tv:
  name: "LED za TV"
  icon: mdi:palette
  options:
    - "ledzatvonwhite"
    - "ledzatvonblue"
    - "ledzatvonfade"
    - "ledzatvoff"

W ui-lovelace.yaml
- input_select.light_scenes_tv

A pod konkretne nazwy podpiąłem Automatyzacje:

- id: '1589838898697'
  alias: LED za TV white
  description: ''
  trigger:
  - entity_id: input_select.light_scenes_tv
    platform: state
    to: ledzatvonwhite
  condition: []
  action:
  - scene: scene.led_za_tv_white

I scena:

- id: ledzatvonwhite
  name: LED za TV white
  entities:
    switch.ledzatv: on
    switch.ledzatvwhite: on

Oraz, żeby było śmieszniej, to wywołuje kody IrDA w Broadlink :)

  - platform: broadlink
    host: 192.168.1.119
    mac: 34:EA:34:CE:00:CC
    switches:
      ledzatv:
        friendly_name: "LED za TV"
        command_on: 'JgBQAAABR5QXERYRFxEWERYRFxEWERYRFjcWNxY2FzYWNxY2FzYXNhY3FhEXNhc2FhEWEhYRFhEWERc2FhEXERY2FjcWNhc2FgAFFAABR0oVAA0FAAAAAAAAAAA='
        command_off: 'JgBYAAABUZMXERYRFxEWERcRFhIWERcRFjcXNhc2FzcXNhc2FzYYNhY3FzYXNhg2FzYXEhcRFxEWEhcRFxEXERgRFzYXNhg2FwAFFQABU0oXAAxdAAFSSRcADQU='

  - platform: broadlink
    host: 192.168.1.119
    mac: 34:EA:34:CE:00:CC
    switches:
      ledzatvwhite:
        friendly_name: "LED za TV white"
        command_on: 'JgBYAAABTJUVERUVExMVExUSFRUTExQTFTgVOBU3FjgWNhc2FjgRPRU3FhQTORUbDDkUExUUExQVFhE3FhMUOBcSFDkUOBU4FgAFGAABS0oWAAxgAAFOSRcADQU='
        command_off: 'JgBYAAABTJUVERUVExMVExUSFRUTExQTFTgVOBU3FjgWNhc2FjgRPRU3FhQTORUbDDkUExUUExQVFhE3FhMUOBcSFDkUOBU4FgAFGAABS0oWAAxgAAFOSRcADQU='

Może da się łatwiej, ale na ten moment inaczej nie potrafię ;)

Dwie rzeczy:
- ja uwielbiam 'babrać się' w skryptach i plikach konfiguracyjnych. To mi daje poczucie pełnej kontroli
- uważajcie na wcięcia w tekście! To jest YAML i bardzo ważne są odstępy, odpowiednie marginesy

Home Assistant i aktualizacje dodatków

Jedna z rzeczy, która mnie niezmiernie drażniła w Domoticz to brak informacji o aktualizacjach komponentów. Jeżeli nawet coś się udało dowiedzieć, to konia z rzędem temu, kto wiedział co zaktualizowano... 

Jakże inaczej wygląda to w Home Assistant.

Po pierwsze, w jednym miejscu zebrane wszystkie aktualizacje, które możemy pobrać:


Po drugie każda z nich ma dokładny changelog i releasenotes:


Gdzie możemy się dowiedzieć co zostało zaktualizowane i kiedy. Ułatwia to niesamowicie zorientowanie się w problemie, jeżeli takowy wystąpi po aktualizacji dodatku. Na przykład gdy zostaną dodane/usunięte parametry.


Uwielbiam taki sposób podawania informacji i szanowania użytkownika. Czytelne, proste, działające.


Home assistant i dodanie nowego, niestandardowego repozytorium. Z przykładem :)

Bam. Dzień dobry. Home Assistant jest dla mnie coraz bardziej czytelny i potężny. Do tego, jak już pisałem, ilość oficjalnych dodatków powala na kolana. Ale są też te mniej oficjalne, które nie weszły jeszcze do HACS (Home Assistant Community Store) i można je dodać ręcznie. Poniżej przykład takiego właśnie dodatku, który wpadł mi w oko i spodobał się: Simple Scheduler. Pod adresem https://github.com/arthurdent75/SimpleScheduler macie dokładną instrukcję, ale przedstawia się ona jak poniżej:


Przechodzimy do Supervisor -> Add-on Store. W prawym górnym rogu wybieramy Repositories:


Dodajemy link, zamykamy. Pojawi się na naszej liście.


Przechodzimy na ten dodatek, instalujemy,


Po instalacji uruchamiamy.


Po tym procesie możemy przejść na stronę dodatku i przeprowadzić konfigurację.


Tak dla zasady dodałem uruchamianie światła o zachodzie słońca i wyłączenie o 23, tylko w weekendy.




Oczywiście można to zrobić w Automatyzacjach, ale dla samej zasady warto było zaprezentować.

Nie gwarantuję, że za tydzień, dwa ten dodatek nie wskoczy do HACS z którego będzie można go pobrać w jeszcze prostszy sposób.

piątek, 3 lipca 2020

Raspberry Pi 3 i start z dysku/pendrive USB

Dzień dobry.

'Do odważnych świat należy', jak to mówią.

Do tej pory Raspberry startowałem z karty SD, później system był już ładowany z dysku HDD (http://cezarowy.blogspot.com/2018/01/przechodzimy-na-malinie-z-karty-sd-na.html). Skoro jednak podjąłem decyzję o przejściu z Domoticz na Home Assistant, a po zmianie w bartopie na Raspberry Pi 4 została mi jedna wolna malinka w wersji trzeciej - 'raz kozie śmierć!' pomyślałem i wykonałem jeden wpis w /boot/config.txt. Znamienny. 

Oczywiście żarty żartami, żadnych poważnych reperkusji to nie powoduje. Priorytetem jest zawsze karta SD i jeżeli znajdzie się w gnieździe - Raspberry wystartuje najpierw z niej.

Jak wcześniej napisałem - w /boot/config.txt dopisujemy jedną linię:

program_usb_boot_mode=1

i to w zasadzie cała filozofia. Przestawiany jest bit tak zwany OTP - One-time programmable, czyli taki, którego zawartość można zmienić wyłącznie raz. Nie można operacji odwrócić. Z tego co pamiętam w Raspberry Pi 3b+ jest już ustawiany domyślnie, fabrycznie.


Po wykonaniu komendy

vcgencmd otp_dump | grep 17:

ujrzymy informację po 17:. Jeżeli jest inna niż 3020000a znaczy to, że bit nie jest przestawiony. Czyli tak jak poniżej, przed restartem.


Ok, wpis w config.txt mamy, sprawdziliśmy czy już nie był ustawiony, robimy restart.

Bang, po chwili możemy sprawdzić, czy udało się poprawnie to zrobić:


3020000a jest zapisane, można wyjąć kartę i startować z SSD/USB/HDD. Działa, sprawdzałem. Tak przez pewien czas miałem uruchomiony Home Assistant. Aż do momentu gdy przeszedłem na Intel NUC ;)

C64 Mini - aktualizacja oprogramowania, używanie, wnioski

Dzień dobry,

Pojawił się u mnie całkiem niedawno C64 Mini - mikro wersja jednego z najwspanialszych komputerów ośmiobitowych - Commodore 64. Jako że rodzice kupili (za moimi namowami) Atari 65XE (zostałem mu wierny do samego końca, aż do zakupu pierwszego PC w pierwszej klasie 'ogólniaka'), C64 ominął mnie. Nie ukrywam, że patrzyłem z zazdrością na gry u kolegów, bo w pewnym momencie Atari zostało pominięte przez programistów, którzy skupili się na ZX Spectrum i właśnie Commodore 64. Wojenki między platformami mnie nie interesowały, każdy z tych komputerów oferował coś unikalnego. Jestem bardzo zadowolony, że w swoich zbiorach mam zarówno Atari 65XE, C64 jak i ZX Spectrum + - fajnie jest obcować z realnym sprzętem, mimo upływu lat.

Wracając jednak do C64 Mini - ze strony https://retrogames.biz/thec64 możecie pobrać nowe oprogramowanie, które poprawia niektóre błędy, rozszerza możliwości, zwiększa kompatybilność, itp.



Pobrany plik bin wrzucamy do folderu głównego dowolnego pendrive, po wejściu w opcję Device settings -> System information zostanie wykryty nowy soft, 


Szybka aktualizacja i uruchomi się poprawnie.


Po włożeniu pendrive do jednego z portów możemy korzystać z bogatej biblioteki oprogramowania. A jest ona niebagatelnie duża, bo ponad 2 000 tytułów czeka na re-odkrycie. Niestety, jako fan demosceny, od razu uruchomiłem paczkę 250 najlepszych dem na C64 i srodze się rozczarowałem - kilka się uruchomiło, ale prędzej czy później się zawiesiły - widać na tym przykładzie bardzo dobrze jak koderzy scenowi potrafią wykorzystywać możliwości sprzętu w taki sposób, że nawet emulator (a niczym innym The C64 Mini nie jest) nie sprosta im. Niemniej - przyjemność z uruchamiania i grania jest ogromna! Polecam!


Instalujemy Home Assistant na Intel NUC i Ubuntu

Dzień dobry.

Jakoś tak się złożyło, że wpadł w moje ręce Intel NUC NUC7CJYH z 4GB RAM oraz 120 GB dyskiem SSD. Nie mogąc się oprzeć urokowi tego sprzętu musiałem go sprawdzić i do tego wykorzystać przy instalacji Home Assistant. Zdecydowanie było warto - to sprzęt bardzo mocny, w dobrej konfiguracji, cichy, ładnie wyglądający i do tego niewielki.

Korzystając ze strony https://ubuntu.com/download/intel-nuc-desktop pobrałem wersję, którą następnie trzeba zgrać na przykład na pendrive według instrukcji (https://ubuntu.com/tutorials/tutorial-create-a-usb-stick-on-ubuntu#1-overview). Proste na tyle, że i bez niej można sobie poradzić korzystając z programu Rufus, który stworzy dla nas uruchamialny pendrive. 

Uruchamiamy go,


Wskazujemy plik naszego systemu,


Zatwierdzamy,




Pendrive wkładamy do Intel NUC, włączamy, 




Wybieramy Restore entire hard drive,



I, voila, po chwili jesteśmy w systemie.



WAŻNE! 

Aby Intel NUC włączył się sam po zaniku napięcia, trzeba włączyć tę opcję w BIOS - 
F2 przy starcie -> Advanced -> Power -> Secondary Power Settings -> After Power Failure -> Power On.

Warto również włączyć Bluetooth, może się przydać do Xiaomi Mi Flora ;)

Później już z poziomu terminala kilka instrukcji, instalacja według standardu dostępnego w sieci, u mnie wersja Home Assistant Supervised - czyli jak nazwa wskazuje z Supervisor'em. Doinstalowałem sobie od razu server SSH aby łączyć się już później bezpośrednio z terminalem.

sudo apt update
sudo apt install openssh-server

sudo add-apt-repository universe

sudo -i

apt-get update

apt-get upgrade

apt-get install -y software-properties-common apparmor-utils apt-transport-https avahi-daemon ca-certificates curl dbus jq network-manager socat 

systemctl disable ModemManager

systemctl stop ModemManager 

curl -fsSL get.docker.com | sh 

curl -sL "https://raw.githubusercontent.com/home-assistant/supervised-installer/c674830d8ddc6af9d618755a7995af939dd73fde/installer.sh" | bash -s

Po chwili mamy dostęp do Home Assistant! Logowanie błyskawiczne, dociągnięcie potrzebnych komponentów jest natychmiastowe, czuć moc Intel NUC w stosunku nawet Raspberry Pi 4, nie mówiąc już o RPi3.

Odzyskanie bazy było formalnością dzięki zapisowi poprzednich kopii w chmurze Google: http://cezarowy.blogspot.com/2019/11/hassio-i-google-drive-backup.html

Migracja z Domoticz do Home Assistant - jak to zrobić, żeby się wyrobić...

Dzień dobry.

Niespokojnym duchem będąc i uwielbiając zmieniać, próbować, usprawniać - musiałem przejść na Home Assistant. Było kilka powodów, niektóre mniej, niektóre bardziej ważne.

1. Aby zaktualizować wersję Domoticz którą mam aktualnie (3.8153 - relikt, ale działa) musiałbym przejść z Raspbian Jessie na Raspbian Buster. Jeżeli miałbym to zrobić - czekałaby mnie reinstalacja części komponentów, zapewne problemy z Broadlink (z tego co raportowali czytelnicy jakimś cudem mi się udało, ale wiele osób miało z tym problemy w Domoticz) oraz innymi komponentami. Niestety, w Domoticz nie jest to łatwe.


2. Niestety sprawdziłem jak prosta była i jest konfiguracja Home Assistant - po tym już Domoticz nie był taki sam. Osobiście lubię się bawić w konfiguracje w plikach tekstowych i możliwość dostosowania dzięki temu systemu do moich potrzeb. Teraz w większości przypadków nie trzeba znać YAML - pozostał dla takich świrów jak ja. HA niesamowicie szybko się rozwija.

3. KAŻDY, absolutnie KAŻDY dodatek, integracja, tapeta jest dokładnie opisana. Każda aktualizacja jest dokładnie udokumentowana w sposób jednakowy dla całego systemu. To samo tyczy się aktualizacji samego systemu HA. Bo trzeba wiedzieć, że są one rozłączne, to my decydujemy co ładujemy, na czym się opieramy, w jaki sposób dodajemy.

Niniejszym zaczynam ciąg artykułów o przejściu z Domoticz na Home Assistant! 

Część już opisałem wcześniej, postaram się aktualizować ten artykuł i kolejne sukcesy. A udało mi się w sumie przenieść już prawie wszystko.

Do przeniesienia miałem:

    - gniazdka Xiaomi
    - włączniki ścienne Xiaomi
    - Miilight LED 
    - Yeelight
    - światło przed domem - Sonoff na Tasmota (przy okazji zmiana oprogramowania na najnowsze przez OTA)

    - czujnik smogu - ESPEasy
    - Owl (RFLink)
    - UPS
    - oczyszczacz powietrza
    - MiFlora

    - kamery
    - Xiaomi Gateway
    - Logitech Media Server
    - Broadlink
    - NC+

    - aktywności sprzętów IP, zliczenie czasu używania
    - Sonoff POW
    - Sceny
    - pogoda/Airly
    - internet - raportowanie
    - System

    - skrypty
        - drzwi otwarte
        - emulator obecności
        - powiadamianie o temperaturze
        - poranne news o domu
        - zużycie energii

Home Assistant - Halo, czy ktoś jest w domu?

Dzień dobry. Opierając się na integracji z telefonem iPhone (stałe IP i integracja Home Assistant) mogę sprawdzić swoją obecność w domu i później sprawdzić ją w Home Assistant.

Robimy to poprzez konfigurację, sekcję Persons, gdzie mówimy na jakiej podstawie będziemy wykrywać obecność osoby





Dla zasady dorzuciłem swoje zdjęcie jako ikonę ;)

customize.yaml

# My picture of Person enity
person.Cezar:
  entity_picture: /local/pictures/Avatar_.jpg




Home Assistant - migracja z Tasmota na ESPHome

Dzień dobry.

Jako że lubię testować i sprawdzać co się da - postanowiłem sprawdzić ESPHome, skoro już zdecydowałem na przejście na Home Assistant, a akurat ESPHome świetnie się z nim integruje. Do tego - ma dość ciekawe podejście do tematu.

Aby dowiedzieć się wszystkiego polecam wizytę na stronie https://esphome.io/.

Na większości sprzętów Sonoff (oprócz czujnika smogu) przeszedłem już na Tasmota, ESPHome pozwala na bezbolesną migrację z Tasmota (ale również z ESPEasy). Opisane wszystko jest na stronie: https://esphome.io/guides/migrate_sonoff_tasmota.html. Konfiguracja przy użyciu Tasmota i MQTT nie jest jakoś specjalnie skomplikowana, ale używając ESPHome, faktycznie jest to kilka kliknięć i wpisów (mam plik lovelace-ui.yaml edytowany ręcznie).

Najpierw dodajemy repozytorium:


Dodajemy do Home Assistant:




Po starcie wybieramy Open WEB UI:







Jedynym zgrzytem było to, że musiałem zainstalować nowy kernel na moim Raspberry Pi 4, ponieważ bez tego nie mogłem skompilować plików do wgarnia na Sonoffy. 

Nie było to jakoś magicznie trudne.

sudo apt-get install raspi-config

sudo apt-get install rpi-update



uname -a





Po tej operacji kompilacja plików przeszła już bezboleśnie.



Plik .bin wgrałem do Sonoff Basic:







Encje pojawiły się w integracji i można było je dodać do Home Assistant.


Bardziej dla mnie, konfiguracja SDS011 na przyszłość, ale chyba pozostanę przy ESPEasy.


uart:
  rx_pin: D0
  tx_pin: D6
  baud_rate: 9600

sensor:
  - platform: sds011
    pm_2_5:
      name: "Particulate Matter <2.5µm Concentration"
    pm_10_0:
      name: "Particulate Matter <10.0µm Concentration"
    update_interval: 30min