Homebridge Steuerung des Ubuntu Server (De-/Aktivierung von Bluetooth)

  • Hallo,

    ich habe Homebridge auf einem Ubuntu LTS 20.04.3 am laufen. Ich habe in dem Server eine Intel 9560 WLAN/BT Karte.

    Der Server ist jedoch per LAN an das Netzwerk angeschlossen und ich nutze von der Intel Karte gelegentlich die BT-Funktion des Servers für angeschlossene BT-Geräte.


    Gibt es in Homebridge ein Plugin mit dem ich Ubuntu als "Device" steuern kann? Mir geht es konkret darum, dass ich mit Siri das Bluetooth des Ubuntu anschalten/ausschalten kann. Ich finde kein Package dafür und wollte daher mal fragen ob hier jemand eine Möglichkeit kennt?

  • Mir geht es konkret darum, dass ich mit Siri das Bluetooth des Ubuntu anschalten/ausschalten kann.

    Und wie machst du das sonst? Gibst du dafür einen bestimmten Befehl ein?

  • Hallo,

    der Server/PC hat auch eine grafische Oberfläche installiert und kann an den TV angeschlossen werden.

    Dort kann ich dann über die Einstellungen BT eben aus/anschalten.

    Ich würde dies aber gerne können ohne den Server/PC zuvor an den TV anschließen zu müssen.

    Grüße

  • Ich habe keinen Ubuntu-Rechner. Also rate ich hier einfach mal herum. Was du mal testen kannst, ist einen Befehl in der Shell deines Ubuntu Rechners eingeben.


    sudo /etc/init.d/bluetooth start sollte Bluetooth einschalten

    sudo /etc/init.d/bluetooth stop sollte Bluetooth ausschalten


    Ist das so?

  • Hallo sschuste,


    es gibt mehrere Möglichkeiten über die Shell in Ubuntu Bluetooth an/auszuschalten. Je nach Ebene/Service, z.B.:


    1. rfkill block/unblock bluetooth


    2. systemctl start/stop bluetooth


    3. service bluetooth start/stop


    oder eben dein Befehl: /etc/init.d/bluetooth start/stop


    Wie kann ich aber daraus einen Button in Homekit machen, den ich bestenfalls über Siri mit einer Sprachsteuerung (z.B. "Hey Siri, schalte am Server Bluetooth ein") versehen kann?

  • Wie kann ich aber daraus einen Button in Homekit machen, den ich bestenfalls über Siri mit einer Sprachsteuerung (z.B. "Hey Siri, schalte am Server Bluetooth ein") versehen kann?

    Ginge evtl. als Kurzbefehl, wenn du dich per SSH auf den Ubuntu einloggen kannst, ähnlich wie hier: Per SSH auf RasPi einloggen


    oder evtl. über CMD Switch: https://github.com/luisiam/homebridge-cmdswitch2#readme

  • Von deinem Raspi aus könntest du das mit

    ssh username@ip-des-ubuntus "sudo service bluetooth start/stop"

    aus der Ferne auslösen.


    Ich hab's jetzt nicht getestet, aber so geht es grundsätzlich.

  • Hallo und vielen Dank,


    nur zum Verständnis. Ich habe keinen Raspi, sondern Homebridge läuft auf der Ubuntu-Installation auf der ich auch das Bluetooth aus/anschalten möchte. Also ein und dasselbe Gerät! Nur evtl. eben anderer Benutzer, wobei ich gerne hätte, dass Bluetooth generell deaktiviert wird.


    Problematisch erscheint mir ja nur, dass homebrige als Benutzer wohl keine Befehle machen kann, bei denen sudo-Rechte erforderlich sind. Ich möchte auch ungern im Klartext das root-Passwort in einer Klartext-Config eines Homebridge Plugins speichern.


    Wird dennoch die Lösung über SSH empfohlen oder gibt es da noch einen anderen Ansatz?

  • Zitat von epionier

    Problematisch erscheint mir ja nur, dass homebrige als Benutzer wohl keine Befehle machen kann, bei denen sudo-Rechte erforderlich sind.

    Wir können‘s ihm aber erlauben. Entweder für alle Befehle oder nur für diesen einen einzigen.


    Zitat von epionier

    Ich möchte auch ungern im Klartext das root-Passwort in einer Klartext-Config eines Homebridge Plugins speichern.

    Sehr löblich. Ich denke, wir finden eine sichere und befriedigende Lösung. Ich glaube, ich weiß schon wie.

  • Stefan: Wie kann man denn für einen bestimmten Befehl sudo-Rechte "sicher" erteilen?


    Ich habe mal überlegt und bin nur auf die Idee gekommen über:


    sudo passwd homebridge


    für den homebridge Benutzer ein (sicheres) Passwort zu vergeben und dann mit:


    sudo usermod -a -G sudo homebridge


    den homebridge Benutzer der Sudo-Gruppe hinzuzufügen. Damit hätte aber der Benutzer für alles sudo-Rechte und ich weiß nicht ob ich mit der Passwort-Änderung mir andere Probleme einhandele.


    Stefan


    Meinst du folgendes?


    Zitat

    Befehls-Alias

    Befehls-Aliase werden genauso erstellt, sie haben entsprechend ein führendes Cmnd_Alias. In diesem Beispiel wird eine Gruppe mit Namen DOWN erstellt, die mehrere Befehle zum herunterfahren, neu starten, usw. enthält:

    Code
    Cmnd_Alias DOWN = /sbin/shutdown, /sbin/reboot, /usr/sbin/pm-suspend, /usr/sbin/pm-hibernate

    Werden zusätzlich Parameter für den Befehl benötigt, müssen die Zeichen ",", "\", ":" und "=" mit einem Backslash "\" escaped werden, da die Syntaxprüfung sonst Fehler meldet und die Parameter nicht an den Befehl durchreicht. Das folgende Beispiel erstellt eine Gruppe namens HELLIGKEIT, die nur einen langen Befehl inkl. Parametern enthält:

    Code
    Cmnd_Alias HELLIGKEIT = /usr/bin/setpci -s 00\:02.0 f4.b\=ff

    Zugewiesen werden diese Befehls-Aliase, in diesem Beispiel der oben definierten Gruppe der PARTTIMERS, so:

    Code
    PARTTIMERS ALL = NOPASSWD: DOWN

    Nun können die User der Gruppe PARTTIMERS die Befehle der Gruppe DOWN ohne Passwortabfrage ausführen.

    Quelle: https://wiki.ubuntuusers.de/sudo/Konfiguration/



    Reicht es wenn ich als Cmnd_Alias z.B. BLUETOOTH z.B. "/usr/sbin/rfkill eintrage oder z.B. der von dir vorgeschlage Befehl "/etc/init.d/bluetooth"? Soweit ich sehe hätte rfkill den Vorteil der Systemweiten Abschaltung, also komplett ausgeschaltet. Wie wirkt sich denn /etc/init.d/bluetooth aus?


    Ich denke die Lösung ist einfacher wie über einen Cmnd_Alias:


    Öffnet man unter root mit "visudo /etc/sudoers" die Datei dann ist dort der Benutzer homebridge standardmäßig schon eingetragen mit bestimmten sudo-Rechten (z.B. für den erforderlichen shutdown) ohne Passwortabfrage.


    Ich habe dann einfach /usr/sbin/rfkill in der Befehlskette hinzugefügt und gespeichert. Nun kann der homebridge Benutzer dies ohne Passwort erledigen. Werde mich dann mal an cmdswitch2 machen.


    Danke Stefan und Patrick.


    Ach ja ein Frage ist noch. Wenn ich damit Bluetooth ausschalte und der Server startet neu, bleibt dann Bluetooth ausgeschaltet bis ich es wieder z.B über Siri starte?

    Einmal editiert, zuletzt von Spy () aus folgendem Grund: 2 Beiträge von epionier mit diesem Beitrag zusammengefügt.

  • Ich habe dann einfach /usr/sbin/rfkill in der Befehlskette hinzugefügt und gespeichert.

    Super. Das war auch meine Idee.

    Ach ja ein Frage ist noch. Wenn ich damit Bluetooth ausschalte und der Server startet neu, bleibt dann Bluetooth ausgeschaltet bis ich es wieder z.B über Siri starte?

    Nein, wahrscheinlich geht es wieder an. Um es dauerhafter auszuschalten, müsste der Befehl lauten:


    sudo systemctl stop bluetooth && sudo systemctl disable bluetooth. Der zweite Befehl nimmt dann den Start von Bluetooth aus der Boot-Sequenz heraus. Der umgekehrte Weg wäre dann sudo systemctl start bluetooth && sudo systemctl enable bluetooth.

  • Stefan Vielen Dank! Leider kann ich es erst ab Mitte der Woche mit den Befehlen konkret testen.


    CmdSwitch2 habe ich schon einmal konfiguriert und das scheint zumindest gut zu klappen.


    Einzig kann man als Name nicht "Bluetooth Server" verwenden bzw. bringt das nichts, denn wenn der Befehl dann lautet: "Hey Siri, schalte Bluetooth am Server ein" meldet Siri, dass Bluetooth am iPhone schon aktiv ist. Man muss dann sagen "Hey Siri, schalte den Server ein", dann schaltet er Bluetooth am Server.
    Auch bei dem Namen "Blauzahn Server" und "Hey Siri, schalte Blauzahn am Server ein", meldet er dass Bluetooth am iPhone schon aktiv sei.

  • Bitte den lieben sschuste richtig in deinen Beiträgen erwähnen, sonst bekommt nicht er, sondern irgendein anderer User, nämlich Stefan nun Benachrichtigungen. ;)

  • Man muss dann sagen "Hey Siri, schalte den Server ein", dann schaltet er Bluetooth am Server.

    Ich vermute, dein Schalter heißt "Server" mit dem du das Bluetooth an- und ausschalten möchtest.


    Ich habe in meinem Fall mehrere Schalter für Serverbefehle, die in der Gruppe "Server" sind. So kann sagen "Schalte die Downtime im 'Server' ein".