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

You are currently viewing 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 Box

Ten post ma 11 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.

        1. Tomasz

          Jest na to sposób. Trzeba zainstalować wersję imperihome 3.0.3. Po uruchomieniu wyciągnąć skrót w formie widżetu. Następnie można zaktualizować imperihome do wersji nowszej. (nie odinstalowywać). Do aplikację wchodzimy przez widżet. Omijamy stronę logowania. Więcej nie mogę pomóc. Nie wiem jak z przewróceniem danych.

      2. Tomasz

        Znalazłem sposób na obejście tego. Kopiąc łopatą głęboko w internecie znalazłem sposób na obejście logowania.
        Po pierwsze musisz zainstalować imperihome w wersji 3.0.3.
        2. Zainstaluj Imperihome.
        3. Uruchom Imperihome i utwórz jakiś panel.
        4. Wyciągnij na pulpit telefony skrót w postaci widżetu.
        5. Zaktualizuj ImperiHome (nie odinstalowywuj ).
        6. Teraz możesz wejść do aplikacji przez widżet na pulpice.
        Dalej nie wiem bo obecnie nie mam dostępu do serownika. Może wystarczy przywrócić kopię zapasową.
        Powodzenia.

  3. Tomasz

    Znalazłem sposób na obejście tego. Kopiąc łopatą głęboko w internecie znalazłem sposób na obejście logowania.
    Po pierwsze musisz zainstalować imperihome w wersji 3.0.3.
    2. Zainstaluj Imperihome.
    3. Uruchom Imperihome i utwórz jakiś panel.
    4. Wyciągnij na pulpit telefony skrót w postaci widżetu.
    5. Zaktualizuj ImperiHome (nie odinstalowywuj ).
    6. Teraz możesz wejść do aplikacji przez widżet na pulpice.
    Dalej nie wiem bo obecnie nie mam dostępu do serownika. Może wystarczy przywrócić kopię zapasową.
    Powodzenia.

  4. Marcin

    po apt-get install MyDomoAtHome wyskakuje mi taki błąd:

    dpkg: error processing archive /var/cache/apt/archives/mydomoathome_0.2.42_all.deb (–unpack):
    subprocess new pre-installation script returned error exit status 127
    Errors were encountered while processing:
    /var/cache/apt/archives/mydomoathome_0.2.42_all.deb
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    1. Marcin

      /var/lib/dpkg/tmp.ci/preinst: line 18: sudo: command not found
      dpkg: error processing archive /var/cache/apt/archives/mydomoathome_0.2.42_all.deb (–unpack):
      subprocess new pre-installation script returned error exit status 127
      Errors were encountered while processing:
      /var/cache/apt/archives/mydomoathome_0.2.42_all.deb
      E: Sub-process /usr/bin/dpkg returned an error code (1)

      Zauważyłem, że problem może leżeć w tym, że instaluję pakiet z poziomu roota.

  5. Marcin

    /var/lib/dpkg/tmp.ci/preinst: line 18: sudo: command not found

    Zauważyłem, że problem może leżeć w tym, że instaluję pakiet z poziomu roota. Jak można to ominąć?

    1. Marcin

      Może to dziwnie zabrzmi, ale pomogła instalacja sudo na root:)
      apt-get install sudo

Skomentuj Marcin Anuluj pisanie odpowiedzi