Или как перепроектировать рождественские огни

Первоначально опубликовано на https://fek.io.

Я давно хотел получить лампочки, которыми можно было бы управлять через сеть или смартфон. В конце концов я раскошелился и купил мост и лампочку Philips Hue. Вы можете найти их в большинстве хозяйственных магазинов сейчас. Мост обошёлся мне примерно в 59 долларов США. Вы также можете приобрести стартовые комплекты с некоторыми лампочками примерно за 69 долларов.

Вы можете приобрести несколько умных лампочек, которые подключаются напрямую к Интернету с помощью ваших WiFi-соединений, но не все из них имеют одинаковые возможности, подобные IoT. Мостом Hue можно управлять с помощью приложения для смартфона, Amazon Dots, Google Home, а также с помощью ряда API с открытым исходным кодом.

У меня есть цветная лампочка, и я хотел сделать свет, который переключался между зеленым и красным цветом для рождественских праздников. Чтобы написать приложение, которое может взаимодействовать с мостом Hue, вам потребуются две части информации: IP-адрес моста в вашей сети и идентификатор пользователя.

Вы можете найти IP-адрес вашего моста Hue с помощью приложения для смартфона, которое вы использовали для настройки и настройки моста. В приложении вы можете выбрать вкладку настроек, затем выбрать «Мосты» › и затем настроенный вами мост. Он будет иметь IP-адрес, указанный в информации о мосте.

Следующим шагом для получения пользователя из белого списка, которого вы можете использовать для моста, является отправка HTTP-сообщения мосту Hue. Просмотрите инструкции внизу;



Когда у вас есть IP-адрес и токен пользователя, у вас есть вся информация, необходимая для управления лампочками на вашем мосту.

Получение списка лампочек на вашем мосту

Прежде чем мы сможем отправлять команды лампочке, нам нужно найти лампочки и их идентификаторы, чтобы мы могли совершать вызовы с помощью Hue REST API. Вот скрипт для возврата списка всех устройств на вашем мосту;

Сейчас у меня включена только одна лампочка, поэтому я получу результат только для одной лампочки;

{
  '1': {
    state: {
      on: true,
      bri: 254,
      hue: 41371,
      sat: 82,
      effect: 'none',
      xy: [Array],
      ct: 153,
      alert: 'select',
      colormode: 'xy',
      mode: 'homeautomation',
      reachable: true
    },
    ...
  }
}

Если я хочу получить состояние лампочки для конкретной лампочки, я могу добавить номер лампочки в конечную точку. Мы можем переписать этот скрипт так, чтобы он возвращал только первую лампочку;

{
  state: {
    on: true,
    bri: 254,
    hue: 41371,
    sat: 82,
    effect: 'none',
    xy: [ 0.3085, 0.3266 ],
    ct: 153,
    alert: 'select',
    colormode: 'xy',
    mode: 'homeautomation',
    reachable: true
  },
  ...
}

Если я хочу изменить цвет лампочки на зеленый, я могу передать новое состояние лампочке, используя глагол PUT и добавив state в конец конечной точки URL. Вот пример установки лампочки на зеленый;

Переключение лампочки между зеленым и красным

Чтобы придать лампочке ощущение Рождества, я буду переключать лампочку между зеленым и красным каждые две секунды. Для основного скрипта я буду использовать функцию setInterval и настраивать ее запуск каждые 2000 миллисекунд.

Полный скрипт должен выглядеть следующим образом;

Запуск как услуга

Если мы хотим запустить наш скрипт как службу, мы можем сделать это с помощью pm2. PM2 — это менеджер процессов, написанный на Node, который может работать практически в любой операционной системе. Используйте следующую команду для установки pm2 на наш компьютер.

npm i pm2 -g

Это установит pm2 глобально в нашей системе. Теперь мы можем взять наш основной скрипт и установить его как службу на наш компьютер.

> pm2 start cyclexmaslights.js --name xmaslights

Теперь, если мы хотим сохранить эту конфигурацию, чтобы наш компьютер запомнил эту службу, мы можем использовать следующую команду.

pm2 save

Если мы хотим продолжать использовать нашу конфигурацию pm2 после перезапуска, мы можем использовать следующую команду для создания команды, которую нам нужно будет использовать, чтобы сделать pm2 системной службой.

> pm2 startup 
# To setup the Startup Script, copy/paste the following command: sudo env = $PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/user

В Linux он, вероятно, будет использовать systemd. На Mac он, вероятно, будет использовать launchd.

Что, если мой компьютер перейдет в спящий режим или я его выключу?

Если вы похожи на меня и хотите, чтобы ваш свет работал всю ночь, использование компьютера, который переходит в спящий режим или который вы выключите, убьет сценарий. Хорошим вариантом здесь является использование компьютера, такого как Raspberry Pi. Они не потребляют много энергии, и вы можете оставить их где угодно в вашем доме.

Заключение

Подобные IoT-проекты могут быть забавными проектами для всей семьи дома. Также интересно узнать больше об оборудовании и встроенных системах. Подобные проекты также помогают нам больше узнать об API и Rest.

У Hue также есть удаленный API, который можно использовать через Интернет для управления мостом Hue. Существует ряд фреймворков с открытым исходным кодом на разных языках, которые можно использовать для управления освещением.

Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку здесь.