Sposób na Domoticza i Imperihome bez zewnętrznego IP

Sposób na Domoticza i Imperihome bez zewnętrznego IP

Domoticz jest świetnym kombajnem do zbiorczego zarządzania różnymi systemami internetu rzeczy. Zamiast dziesiątek aplikacji różnych producentów, mamy tutaj wszystko w jednym miejscu, dostępne przez panel www Domoticza na Raspberry, lub na przykład poprzez aplikację Imperihome z poziomu smartfona. Problem pojawia się dopiero poza murami naszego domu. Wielu dostawców internetu nie zapewnia nam zewnętrznego adresu IP lub jak często bywa w przypadku łącz dostawców komórkowych przekierowanie poszczególnych portów jest po prostu niewykonalne.

Jednym z rozwiązań mogłoby być przeniesienie Domoticza do chmury, np na zewnętrzny serwer w jednej z popularnych firm hostingowych, utrzymywanie łączności z urządzeniami na zasadzie klient- serwer za pomocą MQTT… , z tym że automatycznie uzależniłoby to działanie naszego inteligentnego domu od sprawności domowego łącza internetowego.

Kolejna opcja to łączenie się z domem za pomocą postawionego gdzieś na zewnątrz VPN’a…, co jednak może komplikować sprawę w przypadku smartfonów, braku roota w ich systemach operacyjnych, konieczności utrzymywania połączenia lub też dodatkowych aplikacji.

Na potrzeby jednej z moich instalacji zastosowałem następujące rozwiązanie:

  • Pozostawiłem Domoticza na Raspberry w domu, natomiast na zewnętrznym serwerze z publicznym adresem IP zainstalowałem bramkę MyDomoAtHome.
  • Łączność pomiędzy Domem a serwerem odbywa się poprzez zestawioną sieć VPN.
  • Serwer działa jako bramka – wystawia na swoim publicznym adresie IP dostęp do urządzeń Domoticza, z którym poprzez ImperiHome łączą się smartfony domowników.

2020-04-04_19h10_29

Zaletą tego rozwiązania jest możliwość skonfigurowania w ImperiHome dwóch oddzielnych bramek:

  • Lokalnej, którą realizujemy, na Raspberry w domu (gdy jesteśmy połączeni z naszą siecią lokalną).
  • Globalnej – znajdującej się na serwerze z adresem publicznym, gdy łączymy się spoza sieci domowej.

Serwer obsługujący MyDomoAtHome nie wymaga dużych zasobów sprzętowych; idealny będzie niewielki VPS, dostępny już od kilku do kilkunastu złotych miesięcznie.

 

Do dzieła!


Kod rabatowy nazwa.pl

Na potrzebę tego artykułu uruchomiłem serwer VPS w nazwa.pl.

Jeśli chcesz również skorzystać z usług nazwa.pl skorzystaj z mojego kodu rabatowego dającego 20% zniżki:

kj78-4287-5854

Pierwszy krok to instalacja systemu na VPS. Korzystając z panelu do zarządzania, zainstalowałem Debiana 9.

Po pomyślnym uruchomieniu naszej chmurowej instancji Debiana, czas zalogować się przez SSH. Zacznijmy od odświeżenia repozytoriów i aktualizacji:

apt-get update
apt-get upgrade

Teraz czas na instalację VPN. Na rynku mamy szereg rozwiązań, świetnie sprawdzi się tutaj OpenVPN. Dla jeszcze większego uproszczenia konfiguracji skorzystamy z rozwiązania Hamachi – vpn.net. W tym układzie w tunelu Raspberry – Serwer obydwa urządzenia będą występowały w roli klientów.

Dalej pozostajemy na VPS i instalujemy Hamachi:

wget https://www.vpn.net/installers/logmein-hamachi_2.1.0.203-1_amd64.deb
dpkg -i logmein-hamachi_2.1.0.203-1_amd64.deb

W międzyczasie odwiedzamy logmein.com, zakładamy konto i tworzymy nową sieć:

Ważne, aby sieć zabezpieczyć poprzez zatwierdzanie nowych użytkowników w profilu, lub przy pomocy hasła.

Wracamy do VPS,

hamachi login
hamachi set-nick SerwerVPS
hamachi attach twojadresemailpodany@przyrejestracji.com

Aby Hamachi uruchamiało się przy starcie:

update-rc.d logmein-hamachi defaults

W profulu:

Zatwierdzamy nowe połączenie

oraz dodajemy serwer do wybranej sieci poprzez Edit Network:

Nasz VPS jest już połączony z wirtualną siecią. Czas przejść do Raspberry:

sudo su
apt-get update
apt-get upgrade
wget https://www.vpn.net/installers/logmein-hamachi_2.1.0.203-1_armhf.deb
dpkg -i logmein-hamachi_2.1.0.203-1_armhf.deb
hamachi login
hamachi set-nick Raspberry
hamachi attach twojadresemailpodany@przyrejestracji.com
update-rc.d logmein-hamachi defaults

Analogicznie jak w przypadku VPS’a z poziomu profilu na Logmein akceptujemy nowe połączenie i dodajemy Raspberry do utworzonej wcześniej sieci. Efekt powinien być następujący:

W panelu widzimy połączone urządzenia oraz ich adresy IP. Sprawdźmy teraz czy z poziomu serwera „widzimy się z Raspberry”

ping 25.92.154.207
Raspberry odpowiada – VPN działa!

Mamy już nasz tunel pomiedzy Raspberry a serwerem VPS, teraz możemy zająć się instalacją bramki MyDomoAtHome.
Na VPS:

apt install curl
curl -sL https://deb.nodesource.com/setup_6.x | sudo bash -
apt-get install -y nodejs
apt-get install -y npm
wget -qO - https://www.e-nef.com/domoticz/mdah/gpg.mykey | sudo apt-key add -

w pliku /etc/apt/sources.list

nano /etc/apt/sources.list

Dopisujemy linijkę:

deb https://www.e-nef.com/domoticz/mdah/ /

Następnie instalujemy:

apt-get update
apt-get install MyDomoAtHome 

Instalacja MyDomoAtHome zakończona, domyślnie naszabramka powinna odpowiadać już na zewnętrznym adresie naszego serwera na portcie 3002.

MyDomoAtHome działa!

Czas na konfigurację, zadbajmy o to, aby łączność pomiędzy ImperiHome w smartfonie a MyDomoAthome na serwerze odbywała się przy pomocy SSL. Generujemy klucze, wypełniamy wymagane pola:

cd /home
openssl genrsa 1024 > key.pem
openssl req -x509 -new -key key.pem > key-cert.pem

Edytujemy plik /etc/mydomoathome/config.json

nano /etc/mydomoathome/config.json	
{
    "app_name": "MyDomoAtHome",
    "auth": null,
    "tempmode": "C",
    "https" : true,
    "key" : "home/key.pem",
    "cert": "home/key-cert.pem",
    "domoticz": {
      "ssl": false,
      "host": "25.92.154.207",
      "port": 8080,
      "path": "/"
    },
   "port": 3002,
   "passcode": ""
  }

‚key’ oraz ‚cert’ – wprowadzamy poprawną ścieżkę do wygenerowanych wcześniej kluczy SSL
W polu ‚host’ wpisujemy adres IP Raspberry przydzielony w sieci Logmein (Hamachi)

Po wprowadzeniu zmian restertujemy MydomoAthome:

service mydomoathome restart

W panelu webowym Domoticza, w konfiguracji, dopisujemy adres IP (Logmein) serwera VPS:

Teraz spróbujmy się połączyć, już przez https:

https://globalnyIPzVPS:302/devices

Po zatwierdzeniu SSL, w przegladarce powinniśmy zobaczyć listę urządzeń pobranych z Domoticza.

Na koniec zabezpieczmy jeszcze nasze MydomoAtHome przy pomocy hasła:

sudo nano /etc/mydomoathome/config.json

 {
    "app_name": "MyDomoAtHome",
    "auth": { "username": "admin", "password": "naszehaslo" },
    "tempmode": "C",
    "https" : true,
    "key" : "home/key.pem",
    "cert": "home/key-cert.pem",
    "domoticz": {
      "ssl": false,
      "host": "25.92.154.207",
      "port": 8080,
      "path": "/"
    },
   "port": 3002,
   "passcode": ""
  }

„username”: „admin”,
„password”: „naszehaslo” – odpowiednio zastępujemy naszym loginem i hasłem.

service mydomoathome restart

Ponowie, odwiedzając adres naszego serwera, zostaniemy zapytani o login oraz hasło.

Wszystko gotowe, teraz wystarczy skonfigurować MyDomoAtHome w smartfonie:

Wprowadzamy adres IP serwera, wraz z https oraz odpowiednim numerem portu.

Gotowe!

Mam nadzieję, że u Was również się sprawdzi, całość była testowana na Debianie x64 w wersji 9.11.

Jeśli pomogło dajcie znać w komentarzu 🙂

Facebook Comments

Ten post ma 4 komentarzy

  1. Marcin

    Jest jakaś alternatywa dla ImperiHome? Podobno firma jest już w fazie upadłości i znikła dodatkowo ze sklepu Play

  2. Marcin

    Witam, niestety mam problem z imperihome? doszły mnie słuchy, że firma odpowiadająca za app jest w upadłości i nie działa strona logowania i rejestracji. Istnieje jakaś alternatywa do programu imperihome?

    1. admin

      Niestety to prawda. Pozostały jedynie jej starsze wersja działające w wersji standalone. Nie znalazłem jeszcze alternatywy o tak rozbudowanej funkcjonalności jak IH 🙁

      1. Marcin

        Posiadasz może link do takiej wersji? Ja szukałem i nie mogę niestety znaleźć, a próba zmuszenia homehabit do pracy z bramką mdat kończy się za każdym razem fiaskiem.

Dodaj komentarz