Ich war mehr verführt von der Tatsache, dass das Programm die API-Steuerung unterstützt, mit der Sie die Musikwiedergabe auf einem Computer mit installiertem RadioBoss fernsteuern können. Ich hatte lange den Traum, Medien aus der Ferne abspielen zu können, ohne eine Verbindung zum Desktop eines Remote-PCs und überhaupt ohne Computer herzustellen. Lassen Sie es zum Beispiel für mich tun, ... meinen Router Mikrotik!
Wie Sie wissen, verfügt das Router-Betriebssystem Mikrotik über eine integrierte leistungsstarke Skriptsprache, mit der Sie alle Skripte und Programme schreiben können, um den Betrieb des Routers zu automatisieren. Aber nicht nur ein Router! Skriptbefehl / ToolabrufMit dieser Option können Sie externe GET- und POST-Anforderungen an die angegebene URL organisieren und so auf Hardware oder Programme mit offenen APIs zugreifen. Zum Beispiel Skripte und Befehlsbibliotheken zur Steuerung der Internet-Relay-Module und zur Überwachung der Umgebung von Mikrotik ( können hier angezeigt und heruntergeladen werden ), zum Empfangen von Informationen über das Wetter , zu Benachrichtigungen über Ereignisse in Telegramm und zum Steuern des Routers über Telegramm , zum Bestimmen der Zeit von Sonnenaufgang / Sonnenuntergang mit der Organisation von Astronomie Relais etc ...
Warum haben wir es? Unter Verwendung des Handbuchs für die RadioBoss-API schreiben wir einige einfache Funktionen für das Router-Betriebssystem Mikrotik, mit denen der Router Aktionen auf dem RadioBoss ausführen kann, um Ereignisse auf dem Router auszuführen:
#---------------------------------------------------------#
# 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;
}
Wir fügen den oben angegebenen Skriptcode in das Router-Repository ein. Vergessen Sie nicht, ihn am Anfang des Eisenstücks (oder bei Bedarf) aufzurufen, um die geschriebenen Funktionen in der Umgebung von Variablen zu "definieren". Dann sind die RadioBoss-Steuerfunktionen in allen Ihren Skripten verfügbar. Sie können sie beispielsweise aufrufen:
# ():
: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]
Mit den im Skript bereitgestellten Mindestfunktionen können Sie die Wiedergabe des angegebenen Titels über die Hauptwiedergabeliste starten, Titel in zufälliger Reihenfolge abspielen, die Wiedergabe stoppen, die nächsten, vorherigen Titel abspielen und die Wiedergabelautstärke einstellen. Die RadioBoss-API ist viel umfangreicher und ermöglicht die Verwaltung fast aller Programmfunktionen, einschließlich Hinzufügen, Entfernen von Titeln und Streams zur Wiedergabeliste, Einfügen von Jingles usw.
Natürlich wollte ich keinen eigenen Internetradiosender eröffnen, aber die Nutzung des Programms für nützliche Zwecke war für mich noch attraktiver. Insbesondere die Möglichkeiten von Mikrotik-Routern, Skripte über den eingebauten Lautsprecher abzuspielen, sind sehr bescheiden. Und dann wird es möglich, Sprachnachrichten aufzuzeichnen, sie anstelle von Titeln in die Wiedergabeliste einzufügen und sie nach Bedarf vom Microtic OS Router aus zu starten. Dies geschieht nicht von mir, sondern vom Router selbst!
Aktivieren Sie auf dem PC mit installiertem RadioBoss den Remotezugriff und konfigurieren Sie den Port und das Zugriffskennwort dafür:
Start , wenn der PC, rollte auf Tablett Windoof Radioboss Programm jetzt sagt mir die Stimme der erforderlichen Ereignisse im lokalen Netzwerk (Verbindungs Haushalte auf Wi - Fi, Sohn Exzesse Traffic - Limit, die Verfügbarkeit einer neuen Version der Software, versucht nicht autorisierten Zugriff auf den Router zu gewinnen, etc ...)
Auf dem Land , mit dem ein Mehrkanal-MESH-VPN-Netzwerk natürlich schon lange organisiert ist, ist es beispielsweise möglich, bei der Bewegungserkennung mit einer Videokamera automatisch über einen Verstärker und Straßenlautsprecher Hooligans und Diebe zu warnen, dass sie gesehen, aufgezeichnet und bald auf den Hals geschlagen werden.
Der Systemadministrator hat die Möglichkeit, RadioBoss auf Büro-PCs zu installieren und Verstöße gegen die Disziplin automatisch per Sprache zu warnen, dass bei der Arbeit gearbeitet werden muss und nicht im Internet gesurft oder "Panzer" usw. gespielt werden müssen. Es ist jetzt auch möglich, Rundfunksysteme zu betreiben, ohne teure Hardwaresysteme zu kaufen. Nachrichten über Besprechungen, Konferenzen usw. ...
So können Sie beispielsweise den Chef begrüßen (und gleichzeitig die Mitarbeiter warnen!), wenn er morgens im Büro erscheint (fügen Sie der MAC-Variablen die MAC-Adresse des Smartphones des Chefs hinzu (die Idee stammt von hier ).
: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; }}
Wir setzen die Skriptausführung in Mikrotiks Scheduler mit einer Ausführung, beispielsweise alle 15 Sekunden.
Wenn der Chef im Büro (es ist das erste Auftreten des Tages, das verfolgt wird) auf dem PC mit der in der Funktion $ FuncRadioInit übergebenen Adresse erscheint, wird der erste Titel aus der Wiedergabeliste des Programms gestartet.
Natürlich gibt es viele andere Programme zur Rundfunkautomatisierung, zum Beispiel RadioPlayerPro von RadioSoft , DJin Lite von Trakt und TraktSoft usw., aber angesichts der Fähigkeiten von RadioBoss und seines Preises hat das Programm praktisch keine Konkurrenten.
Möglicherweise kann die API verwendet werden, um den üblichen Windows Media Player zu steuern, aber ich habe nirgendwo Anweisungen zum Steuern des Media Players über http-Anforderungen gefunden.
Mit der RadioBoss-API können Sie übrigens alle Bat-Dateien und Windows-Anwendungen ausführen sowie Ihren Computer neu starten und herunterfahren. Wenn die Netzwerkkarte Ihres PCs oder Laptops mit der Wake-on-Lan-Funktion ausgestattet ist, kann Mikrotik den PC mit RadioBoss starten und den Computer nach dem Ausarbeiten der erforderlichen Zeit ausschalten.
Viel Spaß beim Experimentieren!