[API, Lua, Умный дом, Звук] Роутер Микротик управляет радиотрансляцией и озвучивает Умный дом
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Недавно, я случайно познакомился с программой RadioBoss компании DJSoft.Net www.radioboss.ru и был просто в восторге от дизайна и возможностей этой программной станции автоматизации радиоэфира. Конечно, я не профессионал и не искушенный пользователь-меломан, но всё же детально выполненный продуманный интерфейс, полная поддержка русского языка, богатейшие средства управления воспроизведением и планированием вещания, а также низкая цена, приятно удивляют. Бесплатная полная версия рассчитана на 150 запусков по 5 часов работы, что более чем достаточно, чтобы освоить возможности программы. Более подробно с RadioBoss можно ознакомиться на официальном сайте и форуме.
Меня же больше прельстило то, что программа поддерживает API управление, что позволяет удаленно полностью управлять проигрыванием музыки на компьютере с установленным RadioBoss. У меня давно была мечта иметь возможность удаленного воспроизведения медиа без подключения к рабочему столу удаленного ПК и вообще без компьютера. Пусть за меня это делает, например, … мой роутер Микротик!
Как известно, Роутер ОС Микротик имеет встроенный мощнейший скриптовый язык, позволяющий писать любые сценарии и программы по автоматизации работы роутера. Но не только роутера! Скриптовая команда /tool fetch позволяет организовать внешние GET и POST запросы на указанный URL и таким образом, обращаться к любому оборудованию или программам с открытыми API. Например, реализованы скрипты и библиотеки команд по управлению из Микротик модулями интернет реле и мониторинга среды (можно посмотреть и скачать здесь), получения сведений о погоде, оповещениях о событиях в Телеграмм и управления роутером через Телеграмм, определения времени восхода/заката солнца c организацией астрономического реле и т.д…
За чем же у нас дело стало? Пользуясь руководством к API RadioBoss пишем несколько простых функций для Роутер ОС Микротик, которые позволят роутеру выполнять действия на RаdioBoss по совершению каких-либо событий на роутере:
#---------------------------------------------------------#
# Функции управления RadioBoss
# by Sertik 18/12/2020
#---------------------------------------------------------#
# - FuncRadioBossInit
# установить адрес устройства, порт и пароль для функий RadioBoss и проверить доступность устройства
# обязательно указывать все три параметра
:global FuncRadioBossInit do={
:if ([:len $0]!=0) do={
:if ([:len $1]!=0) do={
:if ([:len $2]!=0) do={
:if ([:len $3]!=0) do={
:global FuncPing
:if ([$FuncPing PingAdr=$1]="OK") do={
:global RBaddr $1
:global RBport $2
:global RBpass $3
:return "OK";
} else={:return "ERROR PC RadioBoss not responded"}
} else={:return "ERROR parametr password"}
} else={:return "ERROR parametr port"}
} else={:return "ERROR parametr address"}
}
}
# - FuncRadioBossPlay
# играть трек с указанным номером, если не указан, но первый в плейлисте
# если указан "next"/"prev" переходит к следующему/предыдущему треку
:global FuncRadioBossPlay do={
:if ([:len $0]!=0) do={
:global RBaddr
:global RBport
:global RBpass
:if (([:len $RBaddr]!=0) and ([:len $RBport]!=0) and ([:len $RBpass]!=0)) do={
:local StrFetchRB;
:if (($1="next") or ($1="prev")) do={:set StrFetchRB ("http://"."$RBaddr".":"."$RBport"."/\?pass="."$RBpass"."&cmd="."$1");} else={
:set StrFetchRB ("http://"."$RBaddr".":"."$RBport"."/\?pass="."$RBpass"."&cmd=play%20"."$1");}
do {
:global RBanswer [/tool fetch url=$StrFetchRB mode=http as-value output=user];
} on-error={:return "ERROR"}
:global RBanswer;
:if (($RBanswer->"status")!="finished") do={:return "ERROR"}
:return ($RBanswer->"data");
} else={:return "ERROR no define address, port or password"}
}
}
# - FuncRadioBossStop
# остановить воспроизведение
:global FuncRadioBossStop do={
:if ([:len $0]!=0) do={
:global RBaddr
:global RBport
:global RBpass
:if (([:len $RBaddr]!=0) and ([:len $RBport]!=0) and ([:len $RBpass]!=0)) do={
:local StrFetchRB; :set StrFetchRB ("http://"."$RBaddr".":"."$RBport"."/\?pass="."$RBpass"."&cmd=stop");
do {
:global RBanswer [/tool fetch url=$StrFetchRB mode=http as-value output=user];
} on-error={:return "ERROR"}
:global RBanswer;
:if (($RBanswer->"status")!="finished") do={:return "ERROR"}
:return ($RBanswer->"data");
} else={:return "ERROR no define address, port or password"}
}
}
# - FuncRadioBossBreak
# остановка воспроизведения после конца текущего трека
:global FuncRadioBossBreak do={
:if ([:len $0]!=0) do={
:global RBaddr
:global RBport
:global RBpass
:if (([:len $RBaddr]!=0) and ([:len $RBport]!=0) and ([:len $RBpass]!=0)) do={
:local StrFetchRB; :set StrFetchRB ("http://"."$RBaddr".":"."$RBport"."/\?pass="."$RBpass"."&cmd=set%20break");
do {
:global RBanswer [/tool fetch url=$StrFetchRB mode=http as-value output=user];
} on-error={:return "ERROR"}
:global RBanswer;
:if (($RBanswer->"status")!="finished") do={:return "ERROR"}
:return ($RBanswer->"data");
} else={:return "ERROR no define address, port or password"}
}
}
# - FuncRadioBossVolume
# установка громкости 0-100
:global FuncRadioBossVolume do={
:if ([:len $0]!=0) do={
:global RBaddr
:global RBport
:global RBpass
:if (([:len $RBaddr]!=0) and ([:len $RBport]!=0) and ([:len $RBpass]!=0)) do={
:local StrFetchRB; :set StrFetchRB ("http://"."$RBaddr".":"."$RBport"."/\?pass="."$RBpass"."&cmd=setvol%20"."$1");
do {
:global RBanswer [/tool fetch url=$StrFetchRB mode=http as-value output=user];
} on-error={:return "ERROR"}
:global RBanswer;
:if (($RBanswer->"status")!="finished") do={:return "ERROR"}
:return ($RBanswer->"data");
} else={:return "ERROR no define address, port or password"}
}
}
# - FuncRadioBossShuffle
# включить/выключить случайное воспроизведение
# использование [$FuncRadioBossShuffle "on/off"]
:global FuncRadioBossShuffle do={
:if ([:len $0]!=0) do={
:global RBaddr
:global RBport
:global RBpass
:if (([:len $RBaddr]!=0) and ([:len $RBport]!=0) and ([:len $RBpass]!=0)) do={
:local StrFetchRB; :set StrFetchRB ("http://"."$RBaddr".":"."$RBport"."/\?pass="."$RBpass"."&cmd=set%20shuffle%20"."$1");
do {
:global RBanswer [/tool fetch url=$StrFetchRB mode=http as-value output=user];
} on-error={:return "ERROR"}
:global RBanswer;
:if (($RBanswer->"status")!="finished") do={:return "ERROR"}
:return ($RBanswer->"data");
} else={:return "ERROR no define address, port or password"}
}
}
# - FuncRadioBossReset
# сброс статуса проигранных треков в плейлисте
:global FuncRadioBossReset do={
:if ([:len $0]!=0) do={
:global RBaddr
:global RBport
:global RBpass
:if (([:len $RBaddr]!=0) and ([:len $RBport]!=0) and ([:len $RBpass]!=0)) do={
:local StrFetchRB; :set StrFetchRB ("http://"."$RBaddr".":"."$RBport"."/\?pass="."$RBpass"."&cmd=resetplayedstate");
do {
:global RBanswer [/tool fetch url=$StrFetchRB mode=http as-value output=user];
} on-error={:return "ERROR"}
:global RBanswer;
:if (($RBanswer->"status")!="finished") do={:return "ERROR"}
:return ($RBanswer->"data");
} else={:return "ERROR no define address, port or password"}
}
}
:global FuncPing do={
:local PingCount 3; # количество пингов;
:local Hadr;
:if ([:find $PingAdr ":"]>0) do={:set Hadr [:pick $PingAdr 0 [:find $PingAdr ":"]];} else={
:set Hadr $PingAdr}
:local Result [/ping $Hadr count=$PingCount];
:local PingAnswer "";
:local MainIfInetOk false;
:set MainIfInetOk ((3*$Result) >= (2 * $PingCount))
:put "MainIfInetOk=$MainIfInetOk"
if (!$MainIfInetOk) do={
:set PingAnswer "ERROR"
}
if ($MainIfInetOk) do={
:set PingAnswer "OK"
}
:return $PingAnswer;
}
Вставляем скриптовый код, приведенный выше в реппозиторий роутера, не забываем вызвать его при старте роутера (или когда нужно) для «определения» написанных функций в окружении переменных. Затем функции управления RadioBoss будут доступны из всех Ваших скриптов, вызвать их можно, например так:
# Использование (примеры):
:global FuncRadioBossInit; :global FuncRadioBossVolume; :global FuncRadioBossPlay;
:global FuncRadioBossReset; :global FuncRadioBossShuffle; :global FuncRadioBossBreak;
# Инициализируем доступ к ПК с RadioBoss
[$FuncRadioBossInit "192.168.0.2" "9001" "your password"]
# Устанавливаем громкость
[$FuncRadioBossVolume "30"]
# Сбрасываем метки проигранных треков
[$FuncRadioBossReset]
# Включаем воспроизведение в случайном порядке
[$FuncRadioBossShuffle "on"]
# Играем следующий трек
:log info [$FuncRadioBossPlay "next"]
# Останавливаем воспроизведение после текущего трека
[$FuncRadioBossBreak]
Приведенный в скрипте минимальный набор функций позволяет запускать воспроизведение указанного трека из главного плейлиста, воспроизводить треки в случайном порядке, останавливать воспроизведение, играть следующий, предыдущий треки, устанавливать громкость воспроизведения. API RadioBoss намного обширнее и позволяют управлять практически всеми функциями программы, в том числе добавлять, удалять треки и потоки в плейлист, вставлять джинглы и т д…
Я, естественно, не собирался открывать свою интернет-радиостанцию, а вот использование программы в утилитарных целях, для меня было даже более привлекательно. В частности возможности роутеров Микротик для озвучки скриптов через встроенный динамик, весьма скромны. А тут появляется возможность записать голосовые сообщения, вставить их в плейлист вместо треков и запускать из Роутер ОС Микротик по мере необходимости, причём это же делаю не я а сам роутер!
На ПК с установленным RadioBoss включаем удаленный доступ и настраиваем для него порт и пароль доступа:
Дома при включенном ПК, свернутая в трей Виндовс программа RadioBoss теперь сообщает мне голосом о нужных событиях в локальной сети (подключении домочадцев по wifi, превышениях лимита трафика сыном, доступности новой версии ПО, попытках несанкционированного доступа на роутер и т.д…)
На даче, с которой естественно давно организована многоканальная MESH VPN-сеть, можно, например, при определении движения видеокамерой, автоматически через усилитель и уличные колонки предупредить хулиганов и воришек о том, что их видят, записывают и скоро накостыляют по шее.
У системного администратора появляется возможность установить RadioBoss на офисные ПК и автоматически голосом предупреждать нарушителей дисциплины о том, что на работе необходимо работать, а не серфить Интернет или играть в «танчики» и т.д… Также можно теперь без покупки дорогостоящих аппаратных систем радиотрансляции запускать сообщения о собраниях, конференциях и т д…
Вот так, например, можно поприветствовать начальника, (а заодно и предупредить сотрудников !) при появлении его утром в офисе (в переменную MAC добавляем MAC-адрес смартфона начальника (идея взята отсюда).
:local MAC CC:CC:CC:CC:CC:CC;
:local MACdetect [interface wireless registration-table find mac-address=$MAC];
:if ([:len $MACdetect]>0) do {:do {:local nameADR [/ip firewall address-list get value-name=list [find address=123.123.123.123]];
:global FuncRadioBossInit; :[$FuncRadioBossInit «192.168.0.3» «9001» «PASSWORD»]
:global FuncRadioBossPlay
[$FuncRadioBossPlay «1»]
} on-error={/ip firewall address-list add dynamic=yes address=123.123.123.123 list=timer timeout=23:59:59; }}
Исполнение скрипта ставим в Планировщик Микротика с исполнением, скажем 1 раз в 15 секунд.
При появлении начальника в офисе (отслеживается именно первое появление за день) на ПК с адресом, переданным в функции $FuncRadioInit будет запущен первый трек из Плейлиста программы.
Конечно, существует много других программ автоматизации радиовещания, например, RadioPlayerPro компании РадиоСофт, DJin Lite компаний Тракт и ТрактСофт и др., но учитывая возможности RadioBoss и цену на нее, конкурентов у программы практически нет.
Возможно по API можно управлять обычным Media Player Windows, но я нигде не нашёл инструкций к управлению Медиа Плайером через http запросы.
Кстати, API RadioBoss позволяет запускать любые bat файлы и приложения Windows, а также перезагружать и выключать компьютер. Таким образом, если сетевая карта Вашего персонального компьютера или ноутбука оснащена функцией Wake on Lan, Микротик может запускать ПК с RadioBoss, а та в свою очередь, отработав нужное время, выключать компьютер.
Приятных экспериментов!
===========
Источник:
habr.com
===========
Похожие новости:
- [Open source, Работа с видео, История IT, Звук] Проекту FFmpeg исполнилось 20 лет
- [Гаджеты, Научно-популярное, Звук] «Мир Hi-Fi»: обсуждаем умные ТВ и апскейлинг, стриминг, музыкальное железо и хамминг-эффект
- [IT-инфраструктура, Google API, Google Cloud Platform, Облачные сервисы] В Google объяснили причину глобального сбоя сервисов
- [Бизнес-модели, Звук] «Плейлистификация» захватила умы паблишеров музыки и подкастов, но так ли она интересна слушателям
- [Разработка под Arduino, Умный дом, DIY или Сделай сам, Электроника для начинающих, Голосовые интерфейсы] Открываем дверь при помощи голосового ассистента
- [API, Конференции] Приглашение на онлайн-конференцию по иннерсорсу Сбера — 23 декабря
- [Habr, Умный дом, DIY или Сделай сам] Декоративная подсветка лестницы. Часть первая. «Железная»
- [Мессенджеры, Облачные сервисы, Социальные сети и сообщества] Свой сервис отложенного постинга и почти без кода
- [Программирование, Умный дом, Голосовые интерфейсы] Как разговорить Марусю: FAQ по созданию скиллов для голосового ассистента
- [Разработка веб-сайтов, CSS, API, Браузеры] До свидания, Google Fonts. Последний аргумент
Теги для поиска: #_api, #_lua, #_umnyj_dom (Умный дом), #_zvuk (Звук), #_mikrotik (Микротик), #_radioboss, #_api, #_lua, #_umnyj_dom (
Умный дом
), #_zvuk (
Звук
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 00:25
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Недавно, я случайно познакомился с программой RadioBoss компании DJSoft.Net www.radioboss.ru и был просто в восторге от дизайна и возможностей этой программной станции автоматизации радиоэфира. Конечно, я не профессионал и не искушенный пользователь-меломан, но всё же детально выполненный продуманный интерфейс, полная поддержка русского языка, богатейшие средства управления воспроизведением и планированием вещания, а также низкая цена, приятно удивляют. Бесплатная полная версия рассчитана на 150 запусков по 5 часов работы, что более чем достаточно, чтобы освоить возможности программы. Более подробно с RadioBoss можно ознакомиться на официальном сайте и форуме. Меня же больше прельстило то, что программа поддерживает API управление, что позволяет удаленно полностью управлять проигрыванием музыки на компьютере с установленным RadioBoss. У меня давно была мечта иметь возможность удаленного воспроизведения медиа без подключения к рабочему столу удаленного ПК и вообще без компьютера. Пусть за меня это делает, например, … мой роутер Микротик! Как известно, Роутер ОС Микротик имеет встроенный мощнейший скриптовый язык, позволяющий писать любые сценарии и программы по автоматизации работы роутера. Но не только роутера! Скриптовая команда /tool fetch позволяет организовать внешние GET и POST запросы на указанный URL и таким образом, обращаться к любому оборудованию или программам с открытыми API. Например, реализованы скрипты и библиотеки команд по управлению из Микротик модулями интернет реле и мониторинга среды (можно посмотреть и скачать здесь), получения сведений о погоде, оповещениях о событиях в Телеграмм и управления роутером через Телеграмм, определения времени восхода/заката солнца c организацией астрономического реле и т.д… За чем же у нас дело стало? Пользуясь руководством к API RadioBoss пишем несколько простых функций для Роутер ОС Микротик, которые позволят роутеру выполнять действия на RаdioBoss по совершению каких-либо событий на роутере: #---------------------------------------------------------#
# Функции управления RadioBoss # by Sertik 18/12/2020 #---------------------------------------------------------# # - FuncRadioBossInit # установить адрес устройства, порт и пароль для функий RadioBoss и проверить доступность устройства # обязательно указывать все три параметра :global FuncRadioBossInit do={ :if ([:len $0]!=0) do={ :if ([:len $1]!=0) do={ :if ([:len $2]!=0) do={ :if ([:len $3]!=0) do={ :global FuncPing :if ([$FuncPing PingAdr=$1]="OK") do={ :global RBaddr $1 :global RBport $2 :global RBpass $3 :return "OK"; } else={:return "ERROR PC RadioBoss not responded"} } else={:return "ERROR parametr password"} } else={:return "ERROR parametr port"} } else={:return "ERROR parametr address"} } } # - FuncRadioBossPlay # играть трек с указанным номером, если не указан, но первый в плейлисте # если указан "next"/"prev" переходит к следующему/предыдущему треку :global FuncRadioBossPlay do={ :if ([:len $0]!=0) do={ :global RBaddr :global RBport :global RBpass :if (([:len $RBaddr]!=0) and ([:len $RBport]!=0) and ([:len $RBpass]!=0)) do={ :local StrFetchRB; :if (($1="next") or ($1="prev")) do={:set StrFetchRB ("http://"."$RBaddr".":"."$RBport"."/\?pass="."$RBpass"."&cmd="."$1");} else={ :set StrFetchRB ("http://"."$RBaddr".":"."$RBport"."/\?pass="."$RBpass"."&cmd=play%20"."$1");} do { :global RBanswer [/tool fetch url=$StrFetchRB mode=http as-value output=user]; } on-error={:return "ERROR"} :global RBanswer; :if (($RBanswer->"status")!="finished") do={:return "ERROR"} :return ($RBanswer->"data"); } else={:return "ERROR no define address, port or password"} } } # - FuncRadioBossStop # остановить воспроизведение :global FuncRadioBossStop do={ :if ([:len $0]!=0) do={ :global RBaddr :global RBport :global RBpass :if (([:len $RBaddr]!=0) and ([:len $RBport]!=0) and ([:len $RBpass]!=0)) do={ :local StrFetchRB; :set StrFetchRB ("http://"."$RBaddr".":"."$RBport"."/\?pass="."$RBpass"."&cmd=stop"); do { :global RBanswer [/tool fetch url=$StrFetchRB mode=http as-value output=user]; } on-error={:return "ERROR"} :global RBanswer; :if (($RBanswer->"status")!="finished") do={:return "ERROR"} :return ($RBanswer->"data"); } else={:return "ERROR no define address, port or password"} } } # - FuncRadioBossBreak # остановка воспроизведения после конца текущего трека :global FuncRadioBossBreak do={ :if ([:len $0]!=0) do={ :global RBaddr :global RBport :global RBpass :if (([:len $RBaddr]!=0) and ([:len $RBport]!=0) and ([:len $RBpass]!=0)) do={ :local StrFetchRB; :set StrFetchRB ("http://"."$RBaddr".":"."$RBport"."/\?pass="."$RBpass"."&cmd=set%20break"); do { :global RBanswer [/tool fetch url=$StrFetchRB mode=http as-value output=user]; } on-error={:return "ERROR"} :global RBanswer; :if (($RBanswer->"status")!="finished") do={:return "ERROR"} :return ($RBanswer->"data"); } else={:return "ERROR no define address, port or password"} } } # - FuncRadioBossVolume # установка громкости 0-100 :global FuncRadioBossVolume do={ :if ([:len $0]!=0) do={ :global RBaddr :global RBport :global RBpass :if (([:len $RBaddr]!=0) and ([:len $RBport]!=0) and ([:len $RBpass]!=0)) do={ :local StrFetchRB; :set StrFetchRB ("http://"."$RBaddr".":"."$RBport"."/\?pass="."$RBpass"."&cmd=setvol%20"."$1"); do { :global RBanswer [/tool fetch url=$StrFetchRB mode=http as-value output=user]; } on-error={:return "ERROR"} :global RBanswer; :if (($RBanswer->"status")!="finished") do={:return "ERROR"} :return ($RBanswer->"data"); } else={:return "ERROR no define address, port or password"} } } # - FuncRadioBossShuffle # включить/выключить случайное воспроизведение # использование [$FuncRadioBossShuffle "on/off"] :global FuncRadioBossShuffle do={ :if ([:len $0]!=0) do={ :global RBaddr :global RBport :global RBpass :if (([:len $RBaddr]!=0) and ([:len $RBport]!=0) and ([:len $RBpass]!=0)) do={ :local StrFetchRB; :set StrFetchRB ("http://"."$RBaddr".":"."$RBport"."/\?pass="."$RBpass"."&cmd=set%20shuffle%20"."$1"); do { :global RBanswer [/tool fetch url=$StrFetchRB mode=http as-value output=user]; } on-error={:return "ERROR"} :global RBanswer; :if (($RBanswer->"status")!="finished") do={:return "ERROR"} :return ($RBanswer->"data"); } else={:return "ERROR no define address, port or password"} } } # - FuncRadioBossReset # сброс статуса проигранных треков в плейлисте :global FuncRadioBossReset do={ :if ([:len $0]!=0) do={ :global RBaddr :global RBport :global RBpass :if (([:len $RBaddr]!=0) and ([:len $RBport]!=0) and ([:len $RBpass]!=0)) do={ :local StrFetchRB; :set StrFetchRB ("http://"."$RBaddr".":"."$RBport"."/\?pass="."$RBpass"."&cmd=resetplayedstate"); do { :global RBanswer [/tool fetch url=$StrFetchRB mode=http as-value output=user]; } on-error={:return "ERROR"} :global RBanswer; :if (($RBanswer->"status")!="finished") do={:return "ERROR"} :return ($RBanswer->"data"); } else={:return "ERROR no define address, port or password"} } } :global FuncPing do={ :local PingCount 3; # количество пингов; :local Hadr; :if ([:find $PingAdr ":"]>0) do={:set Hadr [:pick $PingAdr 0 [:find $PingAdr ":"]];} else={ :set Hadr $PingAdr} :local Result [/ping $Hadr count=$PingCount]; :local PingAnswer ""; :local MainIfInetOk false; :set MainIfInetOk ((3*$Result) >= (2 * $PingCount)) :put "MainIfInetOk=$MainIfInetOk" if (!$MainIfInetOk) do={ :set PingAnswer "ERROR" } if ($MainIfInetOk) do={ :set PingAnswer "OK" } :return $PingAnswer; } Вставляем скриптовый код, приведенный выше в реппозиторий роутера, не забываем вызвать его при старте роутера (или когда нужно) для «определения» написанных функций в окружении переменных. Затем функции управления RadioBoss будут доступны из всех Ваших скриптов, вызвать их можно, например так: # Использование (примеры):
:global FuncRadioBossInit; :global FuncRadioBossVolume; :global FuncRadioBossPlay; :global FuncRadioBossReset; :global FuncRadioBossShuffle; :global FuncRadioBossBreak; # Инициализируем доступ к ПК с RadioBoss [$FuncRadioBossInit "192.168.0.2" "9001" "your password"] # Устанавливаем громкость [$FuncRadioBossVolume "30"] # Сбрасываем метки проигранных треков [$FuncRadioBossReset] # Включаем воспроизведение в случайном порядке [$FuncRadioBossShuffle "on"] # Играем следующий трек :log info [$FuncRadioBossPlay "next"] # Останавливаем воспроизведение после текущего трека [$FuncRadioBossBreak] Приведенный в скрипте минимальный набор функций позволяет запускать воспроизведение указанного трека из главного плейлиста, воспроизводить треки в случайном порядке, останавливать воспроизведение, играть следующий, предыдущий треки, устанавливать громкость воспроизведения. API RadioBoss намного обширнее и позволяют управлять практически всеми функциями программы, в том числе добавлять, удалять треки и потоки в плейлист, вставлять джинглы и т д… Я, естественно, не собирался открывать свою интернет-радиостанцию, а вот использование программы в утилитарных целях, для меня было даже более привлекательно. В частности возможности роутеров Микротик для озвучки скриптов через встроенный динамик, весьма скромны. А тут появляется возможность записать голосовые сообщения, вставить их в плейлист вместо треков и запускать из Роутер ОС Микротик по мере необходимости, причём это же делаю не я а сам роутер! На ПК с установленным RadioBoss включаем удаленный доступ и настраиваем для него порт и пароль доступа: Дома при включенном ПК, свернутая в трей Виндовс программа RadioBoss теперь сообщает мне голосом о нужных событиях в локальной сети (подключении домочадцев по wifi, превышениях лимита трафика сыном, доступности новой версии ПО, попытках несанкционированного доступа на роутер и т.д…) На даче, с которой естественно давно организована многоканальная MESH VPN-сеть, можно, например, при определении движения видеокамерой, автоматически через усилитель и уличные колонки предупредить хулиганов и воришек о том, что их видят, записывают и скоро накостыляют по шее. У системного администратора появляется возможность установить RadioBoss на офисные ПК и автоматически голосом предупреждать нарушителей дисциплины о том, что на работе необходимо работать, а не серфить Интернет или играть в «танчики» и т.д… Также можно теперь без покупки дорогостоящих аппаратных систем радиотрансляции запускать сообщения о собраниях, конференциях и т д… Вот так, например, можно поприветствовать начальника, (а заодно и предупредить сотрудников !) при появлении его утром в офисе (в переменную MAC добавляем MAC-адрес смартфона начальника (идея взята отсюда). :local MAC CC:CC:CC:CC:CC:CC;
:local MACdetect [interface wireless registration-table find mac-address=$MAC]; :if ([:len $MACdetect]>0) do {:do {:local nameADR [/ip firewall address-list get value-name=list [find address=123.123.123.123]]; :global FuncRadioBossInit; :[$FuncRadioBossInit «192.168.0.3» «9001» «PASSWORD»] :global FuncRadioBossPlay [$FuncRadioBossPlay «1»] } on-error={/ip firewall address-list add dynamic=yes address=123.123.123.123 list=timer timeout=23:59:59; }} Исполнение скрипта ставим в Планировщик Микротика с исполнением, скажем 1 раз в 15 секунд. При появлении начальника в офисе (отслеживается именно первое появление за день) на ПК с адресом, переданным в функции $FuncRadioInit будет запущен первый трек из Плейлиста программы. Конечно, существует много других программ автоматизации радиовещания, например, RadioPlayerPro компании РадиоСофт, DJin Lite компаний Тракт и ТрактСофт и др., но учитывая возможности RadioBoss и цену на нее, конкурентов у программы практически нет. Возможно по API можно управлять обычным Media Player Windows, но я нигде не нашёл инструкций к управлению Медиа Плайером через http запросы. Кстати, API RadioBoss позволяет запускать любые bat файлы и приложения Windows, а также перезагружать и выключать компьютер. Таким образом, если сетевая карта Вашего персонального компьютера или ноутбука оснащена функцией Wake on Lan, Микротик может запускать ПК с RadioBoss, а та в свою очередь, отработав нужное время, выключать компьютер. Приятных экспериментов! =========== Источник: habr.com =========== Похожие новости:
Умный дом ), #_zvuk ( Звук ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 00:25
Часовой пояс: UTC + 5