Holen Sie sich den Batteriestand von SwitchBot mit Python

Einführung

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.

Offizieller Python-Fix

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

Skript zur Erfassung des Batteriestands

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

Holen Sie sich den Batteriestand von SwitchBot mit Python
Erhalten Sie Wechselkurse von offenen Wechselkursen in Python
Holen Sie sich mit Python die Niederschlagswahrscheinlichkeit aus XML
Abrufen des Metrikverlaufs von MLflow in Python
Holen Sie sich Datum in Python
Holen Sie sich mit Python Zeitreihendaten von k-db.com
Holen Sie sich nur Artikel von Webseiten in Python
Holen Sie sich YouTube-Kommentare in Python
Holen Sie sich letzten Monat in Python
OCR aus PDF in Python
Holen Sie sich mit Python Daten vom GPS-Modul mit 10 Hz
Holen Sie sich die Terminalgröße in Python
Holen Sie sich explizit EOF in Python
Holen Sie sich Evernote-Notizen in Python
Holen Sie sich japanische Synonyme mit Python
Holen Sie sich Ihre Herzfrequenz von der Fitbit-API in Python!
Rufen Sie den Wert ab, während Sie den Standardwert aus dict in Python angeben
Drücken Sie in Python auf REST, um Daten von New Relic abzurufen
Ruft Makrokonstanten aus der C (++) - Headerdatei (.h) in Python ab
Nachricht vom ersten Offset mit Kafka Consumer in Python abrufen
Extrahieren Sie mit Python Text aus Bildern
Holen Sie sich ein Kommunikationsmemo in Python
Python Holen Sie sich das kommende Wetter von der Wetter-API
Holen Sie sich den Desktop-Pfad in Python
Holen Sie sich den Hostnamen in Python
Beginnen Sie mit Python mit Blender
Extrahieren Sie mit Python Zeichenfolgen aus Dateien
So erhalten Sie eine Zeichenfolge aus einem Befehlszeilenargument in Python
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Holen Sie sich HTML von Element mit Python-Selen
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Holen Sie sich Suica Balance in Python (mit libpafe)
Holen Sie sich Tastenanschläge von / dev / input (python evdev)
Wiederbelebt von "kein Internetzugang" in Python
Verhindern Sie den doppelten Start von cron in Python
Wie bekomme ich Stacktrace in Python?
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
Laden Sie Bilder von der URL-Liste in Python herunter
Holen Sie sich ein Zeichen für Conoha mit Python
Beginnen wir mit TopCoder in Python (Version 2020)
Generieren Sie eine Klasse aus einer Zeichenfolge in Python
Generieren Sie mit Python eine C-Sprache aus dem S-Ausdruck
Ruft die EDINET-Codeliste in Python ab
In Python von Markdown in HTML konvertieren
Holen Sie sich die Cloud-Protokollierung in Python in 10 Minuten
[Python] Holen Sie sich die Hauptfarbe aus dem Screenshot
Entfernen Sie DICOM-Bilder in Python
Holen Sie sich Ihre eigene IP-Adresse in Python
So erhalten Sie den Wert aus dem Parameterspeicher in Lambda (mit Python)
Rufen Sie Optionen in Python sowohl aus JSON-Dateien als auch aus Befehlszeilenargumenten ab
Python in der Optimierung
CURL in Python
Holen Sie sich den Inhalt von Git Diff aus Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Holen Sie sich das Wetter in Osaka über Web-API (Python)
Metaanalyse in Python
Unittest in Python