Страница 3 из 4

Re: Установка и настройка брокера MQTT в Orange PI PC

Добавлено: Вс мар 26, 2017 8:07 pm
2007-i
Я поставил на свою апельсинку зеро mqtt брокер mosquito (связка с мажордомо) но почему то ничего не принимает.
В терминале отправлял сообщение: mosquitto_pub -h localhost -t "mqtt" -m "Hello MQTT" которое нормально получил на апельсинке в мажордомо, но с устройства esp8266 не получает.
MQTTLens на стационарном пк не подключается к брокеру на апельсинке.
Может кто сталкивался с такой проблемой?

Re: Установка и настройка брокера MQTT в Orange PI PC

Добавлено: Вс июн 04, 2017 11:14 am
dudunyk
После очередного обновления пакетов перестал автоматически запускаться mosquitto. Вручную запускается и работает. Модуль MQTT клиента работает только после переустановки. В чем может быть причина и как исправить? В каталоге /etc/rc2.d файла S03majordomo нет.

Re: Установка и настройка брокера MQTT в Orange PI PC

Добавлено: Вт июн 06, 2017 9:02 am
immortal
2007-i писал(а):Я поставил на свою апельсинку зеро mqtt брокер mosquito (связка с мажордомо) но почему то ничего не принимает.
В терминале отправлял сообщение: mosquitto_pub -h localhost -t "mqtt" -m "Hello MQTT" которое нормально получил на апельсинке в мажордомо, но с устройства esp8266 не получает.
MQTTLens на стационарном пк не подключается к брокеру на апельсинке.
Может кто сталкивался с такой проблемой?
Запуск москито перед МД должен быть, я писал как это сделать в теме про образ для апельсинки
И в этой теме
viewtopic.php?f=3&t=3737#p46477

Re: Установка и настройка брокера MQTT в Orange PI PC

Добавлено: Вт июн 06, 2017 9:08 am
immortal
dudunyk писал(а):После очередного обновления пакетов перестал автоматически запускаться mosquitto. Вручную запускается и работает. Модуль MQTT клиента работает только после переустановки. В чем может быть причина и как исправить? В каталоге /etc/rc2.d файла S03majordomo нет.
А как у Вас запускается МД?

Re: Установка и настройка брокера MQTT в Orange PI PC

Добавлено: Вт июн 06, 2017 10:24 pm
dudunyk
immortal, прошу прощения в линуксе не очень... Имеется ввиду циклы где запускаются? В кронтабах -
@reboot www-data /usr/bin/php /var/www/cycle.php

Восстановил с образа старую работающую версию, обновил и тоже mosquitto перестал запускаться при загрузке.

Re: Установка и настройка брокера MQTT в Orange PI PC

Добавлено: Ср июн 07, 2017 12:08 am
immortal
dudunyk писал(а):immortal, прошу прощения в линуксе не очень... Имеется ввиду циклы где запускаются? В кронтабах -
@reboot www-data /usr/bin/php /var/www/cycle.php

Восстановил с образа старую работающую версию, обновил и тоже mosquitto перестал запускаться при загрузке.
понятно, ну значит надо в кронтаб запускать и москито, сначала запускаться москито должен потом МД, а вообще лучше МД сделать запуск сервисом по мануалу http://majordomo.smartliving.ru/Main/SetupRaspberryPi2

Для авто-запуска и удобного управления majordomo создадим файл /etc/init.d/majordomo:
СпойлерПоказать

Код: Выделить всё

#!/bin/sh
### BEGIN INIT INFO
# Provides: SmartLiving
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

dir="/var/www/"
user="root"
cmd="php /var/www/cycle.php"

name=`basename $0`
pid_file="/var/run/$name.pid"
stdout_log="/var/log/$name.log"
stderr_log="/var/log/$name.err"

get_pid() {
    cat "$pid_file"
}

is_running() {
    [ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1
}

case "$1" in
    start)
    if is_running; then
        echo "Already started"
    else
        echo "Starting $name"
        cd "$dir"

(while true; do
    sudo -u "$user" $cmd
done)>> "$stdout_log" 2>> "$stderr_log" &

        echo $! > "$pid_file"
        if ! is_running; then
            echo "Unable to start, see $stdout_log and $stderr_log"
            exit 1
        fi
    fi
    ;;
    stop)
    if is_running; then
        echo -n "Stopping $name.."
        kill `get_pid`
        sudo killall php
        for i in {1..10}
        do
            if ! is_running; then
                break
            fi

            echo -n "."
            sleep 1
        done
        echo

        if is_running; then
            echo "Not stopped; may still be shutting down or shutdown may have failed"
            exit 1
        else
            echo "Stopped"
            if [ -f "$pid_file" ]; then
                rm "$pid_file"
            fi
        fi
    else
        echo "Not running"
        sudo killall php
    fi
    ;;
    restart)
    $0 stop
    if is_running; then
        echo "Unable to stop, will not attempt to start"
        exit 1
    fi
    $0 start
    ;;
    status)
    if is_running; then
        echo "Running"
    else
        echo "Stopped"
        exit 1
    fi
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac

exit 0
Выставим на него права и добавим в авто-загрузку:

Код: Выделить всё

chmod 0755 /etc/init.d/majordomo
sudo update-rc.d majordomo defaults
потом заходим в директорию /etc/rc2.d и переименовываем файл
S02majordomo
в
S03majordomo

Re: Установка и настройка брокера MQTT в Orange PI PC

Добавлено: Чт июн 08, 2017 9:17 am
dudunyk
Зделал по мануалу, появился файл S03majordomo, переименовал его в S04majordomo (т.к. есть S03mosquitto) и не помогло. Не стартует mosquitto при перезагрузке. Логов нет все так-же. Психанул - перименовал все файлы S0Xmajordomo и K0Xmajordomo во всех каталогах /etc/rcX.d на единицу больше. Не помогло... Да еще закоментил старт циклов в кронтабах.

Re: Установка и настройка брокера MQTT в Orange PI PC

Добавлено: Ср июн 14, 2017 7:21 pm
71Gavrik71
Я так понял что москито тупо не стартует при перезагрузке, чтоб ожила надо sudo systemctl enable mosquitto и начнет все работать)
За подсказку огромное спасибо nick7zmail

Re: Установка и настройка брокера MQTT в Orange PI PC

Добавлено: Пн ноя 27, 2017 10:30 pm
prmres
Установка Mosquitto

Только что поставил Mosquitto на Ubuntu Server 16.04.3, свежеустановленную на VMWare Workstation, со свежеустановленным же MD (использовал скрипты из соответствующей темы), когда то пробовал на CentOS (я про москитто), здесь мало чем отличается, разве только синтаксисом команд.

Для создания и правки файлов использую WinSCP, им же удобно назначать chmod.

1. Установка

(UPD 04.09.2018)
на свежеустановленную 16.04.5 не ставится, пакет не обнаруживаетсятся в репозиториях "по-умолчанию" :?: :evil:

сначала добавляем репозиторий:

Код: Выделить всё

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
затем обновить информацию о пакетах в репозиториях:

Код: Выделить всё

sudo apt update
источник

теперь устанавливаем комарика

Код: Выделить всё

sudo apt install -y mosquitto
1.1 Делаем сервисом

Код: Выделить всё

sudo systemctl enable mosquitto
при этом Ubuntu "ругнётся", но сделает как нужно:
mosquitto.service is not a native service, redirecting to systemd-sysv-install
Executing /lib/systemd/systemd-sysv-install enable mosquitto
дальше, что б не заморачиваться, я дал права 0777 на всю папку /etc/mosquitto (с потомками)

2. Настройка


2.1 создаём "самый главный конфиг"
/etc/mosquitto/mosquitto.conf
и вносим в него единственную запись:

Код: Выделить всё

include_dir /etc/mosquitto/conf.d
это "заставит" брокер брать конфиги из папки /etc/mosquitto/conf.d
в этой папке удобно формировать разные конфиги для разных задач
например будет отдельно конфиг с основными настройками и отдельно конфиг\конфиги для других целей

2.2 создаём конфиг с "основными" настройками

/etc/mosquitto/conf.d/main.conf
(имя можно любое, я задал main.conf)
со следующим содержимым:

Код: Выделить всё

# =================================================================
# General configuration
# =================================================================

pid_file /var/run/mosquitto.pid

# =================================================================
# Default listener
# =================================================================

# ip-адрес сервера или имя (имя должно разрешаться локальнм ДНС)
bind_address 172.30.0.5

# порт по умолчанию 1883, при необходимости можно задать другой
port 1883

# =================================================================
# Default authentication and topic access control
# =================================================================

# файл с логинами/паролями
password_file /etc/mosquitto/users.list

# файл настройки доступа к топикам
acl_file /etc/mosquitto/mosquitto.acl

# =================================================================
# Persistence
# =================================================================

persistence true
persistence_file mosquitto.db
# по умолчанию "база" создаётся не помню где, я посчитал что будет удобно иметь рядом и конфиги и логи и базу
persistence_location /etc/mosquitto/

# =================================================================
# Logging
# =================================================================

log_dest syslog
log_facility 5

# удобно когда лог радом (хотя бы на время установки\запуска\отладки)
log_dest file /etc/mosquitto/mosquitto.log
#log_dest file /var/log/mosquitto/mosquitto.log

# после отладки каментим debug и information иначе лог пухнет на глазах
log_type debug
log_type error
log_type warning
log_type notice
log_type information

# =================================================================
 
2.3 учётные записи
создаём пустой файл /etc/mosquitto/users.list
и сразу создаём пользователя\пользователей
синтаксис очень простой:

Код: Выделить всё

mosquitto_passwd /etc/mosquitto/users.list TEST
попросит ввести и подтвердить пароль, в только что созданный файл users.list добавится пользователь TEST

2.4 доступ к топикам

создаём файл /etc/mosquitto/mosquitto.acl
и сразу настраиваем нужный доступ по нужным пользователям (п. 2.3), для начала даём доступ пользователю TEST доступ ко всем топикам
сдержимое:

Код: Выделить всё

user TEST
topic #
 
3. Запуск

Код: Выделить всё

sudo systemctl start mosquitto
ещё командыПоказать
проверить статус сервиса

Код: Выделить всё

sudo systemctl status mosquitto
остановить сервис

Код: Выделить всё

sudo systemctl stop mosquitto
перезапустить сервис

Код: Выделить всё

sudo systemctl restart mosquitto
сразу видим появление /etc/mosquitto/mosquitto.log
если всё сделали правильно то в нём появится запись типа
1511807719: mosquitto version 1.4.8 (build date Mon, 26 Jun 2017 09:31:02 +0100) starting
1511809790: New connection from 172.30.0.111 on port 1883.
1511809790: New client connected from 172.30.0.111 as ESP8266 (c1, k60, u'test')

после отладки в main.conf каментим log_type debug и log_type information иначе лог пухнет на глазах
для создаваемых файлов конфигов и др. проверяем\правим chmod


позже о создании моста с "внешним" брокером cloudmqtt.com

Re: Установка и настройка брокера MQTT в Orange PI PC

Добавлено: Вт ноя 28, 2017 1:46 am
prmres
Мост к облачному брокеру cloudmqtt.com

Мостом удобно пользовать что б не прокидывать порты внутрь локалки для доступа к локальному брокеру,либо при отсутствии "белого" ip-адреса

1. регистрируемся

2. создаём экземпляр(ы)
тут картинкиПоказать
после регистрации заходим, жмём Create new instance
1.jpg
1.jpg (14.36 КБ) 8010 просмотров
дальше даём какое то название экземпляру, выбираем тариф (по умолчанию бесплатный Cute Cat) и выбираем один из двух возможных локаций сервера
2.jpg
2.jpg (19.98 КБ) 8010 просмотров
дальше можно зайти в Edit (1) и переименовать экземпляр, либо сменить тариф, либо удалить
если тыкаем по названию экземпляра (2) - попадаем в него
3.jpg
3.jpg (30.98 КБ) 8010 просмотров
в Details видим сервер\порт и логин\пароль (1), можно использовать их
но лучше зайти в Users (2) и создать для этого экземпляра ещё логин(ы)\пароль(и) и там же назначить им права на топики
4.jpg
4.jpg (33.63 КБ) 8010 просмотров
создаём пользователя пользователя\пароль
5.jpg
5.jpg (30.2 КБ) 8010 просмотров
после того как пользователь создан - листаем чуть ниже и в ACLs даём права
выбираем тип доступа "топик" (1), в выпадающем меню выбираем пользователя, стваим галки read\write access, нажимаем Add (2), видим результат (3)
6.jpg
6.jpg (45.03 КБ) 8010 просмотров
3. конфигурим мост в нашем mosquitto
создаём конфиг /etc/mosquitto/conf.d/bridge1.conf
(имя любое, главное что б было понятно для чего этот конфиг)
со следующим содержимым:

Код: Выделить всё

# =================================================================
# Bridge to cloudmqtt
# =================================================================

connection cloudmqtt
address m14.cloudmqtt.com:10814
try_private false
notifications false
start_type automatic
remote_username username
remote_password password

# направление работы моста, both - двунаправленное (получать и отправлять)
topic # both
#topic # in
#topic # out

# =================================================================
 
address сервер:порт
remote_username и remote_password указываем либо то что выдало автоматом при создании экземляра на cloudmqtt, либо самостоятельно созданные логин\пароль для экземпляра

не забываем выставить chmod на конфиг, что б сервис его смог прочесть

4. рестартим mosquitto

Код: Выделить всё

sudo systemctl restart mosquitto
в логе видим что то типа:
1511821495: Connecting bridge cloudmqtt (m14.cloudmqtt.com:10814)

5. проверяем что получилось

возвращаемся на страничку cloudmqtt, в пункте websocket ui наблюдаем данные, переданный локальным mosquitto
в форме слева можно отправить сообщение в любой топик
результат работы мостаПоказать
7.jpg
7.jpg (40.69 КБ) 8010 просмотров