Основываясь на других ответах и давая большинство / все кусочки головоломки, но не полное решение:
- Не забудьте проверить, хотите ли вы, чтобы Bluetooth-устройства будили ваш Mac
- Если вы этого не хотите, снимите флажок в системных настройках и проверьте, сохраняется ли нежелательное поведение (оно находится в
Bluetooth
→ Advanced…
→ Allow Bluetooth devices to wake this computer
)
- Если вам нужно / вы хотите разбудить ваш Mac с помощью Bluetooth-устройств или это продолжается, несмотря на отключение этой опции, выполните следующие действия:
Установите вспомогательную программу для проверки спящего режима системы (если вы хотите различить только открытую / закрытую крышку без спящего режима Mac, кажется, что в настоящее время нет простого способа - т.е. я не узнал, как это обнаружить), и переключите Bluetooth в зависимости от сна / бодрствования событий.
Помощники по обнаружению сна / бодрствования (проверьте различные варианты в этом посте):
См. Также этот пост о « Автоматическом включении или выключении Bluetooth в зависимости от текущей сети (MBP под управлением Lion) » с упоминанием ControlPlane
Переключить Bluetooth из скриптов:
Моя рекомендация: установить blueutil через доморощенный
Беги blueutil power 0
спать
И blueutil power 1
после пробуждения
Теперь о моём вкладе в эту проблему: если перерыв в питании вызывает событие пробуждения, попробуйте этот сценарий для пробуждения, чтобы различить другие причины пробуждения и открытие крышки:
#!/bin/bash
limitSec=3
currentEpoch=$(date "+%s")
wakeEpoch=$(cat /var/log/system.log | grep LidOpen | tail -n 1 | date -j -f "%b %d %T" "$(cut -c1-15)" "+%s")
wakeSeconds=$(( $currentEpoch - $wakeEpoch ))
if [[ $wakeSeconds -lt $limitSec ]]; then
logger "Enabling bluetooth again due to lid open"
blueutil power 1
fi
Он устанавливает тайм-аут в 3 секунды (limitSec), получает текущее время и последний раз включения с помощью Wake reason: EC.lidOpen
, и если это было менее 3 секунд назад, он снова включит Bluetooth