Stav baterie Apple Mac Magic Mouse + Apple Mac Keyboard v Home Assistant + automatizace

HA (Home Assistnat) integrace pro zjišťování aktuálního stavu baterie klávesnici (myši) je užitečná v případě, že tyto periferie používáte víc než často. V případě, že místo alkalických AA baterii nabíjíte (třeba Panasonic Eneloop Pro) pak to bude ještě častější výměna.

S testovanou vysokokapacitní 2000mAh+ baterii, je Apple MacOS bluetooth applet kevšemu dost nepřesný.

Po několika dnech od výměny baterie indikuje pořád 100% což samozřejmě není pravda (MacOS Catalina 10.15.5).

Výstup z registru pomocí příkazu ioreg v terminálu ukazuje podstatně nižší hodnoty. Terminál příkaz pro zjištění stavu nabití baterie (klávesnice i myši) boldem:

ioreg

mac keyboard

user@imac ~ % ioreg -c AppleBluetoothHIDKeyboard |grep '"BatteryPercent" ='                
    | | |   |   |   "BatteryPercent" = 66 

magic mouse

user@imac ~ % ioreg -n "BNBMouseDevice" | grep -i '"batterypercent" ='                     
    | | | | |   |   "BatteryPercent" = 58

Zápis lze vylepšit o extrakci čísla a to. Číslo bez balastu lze následně nekomplikovaně integrovat do samostatného Home Assistant senzoru. Nebo do panelu k ostatním senzorům stavu baterii (mobilní telefón, vibrace, kouř, vytopení, hluk, teplo, pohyb, vypínač..).

MacOS Home Assistant senzor

Použijeme již popsanou integraci command_line a taktéž bezheslové připojení pomocí SSH certifikátu popsané ve stejném textu. Nezapomeňte na nahrání certifikátu do MacOS, bez něj to fungovat nebude :)

Doplníme příkaz ioreg pomocí sed ‚s/[^0-9]*//g‘ tak aby se nám vracelo pouze číslo

ioreg -c AppleBluetoothHIDKeyboard | grep '"BatteryPercent" =' | sed 's/[^0-9]*//g'

totéž příkaz pro baterii v kouzelné myši :)

ioreg -n "BNBMouseDevice" | grep -i '"batterypercent" =' | sed 's/[^0-9]*//g'

a vytvoříme pomocí integrace command_shell senzor, který bude získané číslo parsovat do Home Assistant.

Senzor pro klávesnici

  - platform: command_line
    name: mac_keyboard_me
    command: ssh -i /config/id_rsa -o StrictHostKeyChecking=no -q user@192.168.1.111 ioreg -c AppleBluetoothHIDKeyboard | grep '"BatteryPercent" =' | sed 's/[^0-9]*//g'
    scan_interval: 01:00:00
    unit_of_measurement: "%"

Senzor pro myš

  - platform: command_line
    name: mac_mouse_me
    command: ssh -i /config/id_rsa -o StrictHostKeyChecking=no -q user@192.169.1.111 ioreg -n "BNBMouseDevice" | grep -i '"batterypercent" =' | sed 's/[^0-9]*//g'
    scan_interval: 01:00:00
    unit_of_measurement: "%"

Pro případ, že v panelu použijete kartu bez možnosti zadání jednotek, zadejte k senzoru i unit_of_measurement: %.
Pokud by senzor ve vašem prostředí z nějakého důvodu nefungoval, chybovou hlášku najdete v užitečném Home Assistant Log Vieweru.
Pro řešení můžete vše za command_line: dát do „..“ a upravit escape. Nebo použít místo

sed 's/[^0-9]*//g' tento zápis grep -o -E '[0-9]+'

Popis samotného příkazu použitého v senzoru

ssh -i /config/id_rsa -o StrictHostKeyChecking=no -q user@192.168.1.111 ioreg -c AppleBluetoothHIDKeyboard | grep '"BatteryPercent" =' | sed 's/[^0-9]*//g'
sshpříkaz pro připojení k SSH serveru
-idefinuje jméno souboru (klíče) id_rsa pro ověřění připojení a /config/.. místo odkud má byt načten
-ovypne striktní ověřování autority vydavatele certifikátu
-q„potichu“ potlačí případné chybové hlášky, které nemáme jak číst a které mohou přerušit spojení
user@ipuživatel + IP adresa Mac kde zjišťujeme stav baterie
ioregpříkaz pro zobrazení informace z I/O registru
-npřepínač ioreg příkazu pro specifikaci hledaného výrazu / zařízení
-cpřepínač ioreg příkazu pro specifikaci hledaného výrazu / zařízení
greppříkaz pro čtení a modifikaci vstupu (textu)
sedpříkaz pro čtení a modifikaci vstupu (textu)
Popis příkazu pro HA senzor MacOS Magic Mouse

Jak správně (existuje několik možností, v závislosti na pokročilosti úprav vaší Home Assistant instalace) zapsat senzor je popsáno v článku o scrape Home Assistant platformě.

V Home Assistant Lovelace přidáme vytvořený senzor vyhledáním použitého jména v konfiguraci senzoru – v našem případě mac_mouse_me + mac_keyboard_me. Ikony nastavíme pomocí standardního indexu hass:…, který obsahuje myš i klávesnici.

Apple MacOS Home Assistant
Apple MacOS Home Assistant

Výsledek může vypadat třeba takto

Apple MacOS Home Assistant UI
Apple MacOS Home Assistant UI

Automatizace

Automatizovat můžeme třeba oznámení nízkeho stavu baterie s upozorněním na LANnouncer, Telegram nebo do Home Assistant Android (iOS) aplikace v telefonu, pomocí jednoduché podmínky (Condition) v šablone automatizace.

Home Assistant automatizace
Home Assistant automatizace

Užitečné

Domovská stránka Home Assistant.
Home Assistant PeakHour MacOS integrace.

ICTIS.CZ