Здравствуйте, уважаемые.
Собираюсь в
будущем уже наступившем году строить дом, естественно задумался об автоматизации, Набрёл на "облачные" выключатели\патроны\реле китайской конторы Sonoff после чего выяснилась их "начинка", а дальше путь привёл на ваш форум и теперь я готовлюсь "вступать в ряды" ESP-шников, не в первые конечно, но надеюсь осилю сделать какие то несложные вещи. Форум изучаю, китайские модули и адаптеры USB-TTL вкупе с проводочками и прочей мелочёвкой уже едут. Скилл пайки имеется, образование профильное радиоэлектронное, так что я думаю вникнуть смогу, надо только
освежить отыскать в голове позабытое за давностью лет и за непрофильной работой.
Начну с самого простого - перепрошью выключатель Sonoff, отвяжу его от китайского облака и буду "ковырять" на предмет чего бы из него сделать ещё, наверняка как минимум можно прикрутить датчик температуры\влажности, превратив выключатель в мини-метеостанцию.
А покамест детальки в пути - самое время заняться службами "обеспечения".
Имея в наличии рабочий Web-сервер на CentOS7 + VestaCP провёл так сказать "удачный эксперимент" с комариком, результатами которого хочу поделиться.
Думаю этот небольшой опыт кому то да пригодится
небольшое уточнение: в линуксах опыт минимальный
вооружаемся WinSCP (удобно ходить по каталогам и вносить правки в текстовые файлы встроенным редактором) + PuTTY и действуем
1. подключаем mosquitto репозиторий
Код:
cd /etc/yum.repos.d
wget http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7/home:oojah:mqtt.repo
yum -y update
2. Установка Mosquitto
Код:
yum -y install mosquitto
yum -y install mosquitto-clients
3. добавляем комарика в автозагрузку
Код:
systemctl enable mosquitto.service
при этом centos ругнётся мол москитто не является native серсивом, и сделает как нужно:
mosquitto.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mosquitto on
т.е. ЦентОСь нам подсказала (да ещё и сама по-правильному сделала) что правильная команда на включение автозапуска москитты -
Код:
/sbin/chkconfig mosquitto on
проверять не стал, поверил на слово
4. настраиваем конфиг\конфиги
файл /etc/mosquitto/mosquitto.conf переносим в /etc/mosquitto/conf.d и переименовываем например в main.conf
открываем main.conf двойным кликом и вносим в него следующее содержимое:
Код:
# Place your local configuration in /etc/mosquitto/conf.d/
# =================================================================
# General configuration
# =================================================================
pid_file /var/run/mosquitto.pid
# =================================================================
# Default listener
# =================================================================
#bind_address 1.2.3.4 #если надо привязываем сервис к ip или domain.name
#port 1883 #по умолчанию 1883 порт, можно задать другой
# =================================================================
# Persistence
# =================================================================
persistence true
persistence_file mosquitto.db
persistence_location /etc/mosquitto/
# =================================================================
# Logging
# =================================================================
log_dest syslog
log_dest file /var/log/mosquitto/mosquitto.log
log_facility 5
log_type debug
log_type error
log_type warning
log_type notice
log_type information
# =================================================================
# Default authentication and topic access control
# =================================================================
password_file /etc/mosquitto/users.list
acl_file /etc/mosquitto/mosquitto.acl
файл /etc/mosquitto/mosquitto.conf.example переименовываем в /etc/mosquitto/mosquitto.conf (это полноценный конфиг с пояснениями для каждого параметра)
дважды кликая (WinSCP) по переименнованному полноценному конфигу /etc/mosquitto/mosquitto.conf он открывается строенным текстовым редактором
вносим единственную правку - в секцию External config files добавляем include_dir /etc/mosquitto/conf.d
сие действо говорит сервису подгружать дополнительные конфиги из указанной папки (в нашем случае это main.conf )
на мой неискушенный взгляд так просто удобно - "полноценны" конфиг существует в девственном виде (за исключением лишь строки указывающей откуда подгружать дополнительные конфиги) и используется для изучения комментариев к нужным опциям, нужные опции вносятся в конфиг\конфиги находящиеся в папке /etc/mosquitto/conf.d, например в файле main.conf можно сделать основные настройки сервиса, а для каждого бриджа с внешними сервисами создать отдельные конфиги в этой же папочке и с соответствующими названиями
"основной" конфиг полон комментариев и потому его листать туда-сюда в поисках нужной строки очень неудобно, а так открыл "нужный" конфиг и всё сразу перед глазами
5. логины\пароли\доступ
создаём файл /etc/mosquitto/mosquitto.acl
и сразу настраиваем нужный доступ по нужным пользователям (их ведь можно "придумать" заранее), для начала даём доступ пользователю test доступ ко всем топикам
сдержимое:
создаём пустой файл /etc/mosquitto/users.list
и сразу создаём пользователя\пользователей
синтаксис очень простой:
Код:
mosquitto_passwd /etc/mosquitto/users.list test
попросит ввести и подтвердить пароль, в только что созданный файл users.list добавится пользователь test
6. старт сервиса и проверка
стартуем сервис:
Код:
systemctl start mosquitto
проверим стартовал ли:
Код:
systemctl status mosquitto
Видим что то похожее на " Active: active (running) since ...." и пары "SUCCESS" - хорошо, сервис стартовал
в логе /var/log/mosquitto/mosquitto.log должно быть "mosquitto version 1.4.10 (build date 2016-12-05 08:26:01+0000) starting"
это означает что всё получилось
проверяем работу подключившись mqtt-spy
используемые материалы:
ESP8266 подключаемся к OpenWRT+Mosquitto+mqttwarn и передаем данные на ThingSpeak, EMAIL, Android, iOS, Twitter, CloudMQTT в 100 строчек кода в Arduino IDE – esp8266
Installing Mosquitto Under CentOS 7
Добавлении сервиса в автозагрузку (CentOS 6/7)
Downloads | Mosquitto