Если ваша концепция умного дома "все ресурсы сидят дома", то использования mqtt брокера в облаке вам может казаться очень болезненным. Не будем страдать и сделаем свой сервер дома. На малине, конечно.

К слову сказать, я бы для такого mqtt брокера лучше бы использовать какой-нибудь Orange PI Zero т.к. он стоит дешевле и питание у него удобнее - 5-и вольтовое.
Для начала нам нужно залить на флешку образ ОС. Скачать его можно с сайта http://www.orangepi.org/downloadresources/
Подробности установки и детали первого запуска расписывать не буду.
Подключаемся к терминалу нашей Pi и вводим:
raspi-config
В файле конфигурации нам нужно включить опцию Expand Filesystem, дающая разрешение на использование всей флешки файловой системой.
Для удаленного доступа Advanced Options — SSH — Enable активирует ssh клиент.
Далее нужно настроить для "малины" параметры подключения к сети или просто запомнить ip адрес, если вы подключились проводом к роутеру:
ifconfig eth0

Теперь нужно перезагрузиться командой:
reboot
После запуска системы мы будем подключаться к ней по ssh каналу связи. В качестве клиента на windows можно использовать чудо программу Putty. Если вы используете linux или osx - у вас уже есть bash консоль и больше ничего не потребуется.
Что бы избавиться от неожиданностей в процессе установки нужно обновить все загруженное ПО:
apt-get update
Менеджер пакетов сверится с репозиториями и затянет все обновления.
Подготовка завершена теперь приступим к установки MQTT броккера mosquitto.
apt-get -y install libssl-dev cmake libc-ares-dev uuid-dev daemon
Для работы брокера потребуется поддержка websocket. Этим будет заниматься отдельный пакет. Установим его вручную.
cd ~ mkdir src cd src wget https://github.com/warmcat/libwebsockets/archive/master.zip unzip master.zip rm master.zip cd libwebsockets-master/cmake
Теперь нужно выполнить сборку:
cmake .. make install
Сборка займет некоторое время. После завершения нам нужно построить все необходимые связи между пакетами и библиотеками. Этим занимается автоматическая утилита ldconfig. Запустим ее:
ldconfig
Теперь нужно заняться развертыванием masquitto. Разворачивание будем проводить в дирректории src.
cd ../.. wget http://mosquitto.org/files/source/mosquitto-1.4.8.tar.gz tar zxf mosquitto-1.4.8.tar.gz cd mosquitto-1.4.8
Нужно будет внести изменения в конфиг. Откроем файл config.mk любым редактором и зададим значение опции WITH_WEBSOCKETS:=yes
sed -i -- 's/WITH_WEBSOCKETS:=no/WITH_WEBSOCKETS:=yes/g' config.mk make make install
После завершения вы увидите что-то такое:

Не забываем, что mqtt сервер работает должен работать из под учетной записи пользователя и ее нужно сконфигурировать. Добавим строки с данными подключения в конец файла mosquitto.conf
cp mosquitto.conf /etc/mosquitto echo "listener 1883" >> /etc/mosquitto/mosquitto.conf echo "listener 9001" >> /etc/mosquitto/mosquitto.conf echo "protocol websockets" >> /etc/mosquitto/mosquitto.conf useradd -r -m -d /var/lib/mosquitto -s /usr/sbin/nologin -g nogroup mosquitto
Настроим автозапуск mosquitto. Создадим новый файл в фиддерктории и /etc/init.d
nano /etc/init.d/mosquitto
Вставим в него содержимое:
#!/bin/bash #/etc/init.d/mosquitto case "$1" in start) echo "Starting mosquitto" /usr/local/sbin/mosquitto -d -c /etc/mosquitto/mosquitto.conf\ >> /var/log/mosquitto/mosquitto.log \ 2>> /var/log/mosquitto/mosquitto.error ;; stop) echo "Stopping mosquitto" killall mosquitto ;; *) echo "Usage: /etc/init.d/mosquitto start|stop" exit 1 ;; esac exit 0
Дадим директории разрешающие права и создадим папку для логирования:
chmod +x /etc/init.d/mosquitto mkdir -p /var/log/mosquitto
Добавляем сервер в список автозапуска и стартуем его:
update-rc.d mosquitto defaults /etc/init.d/mosquitto start
На этом все. Наш броекр-сервер MQTT запущен. Убедимся, что он исправлен выполнив в консоли комманду:
ps acx | grep mosquitto

Если вы потерпели феаско, то не расстраивайтесь, а затем смотрите логи:
log_type /var/log/mosquitto log_type /etc/mosquitto/mosquitto.conf
Сервер HTTP MQTT будет слушать порт 1883, а WebSocet MQTT - 9001.
Открыть доступ брокер сервера из интернета можно на роутере, если прокинуть порт 9001 во внешнее internet соединение.
make[1]: *** [read_handle_server.o] Error 1
make[1]: Leaving directory '/home/pi/src/mosquitto-1.4.8/src'
Makefile:21: recipe for target 'mosquitto' failed
make: *** [mosquitto] Error 2
Скромный вопрос что не так?
гнались и не дали возможности донести, а хотелось понять.