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:
Obsah
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'
ssh | příkaz pro připojení k SSH serveru |
-i | definuje jméno souboru (klíče) id_rsa pro ověřění připojení a /config/.. místo odkud má byt načten |
-o | vypne 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@ip | uživatel + IP adresa Mac kde zjišťujeme stav baterie |
ioreg | příkaz pro zobrazení informace z I/O registru |
-n | přepínač ioreg příkazu pro specifikaci hledaného výrazu / zařízení |
-c | přepínač ioreg příkazu pro specifikaci hledaného výrazu / zařízení |
grep | příkaz pro čtení a modifikaci vstupu (textu) |
sed | příkaz pro čtení a modifikaci vstupu (textu) |
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.

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

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.

Užitečné
Domovská stránka Home Assistant.
Home Assistant PeakHour MacOS integrace.