Supla - MQTT - Dashing
-
desaint
- Posts: 109
- Joined: Mon May 27, 2019 9:46 am
dziwne, bo plik o ktory sie burzy w sumie jest.
-
Beku
- Posts: 453
- Joined: Tue Nov 06, 2018 1:49 pm
Wiem ale się zdarza ze ucieka mi z include jak robię kompilacje w eclipse. I tym razem tez się tak stało. Możesz spróbować edytować plik subdir.mk w katalogu Debug/src . Tam gdzie jest polecenie kompilacji musisz dopisać -I../src/json
Linia 51 i 58
Ewentualnie możesz pobrać źródła z repozytorium:
https://github.com/lukbek/supla-core.git
Bo tam już poprawiłem.
-
desaint
- Posts: 109
- Joined: Mon May 27, 2019 9:46 am
Hej,
jeszcze mam pytanie odnosnie twojej koncecji zapisywania tych kanalow bo proboje jakos to pospinac.
dlaczego tak zrobiles, ze te sensory sa pod id modulu wykonawczego, a nie pod swoim i np zamiast:
i tam jest capy payload z sensorem zeby bylo:
i tu tylko stan tego sensora.
Nie wiem tylko jak sprytnie powiazac to co publikuje supla-mqtt z tym co mam w cloudzie.
jeszcze mam pytanie odnosnie twojej koncecji zapisywania tych kanalow bo proboje jakos to pospinac.
dlaczego tak zrobiles, ze te sensory sa pod id modulu wykonawczego, a nie pod swoim i np zamiast:
Code: Select all
supla/channels/status/gate/1Code: Select all
supla/channels/status/sensor/21Nie wiem tylko jak sprytnie powiazac to co publikuje supla-mqtt z tym co mam w cloudzie.
-
Beku
- Posts: 453
- Joined: Tue Nov 06, 2018 1:49 pm
Sensory jeśli nie są spięte pod kanał w cloud pokazują się osobno. Jeśli natomiast są przypięte do urządzenia to stają się jego częścią i są publikowane razem z tym urządzeniem. W aplikacji tez nie widzisz osobno sensorów jeśli są przypięte do urządzenia. Widzisz je tylko wtedy gdy są niezależne - nie przypięte do urządzenia.desaint wrote: Tue Nov 26, 2019 8:19 am Hej,
jeszcze mam pytanie odnosnie twojej koncecji zapisywania tych kanalow bo proboje jakos to pospinac.
dlaczego tak zrobiles, ze te sensory sa pod id modulu wykonawczego, a nie pod swoim i np zamiast:i tam jest capy payload z sensorem zeby bylo:Code: Select all
supla/channels/status/gate/1i tu tylko stan tego sensora.Code: Select all
supla/channels/status/sensor/21
Nie wiem tylko jak sprytnie powiazac to co publikuje supla-mqtt z tym co mam w cloudzie.
-
desaint
- Posts: 109
- Joined: Mon May 27, 2019 9:46 am
Czesc,
udalo mi sie troche to oprogramowac, dziala fajnie.
jednak jest drobny klopot z wartosciami poczatkowymi. o ile dla wszystkich shelly wysyla stan poprawny, o tyle dla sonoff gateway i gatewaylock sensor_1 zawsze wysyla 0 po uruchomieniu, mimo ze bramki zamkniete.
czy to mozna jakos poprawic?
udalo mi sie troche to oprogramowac, dziala fajnie.
jednak jest drobny klopot z wartosciami poczatkowymi. o ile dla wszystkich shelly wysyla stan poprawny, o tyle dla sonoff gateway i gatewaylock sensor_1 zawsze wysyla 0 po uruchomieniu, mimo ze bramki zamkniete.
czy to mozna jakos poprawic?
-
Beku
- Posts: 453
- Joined: Tue Nov 06, 2018 1:49 pm
https://github.com/SUPLA/supla-core/blo ... op.cpp#L61desaint wrote: Sat Dec 14, 2019 6:30 pm Czesc,
udalo mi sie troche to oprogramowac, dziala fajnie.
jednak jest drobny klopot z wartosciami poczatkowymi. o ile dla wszystkich shelly wysyla stan poprawny, o tyle dla sonoff gateway i gatewaylock sensor_1 zawsze wysyla 0 po uruchomieniu, mimo ze bramki zamkniete.
czy to mozna jakos poprawic?
W tym miejscu trzeba dopisać:
channels->set_channel_sub_value(channel->Id, channel->value.sub_value);
Oczywiście wrzuce to tez do źródeł ale chwile to potrwa
-
desaint
- Posts: 109
- Joined: Mon May 27, 2019 9:46 am
no wlasnie do tego etapu doszedlem ze to ustawiam, ale swoja wartosc domyslna, czyli 1.
jak debugowalem, to channel->value.sub_value jest zawsze null w tym miejscu.
btw, jak wlaczac/wylaczac grupy kanalow?
jak debugowalem, to channel->value.sub_value jest zawsze null w tym miejscu.
btw, jak wlaczac/wylaczac grupy kanalow?
-
Beku
- Posts: 453
- Joined: Tue Nov 06, 2018 1:49 pm
sprawdzę jak będę przy kompie.desaint wrote: Sun Dec 15, 2019 1:12 pm no wlasnie do tego etapu doszedlem ze to ustawiam, ale swoja wartosc domyslna, czyli 1.
jak debugowalem, to channel->value.sub_value jest zawsze null w tym miejscu
Co do grup to nie ma bezpośredniej obsługi, sterowanie tylko poszczególnymi kanałami.
-
tomekk87
- Posts: 192
- Joined: Fri Aug 02, 2019 12:19 pm
Mój serwer MQTT jest w sieci pod adresem 192.168.100.87 na porcie 1883 bez dodatkowych zabezpieczeń. Sprawdziłem i mogę się z nim połączyć przez MQTT Explorer. Konfigurując Smashing w pliku /opt/smashing/lib/hc_mqtt.rb mam tak wpisane:Beku wrote: Mon Nov 04, 2019 8:25 pm 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:
to spowoduje zbudowanie obrazu docker z smashingiem.Code: Select all
sudo docker build -t smashing .
edytujemy plik /opt/smashing/lib/hc_mqtt.rb
Dostosowujemy poniższą linię do swojej konfiguracji serwera MQTT.
trzeba wpisać host port i ewentualnie nazwę użytkownika i hasło serwera MQTTCode: Select all
client = MQTT::Client.connect(:host => 'host', :port => 1883, :username => 'username', :password => 'password')
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!
Code: Select all
require 'mqtt'
client = MQTT::Client.connect(:host => '192.168.100.87', :port => 1883,)
# Thread
Thread.new {
begin
client.subscribe('supla/channels/status/#')
client.get do |topic, message|
data = JSON.parse(message)
send_event(data["id"], data)
end
rescue MQTT::NotConnectedException
client.connect()
retry
rescue => e
puts e.message
end
}
# Messages
post '/mqtt/publish' do
id = params['id']
state = params['on']
topic = "supla/channels/command/switch/#{id}"
message = "{\"id\" : #{id}, \"on\" : #{state} }"
begin
client.publish(topic, message)
rescue MQTT::NotConnectedException
client.connect()
retry
rescue => e
puts e.message
end
end
Code: Select all
sudo docker run -e GEMS=mqtt -v=/opt/smashing:/smashing -d -p 3030:3030 smashing:latestCode: Select all
root@DebianTK:/opt/smashing# sudo docker run -e GEMS=mqtt -v=/opt/smashing:/smashing -d -p 3030:3030 smashing:latest
5b0f8e8b800b1cc4860500b365c184afde47933a222a23950e7bab0f2668ba66
root@DebianTK:/opt/smashing#
