diff options
author | CoprDistGit <infra@openeuler.org> | 2023-06-20 05:46:06 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-06-20 05:46:06 +0000 |
commit | 9fa86bf9ccbf07d4a21d75d6e963ee5b3e6c1409 (patch) | |
tree | 9e5cb15b8c17f01536183d87fc501bb6e2d9446f | |
parent | f1e48b33f4f4dd26ab3d244f9939573a321221c4 (diff) |
automatic import of python-switchbot-mqttopeneuler20.03
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-switchbot-mqtt.spec | 675 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 677 insertions, 0 deletions
@@ -0,0 +1 @@ +/switchbot-mqtt-3.3.1.tar.gz diff --git a/python-switchbot-mqtt.spec b/python-switchbot-mqtt.spec new file mode 100644 index 0000000..98c19b4 --- /dev/null +++ b/python-switchbot-mqtt.spec @@ -0,0 +1,675 @@ +%global _empty_manifest_terminate_build 0 +Name: python-switchbot-mqtt +Version: 3.3.1 +Release: 1 +Summary: MQTT client controlling SwitchBot button & curtain automators, compatible with home-assistant.io's MQTT Switch & Cover platform +License: GPLv3+ +URL: https://github.com/fphammerle/switchbot-mqtt +Source0: https://mirrors.aliyun.com/pypi/web/packages/8e/50/5a0a3f4978929583cb4e06679e56eb80989a7ee87356bce50b2a7be69471/switchbot-mqtt-3.3.1.tar.gz +BuildArch: noarch + +Requires: python3-PySwitchbot +Requires: python3-bluepy +Requires: python3-paho-mqtt + +%description +# SwitchBot MQTT client + +[](https://github.com/psf/black) +[](https://github.com/fphammerle/switchbot-mqtt/actions) +[](https://coveralls.io/github/fphammerle/switchbot-mqtt?branch=master) +[](https://pypi.org/project/switchbot-mqtt/#history) +[](https://pypi.org/project/switchbot-mqtt/) + +MQTT client controlling [SwitchBot button automators](https://www.switch-bot.com/bot) +and [curtain motors](https://www.switch-bot.com/products/switchbot-curtain) + +Compatible with [Home Assistant](https://www.home-assistant.io/)'s +[MQTT Switch](https://www.home-assistant.io/integrations/switch.mqtt/) +and [MQTT Cover](https://www.home-assistant.io/integrations/cover.mqtt/) platform. + +## Setup + +```sh +$ pip3 install --user --upgrade switchbot-mqtt +``` + +## Usage + +```sh +$ switchbot-mqtt --mqtt-host HOSTNAME_OR_IP_ADDRESS --mqtt-enable-tls +# or +$ switchbot-mqtt --mqtt-host HOSTNAME_OR_IP_ADDRESS --mqtt-disable-tls +``` + +Use `sudo hcitool lescan` +or select device settings > 3 dots on top right in +[SwitchBot app](https://play.google.com/store/apps/details?id=com.theswitchbot.switchbot) +to determine your SwitchBot's **mac address**. + +### Button Automator + +Send `ON` or `OFF` to topic `homeassistant/switch/switchbot/aa:bb:cc:dd:ee:ff/set`. + +```sh +$ mosquitto_pub -h MQTT_BROKER -t homeassistant/switch/switchbot/aa:bb:cc:dd:ee:ff/set -m ON +``` + +The command-line option `--fetch-device-info` enables battery level reports on topic +`homeassistant/switch/switchbot/MAC_ADDRESS/battery-percentage` after every command. +The report may be requested manually by sending a MQTT message to the topic +`homeassistant/switch/switchbot/MAC_ADDRESS/request-device-info` (requires `--fetch-device-info`) + +### Curtain Motor + +Send `OPEN`, `CLOSE`, or `STOP` to topic `homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/set`: + +```sh +$ mosquitto_pub -h MQTT_BROKER -t homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/set -m CLOSE +``` + +Or a position in percent (0 fully closed, 100 fully opened) to topic +`homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/position/set-percent`: + +```sh +$ mosquitto_pub -h MQTT_BROKER -t homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/position/set-percent -m 42 +``` + +The command-line option `--fetch-device-info` enables position reports on topic +`homeassistant/cover/switchbot-curtain/MAC_ADDRESS/position` after `STOP` commands +and battery level reports on topic `homeassistant/cover/switchbot-curtain/MAC_ADDRESS/battery-percentage` +after every command. +These reports may be requested manually by sending a MQTT message to the topic +`homeassistant/cover/switchbot-curtain/MAC_ADDRESS/request-device-info` (requires `--fetch-device-info`) + +### Device Passwords + +In case some of your Switchbot devices are password-protected, +create a JSON file mapping MAC addresses to passwords +and provide its path via the `--device-password-file` option: +```json +{ + "11:22:33:44:55:66": "password", + "aa:bb:cc:dd:ee:ff": "secret", + "00:00:00:0f:f1:ce": "random string" +} +``` +```sh +$ switchbot-mqtt --device-password-file /some/where/switchbot-passwords.json … +``` + +### MQTT Authentication + +```sh +switchbot-mqtt --mqtt-username me --mqtt-password secret … +# or +switchbot-mqtt --mqtt-username me --mqtt-password-file /var/lib/secrets/mqtt/password … +``` + +⚠️ `--mqtt-password` leaks the password to other users on the same machine, +if `/proc` is mounted with `hidepid=0` (default). + +### MQTT Topic + +By default, `switchbot-mqtt` prepends `homeassistant/` to all MQTT topics. +This common prefix can be changed via `--mqtt-topic-prefix`: +```sh +# listens on living-room/switch/switchbot/aa:bb:cc:dd:ee:ff/set +switchbot-mqtt --mqtt-topic-prefix living-room/ … +# listens on switch/switchbot/aa:bb:cc:dd:ee:ff/set +switchbot-mqtt --mqtt-topic-prefix '' … +``` + +### Service Status Report + +After connecting to the MQTT broker, `switchbot-mqtt` will report `online` on topic `homeassistant/switchbot-mqtt/status`. +When disconnecting (graceful shutdown or unexpected loss of connection), `offline` will be reported on the same topic. + +## Home Assistant 🏡 + +### Rationale + +Why not use the official [SwitchBot integration](https://www.home-assistant.io/integrations/switchbot/)? + +I prefer not to share the host's **network stack** with home assistant +(more complicated network setup +and additional [netfilter](https://en.wikipedia.org/wiki/Netfilter) rules required for isolation). + +Sadly, `docker run --network host` even requires `--userns host`: +> docker: Error response from daemon: cannot share the host's network namespace when user namespaces are enabled. + +The docker image built from this repository works around this limitation +by explicitly running as an **unprivileged user**. + +The [official home assistant image](https://hub.docker.com/r/homeassistant/home-assistant) +runs as `root`. +This imposes an unnecessary security risk, especially when disabling user namespace remapping +(`--userns host`). +See https://github.com/fphammerle/docker-home-assistant for an alternative. + +### Setup + +```yaml +# https://www.home-assistant.io/docs/mqtt/broker/#configuration-variables +mqtt: + broker: BROKER_HOSTNAME_OR_IP_ADDRESS + # credentials, additional options… + +# https://www.home-assistant.io/integrations/switch.mqtt/#configuration-variables +switch: +- platform: mqtt + name: switchbot_button + command_topic: homeassistant/switch/switchbot/aa:bb:cc:dd:ee:ff/set + state_topic: homeassistant/switch/switchbot/aa:bb:cc:dd:ee:ff/state + # http://materialdesignicons.com/ + icon: mdi:light-switch + +cover: +- platform: mqtt + name: switchbot_curtains + command_topic: homeassistant/cover/switchbot-curtain/11:22:33:44:55:66/set + set_position_topic: homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/position/set-percent + state_topic: homeassistant/cover/switchbot-curtain/11:22:33:44:55:66/state +``` + +## Docker 🐳 + +Pre-built docker images are available at https://hub.docker.com/r/fphammerle/switchbot-mqtt/tags + +Annotation of signed tags `docker/*` contains docker image digests: https://github.com/fphammerle/switchbot-mqtt/tags + +```sh +$ docker build -t switchbot-mqtt . +$ docker run --name spelunca_switchbot \ + --userns host --network host \ + switchbot-mqtt:latest \ + switchbot-mqtt --mqtt-host HOSTNAME_OR_IP_ADDRESS +``` + +Alternatively, you can use `docker-compose`: +```yaml +version: '3.8' + +services: + switchbot-mqtt: + image: switchbot-mqtt + container_name: switchbot-mqtt + network_mode: host + userns_mode: host + environment: + - MQTT_HOST=localhost + - MQTT_PORT=1883 + #- MQTT_USERNAME=username + #- MQTT_PASSWORD=password + #- FETCH_DEVICE_INFO=yes + restart: unless-stopped +``` + +## Alternatives + +* https://github.com/binsentsu/switchbot-ctrl +* https://github.com/OpenWonderLabs/python-host/blob/master/switchbot_py3.py +* https://gist.github.com/aerialist/163a5794e95ccd28dc023161324009ed +* https://gist.github.com/mugifly/a29f34df7de8960d72245fcb124513c7 + + + + +%package -n python3-switchbot-mqtt +Summary: MQTT client controlling SwitchBot button & curtain automators, compatible with home-assistant.io's MQTT Switch & Cover platform +Provides: python-switchbot-mqtt +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-switchbot-mqtt +# SwitchBot MQTT client + +[](https://github.com/psf/black) +[](https://github.com/fphammerle/switchbot-mqtt/actions) +[](https://coveralls.io/github/fphammerle/switchbot-mqtt?branch=master) +[](https://pypi.org/project/switchbot-mqtt/#history) +[](https://pypi.org/project/switchbot-mqtt/) + +MQTT client controlling [SwitchBot button automators](https://www.switch-bot.com/bot) +and [curtain motors](https://www.switch-bot.com/products/switchbot-curtain) + +Compatible with [Home Assistant](https://www.home-assistant.io/)'s +[MQTT Switch](https://www.home-assistant.io/integrations/switch.mqtt/) +and [MQTT Cover](https://www.home-assistant.io/integrations/cover.mqtt/) platform. + +## Setup + +```sh +$ pip3 install --user --upgrade switchbot-mqtt +``` + +## Usage + +```sh +$ switchbot-mqtt --mqtt-host HOSTNAME_OR_IP_ADDRESS --mqtt-enable-tls +# or +$ switchbot-mqtt --mqtt-host HOSTNAME_OR_IP_ADDRESS --mqtt-disable-tls +``` + +Use `sudo hcitool lescan` +or select device settings > 3 dots on top right in +[SwitchBot app](https://play.google.com/store/apps/details?id=com.theswitchbot.switchbot) +to determine your SwitchBot's **mac address**. + +### Button Automator + +Send `ON` or `OFF` to topic `homeassistant/switch/switchbot/aa:bb:cc:dd:ee:ff/set`. + +```sh +$ mosquitto_pub -h MQTT_BROKER -t homeassistant/switch/switchbot/aa:bb:cc:dd:ee:ff/set -m ON +``` + +The command-line option `--fetch-device-info` enables battery level reports on topic +`homeassistant/switch/switchbot/MAC_ADDRESS/battery-percentage` after every command. +The report may be requested manually by sending a MQTT message to the topic +`homeassistant/switch/switchbot/MAC_ADDRESS/request-device-info` (requires `--fetch-device-info`) + +### Curtain Motor + +Send `OPEN`, `CLOSE`, or `STOP` to topic `homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/set`: + +```sh +$ mosquitto_pub -h MQTT_BROKER -t homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/set -m CLOSE +``` + +Or a position in percent (0 fully closed, 100 fully opened) to topic +`homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/position/set-percent`: + +```sh +$ mosquitto_pub -h MQTT_BROKER -t homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/position/set-percent -m 42 +``` + +The command-line option `--fetch-device-info` enables position reports on topic +`homeassistant/cover/switchbot-curtain/MAC_ADDRESS/position` after `STOP` commands +and battery level reports on topic `homeassistant/cover/switchbot-curtain/MAC_ADDRESS/battery-percentage` +after every command. +These reports may be requested manually by sending a MQTT message to the topic +`homeassistant/cover/switchbot-curtain/MAC_ADDRESS/request-device-info` (requires `--fetch-device-info`) + +### Device Passwords + +In case some of your Switchbot devices are password-protected, +create a JSON file mapping MAC addresses to passwords +and provide its path via the `--device-password-file` option: +```json +{ + "11:22:33:44:55:66": "password", + "aa:bb:cc:dd:ee:ff": "secret", + "00:00:00:0f:f1:ce": "random string" +} +``` +```sh +$ switchbot-mqtt --device-password-file /some/where/switchbot-passwords.json … +``` + +### MQTT Authentication + +```sh +switchbot-mqtt --mqtt-username me --mqtt-password secret … +# or +switchbot-mqtt --mqtt-username me --mqtt-password-file /var/lib/secrets/mqtt/password … +``` + +⚠️ `--mqtt-password` leaks the password to other users on the same machine, +if `/proc` is mounted with `hidepid=0` (default). + +### MQTT Topic + +By default, `switchbot-mqtt` prepends `homeassistant/` to all MQTT topics. +This common prefix can be changed via `--mqtt-topic-prefix`: +```sh +# listens on living-room/switch/switchbot/aa:bb:cc:dd:ee:ff/set +switchbot-mqtt --mqtt-topic-prefix living-room/ … +# listens on switch/switchbot/aa:bb:cc:dd:ee:ff/set +switchbot-mqtt --mqtt-topic-prefix '' … +``` + +### Service Status Report + +After connecting to the MQTT broker, `switchbot-mqtt` will report `online` on topic `homeassistant/switchbot-mqtt/status`. +When disconnecting (graceful shutdown or unexpected loss of connection), `offline` will be reported on the same topic. + +## Home Assistant 🏡 + +### Rationale + +Why not use the official [SwitchBot integration](https://www.home-assistant.io/integrations/switchbot/)? + +I prefer not to share the host's **network stack** with home assistant +(more complicated network setup +and additional [netfilter](https://en.wikipedia.org/wiki/Netfilter) rules required for isolation). + +Sadly, `docker run --network host` even requires `--userns host`: +> docker: Error response from daemon: cannot share the host's network namespace when user namespaces are enabled. + +The docker image built from this repository works around this limitation +by explicitly running as an **unprivileged user**. + +The [official home assistant image](https://hub.docker.com/r/homeassistant/home-assistant) +runs as `root`. +This imposes an unnecessary security risk, especially when disabling user namespace remapping +(`--userns host`). +See https://github.com/fphammerle/docker-home-assistant for an alternative. + +### Setup + +```yaml +# https://www.home-assistant.io/docs/mqtt/broker/#configuration-variables +mqtt: + broker: BROKER_HOSTNAME_OR_IP_ADDRESS + # credentials, additional options… + +# https://www.home-assistant.io/integrations/switch.mqtt/#configuration-variables +switch: +- platform: mqtt + name: switchbot_button + command_topic: homeassistant/switch/switchbot/aa:bb:cc:dd:ee:ff/set + state_topic: homeassistant/switch/switchbot/aa:bb:cc:dd:ee:ff/state + # http://materialdesignicons.com/ + icon: mdi:light-switch + +cover: +- platform: mqtt + name: switchbot_curtains + command_topic: homeassistant/cover/switchbot-curtain/11:22:33:44:55:66/set + set_position_topic: homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/position/set-percent + state_topic: homeassistant/cover/switchbot-curtain/11:22:33:44:55:66/state +``` + +## Docker 🐳 + +Pre-built docker images are available at https://hub.docker.com/r/fphammerle/switchbot-mqtt/tags + +Annotation of signed tags `docker/*` contains docker image digests: https://github.com/fphammerle/switchbot-mqtt/tags + +```sh +$ docker build -t switchbot-mqtt . +$ docker run --name spelunca_switchbot \ + --userns host --network host \ + switchbot-mqtt:latest \ + switchbot-mqtt --mqtt-host HOSTNAME_OR_IP_ADDRESS +``` + +Alternatively, you can use `docker-compose`: +```yaml +version: '3.8' + +services: + switchbot-mqtt: + image: switchbot-mqtt + container_name: switchbot-mqtt + network_mode: host + userns_mode: host + environment: + - MQTT_HOST=localhost + - MQTT_PORT=1883 + #- MQTT_USERNAME=username + #- MQTT_PASSWORD=password + #- FETCH_DEVICE_INFO=yes + restart: unless-stopped +``` + +## Alternatives + +* https://github.com/binsentsu/switchbot-ctrl +* https://github.com/OpenWonderLabs/python-host/blob/master/switchbot_py3.py +* https://gist.github.com/aerialist/163a5794e95ccd28dc023161324009ed +* https://gist.github.com/mugifly/a29f34df7de8960d72245fcb124513c7 + + + + +%package help +Summary: Development documents and examples for switchbot-mqtt +Provides: python3-switchbot-mqtt-doc +%description help +# SwitchBot MQTT client + +[](https://github.com/psf/black) +[](https://github.com/fphammerle/switchbot-mqtt/actions) +[](https://coveralls.io/github/fphammerle/switchbot-mqtt?branch=master) +[](https://pypi.org/project/switchbot-mqtt/#history) +[](https://pypi.org/project/switchbot-mqtt/) + +MQTT client controlling [SwitchBot button automators](https://www.switch-bot.com/bot) +and [curtain motors](https://www.switch-bot.com/products/switchbot-curtain) + +Compatible with [Home Assistant](https://www.home-assistant.io/)'s +[MQTT Switch](https://www.home-assistant.io/integrations/switch.mqtt/) +and [MQTT Cover](https://www.home-assistant.io/integrations/cover.mqtt/) platform. + +## Setup + +```sh +$ pip3 install --user --upgrade switchbot-mqtt +``` + +## Usage + +```sh +$ switchbot-mqtt --mqtt-host HOSTNAME_OR_IP_ADDRESS --mqtt-enable-tls +# or +$ switchbot-mqtt --mqtt-host HOSTNAME_OR_IP_ADDRESS --mqtt-disable-tls +``` + +Use `sudo hcitool lescan` +or select device settings > 3 dots on top right in +[SwitchBot app](https://play.google.com/store/apps/details?id=com.theswitchbot.switchbot) +to determine your SwitchBot's **mac address**. + +### Button Automator + +Send `ON` or `OFF` to topic `homeassistant/switch/switchbot/aa:bb:cc:dd:ee:ff/set`. + +```sh +$ mosquitto_pub -h MQTT_BROKER -t homeassistant/switch/switchbot/aa:bb:cc:dd:ee:ff/set -m ON +``` + +The command-line option `--fetch-device-info` enables battery level reports on topic +`homeassistant/switch/switchbot/MAC_ADDRESS/battery-percentage` after every command. +The report may be requested manually by sending a MQTT message to the topic +`homeassistant/switch/switchbot/MAC_ADDRESS/request-device-info` (requires `--fetch-device-info`) + +### Curtain Motor + +Send `OPEN`, `CLOSE`, or `STOP` to topic `homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/set`: + +```sh +$ mosquitto_pub -h MQTT_BROKER -t homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/set -m CLOSE +``` + +Or a position in percent (0 fully closed, 100 fully opened) to topic +`homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/position/set-percent`: + +```sh +$ mosquitto_pub -h MQTT_BROKER -t homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/position/set-percent -m 42 +``` + +The command-line option `--fetch-device-info` enables position reports on topic +`homeassistant/cover/switchbot-curtain/MAC_ADDRESS/position` after `STOP` commands +and battery level reports on topic `homeassistant/cover/switchbot-curtain/MAC_ADDRESS/battery-percentage` +after every command. +These reports may be requested manually by sending a MQTT message to the topic +`homeassistant/cover/switchbot-curtain/MAC_ADDRESS/request-device-info` (requires `--fetch-device-info`) + +### Device Passwords + +In case some of your Switchbot devices are password-protected, +create a JSON file mapping MAC addresses to passwords +and provide its path via the `--device-password-file` option: +```json +{ + "11:22:33:44:55:66": "password", + "aa:bb:cc:dd:ee:ff": "secret", + "00:00:00:0f:f1:ce": "random string" +} +``` +```sh +$ switchbot-mqtt --device-password-file /some/where/switchbot-passwords.json … +``` + +### MQTT Authentication + +```sh +switchbot-mqtt --mqtt-username me --mqtt-password secret … +# or +switchbot-mqtt --mqtt-username me --mqtt-password-file /var/lib/secrets/mqtt/password … +``` + +⚠️ `--mqtt-password` leaks the password to other users on the same machine, +if `/proc` is mounted with `hidepid=0` (default). + +### MQTT Topic + +By default, `switchbot-mqtt` prepends `homeassistant/` to all MQTT topics. +This common prefix can be changed via `--mqtt-topic-prefix`: +```sh +# listens on living-room/switch/switchbot/aa:bb:cc:dd:ee:ff/set +switchbot-mqtt --mqtt-topic-prefix living-room/ … +# listens on switch/switchbot/aa:bb:cc:dd:ee:ff/set +switchbot-mqtt --mqtt-topic-prefix '' … +``` + +### Service Status Report + +After connecting to the MQTT broker, `switchbot-mqtt` will report `online` on topic `homeassistant/switchbot-mqtt/status`. +When disconnecting (graceful shutdown or unexpected loss of connection), `offline` will be reported on the same topic. + +## Home Assistant 🏡 + +### Rationale + +Why not use the official [SwitchBot integration](https://www.home-assistant.io/integrations/switchbot/)? + +I prefer not to share the host's **network stack** with home assistant +(more complicated network setup +and additional [netfilter](https://en.wikipedia.org/wiki/Netfilter) rules required for isolation). + +Sadly, `docker run --network host` even requires `--userns host`: +> docker: Error response from daemon: cannot share the host's network namespace when user namespaces are enabled. + +The docker image built from this repository works around this limitation +by explicitly running as an **unprivileged user**. + +The [official home assistant image](https://hub.docker.com/r/homeassistant/home-assistant) +runs as `root`. +This imposes an unnecessary security risk, especially when disabling user namespace remapping +(`--userns host`). +See https://github.com/fphammerle/docker-home-assistant for an alternative. + +### Setup + +```yaml +# https://www.home-assistant.io/docs/mqtt/broker/#configuration-variables +mqtt: + broker: BROKER_HOSTNAME_OR_IP_ADDRESS + # credentials, additional options… + +# https://www.home-assistant.io/integrations/switch.mqtt/#configuration-variables +switch: +- platform: mqtt + name: switchbot_button + command_topic: homeassistant/switch/switchbot/aa:bb:cc:dd:ee:ff/set + state_topic: homeassistant/switch/switchbot/aa:bb:cc:dd:ee:ff/state + # http://materialdesignicons.com/ + icon: mdi:light-switch + +cover: +- platform: mqtt + name: switchbot_curtains + command_topic: homeassistant/cover/switchbot-curtain/11:22:33:44:55:66/set + set_position_topic: homeassistant/cover/switchbot-curtain/aa:bb:cc:dd:ee:ff/position/set-percent + state_topic: homeassistant/cover/switchbot-curtain/11:22:33:44:55:66/state +``` + +## Docker 🐳 + +Pre-built docker images are available at https://hub.docker.com/r/fphammerle/switchbot-mqtt/tags + +Annotation of signed tags `docker/*` contains docker image digests: https://github.com/fphammerle/switchbot-mqtt/tags + +```sh +$ docker build -t switchbot-mqtt . +$ docker run --name spelunca_switchbot \ + --userns host --network host \ + switchbot-mqtt:latest \ + switchbot-mqtt --mqtt-host HOSTNAME_OR_IP_ADDRESS +``` + +Alternatively, you can use `docker-compose`: +```yaml +version: '3.8' + +services: + switchbot-mqtt: + image: switchbot-mqtt + container_name: switchbot-mqtt + network_mode: host + userns_mode: host + environment: + - MQTT_HOST=localhost + - MQTT_PORT=1883 + #- MQTT_USERNAME=username + #- MQTT_PASSWORD=password + #- FETCH_DEVICE_INFO=yes + restart: unless-stopped +``` + +## Alternatives + +* https://github.com/binsentsu/switchbot-ctrl +* https://github.com/OpenWonderLabs/python-host/blob/master/switchbot_py3.py +* https://gist.github.com/aerialist/163a5794e95ccd28dc023161324009ed +* https://gist.github.com/mugifly/a29f34df7de8960d72245fcb124513c7 + + + + +%prep +%autosetup -n switchbot-mqtt-3.3.1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-switchbot-mqtt -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 3.3.1-1 +- Package Spec generated @@ -0,0 +1 @@ +c5e12003be36fa795b6b96e09288f477 switchbot-mqtt-3.3.1.tar.gz |