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

Проблемы/вопросы, связанные с запуском под различными платформами и конфигурациями.

Модератор: immortal

2007-i
Сообщения: 55
Зарегистрирован: Вс янв 29, 2017 12:52 am
Откуда: Уфа
Благодарил (а): 5 раз
Поблагодарили: 1 раз

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

Сообщение 2007-i » Вс мар 26, 2017 8:07 pm

Я поставил на свою апельсинку зеро mqtt брокер mosquito (связка с мажордомо) но почему то ничего не принимает.
В терминале отправлял сообщение: mosquitto_pub -h localhost -t "mqtt" -m "Hello MQTT" которое нормально получил на апельсинке в мажордомо, но с устройства esp8266 не получает.
MQTTLens на стационарном пк не подключается к брокеру на апельсинке.
Может кто сталкивался с такой проблемой?
dudunyk
Сообщения: 6
Зарегистрирован: Ср май 03, 2017 8:24 pm
Благодарил (а): 4 раза
Поблагодарили: 0

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

Сообщение dudunyk » Вс июн 04, 2017 11:14 am

После очередного обновления пакетов перестал автоматически запускаться mosquitto. Вручную запускается и работает. Модуль MQTT клиента работает только после переустановки. В чем может быть причина и как исправить? В каталоге /etc/rc2.d файла S03majordomo нет.
immortal
Сообщения: 1138
Зарегистрирован: Вт янв 29, 2013 9:16 am
Откуда: Белозерск
Благодарил (а): 16 раз
Поблагодарили: 400 раз
Контактная информация:

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

Сообщение immortal » Вт июн 06, 2017 9:02 am

2007-i писал(а):Я поставил на свою апельсинку зеро mqtt брокер mosquito (связка с мажордомо) но почему то ничего не принимает.
В терминале отправлял сообщение: mosquitto_pub -h localhost -t "mqtt" -m "Hello MQTT" которое нормально получил на апельсинке в мажордомо, но с устройства esp8266 не получает.
MQTTLens на стационарном пк не подключается к брокеру на апельсинке.
Может кто сталкивался с такой проблемой?
Запуск москито перед МД должен быть, я писал как это сделать в теме про образ для апельсинки
И в этой теме
viewtopic.php?f=3&t=3737#p46477
Lubuntu на cubieboard2 + ds9490R
DietPi на Orange Pi PC + 1wire на esp8266 с прошивкой Homes-smart.ru
immortal
Сообщения: 1138
Зарегистрирован: Вт янв 29, 2013 9:16 am
Откуда: Белозерск
Благодарил (а): 16 раз
Поблагодарили: 400 раз
Контактная информация:

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

Сообщение immortal » Вт июн 06, 2017 9:08 am

dudunyk писал(а):После очередного обновления пакетов перестал автоматически запускаться mosquitto. Вручную запускается и работает. Модуль MQTT клиента работает только после переустановки. В чем может быть причина и как исправить? В каталоге /etc/rc2.d файла S03majordomo нет.
А как у Вас запускается МД?
Lubuntu на cubieboard2 + ds9490R
DietPi на Orange Pi PC + 1wire на esp8266 с прошивкой Homes-smart.ru
dudunyk
Сообщения: 6
Зарегистрирован: Ср май 03, 2017 8:24 pm
Благодарил (а): 4 раза
Поблагодарили: 0

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

Сообщение dudunyk » Вт июн 06, 2017 10:24 pm

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

Восстановил с образа старую работающую версию, обновил и тоже mosquitto перестал запускаться при загрузке.
immortal
Сообщения: 1138
Зарегистрирован: Вт янв 29, 2013 9:16 am
Откуда: Белозерск
Благодарил (а): 16 раз
Поблагодарили: 400 раз
Контактная информация:

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

Сообщение immortal » Ср июн 07, 2017 12:08 am

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
За это сообщение автора immortal поблагодарил:
dudunyk (Ср июн 07, 2017 9:27 am)
Рейтинг: 1.16%
Lubuntu на cubieboard2 + ds9490R
DietPi на Orange Pi PC + 1wire на esp8266 с прошивкой Homes-smart.ru
dudunyk
Сообщения: 6
Зарегистрирован: Ср май 03, 2017 8:24 pm
Благодарил (а): 4 раза
Поблагодарили: 0

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

Сообщение dudunyk » Чт июн 08, 2017 9:17 am

Зделал по мануалу, появился файл S03majordomo, переименовал его в S04majordomo (т.к. есть S03mosquitto) и не помогло. Не стартует mosquitto при перезагрузке. Логов нет все так-же. Психанул - перименовал все файлы S0Xmajordomo и K0Xmajordomo во всех каталогах /etc/rcX.d на единицу больше. Не помогло... Да еще закоментил старт циклов в кронтабах.
Аватара пользователя
71Gavrik71
Сообщения: 54
Зарегистрирован: Сб май 21, 2016 2:04 pm
Благодарил (а): 9 раз
Поблагодарили: 1 раз

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

Сообщение 71Gavrik71 » Ср июн 14, 2017 7:21 pm

Я так понял что москито тупо не стартует при перезагрузке, чтоб ожила надо sudo systemctl enable mosquitto и начнет все работать)
За подсказку огромное спасибо nick7zmail
Аватара пользователя
prmres
Сообщения: 428
Зарегистрирован: Пт ноя 24, 2017 2:24 am
Откуда: оттуда
Благодарил (а): 113 раз
Поблагодарили: 123 раза

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

Сообщение prmres » Пн ноя 27, 2017 10:30 pm

Установка 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
Последний раз редактировалось prmres Пт янв 11, 2019 10:05 pm, всего редактировалось 11 раз.
За это сообщение автора prmres поблагодарили (всего 3):
immortal (Вт ноя 28, 2017 6:58 pm) • skysilver (Ср ноя 29, 2017 10:12 am) • Strangeman (Ср сен 12, 2018 10:22 pm)
Рейтинг: 3.49%
Не только лишь все!
Аватара пользователя
prmres
Сообщения: 428
Зарегистрирован: Пт ноя 24, 2017 2:24 am
Откуда: оттуда
Благодарил (а): 113 раз
Поблагодарили: 123 раза

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

Сообщение prmres » Вт ноя 28, 2017 1:46 am

Мост к облачному брокеру cloudmqtt.com

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

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

2. создаём экземпляр(ы)
тут картинкиПоказать
после регистрации заходим, жмём Create new instance
1.jpg
1.jpg (14.36 КБ) 11628 просмотров
дальше даём какое то название экземпляру, выбираем тариф (по умолчанию бесплатный Cute Cat) и выбираем один из двух возможных локаций сервера
2.jpg
2.jpg (19.98 КБ) 11628 просмотров
дальше можно зайти в Edit (1) и переименовать экземпляр, либо сменить тариф, либо удалить
если тыкаем по названию экземпляра (2) - попадаем в него
3.jpg
3.jpg (30.98 КБ) 11628 просмотров
в Details видим сервер\порт и логин\пароль (1), можно использовать их
но лучше зайти в Users (2) и создать для этого экземпляра ещё логин(ы)\пароль(и) и там же назначить им права на топики
4.jpg
4.jpg (33.63 КБ) 11628 просмотров
создаём пользователя пользователя\пароль
5.jpg
5.jpg (30.2 КБ) 11628 просмотров
после того как пользователь создан - листаем чуть ниже и в ACLs даём права
выбираем тип доступа "топик" (1), в выпадающем меню выбираем пользователя, стваим галки read\write access, нажимаем Add (2), видим результат (3)
6.jpg
6.jpg (45.03 КБ) 11628 просмотров
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 КБ) 11628 просмотров
Последний раз редактировалось prmres Пн янв 10, 2022 7:02 pm, всего редактировалось 2 раза.
За это сообщение автора prmres поблагодарили (всего 5):
immortal (Вт ноя 28, 2017 6:58 pm) • skysilver (Ср ноя 29, 2017 10:12 am) • Amarok (Пт фев 21, 2020 5:42 pm) • convix_maximus (Пн мар 23, 2020 9:27 pm) • astotskiy (Вс янв 09, 2022 10:19 pm)
Рейтинг: 5.81%
Не только лишь все!
Ответить