Das Problem bei der Verwendung von SwitchBot ist, dass der Akku leer ist. Sie können den Akkuladestand überprüfen, indem Sie die offizielle App öffnen. Sie sehen ihn jedoch nicht täglich und sind damit vertraut, da der Akku leer ist, wenn Sie ihn verwenden möchten. Es ist eine Frage von Leben und Tod, weil ich damit die automatische Sperre entsperre.
Es gibt Befehle wie Press in Python, die vom offiziellen SwitchBot veröffentlicht wurden, aber es gibt nichts, um den verbleibenden Akkuladestand zu ermitteln. Als ich nachforschte, dass es nicht daran lag, dass ich es mit der App bekommen konnte, fand ich es. https://github.com/RoButton/switchbotpy
Ich war einmal damit zufrieden, aber ich habe beschlossen, dem offiziellen Python einen Befehl hinzuzufügen, der stabil ist, weil es Zeiten gibt, in denen ich ihn nicht stabil bekommen kann.
Der Befehl zum Erfassen von Einstellungsinformationen wurde hinzugefügt. Es wird in meinem vom Beamten gegabelten Repository veröffentlicht. https://github.com/kanon700/python-host/tree/feature/add_get_settings
Der Korrekturinhalt ist wie folgt
switchbot_py3.py
class Driver(object):
handle = 0x16
notif_handle = 0x13
commands = {
'press' : '\x57\x01\x00',
'on' : '\x57\x01\x01',
'off' : '\x57\x01\x02',
'settings' : '\x57\x02',
}
def run_and_res_command(self, command):
self.req.write_by_handle(self.handle, self.commands[command])
return self.req.read_by_handle(self.notif_handle)
def get_settings_value(self, value):
value = struct.unpack('B' * len(value[0]), value[0])
settings = {}
settings["battery"] = value[1]
settings["firmware"] = value[2] / 10.0
settings["n_timers"] = value[8]
settings["dual_state_mode"] = bool(value[9] & 16)
settings["inverse_direction"] = bool(value[9] & 1)
settings["hold_seconds"] = value[10]
return settings
Mit einem solchen Skript können Sie den verbleibenden Akkuladestand ermitteln.
SwitchBot_Battery_Get.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from switchbot_py3 import Driver
switchbot = 'xx:xx:xx:xx:xx:xx' #Switchbot-MAC-Adresse
def main():
bot = Driver(device=switchbot)
bot.connect()
value = bot.run_and_res_command('settings')
settings = bot.get_settings_value(value)
print("battery:" + str(settings["battery"]))
if __name__ == '__main__':
main()
das ist alles
Recommended Posts