sd4linux na Mikrotiku hAP ac^3

Adamus10
Posts: 31
Joined: Sat Oct 28, 2023 8:05 pm
Been thanked: 6 times

Post

Zgodnie z tym co obiecałem w temacie: viewtopic.php?p=240049#p240049
dzielę się instrukcją uruchomienia sd4linux na mikrotiku.

Postaram się to opisać najprościej jak umiem, wspomagając się w niektórych przypadkach Gemini.

To co na start jest potrzebne to:
1. **Router MikroTik** z architekturą ARM / ARM32 (np. seria RB3011, RB4011, hAP ac3, hAP ax2) oraz oprogramowaniem RouterOS (v7.6 lub nowsze z obsługą kontenerów).
2. Podłączony **pendrive/dysk USB** do routera (sformatowany w systemie ext4).
3. Pobrany i zainstalowany darmowy program **Docker Desktop** na Windows.

Po działaniu Mikrotika ponad 2 doby widzę takie zużycia:
CPU Usage - 3%
Memory Current - 2488 KiB
App Size - 61.8 MiB

Kanały są cały czas dostępne, bez żadnego zamulania samego routera. Mam testowo aktywne 8 urządzeń.
Całość wykonywałem na wersji v7.24

## KROK 1: Przygotowanie środowiska na komputerze (Windows)

Aby kontener zadziałał na routerze MikroTik z procesorem ARM, musimy go najpierw zbudować na komputerze, używając tzw. kompilacji skrośnej (cross-compilation).

1. Zainstaluj i uruchom **Docker Desktop** (w lewym dolnym rogu aplikacji musi świecić się na zielono status *Engine running*).
2. Otwórz menu Start, wpisz **PowerShell**, kliknij prawym przyciskiem myszy i wybierz **Uruchom jako administrator**.
3. Utwórz folder roboczy i przejdź do niego, wklejając:

Code: Select all

   mkdir C:\supla
   cd C:\supla

## KROK 2: Wygenerowanie pliku Dockerfile i kompilacja (PowerShell)

Wklej w PowerShell poniższą bardzo długą linię (w całości!) i zatwierdź **Enter**. Skrypt ten automatycznie stworzy odpowiedni plik `Dockerfile` z łatkami kompatybilności.

Code: Select all

[System.IO.File]::WriteAllBytes("C:\supla\Dockerfile", [System.Convert]::FromBase64String("RlJPTSBkZWJpYW46YnVsbHNleWUtc2xpbSBBUyBidWlsZGVyClJVTiBkcGtnIC0tYWRkLWFyY2hpdGVjdHVyZSBhcm1oZiAmJiBcCiAgICBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IGluc3RhbGwgLXkgLS1uby1pbnN0YWxsLXJlY29tbWVuZHMgXAogICAgY3Jvc3NidWlsZC1lc3NlbnRpYWwtYXJtaGYgXAogICAgY21ha2UgXAogICAgZ2l0IFwKICAgIGxpYnNzbC1kZXY6YXJtaGYgXAogICAgbGlieWFtbC1jcHAtZGV2OmFybWhmIFwKICAgIGNhLWNlcnRpZmljYXRlcyBcCiAgICBwZXJsCgpSVU4gZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9TVVBMQS9zdXBsYS1kZXZpY2UuZ2l0IC90bXAvc3VwbGEtZGV2aWNlICYmIFwKICAgIGZpbmQgL3RtcC9zdXBsYS1kZXZpY2UvIC10eXBlIGYgLW5hbWUgIkNNYWtlTGlzdHMudHh0IiAtZXhlYyBzZWQgLWkgJ3MvQ1hYX1NUQU5EQVJEIDIzL0NYWF9TVEFOREFSRCAyMC9nJyB7fSArICYmIFwKICAgIHBlcmwgLWkgLXBlICdzfCNpbmNsdWRlIDx5YW1sLWNwcC95YW1sLmg+fCNpbmNsdWRlIDx5YW1sLWNwcC95YW1sLmg+XG4jaW5jbHVkZSA8c3RyaW5nX3ZpZXc+XG5uYW1lc3BhY2UgWUFNTCB7IHRlbXBsYXRlPD4gc3RydWN0IGNvbnZlcnQ8c3RkOjpzdHJpbmdfdmlldz4geyBzdGF0aWMgTm9kZSBlbmNvZGUoY29uc3Qgc3RkOjpzdHJpbmdfdmlldyYgcmhzKSB7IHJldHVybiBOb2RlKHN0ZDo6c3RyaW5nKHJocykpOyB9IHN0YXRpYyBib29sIGRlY29kZShjb25zdCBOb2RlJiBub2RlLCBzdGQ6OnN0cmluZ192aWV3JiByaHMpIHsgaWYgKCFub2RlLklzU2NhbGFyKCkpIHJldHVybiBmYWxzZTsgcmhzID0gbm9kZS5TY2FsYXIoKTsgcmV0dXJuIHRydWU7IH0gfTsgfXxnJyAvdG1wL3N1cGxhLWRldmljZS9leHRyYXMvcG9ydGluZy9saW51eC9saW51eF95YW1sX2NvbmZpZy5oICYmIFwKICAgIGNkIC90bXAvc3VwbGEtZGV2aWNlL2V4dHJhcy9leGFtcGxlcy9saW51eCAmJiBcCiAgICBta2RpciBidWlsZCAmJiBjZCBidWlsZCAmJiBcCiAgICBjbWFrZSAuLiBcCiAgICAgIC1EQ01BS0VfU1lTVEVNX05BTUU9TGludXggXAogICAgICAtRENNQUtFX1NZU1RFTV9QUk9DRVNTT1I9YXJtIFwKICAgICAgLURDTUFLRV9DX0NPTVBJTEVSPWFybS1saW51eC1nbnVlYWJpaGYtZ2NjIFwKICAgICAgLURDTUFLRV9DWFhfQ09NUElMRVI9YXJtLWxpbnV4LWdudWVhYmloZi1nKysgJiYgXAogICAgbWFrZSAtaiQobnByb2MpCgpGUk9NIC0tcGxhdGZvcm09bGludXgvYXJtL3Y3IGRlYmlhbjpidWxsc2V5ZS1zbGltClJVTiBkcGtnIC0tYWRkLWFyY2hpdGVjdHVyZSBhcm1oZiAmJiBcCiAgICBhcHQtZ2V0IHVwZGF0ZSAmJiBhcHQtZ2V0IGluc3RhbGwgLXkgLS1uby1pbnN0YWxsLXJlY29tbWVuZHMgXAogICAgbGlic3NsMS4xOmFybWhmIFwKICAgIGxpYnlhbWwtY3BwMC42OmFybWhmIFwKICAgIGNhLWNlcnRpZmljYXRlcyBcCiAgICAmJiBybSAtcmYgL3Zhci9saWIvYXB0L2xpc3RzLyoKCkNPUFkgLS1mcm9tPWJ1aWxkZXIgL3RtcC9zdXBsYS1kZXZpY2UvZXh0cmFzL2V4YW1wbGVzL2xpbnV4L2J1aWxkL3N1cGxhLWRldmljZS1saW51eCAvdXNyL2xvY2FsL2Jpbi9zZDRsaW51eAoKRU5UUllQT0lOVCBbIi91c3IvbG9jYWwvYmluL3NkNGxpbnV4IiwgIi1jIiwgIi9ldGMvc3VwbGEtZGV2aWNlL3N1cGxhLWRldmljZS55YW1sIl0K"))

Następnie zbuduj i wyeksportuj obraz wpisując kolejno (po każdej linijce wciśnij Enter):

Code: Select all

docker build -t sd4linux:arm32 --load .
docker save -o sd4linux.tar sd4linux:arm32
*(Proces kompilacji potrwa około 1-2 minut. Po zakończeniu w folderze `C:\supla\` znajdziesz plik `sd4linux.tar` o wadze około 27 MB)*.

---

## KROK 3: Przygotowanie sieci i pamięci na MikroTiku

Uruchom program WinBox, zaloguj się do MikroTika i otwórz terminal (przycisk **New Terminal**).

1. Włącz obsługę kontenerów w RouterOS (jeśli nie jest włączona). Wymaga fizycznego potwierdzenia resetem prądu lub guzikiem na routerze:

Code: Select all

   /system/device-mode/update container=yes
2. Stwórz interfejs sieciowy (VETH) dla kontenera oraz przypisz mu adres IP (np. `192.168.88.250` - dostosuj pulę do swojej sieci lokalnej):

Code: Select all

   /interface/veth/add name=veth-supla address=192.168.88.250/24 gateway=192.168.88.1
   /interface/bridge/port/add bridge=bridge interface=veth-supla
3. Stwórz zmienne środowiskowe z punktami montowania na dysku USB (załóżmy, że pendrive widnieje pod nazwą `usb1`):

Code: Select all

   /container/mounts/add name=supla_cfg src=/usb1/supla/config dst=/etc/supla-device
   /container/mounts/add name=supla_data src=/usb1/supla/data dst=/root/.supla-device

---


## KROK 4: Wgranie obrazu kontenera na MikroTika

1. W WinBoxie po lewej stronie kliknij zakładkę **Files**.
2. Otwórz na komputerze katalog `C:\supla`.
3. Metodą "przeciągnij i upuść" przenieś plik `sd4linux.tar` z Windowsa prosto do katalogu `usb1/supla/` w WinBox.
4. Gdy transfer dobiegnie końca, wklej w terminalu MikroTika komendę dodającą kontener:

Code: Select all

   /container/add file=usb1/supla/sd4linux.tar interface=veth-supla root-dir=usb1/supla/root mountlists=supla_cfg,supla_data logging=yes

5. Rozpakowywanie archiwum potrwa trochę czasu. Sprawdź status komendą:

Code: Select all

   /container/print
*(Gdy w kolumnie zobaczysz literkę `S` (stopped), przejdź dalej).*

---

## KROK 5: Utworzenie pliku konfiguracyjnego YAML

Zanim uruchomisz aplikację, przygotuj plik konfiguracyjny z danymi ze swojego konta Supla Cloud. Wklej w terminalu MikroTika (podmieniając adres e-mail i nazwę serwera!):

Code: Select all

/file/set [find name="usb1/supla/config/supla-device.yaml"] contents="name: MikroTik_Router
log_level: debug
state_files_path: "/root/.supla-device"
security_level: 2

supla:
  server: svr83.supla.org
  mail: [email protected]

channels:
  - type: VirtualRelay
    name: "Wirtualny Przelacznik WoL"
"

---

## KROK 6: Start i rejestracja urządzenia

1. Zaloguj się na swoje konto na stronie [cloud.supla.org](https://cloud.supla.org).
2. Sprawdź czy kłódka u góry strony świeci się na zielono (**Rejestracja urządzeń: Włączona**).
3. W terminalu MikroTika uruchom kontener:

Code: Select all

   /container/start [find root-dir~"supla/root"]
4. Podgląd logów na żywo włączysz wpisując:

Code: Select all

   /log/print follow where topics~"container"
*Powinieneś zobaczyć komunikaty o wygenerowaniu certyfikatów, podłączeniu do sieci oraz wpis końcowy: `Registered and ready`*.
Adamus10
Posts: 31
Joined: Sat Oct 28, 2023 8:05 pm
Been thanked: 6 times

Post

Co teraz sobie będę dłubał w mikrotiku?:
  1. Obsługe dongla zigbee https://allegro.pl/produkt/bramka-zigbe ... 7514072615
  2. Obsługę dongla BLE https://allegro.pl/oferta/adapter-bluet ... 8200913979
  3. Osobny kontener (apache+php) do konfiguracji supla-device.yaml +automatyczne dodawanie skryptów na sprawdzanie obecności
obraz.png
obraz.png
obraz.png
You do not have the required permissions to view the files attached to this post.
User avatar
george1255
Posts: 426
Joined: Fri Sep 02, 2022 8:48 pm
Location: Włodawa
Has thanked: 12 times
Been thanked: 7 times

Post

a co Tymi donglami chcesz niby robic w supla?
User avatar
klew
Posts: 13905
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

george1255 wrote: Wed Aug 26, 2026 6:32 am a co Tymi donglami chcesz niby robic w supla?
Np. może sobie dodawać urządzenia ZigBee i BLE do SUPLI.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
george1255
Posts: 426
Joined: Fri Sep 02, 2022 8:48 pm
Location: Włodawa
Has thanked: 12 times
Been thanked: 7 times

Post

klew wrote: Wed Aug 26, 2026 8:28 am
george1255 wrote: Wed Aug 26, 2026 6:32 am a co Tymi donglami chcesz niby robic w supla?
Np. może sobie dodawać urządzenia ZigBee i BLE do SUPLI.
za pomoca dongla? da sie tak ?
Adamus10
Posts: 31
Joined: Sat Oct 28, 2023 8:05 pm
Been thanked: 6 times

Post

george1255 wrote: Wed Aug 26, 2026 10:08 am
klew wrote: Wed Aug 26, 2026 8:28 am
george1255 wrote: Wed Aug 26, 2026 6:32 am a co Tymi donglami chcesz niby robic w supla?
Np. może sobie dodawać urządzenia ZigBee i BLE do SUPLI.
za pomoca dongla? da sie tak ?
Mikrotik o tyle jest fajny, że można wiele zrobić. Nie współpracuje z każdym donglem, miałem prosty adapter do BT i nie dał rady. Kupiłem ten z linku i śmiga.

Mam drobny problem z przekazywaniem danych miedzy kontenerami ale już jestem blisko rozwiazania. Mam 3 kontenery: od supli, webpanel, i biblioteke dekodującą BLE
obraz.png
Do tego co powyżej dorobiłem panel z wyszukiwaniem urządzeń BLE:
obraz.png
You do not have the required permissions to view the files attached to this post.
Adamus10
Posts: 31
Joined: Sat Oct 28, 2023 8:05 pm
Been thanked: 6 times

Post

W tej całej zabawie chodziło o pozbycie sie osobnych urządzeń na ESP32 a w gratisie dodanie sobie fajnego panelu do zarządzania urządzeniami. O tyle lepsze, że mogę sie pobawić z php a nie samym html i js
User avatar
klew
Posts: 13905
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

george1255 wrote: Wed Aug 26, 2026 10:08 am
klew wrote: Wed Aug 26, 2026 8:28 am
george1255 wrote: Wed Aug 26, 2026 6:32 am a co Tymi donglami chcesz niby robic w supla?
Np. może sobie dodawać urządzenia ZigBee i BLE do SUPLI.
za pomoca dongla? da sie tak ?
Pewnie wszystko zależy od dongla.
Ogólnie są takie zigbee2mqtt , a sama sd4linux może dodać urządzenia z MQTT do SUPLI.

Na Ble pewnie można zrobić podobnie. Dongle+jakiś soft do niego, daje dostęp do danych raportowanych przez urządzenia. A jak już to masz to "wystarczy" to spiąć przez pliki, MQTT itp do sd4linux i gotowe ;)

Oczywiście nie wszystko pewnie jest w sd4linux dodane, ale jak czegoś nie ma, to trzeba napisać i mogę dodać
Najlepsze suple dla Twojego domu :mrgreen:
lukasz06
Posts: 2540
Joined: Sun Jul 17, 2022 6:53 pm
Has thanked: 45 times
Been thanked: 21 times

Post

To teraz jeszcze bramka Matter 😉
Adamus10
Posts: 31
Joined: Sat Oct 28, 2023 8:05 pm
Been thanked: 6 times

Post

lukasz06 wrote: Wed Aug 26, 2026 10:41 am To teraz jeszcze bramka Matter 😉
To bedzie 5 w kolejności.
Bo jescze przed chciałbym zdobyć jakiegoś dongla obsługującego modbus a potem donga dla radia 433mz

Pod tyle urządzeń bedę musiał podłączyć aktywny hub

Return to “Supla-device dla Linuxa (sd4linux)”