Программы для USB передатчика системы NooLite для Windows.
Я думаю, что такое NooLite вы уже знаете (иначе что вы тут делаете?). Управление светом и силовыми нагрузками по радиоканалу достаточно удобная штука, но еще круче все это дело автоматизировать. Я, например, как сова, жутко не люблю просыпаться рано утром, и даже не просыпался бы, но увы, надо. Но просыпаться от света гораздо приятнее, чем вскакивать от будильника, даже если поставить на него самую милую мелодию, из всех милых мелодий на земле. Но, при этом резко включающийся свет - тоже не то, чего хотелось бы. Поэтому я решил реализовать "плавный рассвет", когда в течении десяти минут яркость медленно нарастает от 0 до 100%. Организм воспринимает такое пробуждение более естественно, но для начала на это это как-то организовать. Штатная утилита от NooLite тоже позволяет вызывать себя с параметрами, но я хотел большего. Для начала была написана небольшая консольная утилита под Windows. Скачать её можно по ссылке внизу страницы. Хотя ладно, я позволю вам немного полениться, не мотайте станицу, качайте прямо отсюда!

Пользоваться программой достаточно просто, если у вас есть воткнутый в USB порт передатчик от NooLite - просто выполняем
nooLiteConsole.exe
, он ругается на то, что команда не передана и выдает список параметров. Если же передатчик от NooLite не воткнут, а посмотреть интересно, то выполняем
nooLiteConsole.exe debug=on
и видим все тоже самое. Теперь о пользовании. Чтобы включить свет достаточно выполнить nooLiteConsole.exe channel=0 command=on, где channel=0 - это номер канала. Соответственно чтобы выключить вводим:
nooLiteConsole.exe channel=0 command=off
включить на 50%:
nooLiteConsole.exe channel=0 command=setlevel value=128
где value задает яркость (0-255). Все это можно легко автоматизировать написав BAT файлы и добавив их в планировщик задач. Но тут всплывает одна проблемка - к сожалению передатчик NooLite не позволит вам слишком часто выполнять команды, и после отправки одной должно пройти какое-то время (миллисекунд 200), но при этом, если отправлять команды чаще, никаких ошибок он выдавать не будет, но и команды не отправит. Если у вас сценарии будут работать параллельно, то доходить будут далеко не все команды, для этого я сделал блокировку (параметр lock), чтобы вызвать программу с блокировкой, делаем так:
nooLiteConsole.exe channel=0 command=on lock=200
При этом после отправки команды, программа будет висеть ещё 200мс, а только потом вернет управление. Также ждать будут и другие экземпляры программы, если они были запущены в это время.
Теперь о плавном рассвете/закате, это делается командой setlevelmulti, пример команды
nooLiteConsole.exe channel=0 command=setlevelmulti value=0 valueto=255 time=900 lock=200
, и означает это, что свет будет плавно включаться с 0 до 255 в течении 900 секунд.
Теперь ещё одна плюшка: как, я надеюсь, вы уже увидели, к программе прилагается файлик nooLiteConsole_vars.txt, в него можно написать значение переменных. Например: room1=0 и т.д. что же это значит? А значит это то, что передавая команды в программу вы можете пользоваться этими переменными. Например
nooLiteConsole.exe channel=room1 command=on lock=200
Для чего это нужно? Канал на котором висит ваш источник света - может быть непостоянным, по какой-то причине вы захотите его поменять например. Но чтобы не переделывать все ваши скрипты - вы просто меняете номер в переменной и все. Также можно задать переменные для других параметров, например для блокировки: stdlock=200, и вызывать уже
nooLiteConsole.exe channel=room1 command=on lock=stdlock
В дальнейшем, если вы захотите увеличить время блокировки - просто поменяйте значение этой переменной. Ну вот, как-то так. Пробуйте, экспериментируйте :)
А тем временем, двигаемся дальше. Написав эту утилиту меня было уже не остановить, и я решил сделать ещё и Web-сервис, для управления освещением в доме. Скачать его можно... да тоже прямо тут.

Итак, что мы видим? Это файлы. Я серьезно. И их надо запустить. В том порядке в котором они названы. Первый устанавливает службу Web-сервера и PHP, второй дает редактировать переменные консольный утилиты, но самое интересное в третьем файле:

Тут мы задаем главные настройки нашего сервиса.
- В разделе OPTIONS, можно выставлять флаги для отображения, в принципе все понятно, мне лень расписывать каждый параметр :) Большинство парамтров может принимать значения 1/0, прописанные пути не трогайте, там все верно прописано.
- В разделе HEADERS можно поменять заголовки сервиса, которые будут отображаться на страницах.
- В разделе SCENARIOS прописываем сценарии формат такой:
[КАНАЛ,КОМАНДА,ЗНАЧЕНИЕ1,ЗНАЧЕНИЕ2,ВРЕМЯ];[КАНАЛ,КОМАНДА,ЗНАЧЕНИЕ1,ЗНАЧЕНИЕ2,ВРЕМЯ];...#ФАЙЛ_ЗНАЧКА
. Параметры ЗНАЧЕНИЕ2,ВРЕМЯ используются только для плавного включения/выключения света с командой setlevelmulti, ЗНАЧЕНИЕ1 используется для команды setlevel и др. Во всех остальных случаях эти параметры нужно заполнять из нулями. Примеры:
$Scenarios["Выключить свет в комнатах"] = "room1,off,0,0,0;room2,off,0,0,0#power_off.png";
$Scenarios["Рассвет"] = "room1,setlevelmulti,0,255,900#power_off.png";
- В разделе PLACES можно создавать как группы, так и отдельные источника освещения. Для создания группы напишите: $Places["ИМЯ ГРУППЫ"] = "[group]"; Для создания отдельного источника или источника внутри группы напишите: $Places["АНГЛИЙСКОЕ_УНИКАЛЬНОЕ_ИМЯ"] = "НАЗВАНИЕ_ПО_РУССКИ";
- В разделе NO LEVELS PLACES можно указать какие источники следует отображать без регулировки яркости. $NoLevels["АНГЛИЙСКОЕ_УНИКАЛЬНОЕ_ИМЯ"] = "";
- В разделе POWERS прописываются силовые приборы.
Запускаем службу:

И вот!

Кстати с андроида или айфона тоже можно все это регулировать, если на роутере разрешить попадать в домашнюю сеть и вводить IP компьютера, на котором установлена служба.
Вооот. Казалось бы все, но нет, я пошел ещё дальше решил написать командную утилиту ещё и для роутера Zyxel Keenetic. о это уже другая история...
Файлы:
Консольная утилита NooLite для Windows
Web-Сервис для Windows