Заметки маркетолога: Как поставить Ubuntu на RPI и подключить к Azure IoT Hub

Habrahabr

Что делает маркетолог, когда его просят рассказать как использовать технологию, а он не может найти инструкцию? Обычно начинает дёргать всех окружающих технарей, искать в интернете или молча ждать чуда, или плакать. Но, эта история про другого маркетолога. Он просто взял и написал инструкцию сам. Приглашаю под кат оценить труды и поделиться своим мнением.

Передаю слово Андрею.

Disclaimer: Коллеги, не претендую на истину – просто делюсь своим опытом. Возможно он сэкономит кому-то немного сил и времени. И да, в момент написания статьи я первый раз в жизни видел командную строку Linux.
Давайте договоримся, что ниже речь пойдёт про Raspberry Pi 2 Model B. Именно при работе с ним были сделаны все снимки экрана.

Дистрибутив Ubuntu Mate можно скачать, например, здесь.

Имея img файл — создаём загрузочную SDCard – для этого я использовал Win32 Disk Imager, который установил на свою Windows 10.

Получившуюся загрузочную карточку вставляем в Raspberry Pi, подключаем клавиатуру, мышь и дисплей. После успешной загрузки видим окна ниже.


Сразу после установки выполняем несколько команд.

sudo update-rc.d ssh enable

sudo service ssh restart

sudo ifconfig – покажет нам сетевые настройки устройства

Важные команды update и upgrade – чтобы обновить систему.

sudo apt-get update

sudo apt-get upgrade

Далее добавим русский язык для клавиатуры.

Вот так можно поменять комбинацию клавиш переключения (я пару минут потратил, пока нашёл этот пункт).

На одном из форумов прочитал, что надо включить I2C: командой sudo raspi-config.

Тут кстати и настройки SSH можно поменять.


Пока нет под рукой датчиков — пробую сделать хоть что-то… Читаю вот эту статью.

Давайте начнём с того, что нам понадобится подписка Azure! Пробную верcию можно получить здесь.

Наши дальнейшие шаги.

Шаг 1.

Шаг 2.

Шаг 3.

Шаг 4.

Итак, вернёмся на устройство! Команда node -v возвращает ошибку на моём RPI.

Устанавливаем Node.js. Для этого вбиваем команду: sudo apt install nodejs-legacy.

Теперь команда node -v возвращает текущую версию.

На всякий случай.

Теперь нужен NPM — устанавливаем командой: sudo apt-get install npm. Команда не быстро, но отработала!

Далее запускаем: sudo npm install -g npm@2.x.

Теперь надо поставить последнюю версию IoT Hub transport package: sudo npm install -g azure-iot-device@latest.

И ещё одна команда: sudo npm install -g azure-iot-device-http@latest.

Теперь надо установить IoT Explorer: sudo npm install -g iothub-explorer@latest.

Следующим шагом запускаем вот такую команду iothub-explorer login "строка подключения".

Далее подключаем устройство: iothub-explorer create muzeyrpi-1 --connection-string. Успешно!

На портале Azure устройство видно.

Копируем на устройство скрипт JS со странички:

var connectionString = '<your device connection string>';
var clientFromConnectionString = require('/usr/lib/node_modules/azure-iot-device-http').clientFromConnectionString;
var client = clientFromConnectionString(connectionString);
var Message = require('/usr/lib/node_modules/azure-iot-device').Message;
var msg = new Message('some data from my device');
var connectCallback = function (err) {
  if (err) {
    console.error('Could not connect: ' + err);
  } else {
    console.log('Client connected');
    var message = new Message('some data from my device');
    client.sendEvent(message, function (err) {
      if (err) console.log(err.toString());
    });
    client.on('message', function (msg) {
      console.log(msg);
      client.complete(msg, function () {
        console.log('completed');
      });
    });
  }
};
client.open(connectCallback);
Сам по себе скрипт не заведётся — надо:
  1. В путях внутри файла надо поменять /usr/lib на /usr/local/lib.
  2. Добавить строку подключения. Причём строку подключения именно к устройству.

Запускается скрипт командой node MyScript.js из папки, где лежит скрипт.

Пробуем ещё раз – на этот раз в Device Explorer (подробнее про него и ссылка на скачивание в статье.

Жмём Enter… :)

Поздравляю – первые сообщения от нашего RPI достигли Azure IoT Hub

Я искренне надеюсь доработать данную инструкцию и сделать её еще более полезной! Например, пройдя вот этот путь (имея на руках датчик BME280 или без оного).

Для тех, кто дочитал

Для того, чтобы вы могли попробовать проделать это упражнение сами, мы с Андреем решили разыграть две штуки Raspberry Pi 3. Их получат первые 2 человека, которые ответят правильно в сообщения сообщества Microsoft Developer на вопрос: «На основе какого микроконтроллера была разработана самая ранняя версия Raspberry Pi?» Общие правила.