Supla - MQTT - Dashing

Masz pomysł na funkcjonalność lub koncepcję na rozwój projektu. Opisz wszystko tutaj.
Beku
Posts: 453
Joined: Tue Nov 06, 2018 1:49 pm

Post

Jeszcze nie mam odpowiedzi od pzygmunt, ale chłop zawalony jest robotą, także bez spiny :)

Mam już źródła na github, ale bez zgody ich nie wrzucę. Robię też testy u siebie. Dzisiaj po kilkunastu godzinach klient przestał wysyłać dane do mqtt i nie wiem dlaczego. Albo gdzieś mam wyciek pamięci, albo czegoś nie przewidziałem. I jedno i drugie jest prawdopodobne. W każdym bądź razie uruchomiłem dzisiaj klienta na docelowej rpi i w chwili obecnej testuję.

Dla zachęty do poczekania wklejam filmik jak to działa z Dashingiem :)

https://www.youtube.com/watch?v=VY2wNrF ... e=youtu.be
User avatar
lesny8
Posts: 2915
Joined: Mon Dec 11, 2017 9:43 pm

Post

:roll:
prywatny.jpg
You do not have the required permissions to view the files attached to this post.
SOP 2023 :heavy_check_mark:
SOP 2024 :heavy_check_mark:
Czekam na kolejne Supla Offline Party :upside_down_face:
Beku
Posts: 453
Joined: Tue Nov 06, 2018 1:49 pm

Post

Już powinien być dostępny.
User avatar
michael
Posts: 1311
Joined: Wed Nov 09, 2016 8:00 am
Location: Wojkowice

Post

Beku wrote: Thu Oct 24, 2019 9:59 pm Dla zachęty do poczekania wklejam filmik jak to działa z Dashingiem :)
Zachęciłeś :D
:mrgreen: :mrgreen: :mrgreen:
Beku
Posts: 453
Joined: Tue Nov 06, 2018 1:49 pm

Post

A tutaj Dashing z bieżącym obciążeniem z MEW-01
371B9AD4-4267-476B-BCFE-74937CF0A029.png
You do not have the required permissions to view the files attached to this post.
Beku
Posts: 453
Joined: Tue Nov 06, 2018 1:49 pm

Post

Cześć!

Nadszedł moment na opisanie poszczególnych klocków mojego rozwiązania.
Aby osiągnąć efekt jaki prezentowałem musimy zainstalować kilka komponentów.
Ja wszystkie z nich instaluję w kontenerach i taką instalację tutaj opiszę, ale jak ktoś nie chce nie musi. Feel free.
Do zarządzania kontenerami polecam Portainer - https://www.portainer.io/
Oczywiście samo w sobie działa również jako kontener. Ale nie jest ono konieczne aby działało wszystko co opisałem poniżej.

Chciałbym na wstępie zaznaczyć, że nie biorę odpowiedzialności za to, że ktoś popsuje sobie swoją instalacje Linuxa, Rpi itd.
Każdy robi to na własną odpowiedzialność. Mogę jedynie zapewnić, że kroki opisane poniżej wykonywałem sam u siebie i wszystko działa.

W każdym bądź razie potrzebne nam będą:

1. Serwer MQTT
2. Smashing
3. Supla-mqtt-client

Instalacja serwera Mosquitto MQTT - docker

W poniższym opisie zakładam, że Użytkownik ma podstawowe pojecie o docke'rze i potrafi go używać.
Zakładam również że Użytkownik ma zainstalowanego dockera

Instalacja wersji dockerowej serwera MQTT Mosquitto jest stosunkowo prosta.
Ja skorzystałem z kodu udostępnionego pod adresem:

https://github.com/toke/docker-mosquitto

lub to samo na Docker Hub:

https://hub.docker.com/r/toke/mosquitto/

Zasadniczo wszystko sprowadza się do polecenia:

Code: Select all

mkdir -p /srv/mqtt/config/
mkdir -p /srv/mqtt/data/
mkdir -p /srv/mqtt/log/
# place your mosquitto.conf in /srv/mqtt/config/
# NOTE: You have to change the permissions of the directories
# to allow the user to read/write to data and log and read from
# config directory
# For TESTING purposes you can use chmod -R 777 /srv/mqtt/*
# Better use "-u" with a valid user id on your docker host

# Copy the files from the config directory of this project
# into /src/mqtt/config. Change them as needed for your
# particular needs.

docker run -ti -p 1883:1883 -p 9001:9001 \
-v /srv/mqtt/config:/mqtt/config:ro \
-v /srv/mqtt/log:/mqtt/log \
-v /srv/mqtt/data/:/mqtt/data/ \
--name mqtt toke/mosquitto
Spowoduje to pobranie obrazu z Docker Hub i uruchomienie kontenera.
W powyższych wpisach opisane jest jak sprawić aby kontener ruszył przy starcie systemu itd.

Jeśli wszystko się powiedzie możemy sprawdzić czy nas serwer MQTT jest widoczny w sieci.
Może do tego posłużyć narzędzie MQTT Explorer dostępne pod adresem: http://mqtt-explorer.com/

Wpisujemy w nim adres naszego serwera MQTT i port (domyślnie 1883). Jeśli serwer działa to MQTT Explorer się do niego podłączy.

Zalecam od razu po zainstalowaniu MQTT przejście przez poradnik dotyczący zabezpieczenia serwera użytkownikiem i hasłem (link poniżej)

UWAGA!!! Niektóre z operacji opisanych w poniższym poradniku dotyczącym zabezpieczania serwera MQTT wymagają użycia narzędzi dostępnych w MQTT.
Jeśli zainstalowaliśmy mosquitto jako kontener musimy podłączyć się do tego kontenera poleceniem:

docker exec -it <containerIdOrName> bash

wtedy dostępne będzie np. narzędzie mosquitto_passwd

http://www.steves-internet-guide.com/mq ... d-example/


MQTT Explorer wspiera również autoryzację user/pass wiec możemy od razu ją przetestować.

Jeśli MQTT Explorer może się połączyć do naszego serwera to znaczy, że wszystko jest OK. Możemy przejść do kolejnego kroku.
Jeśli nie - nie idźcie dalej. Lepiej rozwiązywać problemy po kolei. Piszcie w wątku postaram się pomóc.

Ok, w tej części to tyle. Po południu wrzucę źródła z mojego Smashing'a i opis jak go zainstalować. Pozdro!
Beku
Posts: 453
Joined: Tue Nov 06, 2018 1:49 pm

Post

Instalacja Smashing

Poniżej opis instalacji Smashing w wersji kontenerowej.

Pobieramy załączone archiwum zip.
smashing.zip
Rozpakowujemy np. w lokalizacji /opt/smashing
Wchodzimy do katalogu smashing

Uruchamiamy polecenie:

Code: Select all

 sudo docker build -t smashing .
to spowoduje zbudowanie obrazu docker z smashingiem.

edytujemy plik /opt/smashing/lib/hc_mqtt.rb

Dostosowujemy poniższą linię do swojej konfiguracji serwera MQTT.

Code: Select all

client = MQTT::Client.connect(:host => 'host', :port => 1883, :username => 'username', :password => 'password')
trzeba wpisać host port i ewentualnie nazwę użytkownika i hasło serwera MQTT

Uruchamiamy kontener poleceniem:

Code: Select all

sudo docker run -e GEMS=mqtt -v=/opt/smashing:/smashing -d -p 3030:3030 smashing:latest

Jeśli wszystko się powiedzie możemy w przeglądarce wpisać http://ip_maszyny:3030/default

Po chwili (cierpliwości) powinien pojawić się dashboard taki jaki wklejałem w poprzednich postach
Pierwsze uruchomienie trochę trwa, potem strona ładuje się już szybko.

Jeśli dashboard się otworzy możemy zacząć edytować widgety.

W tym celu edytujemy plik /opt/smashing/dashobards/default.rb

W tym pliku zdefiniowane są wszystkie widoczne widgety. Jak widać każdy widget ma określony rodzaj (ohtemp, ohswitch itp)
Możemy dostosować widgety do naszej instancji supli. Najważniejsze w każdym widgecie jest Id.
Jest to identyfikator kanału Supla. Jeśli mamy przycisk który w supla cloud ma id np. 2 to żeby spiąć go z dashingiem w pliku default.rb musi mieć także id 2.

Oczywiście w tej chwili jeszcze nie zobaczycie działających stanów swoich urządzeń supla.

Do tego potrzebny jest trzeci komponent supla-mqtt-client

Opiszę go w następnej części!. Pozdro!
You do not have the required permissions to view the files attached to this post.
Beku
Posts: 453
Joined: Tue Nov 06, 2018 1:49 pm

Post

Cześć!

Miło mi poinformować, że supla-mqtt-client znalazł się w oficjalnych źródłach Supla! (no prawie oficjalnych bo w osobnej gałęzi)

https://github.com/SUPLA/supla-core/tre ... qtt-client

Zachęcam do testów.
Kaowiec
Posts: 78
Joined: Wed Jul 26, 2017 8:15 am
Location: Czernichów

Post

Beku wrote: Sat Nov 09, 2019 7:57 am Cześć!

Miło mi poinformować, że supla-mqtt-client znalazł się w oficjalnych źródłach Supla! (...)

Zachęcam do testów.
Przyznam się, że od kilku dni jest to pierwszy wątek, który sprawdzam na forum ;)

Lecę instalować i liczę na wsparcie :)
Beku
Posts: 453
Joined: Tue Nov 06, 2018 1:49 pm

Post

Wsparcie jak najbardziej zapewniam :)

Mam nadzieję że ruszy bez problemu.
Pamiętaj że trzeba włączyć rejestrację klientów (smartfonów) w Supla Cloud przed uruchomieniem klienta mqtt

no i jako że klient jest w osobnej gałęzi to po git pull z źródeł supli trzeba zrobić git checkout mqtt-experimental

Return to “Pomysły i koncepcje”