ZX-Uno – aktualizacja

Ehhhhh te grupy na Facebook’u… Tytus z Pixelretroshop.pl prowadzi cykliczne cotygodniowe live-streamy (jakże ja nie lubię tych angielskich nazw, ale co napiszę – przekazy video na żywo 😀 ?) wypełnione produkcjami na retro-sprzęty. Gry, demoscena, nowości na Atari, Amigę, ZX Spectrum, Sega, Nintendo – czyli ta magia, którą tygryski lubią najbardziej. I akurat w kolejny piątek (19.11.2021) skupi się po raz wtóry na ZX-Uno. Posiadam ten sprzęt, kupiony w sumie spontanicznie, i muszę powiedzieć, że był to jeden z najlepszych zakupów w tym kontekście! Co prawda mam ZX Spectrum+ w posiadaniu, ale musiałbym rozszerzyć mu pamięć, dokupić AY, nie miałbym wtedy ULAPlus, itp., itd.

Bestia ta jednak (Tytus znaczy się) uzmysłowił mi, że od momentu kiedy nabyłem ZX-Uno (ponad rok temu z tego co pamiętam) nie aktualizowałem go. Miałem wersję BIOS v0.73 2018, aktualna to v0.83 2021. I muszę powiedzieć, że ilość zmian mnie przytłoczyła… Kilkanaście nowych core’ów (czyli rdzeni, które odpowiadają za emulację odpowiednich maszyn), niesamowicie poszerzona biblioteka ROM’ów ZX Spectrum (czyli różnych typów emulowanych maszyn), do tego już poza kwestiami sprzętowymi na obrazie karty SD znajduje się nowy Browser (czyli przeglądarka plików, o niej później) i przeredagowana biblioteka plików z oprogramowaniem do ZX Spectrum, zawierająca nawet aktualizację o nowe gry i programy z 2021 roku. Przestało mnie już dziwić, że ciągle wydaje się gry na prawie czterdziestoletni komputer…

Wszystko pięknie opisane jest na forum ZX-Uno, jest ono jednak po Hiszpańsku, Google Translate działa jednak świetnie: https://www.zxuno.com/forum/viewtopic.php?f=39&t=4011

Dla przypomnienia podstaw:

– Control+Alt+Del – Soft reset

– Control+Alt+Backspace – Hard reset

– Control+Alt+F5 – wywołanie NMI (Non-maskable Interrupt), czyli w tym przypadku przeglądarki plików.

– ESXDOS – firmware dla divIDE i DivMMC – czyli system operacyjny

Kolejnym krokiem będzie ogarnięcie tematu zaktualizowania rdzeni (core) oraz BIOS.

Z góry przepraszam za zdjęcia telewizora, ale 'nie umiem w przechwytywanie obrazu’ 😉

Jak widać moje ZX-Uno ma:
– BIOS 0.73
– 2MB RAM
– Automatycznie startuje ze 'zmienionej’ wersji ZX Spectrum 48K
Poniżej dodałem strukturę folderu z aktualizacją ZX-Uno. Największy plik – FLASH.ZX1 zawiera aktualizację wszystkich plików, wraz z BIOS, ESXDOS, Core, ROMs i w sumie to nam wystarcza. 

Po przejściu do konfiguracji i wejściu na zakładkę Upgrade wybieramy opcję Upgrade flash from SD. Jeżeli w folderze głównym znajdzie się plik FLASH.ZX1, system zacznie aktualizację. Spodobał mi się komentarz bardzo w stylu tamtych czasów – 'Cicho bo się nie wgra!’.

I tutaj WAŻNA informacja! Po komunikacie 'Successfully burned’ NIE wchodzimy do Exit, Save and Restart! WYŁĄCZAMY ZX-Uno z prądu i włączamy je ponownie. Popełniłem niestety ten błąd i zamieszały mi się ustawienia rdzeni zaktualizowanych z ustawieniami mojego poprzedniego zestawu. Straciłem godzinę na dojście do rozwiązania tematu. 

Jeżeli pojawi się nowa wersja BIOS, możemy zaktualizować wyłącznie ją z poziomu drugiej opcji.

To samo z poszczególnymi rdzeniami – jeżeli chcecie zaktualizować Commodore 64, na karcie musi się znaleźć core04, core01 to jest zawsze SPECTRUM.ZX1.

Bardzo powiększyła się biblioteka ROMów, które możemy wybrać przy starcie systemu w przypadku ZX Spectrum. Jest ich naprawdę mnóstwo. Ale to już prawdę mówiąc dla maniaków ZX’a.

Na poprzedniej instalacji na karcie miałem przeglądarkę plików w wersji v0.12, najnowsza to v0.19.

Kilkadziesiąt zmian, główna to wprowadzenie od wersji v0.13 systemu wtyczek (plugins)! W kolejnych aktualizacjach dodano obsługę systemu plików graficznych (art, iph, scr, ham), muzycznych (ay, mym, pt3) i wielu innych.

Najnowszą wersję zawsze można znaleźć pod adresem:

Jak zaktualizować ten konkretny program wyjaśniam poniżej. 

Aktualizacja Summer of ’21 wniosła wersję 0.18, ale na stronie autora mamy już 0.19 i do tej będziemy aktualizować.

W sumie wystarczy skopiować  dwa pliki z archiwum z linku powyżej.

/sys/nmy.sys

/sys/nmi.org

Trzeci jest alternatywną wersją przeglądarki plików, ale nie dotarłem jeszcze do etapu zrozumienia tego tematu 😉

/sys/nmi/old089.sys

I powiem Wam cholera szczerze, że słuchając (z pomocą tychże właśnie pluginów) takich kawałków jak Rec-Time 6 mixTS od Bonysoft, Voxel przechodziły mnie ciarki, bo AY (co prawda przez kartę Turbo Sound) ma w sobie coś magicznego…

Spis wszystkich emulowanych rdzeni jest naprawdę imponujący!

SPECTRUM – Spectrum – EXP27-220521

core2 – Amstrad CPC464 – TEST 3b

core3 – MSX – 1.3 (VGA2M)

core4 – Commodore 64 – BETA7b

core5 – Atari 800XL – 1.2 (2 MB internos)

core6 – BBC Micro – 44256

core7 – Acorn Electron – TEST2

core8 – Apple II – TEST3

core9 – Commodore VIC 20 – TEST3b

core10 – PC XT – Versión 2MB int 70Mhz

core11 – Oric Atmos – 27.12.2018 byrtolet

core12 – Sam Coupé – TEST5

core13 – Jupiter ACE – 2019.06.19 azesmbog

core14 – Sega Master System – TEST 4.3 (2MB Int)

core15 – Commodore 16 / 116 / Plus 4 – Release 1

core16 – HT-1080Z / Video Genie / TRS-80 Model I Level 2 – 2MB Int

core17 – Galaksija – 0.2 (22-Feb-2018)

core18 – Multicomp – TEST1

core19 – Colecovision – VGA-2M-2joysticks

core20 – Vectrex – TEST1

core21 – Atari 2600 – VGA-Spark2k06

core22 – ZX Spectrum TBBlue – azesmbog-13.05.2020

core23 – Acorn Atom – carmeloco-11.05.2020

core24 – ZX81 – VGA (jepalza)

core25 – NES – TEST4 (2MB INT)

core26 – Commodore PET – VGA (jepalza)

core27 – Spectrum – EXP27-220521

core28 – EACA EG2000 Colour Genie. – 44275

core29 – MSX – 1.3 (512K)

core30 – Amstrad CPC 6128 – CPC 6128 (no SD support)

core31 – Amstrad CPC 6128 – CPC 6128 (with SD support)

core32 – Flappy Bird – VGA (memoria interna)

core33 – Frenzy – 

core34 – Berzek – 

core35 – New Rally X – 

core36 – Asteroids – 

core37 – Videopac – 44331

core38 – CHIP-8 – 44339

core39 – PONG AY-3-8500 – 44143

core40 – Spectrum kyp 128-48-Pen – 44309

core41 – Camputer Lynx 48/96K – 44280

core42 – Spectrum – VGA27-110420

core43 – Spectrum – EXP27-24.03.20-TSFM

core44 – Spectrum – EXP27-24.05.30-DMA

core45 –  – 

Home Assistant, InfluxDB i Grafana. A jak mam wrzucić wykres do HA?

Dzień dobry. 

Kontynuując temat Grafana (Grafany? Nigdy nie wiem czy to powinienem odmieniać, raczej tak…) – prosty sposób na dorzucenie wykresu, zegara, itp. na interface Lovelace.

Po pierwsze primo, trzeba na Panelu wybrać Share:

Po drugie primo, przejść na zakładkę Embed i skopiować tekst 'w ciapkach’:

Po trzecie primo, w ui-lovelace.yaml dodać:

      – type: iframe

        id: graf1

        url: http://192.168.1.133:8123/api/hassio_ingress/fp2s44paqPGdZR2V3M7Sr1vI5K0TQu9jH10omYz4w38/d-solo/AHwE-k5Gz/cezar_ha?orgId=1&from=1602835941663&to=1602922341663&panelId=9

        aspect_ratio: 65%

Po czwarte primo, efekt widoczny od razu!

Aktualizacja: najpierw trzeba przejść na zakładkę Grafan, inaczej będziemy mieli błąd autoryzacji :/ Pracuję nad tym.

Kod lada chwila będzie dostępny również na GitHub: http://blog.asobczak.pl/2020/09/29/home-assistant-moje-repozytorium-dostepne-na-github/. Tylko muszę sobie to wszystko poustawiać.

Home Assistant, InfluxDB i Grafana. Ponownie na tapecie. Cześć druga.

Tekst jest kontynuacją artykułu: http://blog.asobczak.pl/2020/10/12/home-assistant-influxdb-i-grafana-ponownie-na-tapecie-czesc-pierwsza/.

Dobra, dane już mamy. Pora je jakoś gdzieś pokazać. Do tego posłuży nam właśnie Grafana. Instalacja podobnie bezproblemowa jak w przypadku innych dodatków.

Pora dodać źródło danych, w naszym przypadku będzie to wcześniej skonfigurowana baza InfluxDB.

W konfiguracji BARDZO ważna sprawa – wszystkie te dodatki są osobnymi kontenerami Dockera, dlatego musimy się posłużyć specjalnym adresem URL aby skierować Grafana na nasz InfluxDB.
Ten adres to: http://a0d7b954-influxdb:8086

Później już standard, który skonfigurowaliśmy: 
– Database: home_assistant
– User: homeassistant
– Password: jak podawaliśmy przy konfiguracji bazy InfluxDB

WAŻNE po raz kolejny. Najpierw ustawiłem HTTP Method na GET, co jest raczej logiczne – w końcu pobieramy dane. Jednak po jednej z aktualizacji nie udało mi się pobrać danych. Zmieniłem za zaleceniem znalezionych sugestii w internecie na POST i zadziałało. Magia…

Skoro źródło mamy, to możemy dodać pierwszy Dashboard. Czyli pulpit na którym umieścimy nasze wykresy, dane, itp. 

Zwróćcie uwagę na opcję Convert to row – przyda nam się później.

Od razu pojawia nam się panel z możliwością wpisania kwerendy (Query – w języku SQL zapytanie do bazy danych, które ma zwrócić pożądane przez nas wyniki). W naszym przykładzie dodaliśmy dwa czujniki temperatury, nie jest więc niczym wielce niezwykłym, że na razie w miarach (czyli typie danych które chcemy pozyskać) jest wyłącznie stopień Celsjusza. Jeżeli dodacie kolejne, pojawi się ich więcej (wilgotność, %, Mbit/s, Watt, cm, kwh) – wszystko zależy od tego co mierzycie.

Świetnie, coś się pojawia. W prawym górnym rogu macie zasięg czasowy jaki nas interesuje (godzina, 24 godziny, dzień, miesiąc, miesiąc do teraz, poprzedni miesiąc, itp.), w prawym dolnym dość ważny parametr. Dane z czujników czasem są podawane w sposób ciągły (na przykład co kilka sekund), ale niektóre robią to przy zmianie ich wartości. Tak jest na przykład z czujnikami temperatury Xiaomi – jeżeli nie ma zmiany w odczycie, to aktualizują się bodajże co 15 minut. To by powodowało na wykresie 'dziury’ – dlatego zaznaczcie 'connected’. Stworzy nam to sensowny wykres. 
Rozwińcie później strzałkę przy Legend i sprawdźcie sekcję Values – tam możecie wstawić na wykres pewne informacje dotyczące minimalnej, maksymalnej, średniej i aktualnej temperatury. Ja sobie lubię ją zrobić w formie tabeli, jak poniżej.
Takie panele można duplikować (najedźcie na panel, rozwińcie strzałką w dół -> More… -> Duplicate), dzięki temu możemy później w nie szybko wejść, zmodyfikować kwerendę o nazwę czujnika i wyklikać jak poniżej kilka z nich. Teraz czujecie moc? Nie zapomnijcie zapisywać Dashboardu.

No dobra, wykresy mamy. Do wielu zastosowań jednak przydają się zegary. W poprzednich wersjach Grafana robiło się to trochę inaczej, teraz po dodaniu panelu wybieramy Visualization i zmieniamy jak chcemy, na przykład na Gauge.

Podstawowo wygląda to jak poniżej. Jest pewna wartość, którą system interpretuje w formie 'prędkościomierza’. 

Aby ją trochę ubarwić i zrobić mniej monotonną, więcej znaczącą musicie przejść na zakładkę Fields i zdefiniować Thresholds, czyli zakresy w których mają się zmieniać kolory na podstawie danych.

Od -20 (w sumie to od -max) do 5 stopni – niebieski kolor, bo zimno, później zielony aż do 25, 25 w górę – czerwony. 
Jest tu mnóstwo opcji, możliwości – pokazałem Wam zaledwie mały zarys, można spędzić nad tym wiele godzin. Co jest fantastyczne – można te wykresy osadzić bezpośrednio w HA, ale o tym później. Wcześniej kilka dodatkowych sugestii.
Aby po wejściu w zakładkę Grafana od razu pojawił się Wasz piękny, stworzony w pocie czoła pulpit wejdźcie w Configuration -> Preferences i tam wybierzcie go z listy.

Kolejna sugestia – aby rozdzielić logicznie wykresy, zegary, dane o temperaturze, systemie, itp. – przy dodawaniu panelu wybierzcie Convert to row, o którym pisałem wcześniej. Dodacie sekcję, którą później możecie zwijać, rozwijać – jak Wam wygodnie. Bardzo ułatwia nawigację, gdy będziecie mieli kilkadziesiąt paneli.
Na wykres można oczywiście wrzucić więcej niż jedną serię danych (Download/Upload, Temperatura/Wilgotność), odpowiednią ją sformatować, itp. itd. Ale to już innym razem.

Powodzenia!

Home Assistant, InfluxDB i Grafana. Ponownie na tapecie. Cześć pierwsza.

Dobry wieczór! Coś za często ostatnio witam się wieczorem. Cóż, skoro sezon biegowy jeszcze trwa, dzieci jeszcze przez paręnaście lat samodzielne nie będą, dom się sam nie posprząta – pozostają noce 😀

Dość marudzenia, do sedna. Jakiś czas temu (jak widzę – dokładnie dwa lata temu) opisywałem InfluxDB i Grafan spięte z Domoticz – http://blog.asobczak.pl/2018/10/05/grafana-tworzymy-dashboardy/. Czasy się zmieniły, teraz wszystko jest spięte z Home Assistant, więc i to trzeba było doszlifować. Kolejny raz okazało się, że niepotrzebnie podchodziłem do tego jak 'pies do jeża’, bo konfiguracja okazała się prosta, przyjemna i bezproblemowa. Jak to bywa z Home Assistant 😀

Krótkie wyjaśnienie: InfluxDB to relatywnie nowy system baz danych służących to szybkiego zapisu/odczytu ciągów danych uporządkowanych w szeregach czasowych. Brzmi enigmatycznie, ale jest bardzo przydatne do monitorowania parametrów, system IoT (Internet of Things). Czyli dokładnie tego co robimy tutaj 😀 Grafana z kolei jest systemem wizualizacji tych danych. Co prawda InfluxDB ma podobny system już zawarty – Chronograf, ale nie jest on tak potężny i konfigurowalny jak Grafana. Te dwa elementy spięte ze sobą dają prawdziwe 'killer-combo’ (jak ktoś grał w Mortal Kombat to może to przyrównać do Fatality, które robił Johnny Cage waląc po jajkach oponentów). Szybkie, efektywne i efektowne. I to wszystko dostępne za kliknięciem w Supervisor Home Assistant. Repozytorium jednego i drugiego dostępne jest na github: https://github.com/hassio-addons/addon-influxdbhttps://github.com/hassio-addons/addon-grafana. W Hass.io instalacja jest bardziej niż prosta, podstawowa konfiguracja w sumie zawiera to, co potrzebujemy do pracy.

Po włączeniu obu dodatków wyciągnąłem je sobie na boczny pasek, aby na razie łatwiej się pracowało.
Dobra, to co już mamy? Mamy dane źródłowe, czyli czujniki (sensors) Home Assistant -> przekazywane do InfluxDB -> z których to później danych skorzysta Grafana.
Co przekazuje InfluxDB dalej? Tak zwane miary (measurement), termin spotykany również w bazach OLAP.

Kolejna sprawa, aby uzmysłowić Home Assistant, że powinien zacząć przekazywać dane czujników, musimy w configuration.yaml dodać wpis jak poniżej:

influxdb:

  username: homeassistant

  password: !secret my_password

  max_retries: 3

  default_measurement: state

#  include:

#    entities:

#      – sensor.temperature_158d0001b95f89

#      – sensor.temperature_158d0002239fbb

Opatrzona komentarzem sekcja (#) mówi o wyborze czujników, których wartości powinny być przekazane do InfluxDB. Ja zdecydowałem na ten moment na wysłanie wszystkiego, dla testów, zabaw i konfiguracji.
Zaczynamy z 'mięsem’, czyli konkretami.
Jak widać InfluxDB działa, połączył się.

Pora stworzyć bazę danych w zakładce InfluxDB Admin, gdzie będą zapisywane dane z naszego Home Assistant.

Zakładamy bazę home_assistant, jako domyślną dla HA. Jeżeli chcecie nadać inną, musicie to również uwzględnić w configuration.yaml.
Dalej użytkownik i uprawnienia do bazy. Albo standardowy homeassistant, albo taki jak uważacie – i tak musicie później podać go w configuration.yaml.

Co zrobiliśmy? Uruchomiliśmy dodatek InfluxDB w Home Assistant, stworzyliśmy bazę danych, użytkownika który będzie z niej korzystał oraz przyznaliśmy mu uprawnienia dostępu.
Jeżeli wszystko jest skonfigurowane, dla pewności restart Home Assistant i powinniśmy już widzieć dane w zakładce Explore. Na dole, po lewej, macie nazwę naszej bazy danych – home_assistant.autogen. Ja na początku wybrałem sobie dwa czujniki temperatury, które w powyższym wycinku konfiguracji zostały później wykluczone. Jak widać, pojawiła się jedna miara – stopnie Celsjusza. Gdy je rozwiniemy, pod entity_id widzimy dwa czujniki. Po prawej ujawni nam się lista pól – możemy wybrać 'value’. Coś jest – kropka. No, to już dobry znak!
Z tego co wyczytałem, powinienem się pozbyć miar w stylu °C, co jest całkiem logiczne, bo konia z rzędem temu, kto potrafi znak ° znaleźć na klawiaturze przy pisaniu kwerendy. To będzie następny krok, są na to sposoby.

Na ten moment to tyle. InfluxDB działa, możemy pobrać dane. O tym w następnej części arykułu.

’Fajny plugin wczoraj znalazłem’, 'A momenty były?’, 'No maaaasz’ – parafrazując klasyków

Dzień dobry. Ogromną siłą społeczności Home Assistant są dodatki – czy to karty dotyczące integracji z nowym sprzętem, czy też takie, które dotyczą wizualizacji.

Mamy w domu oczyszczacz powietrza Xiaomi, a w Home Assistant akurat brakuje takiej fajnej karty, która by to ładnie pokazywała. Ale ludzie ze społeczności dali radę, jak zwykle zresztą 🙂 

Polecam https://github.com/denysdovhan/purifier-card, jedną z ostatnio dodanych. Bardzo mi przypasowała.

Po pełen kod mojego Home Assistant zapraszam na stronę: https://github.com/CaesarPL/Home-Assistant-Cezar.

Konfiguracja całej karty wygląda następująco:

          – type: entities

            no_card: true

            title: „Powietrze w domu”

            show_header_toggle: false

            state_color: true

            entities:

              – fan.xiaomi_miio_device

              – sensor.mi_aqi

              – sensor.mi_humidity

              – sensor.mi_temperature

          – type: „custom:purifier-card”

            entity: fan.xiaomi_miio_device

            stats:

              – attribute: filter_life_remaining

                unit: '%’

                subtitle: Filter Remaining

              – attribute: motor_speed

                unit: RPS

                subtitle: Motor Speed

            actions:

              – name: Silent

                icon: 'mdi:weather-night’

                speed: Silent

              – name: 25%

                icon: 'mdi:circle-slice-2′

                speed: Favorite

                xiaomi_miio_favorite_level: 3

              – name: 50%

                icon: 'mdi:circle-slice-4′

                speed: Favorite

                xiaomi_miio_favorite_level: 7

              – name: 75%

                icon: 'mdi:circle-slice-6′

                speed: Favorite

                xiaomi_miio_favorite_level: 10

              – name: 100%

                icon: 'mdi:circle-slice-8′

                speed: Favorite

                xiaomi_miio_favorite_level: 14

              – name: Auto

                icon: 'mdi:brightness-auto’

                speed: Auto

            show_name: true

            show_state: true

            show_toolbar: true

            compact_view: false          

Home Assistant i czujnik smogu SDS011 wraz z ESPEasy po MQTT

Dobry wieczór.
Mam ja sobie czujnik smogu SDS011. Kiedyś był Ci on połączony z Domoticz i świetnie sobie działał http://blog.asobczak.pl/2017/12/18/czujnk-smogu-sds011-wemos-przelacznik-wszystko-w-dzialaniu/. Z chwilą przejścia na Home Assistant z czystego lenistwa (a może bardziej obawy) nie chciało mi się zmieniać konfiguracji z ESPEasy na Tasmota czy ESPHome. Jak jest, to niech działa. Ale miałem mały zgryz – nie wiedziałem jak wysłać dane do HA. W końcu jeden z kolegów na grupie FB podał przepis – MQTT! Gdzieś tam mi się w głowie kołatało, że próbowałem to zrobić w ten sposób, ale na czymś poległem. Dzięki niemu wiem już dokładnie na czym, co opiszę poniżej.
Nie przedłużając: głównym problemem u mnie była stara wersje ESPEasy – R147, jeszcze jakby 1.0. W niej po prostu nie była dostępna komunikacja przez MQTT. Niestety ESPEasy nie jest dla mnie dość jasne, Wiki nie jest aktualizowana na bieżąco, w sumie ich github jedynie odzwierciedla stan projektu: https://github.com/letscontrolit/ESPEasy/releases. Po pobraniu wersji 2.0 Mega (o wiele mówiącej nazwie ESP_Easy_mega_20200929_normal_alt_wifi_ESP8266_4M1M) i próbie zmiany wersji przez OTA (Over The Air) mój Wemos przestał się odzywać 😀 Ale pierwsze koty za płoty, podłączyłem konwerter UART (jak w cytowanym poście sprzed dwóch lat) i tym razem wszystko poszło bez problemu.
It’s alive! Wszystkie ustawienia i kod zostały zachowane po przejściu na nową wersję.

Kilka ważnych ustawień – zakładka Config i Append Unit Number to hostname.

Na zakładce Controllers dodajemy nowy Protocol – Home Assistant (openHAB) MQTT, podajemy IP brokera, port oraz dane do logowania (podane w konfiguracji Waszego MQTT). Do tego zaznaczamy Enabled.

Na zakładce Devices przy naszym czujniki musimy zaznaczyć wysyłanie danych do drugiego Controller’a – jak widać powyżej – aktualnie na raz do Domoticz oraz Home Assistant.

Tu już dane z zakładki Info.

Co do konfiguracji powyższego, to sensors.yaml wygląda tak:

  – platform: mqtt
    name: „Czujnik smogu PM25”
    state_topic: „CzujnikSmogu_1/CzujnikSmogu/PM25”
    unit_of_measurement: „ug/m3”

  – platform: mqtt
    name: „Czujnik smogu PM10”
    state_topic: „CzujnikSmogu_1/CzujnikSmogu/PM10”
    unit_of_measurement: „ug/m3”
Zwróćcie uwagę na CzujnikSmogu_1 – to jest efekt zaznaczenia Append Unit Number to hostname.
W ui-lovelace.yaml:
          – type: glance
            no_card: true
            title: „Powietrze na zewnątrz”
            show_name: false
            entities:
              – sensor.czujnik_smogu_pm25
              – sensor.czujnik_smogu_pm10
Po pełen kod mojego Home Assistant zapraszam na stronę: https://github.com/CaesarPL/Home-Assistant-Cezar.
Tylko tle i aż tyle 😀 Powodzenia!
P.S. Tak mi właśnie wpadło do głowy, że trzeba to oprogramować tak, aby pokazywał kiedy normy są przekroczone. Ciekawy temat.

Home Assistant – moje repozytorium dostępne na GitHub

Dzień dobry.

Coś sobie w końcu wydłubałem w Home Assistant w taki sposób, że jestem z tego zadowolony. A że moje korzenie programowania zasadzają się w demoscenie komputerowej, która nauczyła mnie cieszyć się z tego co zrobiłem i dzielić tym – teraz również się dzielę. 

Oto kod YAML mojej konfiguracji Home Assistant:

https://github.com/CaesarPL/Home-Assistant-Cezar

Interface podzielony na karty, z automatyzacjami, itp., itd. Kod podzielony na osobne pliki dla włączników, kamer, czujników, świateł, skryptów, ręczna konfiguracja wyglądu.

Dodatkowym plusem takiego rozwiązania (poddając się krytyce internautów) jest to, że przeglądałem ten kod kilkukrotnie aby uniknąć powtórzeń, starych bloków, oczyścić go, uczynić bardziej logicznym. Na pewno jest jeszcze dużo do zrobienia, na pewno będę go aktualizował. Nienawidzę stać w jednym miejscu zbyt długo 😀

Zapraszam do sprawdzenia, z chęcią dowiem się, że coś można zrobić coś lepiej, łatwiej, szybciej, ładniej.

Home Assistant – wersja 0.115 – Media browser

Usssss… Nie nadążam ze zmianami w konfiguracji a pojawia się coraz więcej ciekawych rzeczy!

W wersji 0.115 najbardziej zainteresował mnie Media browser. Cóż to? Mała ikona, folder w tle, ale jakże wiele dająca.

Po pierwsze, po dodaniu wpisu media_source: w configuration.yaml dostaliśmy możliwość podejrzenia tego, co mamy w folderze media, który może być zamapowany na przykład do naszego NAS. Nie ogarniam jeszcze Dockera tak jakbym chciał (ale staram się nauczyć 😉 ), dlatego nie wiedziałem jak zamapować folder z mojej sieci tak aby Home Assistant go zobaczył. A instalację mam w Docker.

Znalazłem jednak folder pod Ubuntu, gdzie okazało się, że jest ten folder widoczny pod HA. Widocznie tak to zrobili i tyle. Na razie nie wnikam.

/usr/share/hassio/media

A skoro go znalazłem to już sobie go potrafię zmapować na mój NAS.

sudo -s

mount -t cifs //192.168.1.124/Sobczaki/Muzyka /usr/share/hassio/media

Restart Home Assistant i voila! Mam dostęp do całej swojej biblioteki z poziomu Home Assistant.

A dokładniej z poziomu Mi Box. Widzicie ten folder w prawym dolnym rogu? Super, to dzięki niemu teraz mogę z poziomu Home Assistant puścić co chcę na Mi Box. Automatyzacje przyjdą z czasem…

Kolejny temat – Spotify. Tam też można sterować swoimi Playlistami, Ulubionymi, Ostatnio odtwarzanymi, itp.

Najpierw zakładamy nową aplikację na koncie deweloperskim Spotify (tak, pełna wersja Spotify jest konieczna)

https://developer.spotify.com/dashboard/applications

I pozyskane klucze wpisujemy w configuguration.yaml
spotify:
  client_id: !secret spotify_client_id
  client_secret: !secret spotify_client_secret
Dopiero teraz instalujemy Integrację Spotify i dodajemy na stronę:
      – type: media-control
        entity: media_player.spotify_sobczaki
Niby od przybytku głowa nie boli, ale ostatnio nie ma kiedy nawet z nowościami się zapoznać 😀

To jedna z nowości a kiedy sprawdzić zmiany w automatyzacjach, sekcje More info, ładowanie zdjęć użytkowników (to akurat co prawda sam sobie już zrobiłem), zmiany w kalendarzu? 

Home Assistant i ZeroTier – Zdalny dostęp bez zewnętrznego IP, bez Nabu Casa

Dzień dobry. Jak zapewne prawie każdy – mam w domu internet 🙂 Cały problem w tym, że nie mam zewnętrznego adresu IP, nie chcę za niego dodatkowo płacić, a przydałoby się mieć dostęp do swojej infrastruktury będąc na wczasach, wyjeździe, w pracy.

Za czasów Domoticz postawiłem na dostęp przez Dataplicity i byłem z tego bardzo zadowolony: http://blog.asobczak.pl/2017/03/14/dataplicity-zdalny-dostep-do-raspberry-pi-i-przy-okazji-do-domoticz/. Jednak Dataplicity potrafi wyłącznie wyeksponować port 80, a na nim akurat teraz mam HABridge, który służy do obsługi Alexy.

Skoro można to było osiągnąć na Raspberry Pi i Domoticz, to czemu nie zrobić czegoś podobnego z Home Assistant?

W tym celu tym razem udałem się do ZeroTier – https://zerotier.com/. Tak, wiem, zewnętrzna firma, której pozwalam na przesyłanie mojego ruchu. Nie jest jednak mała, miliony podłączonych urządzeń – Wasza decyzja. Niektórzy się zdecydują, niektórzy wzdrygną z obrzydzeniem.

Procedura jest taka: 

– klient ZeroTier tworzy połączenie VPN (na przykład na naszym telefonie)

– po jego włączeniu klient pośredniczy (tworzy wirtualny kanał) w komunikacji z naszym Home Assistant

– na telefonie możemy korzystać ze strony www lub aplikacji HA na podanym przez ZeroTier adresie

Pierwsza i podstawowa sprawa – musicie założyć konto na ZeroTier. 

Tam wybrać plan, który Wam odpowiada – dla mnie jest wystarczający Basic, darmowy, dla jednego urządzenia. Poniżej dostępne jest generowanie Waszego prywatnego tokena, który będzie służył przy komunikacji z dodatkiem ZeroTier One po stronie Home Assistant. Zapisać, skopiować, za chwilę będzie użyty. Drugi raz nie będzie można go zobaczyć (ale oczywiście będzie można go skasować i założyć nowy).

Później przechodzimy do zakładki Networks. Założenie jest takie, że token określa kto się loguje, nazwa sieci – do jakiej sieci. As simple as that. Zapisać, zapamiętać.

Wszystko to dostępne pod adresem https://my.zerotier.com/network.
W środku strony mamy możliwość wyboru puli adresów, których można będzie użyć. To ważne, bo przecież różnie możecie mieć skonfigurowane Wasze sieci domowe. Ja wybrałem domyślną.

Poniżej bardzo ważny element – lista adresów klientów, którzy chcą się dostać do naszej sieci. I to my decydujemy o tym, czy mogą się zalogować do naszego kanału, czy nie. Robimy to check-boxem po lewej stronie. I to na na adres podany pod Managed IPs będziemy się logować czy to przez przeglądarkę, czy przez aplikację Home Assistant. Jednorazowo, później już autoryzacja będzie przeprowadzana automatycznie.
Skoro to gotowe – przechodzimy do Home Assistant i instalujemy z poziomu Supervisor -> Add-on store ZeroTier One.

W konfiguracji podajemy kod naszej sieci oraz kod naszego tokena.

Sprawdzamy konfigurację, zapisujemy, startujemy Add-on.

Teraz pora zająć się telefonem. U mnie jest to iPhone, także z AppStore ściągnąłem odpowiednią aplikację ZeroTier One.

W niej muszę podać moje Network ID, zapisać.

Później wystarczy włączyć dostęp VPN, poczekać na autoryzację…

I korzystać z dostępu! Czy to przez stronę, czy przez aplikację na iPhone.

Coraz lepiej to wszystko wygląda 😀

Gniazdka Blitzwolf – tworzymy automatyzacje w oparciu o stan poboru prądu.

Dzień dobry. Ostatnia, trzecia, część konfiguracji gniazdek Blitzwolf.

Poprzednie tutaj:

http://blog.asobczak.pl/2020/08/20/pierwsze-efekty-buy-my-a-coffee-gniazdka-blitzwolf-bw-shp6/

http://blog.asobczak.pl/2020/08/26/gniazdka-blitzwolf-wgrywamy-tasmota-za-pomoca-tuya-convert/

Na jakiej zasadzie się oparłem? Odczytuję stan pobory mocy w gniazdku. Jeżeli pobór jest większy niż 2 Watt, zmieniam status czujnika na 'pranie’. Jeżeli spada do zera, zmienia się na 'wyłączona’. W Automations HA sprawdza na bieżąco stan czujnika, jeżeli zmieni się z 'pranie’ na 'wyłączona’ na trzy minuty, powiadamia mnie e-mailem oraz Alexą, że pranie się skończyło. Trzy minuty to, na podstawie testów, czas w którym już wiem, że grzałka nie działa, silnik nie kręci bębnem, pompa nie odsącza wody.

Wstawiam ponownie konfigurację gniazdek po stronie Tasmota, bo trochę zmieniło się nazewnictwo. Parametry i nazwy wyglądają teraz następująco:

Jak widać, w MQTT Topic do komunikacji ma nazwę blitzwolf2:

To później wykorzystuję w konfiguracji w pliku sensors.yaml. Z jakiegoś powodu (mimo włączenia odpowiednich parametrów odpowiadających za auto discovery) nie działało mi automatyczne wykrywanie, aby więc nie stać w miejscu dodałem je ręcznie 😀 I tak postąpiłem z każdym, dla nauki.

Przy okazji – Tak, wolę nazwy angielskie w parametrach. Na pulpicie HA nazwy są polskie, ale wewnątrz konfiguracji wolę je mieć po angielsku. Taki odchył 😉
Jak widać poniżej z kanału blitzwolf2 w MQTT odczytuję poszczególne parametry i wstawiam je do zmiennych:

  – platform: mqtt

    name: „Pralka Energy Today”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Today”] }}’

    unit_of_measurement: „kWh”

  – platform: mqtt

    name: „Pralka Energy Yesterday”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Yesterday”] }}’

    unit_of_measurement: „kWh”

  – platform: mqtt

    name: „Pralka Energy Total”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Total”] }}’

    unit_of_measurement: „kWh”

  – platform: mqtt

    name: „Pralka Power”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Power”] }}’

    unit_of_measurement: „W”

  – platform: mqtt

    name: „Pralka Voltage”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Voltage”] }}’

    unit_of_measurement: „V”

  – platform: mqtt

    name: „Pralka Power Factor”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Factor”] }}’   

Kolejny wpis w pliku sensors.yaml. Tutaj właśnie realizowana jest zmiana statusu włączona/wyłączona na podstawie poboru mocy.

  – platform: template

    sensors:
      pralka:
        friendly_name: „Pralka”
        value_template: >-
          {% if states(’sensor.pralka_power’) != (’unavailable’ or 'unknown’) %}
            {% if states(’sensor.pralka_power’) | int > 2 %}
              pranie
            {% else %}
              wyłączona
            {% endif %}
          {% else %}
            {{ states(’sensor.pralka’) }}
          {% endif %}


Aby skonfigurować stronę jak powyżej dodałem wpis w ui-lovelace.yaml:
    – type: vertical-stack
      in_card: true
      cards:
        – type: glance
          no_card: true
          title: „Łazienka góra”
          show_name: false
          entities:
            – sensor.temperature_158d00022723b2
            – sensor.humidity_158d00022723b2  
            – sensor.pralka
            – sensor.pralka_power
A ikony zdefiniowałem sobie w customize.yaml:
sensor.pralka:
  icon: mdi:washing-machine  
sensor.pralka_power:
  icon: mdi:power
Automatyzacja wygląda następująco:

Tak jak pisałem na początku – jeżeli przez trzy minuty zostanie utrzymana zmiana statusu z 'pranie’ na 'wyłączona’ – powiadom mnie wybranymi kanałami.

– id: '1599813679318′
  alias: Pralka – koniec prania
  description: ”
  trigger:
  – entity_id: sensor.pralka
    for: 00:03:00
    from: pranie
    platform: state
    to: wyłączona
  condition: []
  action:
  – data:
      message: HA – pralka skończyła pranie
    service: notify.cezar
  – data:
      data:
        method: all
        type: announce
      message: Washing machine has finished job
      title: Washing machine off
    service: notify.alexa_media_adam_s_echo_dot
  mode: single
Dla porządku mam je również wstawione w innych miejscach:

Przy konfiguracji posiłkowałem się konfiguracją https://github.com/bieniu/home-assistant-config. Wpłata na jego konto wskazana 🙂