Problem z ustawieni...
 
Powiadomienia
Wyczyść wszystko

[Rozwiązany] Problem z ustawieniem MQTT

17 Wpisów
3 Użytkownicy
0 Reactions
4,910 Wyświetleń
 Maro
(@maro)
Wpisów: 46
Kontrybutor
Autor tematu
 

Witam,

stawiam pierwsze kroki w konfiguracji MQTT. Niestety nie chce działać :/

Na starym laptopie (IP 192.168.1.192) postawiłem od nowa Debiana 9.

- Zainstalowałem OpenHAB2
- Zainstalowałem Mosquitto

/etc/mosquitto/mosquitto.conf:

pid_file /var/run/mosquitto.pid
port 1883
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
allow_anonymus false
password_file /etc/mosquitto/password_file

/etc/mosquitto/password_file

login:pass

Test mosquito w dwóch konsolach:

mosquitto_sub -h localhost -u login -P pass -t /house
mosquitto_pub -h localhost -u login -P pass -t /house -m test

Wygląda na to, że broker działa...

 

Konfiguracja Openhab
W addons zainstalowałem MQTT Actions i MQTT Binding

Konfiguracja plików:

/etc/openhab2/services/mqtt.cfg

broker.url=tcp://localhost:1883
broker.clientId=openHAB
broker.user=login
broker.pwd=pass

/etc/openhab2/items/default.items

Switch sonoff_puchary "puchary" {mqtt=">[broker:/sonoff/puchary/cmd:command:ON:ON],>[broker:/sonoff/puchary/cmd:command:OFF:OFF]"}
Switch sonoff_puchary_status {mqtt="<[broker:/sonoff/puchary/state:state:ON:ON],<[broker:/sonoff/puchary/state:state:OFF:OFF]"}

/etc/openhab2/sitemaps/default.sitemap

sitemap default label="Chata"{
Frame label="PokĂłj"{
Switch item=sonoff_puchary
}
}

/etc/openhab2/rules/default.rules

rule "Reczna zmiana wartosci sonoff_puchary"
when
Item sonoff_puchary_status changed
then
if (sonoff_puchary_status.state!=sonoff_puchary.state) {
if (sonoff_puchary_status.state==ON) {
sendCommand(sonoff_puchary,ON)
} else {
sendCommand(sonoff_puchary,OFF)
}
}
end

 

Konfiguracja Sonoff (w zalaczniku)

 Co robie nie tak, lub czego jeszcze nie zrobiłem?

 

 

mqtt
 
Dodane : 20/02/2018 4:50 pm
 Maro
(@maro)
Wpisów: 46
Kontrybutor
Autor tematu
 

Jakiś pomysł dlaczego connection refused? Bo już teraz nic mi nie działa :/

root@debian:/var/log/mosquitto# service mosquitto status
● mosquitto.service - LSB: mosquitto MQTT v3.1 message broker
Loaded: loaded (/etc/init.d/mosquitto; generated; vendor preset: enabled)
Active: active (exited) since Tue 2018-02-20 18:52:32 CET; 1min 16s ago
Docs: man:systemd-sysv-generator(8)
Process: 1878 ExecStop=/etc/init.d/mosquitto stop (code=exited, status=0/SUCCESS)
Process: 1885 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUCCESS)

Feb 20 18:52:32 debian systemd[1]: Stopped LSB: mosquitto MQTT v3.1 message broker.
Feb 20 18:52:32 debian systemd[1]: Starting LSB: mosquitto MQTT v3.1 message broker...
Feb 20 18:52:32 debian mosquitto[1885]: Starting network daemon:: mosquitto.
Feb 20 18:52:32 debian systemd[1]: Started LSB: mosquitto MQTT v3.1 message broker.
root@debian:/var/log/mosquitto# mosquitto_pub -h localhost -u login -P pass -t /house -m test
Error: Connection refused

log

1519147708: mosquitto version 1.4.10 (build date Mon, 29 May 2017 13:43:29 +0100) starting
1519147708: Config loaded from /etc/mosquitto/mosquitto.conf.
1519147708: Opening ipv4 listen socket on port 1883.
1519147708: Opening ipv6 listen socket on port 1883.
1519147724: New connection from 192.168.1.41 on port 1883.
1519147724: New client connected from 192.168.1.41 as Sonoff1 (c1, k15, u'login').
1519147725: Error in poll: Interrupted system call.
1519147725: mosquitto version 1.4.10 terminating
1519147725: mosquitto version 1.4.10 (build date Mon, 29 May 2017 13:43:29 +0100) starting
1519147725: Config loaded from /etc/mosquitto/mosquitto.conf.
1519147725: Opening ipv4 listen socket on port 1883.
1519147725: Error: Address already in use
 
Dodane : 20/02/2018 6:55 pm
adrian
(@adrian)
Wpisów: 4035
Szefu Admin Zasłużony dla Forum, Patron Strony
 

jak ubijesz procesy mosquitto i uruchomisz mosquitto jeszcze raz to co się dzieje?

ps -ef | grep mosquitto

dostaniesz number np 111

sudo kill 111
 
Dodane : 20/02/2018 8:26 pm
 Maro
(@maro)
Wpisów: 46
Kontrybutor
Autor tematu
 

Postawiłem system od nowa tym razem na ubuntu, MQTT działa gdy testuje poleceniami mosquitto_sub / mosquitto_pub

W logach też widzę że sonoff łączy się z Brokerem:

1519155252: New connection from 192.168.1.41 on port 1883.
1519155252: New client connected from 192.168.1.41 as Sonoff (c1, k15, u'login').
1519155346: New connection from ::1 on port 1883.
1519155346: New client connected from ::1 as mosqsub/26965-debian (c1, k60, u'login').
1519155367: New connection from ::1 on port 1883.

natomiast nie mam pojęcia dlaczego nie działa sterowanie z openhab2? Jakieś wskazówki?

 
Dodane : 20/02/2018 8:40 pm
adrian
(@adrian)
Wpisów: 4035
Szefu Admin Zasłużony dla Forum, Patron Strony
 

a masz w logach do mosquitto ze openHab podłączył się?

 
Dodane : 20/02/2018 8:42 pm
 Maro
(@maro)
Wpisów: 46
Kontrybutor
Autor tematu
 

W załączniku cały log

 
Dodane : 20/02/2018 8:43 pm
adrian
(@adrian)
Wpisów: 4035
Szefu Admin Zasłużony dla Forum, Patron Strony
 

sprawdź jeszcze w log'a do openHab co tam masz. Powinieneś znaleźć coś takiego

mosquitto
 
Dodane : 20/02/2018 8:48 pm
 Maro
(@maro)
Wpisów: 46
Kontrybutor
Autor tematu
 

Polecenia z konsoli działają:

root@debian:~# mosquitto_pub -h localhost -p 1883 -u 'nazwa-usera' -P 'hasło-usera' -t '/sonoff/puchary/switch/cmd' -m 'off'
root@debian:~# mosquitto_pub -h localhost -p 1883 -u 'nazwa-usera' -P 'hasło-usera' -t '/sonoff/puchary/switch/cmd' -m 'on'

 

Zmodyfikowałem plik items:

Switch sonoff_puchary "puchary" {mqtt=">[broker:/sonoff/puchary/switch/cmd:command:ON:ON],>[broker:/sonoff/puchary/switch/cmd:command:OFF:OFF]"}
Switch sonoff_puchary_status {mqtt="<[broker:/sonoff/puchary/state:state:ON:ON],<[broker:/sonoff/puchary/state:state:OFF:OFF]"}

Zrobiłem restert usługi openhab, ale bez efektu, może gdzieś tu jest jeszcze jakiś błąd?

 

Czy wystarczy zainstalowac bindings i ustawić plik mqtt.cfg? Czy trzeba coś jeszcze w openhubie zrobić? Szukałem poradników, ale nic konkretnego nie umiem znaleźć i tak powoli na chybił trafił działam...

 

 

EDIT: problem rozwiązany, trzeba było zmienić wielkość liter "ON"->"on"

 
Dodane : 20/02/2018 8:52 pm
adrian
(@adrian)
Wpisów: 4035
Szefu Admin Zasłużony dla Forum, Patron Strony
 

ten 

login:pass

to nie jest prawdziwe tak?

 
Dodane : 20/02/2018 9:38 pm
 Maro
(@maro)
Wpisów: 46
Kontrybutor
Autor tematu
 

na potrzeby testu prawdziwe, tak jak napisałem w edytowenym przedchwilą moim przedostatnim poście problem rozwiązany - wina wielkość liter... Może warto w AFE zastosować lowcase() dla parametrów? Bo widzę, że nie tylko ja miałem przez ten szczegół łamigłówkę 🙂

 
Dodane : 20/02/2018 9:45 pm
adrian
(@adrian)
Wpisów: 4035
Szefu Admin Zasłużony dla Forum, Patron Strony
 

nie mam lekko 🙂

trochę chcę oszczędzić na rozmiarze firmware ze względu na ograniczenia wielkości pamięci - dlatego zdecydowałem się nie robić walidacji danych oraz takich konwersji, bo nie wiem komu to może w jakiś sytuacjach przeszkadzać.

generalnie przed zainstalowaniem lub w trakcje sugeruje przeglądnąć dokumentację 😉 może zrobię teraz bardziej na czerwono, żeby rzucało się w oczy.

 
Dodane : 20/02/2018 9:56 pm
 Maro
(@maro)
Wpisów: 46
Kontrybutor
Autor tematu
 

Jeszcze mam pytanie, ponieważ sterowanie z BASIC UI działa, natomiast gdy przełączę zewnętrznym przyciskiem sonoffa to zmieniony stan nie odświeża się w GUI (przez przeglądarkę). Czy tutaj mam wszystko ok?

ITEMS

Switch sonoff_puchary "puchary" {mqtt=">[broker:/sonoff/puchary/switch/cmd:command:on:on],>[broker:/sonoff/puchary/switch/cmd:command:off:off]"}
Switch sonoff_puchary_status {mqtt="<[broker:/sonoff/puchary/switch/state:state:on:on],<[broker:/sonoff/puchary/switch/state:state:off:off]"}

 

 

RULES

rule "Reczna zmiana wartosci sonoff_puchary"
when
Item sonoff_puchary_status changed
then
if (sonoff_puchary_status.state!=sonoff_puchary.state) {
if (sonoff_puchary_status.state==on) {
sendCommand(sonoff_puchary,on)
} else {
sendCommand(sonoff_puchary,off)
}
}
end


Znaki < > mam inaczej w dwóch wierszach, ale kopiowałem z Twojego przykładu więc chyba ok? Nie rozumiem zasady ich stosowania

 
Dodane : 20/02/2018 10:06 pm
adrian
(@adrian)
Wpisów: 4035
Szefu Admin Zasłużony dla Forum, Patron Strony
 

hey, zobacz dokumentację

https://www.smartnydom.pl/afe-firmware-pl/konfiguracja/openhab/

masz wciąż trochę źle z dużymi / małymi literami

ON:on, OFF:off

zarówno w items jaki regułach

 
Dodane : 20/02/2018 10:13 pm
 Maro
(@maro)
Wpisów: 46
Kontrybutor
Autor tematu
 

Dzięki za linka, w załączniku zaznaczyłem coś co IMHO jest błędem.

BTW: socket_report_state nigdzie nie jest wykorzystywany?

blad
 
Dodane : 20/02/2018 10:48 pm
adrian
(@adrian)
Wpisów: 4035
Szefu Admin Zasłużony dla Forum, Patron Strony
 

o super - dzięki - już poprawiam

 
Dodane : 20/02/2018 10:50 pm
(@7keys)
Wpisów: 49
Kontrybutor
 

ja w sonoff touch stany rozwiązuję tak .

Switch Sonoff "Światło [%s]" <lamp> {
mqtt="
>[mybroker:/sonoff/switch1/cmd:command:ON:on],
>[mybroker:/sonoff/switch1/cmd:command:OFF:off],
<[mybroker:/sonoff/switch1/state:state:MAP(sonoff.map)]"
}

sonoff.map

off=OFF
on=ON

 

 
Dodane : 07/03/2018 10:12 pm
 Maro
(@maro)
Wpisów: 46
Kontrybutor
Autor tematu
 

@7keys - możesz dać pełny przykład? Z kodem "rules"?

 

 

 
Dodane : 16/04/2018 8:41 pm
Udostępnij: