Mastodon
Zdjęcie okładkowe wpisu Projekt Raspberry Pi – 5 – Dodajemy prognozę pogody do HomeKit dla naszej ulicy

Projekt Raspberry Pi – 5 – Dodajemy prognozę pogody do HomeKit dla naszej ulicy

6
Dodane: 7 lat temu

Wczoraj pisałem o polskim pluginie Homebridge-airly, który w międzyczasie uzyskał update, więc wspomnę o tym jak go uaktualnić, ale dzisiaj chciałem się skupić na dodaniu prognozy pogody do naszego HomeKit, za pomocą Homebridge.


Ten projekt jest możliwy dzięki uprzejmości Botland, który dostarczył następujące elementy umożliwiające jego wykonanie:


Spis treści

  1. Instalacja i konfiguracja Raspbian (Wi-Fi, SSH i VNC).
  2. Instalacja Homebridge i konfiguracja Xiaomi Air Purifier 2.
  3. Uruchomienie kamery Raspberry Pi NOIR pod HomeKitem.
  4. Dodajemy pozycję w HomeKit, wyświetlającą jakość powietrza na dworze.
  5. Dodajemy prognozę pogody do HomeKit dla naszej ulicy.
  6. Dodajemy sterowanie TV, Apple TV i amplitunerem do HomeKit przez Homebridge i Logitech Harmony.
  7. Naprawiamy sterowanie TV, Apple TV i amplitunerem przez Homebridge i Logitech Harmony w HomeKit.
  8. Wywalamy Airly, bo zabili swoje publiczne API.
  9. Przenosimy Homebridge do nowego Home i rozwiązujemy problemy z HomeKitem.

Uaktualniamy Homebridge-airly

Beniamin Rychter wczoraj poprawił Homebridge-airly, żeby pokazywało info dla skali CAQI zamiast AQI, więc trzeba uaktualnić plugin.

  1. Logujemy się na Malinkę.
  2. Wpisujemy: sudo npm update -g homebridge-airly@latest.
  3. Czekamy aż się uaktualni.
  4. Możecie zweryfikować, że macie wersję 1.1.5 za pomocą komendy npm list -g homebridge-airly.
  5. Moglibyśmy teraz zrestartować Homebridge’a, ale i tak będziemy to za chwilę robili, więc nie ma to sensu.

Dodam jeszcze, że wczoraj całość uruchamiałem „na szybko”, a dzisiaj skorzystałem z okazji, aby wprowadzić kilka poprawek. Sekcja pliku konfiguracyjnego dla Homebridge-airly teraz wygląda tak:

"accessories": [{
    "accessory": "Air",
    "apikey": "xxxx",
    "latitude": "xxxx",
    "longitude": "xxxx",
    "name": "MOJE_DZIELNICA"
  },
  {
    "accessory": "Air",
    "apikey": "xxxx",
    "latitude": "xxxx",
    "longitude": "xxxx",
    "name": "INNA_MIEJSCOWOŚĆ"
  }
],

Jak widać, dodałem sobie ten plugin dwukrotnie, aby wyświetlać jakość powietrza dla dwóch różnych stacji pomiarowych.

Jeśli chcecie teraz zrestartować Homebridge’a, to należy w Terminalu wpisać:

  1. sudo systemctl restart homebridge.

Status restartu możemy wyświetlać za pomocą sudo systemctl status homebridge. Wciskamy q, aby wyjść. Komendę można powtarzać, aż całość się załaduje.

Dodaje prognozę pogody

Nie mam zewnętrznej stacji pogodowej ani czujnika temperatury, ponieważ na moim balkonie nie ma to specjalnie sensu – będzie osłonięty, zbierał temperaturę z budynku, a przez większość dnia będzie wystawiony na słońce. Dlatego zdecydowałem się na instalację homebridge-weather-station-extended, który wyświetli mi temperaturę aktualną, nadchodzącą w dzisiejszym dniu, jutrzejszą oraz na dwa kolejne dni.

Ten plugin wymaga wygenerowania klucza dla Weather Undeground, którego będzie trzeba podać w pliku konfiguracyjnym, więc zacznijmy od niego.

  1. Udajemy się na tę stronę Weather Undeground.
  2. Najpierw zakładamy konto – potrzebujemy podać email i hasło.
  3. Logujemy się na to konto.
  4. Teraz wchodzimy na tę stronę.
  5. Klikamy na Pricing w pasku nad Key features.
  6. Wybieramy darmowy Stratus Plan.
  7. Klikamy w Purchase Key.
  8. Powinniśmy tutaj znaleźć szczegółowe informacje na temat naszego klucza – długiego zlepka liter i cyfr.
  9. Jak wykonamy powyższe, to musimy zlokalizować nazwę stacji pogodowej, z której chcemy pobierać informacje. W tym celu udajemy się do widoku Mapy Interaktywnej.
  10. Na tej mapie znajdujemy konkretną stację pomiarową, która nas interesuje. Najłatwiej wyszukać na górze nasze miasto, a potem wybrać stację najbliższą naszego miejsca zamieszkania.
    Wunderground map
  11. Po wybraniu punktu, który nas interesuje (przykład znajdziecie na powyższych obrazku), patrzymy na Station ID. Na przykładzie jest to IMZGORCE5. Zapisujemy sobie tę nazwę gdzieś.
  12. Teraz czas przejść do instalacji pluginu: sudo npm install -g homebridge-weather-station-extended.
  13. cd /var/homebridge.
  14. sudo nano config.json.
  15. Do naszego pliku konfiguracyjnego dodajemy sekcję poświęconą Weather Underground:
    {
        "platform": "WeatherStation",
        "name": "Pogoda Ursynów",
        "key": "KLUCZ_WUNDERGROUND",
        "location": "pws:IMZGORCE5_LUB_INNY",
        "interval": "4",
        "forecast": "3days"
    }
  16. Pozycję name możecie sobie nazwać dowolnie – w moim przypadku to nazwa dzielnicy. Pozycję interval zostawcie w spokoju, inaczej przekroczycie liczbę odwołań API na dobę – jeśli coś takiego potrzebujecie, to trzeba zapłacić za dostęp do API.
  17. Teraz musimy zapisać plik: ^X, yEnter.
  18. Pozostaje zrestartować Homebridge’a, a wszystko powinno się w nim pojawić automatycznie: sudo systemctl restart homebridge.

Mój pełny plik konfiguracyjny obecnie wygląda tak (wrażliwe dane podmieniłem):

{
    "bridge": {
        "name": "Homebridge",
        "username": "XX:XX:XX:XX:XX:XX",
        "port": 51826,
        "pin": "031-45-154"
    },
    "description": "HomePi Homebridge.",
    "accessories": [{
            "accessory": "Air",
            "apikey": "KLUCZ",
            "latitude": "xx.xxxxxx",
            "longitude": "yy.yyyyyy",
            "name": "DZIELNICA"
        },
        {
            "accessory": "Air",
            "apikey": "KLUCZ",
            "latitude": "xx.xxxxxx",
            "longitude": "yy.yyyyyy",
            "name": "MIASTO"
        }
    ],
    "platforms": [{
            "platform": "MiAirPurifierPlatform",
            "deviceCfgs": [{
                "type": "MiAirPurifier2",
                "ip": "192.168.xxx.xxx",
                "token": "xxx",
                "airPurifierDisable": false,
                "airPurifierName": "MiAirPurifier2",
                "silentModeSwitchDisable": false,
                "silentModeSwitchName": "MiAirPurifier2 Silent Mode Switch",
                "temperatureDisable": false,
                "temperatureName": "MiAirPurifier2 Temperature",
                "humidityDisable": false,
                "humidityName": "MiAirPurifier2 Humidity",
                "buzzerSwitchDisable": true,
                "buzzerSwitchName": "MiAirPurifier2 Buzzer Switch",
                "ledBulbDisable": true,
                "ledBulbName": "MiAirPurifier2 LED Switch",
                "airQualityDisable": false,
                "airQualityName": "MiAirPurifier2 AirQuality"
            }]
        },
        {
            "platform": "WeatherStation",
            "name": "Pogoda DZIELNICA",
            "key": "xxx",
            "location": "pws:XXXXXXXXX",
            "interval": "4",
            "forecast": "3days"
        }
    ]
}

A tak wygląda teraz HomeKit (po lewej po uaktualnieniu homebridge-airly, a po prawej po dodaniu homebridge-weather-station-extended):

Jeśli z jakiegoś powodu macie problemy ze swoim JSON lub chcecie go ładnie sformatować, to polecam skorzystania z tego narzędzia.



Wojtek Pietrusiewicz

Wydawca, fotograf, podróżnik, podcaster – niekoniecznie w tej kolejności. Lubię espresso, mechaniczne zegarki, mechaniczne klawiatury i zwinne samochody.

Zapraszamy do dalszej dyskusji na Mastodonie lub Twitterze .

Komentarze: 6

Dodane:) dzięki za wpisy. Czekam na kolejne fajne pluginy.
Trochę dziwnie pokazuje w głównym widoku na gorze temperaturę za trzydni a nie aktualna. Ja jak nie mam oczyszczacza to pokazuje za 3 i 2 dni.