ThinkingHome.Plugins.NooLite
Предоставляет API для управления освещением и электроприборами с помощью адаптера nooLite MTRF-64-USB.
Вы можете настраивать название serial порта, к которому подключен адаптер nooLite.
{
"plugins": {
...
"ThinkingHome.Plugins.NooLite.NooLitePlugin": {
"portName": "/dev/tty.usbserial-AL00HDFI"
}
}
}
Метод Open
возвращает экземпляр класса ThinkingHome.Plugins.NooLite.AdapterWrapper
, предоставляющего API для управления адаптером nooLite.
bool fMode
- режим отправки команд:false
- стандартный режим nooLite,true
- режим nooLite-F (с шифрованием и обратной связью)
public class MyPlugin : PluginBase
{
private readonly NooLitePlugin noolite;
private void MyMethod()
{
var adapter = noolite.Open(true);
// set brightness 255 in channel 13
adapter.SetBrightness(13, 255);
}
}
Вы можете отметить методы своего плагина атрибутом ThinkingHome.Plugins.NooLite.NooLiteCommandHandlerAttribute
. Метод вашего плагина будет автоматически вызываться при получении адаптером nooLite команд от других устройств.
Сигнатура метода, вызываемого при получении команды nooLite, должна соответствовать делегату ThinkingHome.Plugins.NooLite.NooLiteCommandHandlerDelegate
:
public delegate void NooLiteCommandHandlerDelegate(byte command, int channel, byte format, byte d1, byte d2, byte d3, byte d4);
byte command
- код команды.int channel
- канал, в котором получена команда.byte format
- код формата данных.byte d1
- данные, передаваемые с командой - байт 1byte d2
- данные, передаваемые с командой - байт 2byte d3
- данные, передаваемые с командой - байт 3byte d4
- данные, передаваемые с командой - байт 4
Коды команд и форматов данных описаны в документации по API nooLite.
[NooLiteCommandHandler]
public void MyNooLiteHandler(byte command, int channel, byte format, byte d1, byte d2, byte d3, byte d4)
{
...
}
Вы можете отметить методы своего плагина атрибутом ThinkingHome.Plugins.NooLite.NooLiteMicroclimateDataHandlerAttribute
. Метод вашего плагина будет автоматически вызываться при получении адаптером nooLite данных о микроклимате (температуре/влажности).
Сигнатура метода, вызываемого при получении команды nooLite, должна соответствовать делегату ThinkingHome.Plugins.NooLite.NooLiteMicroclimateDataHandlerDelegate
:
public delegate void NooLiteMicroclimateDataHandlerDelegate(int channel, decimal temperature, int? humidity, bool lowBattery);
int channel
- канал, в котором получена команда.decimal temperature
- значение температуры в градусах, с точностью до 0.1°.int? humidity
- значение влажности в % (для датчиков PT112, не измеряющих влажность, это поле будет содержать значениеnull
).bool lowBattery
- признак низкого уровня заряда батарейки датчика (true
- низкий,false
- нормальный).
[NooLiteMicroclimateDataHandler]
public void MyNooLiteHandler(int channel, decimal temperature, int? humidity, bool lowBattery)
{
...
}
Включает нагрузку в заданном канале.
byte channel
- номер канала
adapter.On(13);
Выключает нагрузку в заданном канале.
byte channel
- номер канала
adapter.Off(13);
Устанавливает яркость в заданном канале.
byte channel
- номер каналаbyte brightness
- уровень яркости
adapter.SetBrightness(13, 120);
Включает нагрузку в заданном канале на заданное время.
byte channel
- номер каналаbyte minutes
- длительность периода (в минутах)
adapter.TemporarySwitchOn(13, 5);
Изменяет цвет светодиодной RGB ленты, подключенной через управляющий блок SD-1-180, на другой цвет из предопределенного набора цветов.
byte channel
- номер канала
adapter.ChangeLedColor(13);
Устанавливает заданный цвет светодиодной RGB ленты.
byte channel
- номер каналаbyte r
- уровень красного цветаbyte g
- уровень зеленого цветаbyte b
- уровень синего цвета
adapter.SetLedColor(15, 255, 255, 0); // yellow
Применяет ранее запомненный сценарий освещения в заданном канале.
byte channel
- номер канала
adapter.LoadPreset(13);
Возвращает объект, предоставляющий API для управления адаптером nooLite.
arguments[0]
- режим отправки команд (boolean
):false
- стандартный режим nooLite,true
- режим nooLite-F (с шифрованием и обратной связью)
API адаптера имеет набор команд/параметров, полностью аналогичный API для плагинов.
var adapter = host.api.noolite(true);
// включить свет в 13 канале
adapter.on(13);
// выключить свет в 25 канале
adapter.off(25);
// установить яркость 99 в 3 канале
adapter.setBrightness(3, 99);
// включить свет в 10 канале на 5 минут
adapter.temporarySwitchOn(10, 5);
// изменить цвет светодиодной RGB ленты в 20 канале на другой
adapter.changeLedColor(20);
// установить зеленый цвет светодиодной RGB ленты в 20 канале
adapter.setLedColor(20, 0, 255, 0); // r: 0, g: 255, b: 0
// применить ранее запомненный световой сценарий в 50 канале
adapter.loadPreset(50);