运行v3+Itead固件的Sonoff设备接口。

pysonofflanr3的Python项目详细描述


Latest PyPi ReleaseSupported Python VersionsBuild StatusDocumentation StatusCode CoverageHas Wheel PackageUpdatesPython 3Buy Me A Coffee

在局域网模式下控制运行原始固件的Sonoff设备

控制运行V3+Itead固件的Sonoff交换机(在3.0、3.0.1、3.1.0、3.3.0上测试),本地(局域网模式)。在

这只适用于运行V3+库存(Itead/eWeLink)固件的Sonoff设备。对于V1.8.0到V2.6.1的用户,请使用PySonoffLAN

该模块提供了一种与Sonoff智能家居设备接口的方法, Sonoff基本型开关(例如Sonoff智能开关), 以及墙开关(例如Sonoff Touch),当这些设备处于LAN模式时。在

LAN模式是制造商Itead引入的一项功能,允许操作 当他们的服务器不可用时。 更多详细信息可在eWeLink LAN Mode guide中找到。在

自2018年年中以来,固件Itead已随大多数Sonoff设备一起提供 提供了此功能,允许直接控制设备 在本地网络上使用端口8081上的WebSocket连接。在

特点

  • 发现本地网络上的所有设备
  • 读取设备状态
  • 打开/关闭设备
  • 监听设备宣布的状态变化(例如通过物理交换机)
  • 启动微动/瞬时装置,具有可变接通时间(例如1s)

安装

$ pip install pysonofflanr3

命令行用法

^{pr2}$

用法示例

$ pysonofflan discover
2019-01-31 00:45:32,074 - info: Attempting to discover Sonoff LAN Mode devices on the local network, please wait...
2019-01-31 00:46:24,007 - info: Found Sonoff LAN Mode device at IP 192.168.0.77

$ pysonofflan --host 192.168.0.77 state
2019-01-31 00:41:34,931 - info: Initialising SonoffSwitch with host 192.168.0.77
2019-01-31 00:41:35,016 - info: == Device: 10006866e9 (192.168.0.77) ==
2019-01-31 00:41:35,016 - info: State: OFF

$ pysonofflan --host 192.168.0.77 on
2019-01-31 00:49:40,334 - info: Initialising SonoffSwitch with host 192.168.0.77
2019-01-31 00:49:40,508 - info:
2019-01-31 00:49:40,508 - info: Initial state:
2019-01-31 00:49:40,508 - info: == Device: 10006866e9 (192.168.0.77) ==
2019-01-31 00:49:40,508 - info: State: OFF
2019-01-31 00:49:40,508 - info:
2019-01-31 00:49:40,508 - info: New state:
2019-01-31 00:49:40,508 - info: == Device: 10006866e9 (192.168.0.77) ==
2019-01-31 00:49:40,508 - info: State: ON

库使用

所有常见的共享功能都可以通过SonoffSwitch类获得:

x = SonoffSwitch("192.168.1.50")

在实例化SonoffSwitch类时,一个连接是 已初始化并填充设备状态,但不执行进一步的操作。在

对于大多数用例,您将希望使用callback_after_update 参数在连接后对设备执行某些操作 例如,初始化:

async def print_state_callback(device):
    if device.basic_info is not None:
        print("ON" if device.is_on else "OFF")
        device.shutdown_event_loop()

SonoffSwitch(
    host="192.168.1.50",
    callback_after_update=print_state_callback
)

此示例仅连接到设备,打印当前是否 “开”或“关”,然后关闭连接。注意,回调必须是 异步。在

特定于模块的错误将作为异常引发,并且是预期的 由图书馆用户处理。在

许可证

  • 免费软件:麻省理工学院许可证

学分

此包是用Cookiecutteraudreyr/cookiecutter-pypackage项目模板创建的。在

历史

1.1.4(2020-03-29)

1.1.3(2020-02-16)

  • 修正了重新连接的问题,在状态改变之前设备仍然不可用
  • 修复了条形设备的重试代码

1.1.2(删除版本)

1.1.1(2020-02-01)

  • 优化后的zeroconf版本有一些不同的行为
  • 改进了对意外错误的错误处理

1.1.0(2020-01-10)

  • PyPI的第一个版本。在
  • 从Pyonofflan包中分出(由Andrew Beveridge提供)
  • 在v3itead固件上使用mdn进行服务发现,REST用于服务调用
  • 支持DIY模式和“标准”模式(对于标准模式,需要获取API密钥,例如通过嗅探LAN)
  • 支持所有已知的设备进行切换,尽管此时没有添加传感器

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
无JPA的纯Hibernate ORM java SpringBoot配置   安卓会生成一组唯一的java数字   java我的自定义阵列列表每次启动时都会崩溃我不确定为什么会一直崩溃   Java继承;将子类传递给超类的抽象方法   java从没有if语句的数组中获取instanceof type   java中使用对象的温度转换   存储库接口的JavaSpringDataMongoDBeanXML配置   java JAXWS为iBM websphere、iBM web服务客户端添加寻址   数组试图返回Java中两个对象的面积之和   apache Spark java:columnNameOfCorruptRecord和badRecordsPath在加载csv时不工作   java无法创建。txt文件   java Hibernate与MySQL插入查询不一致   不考虑java Hazelcast分布式地图的最大大小   bash Java如何在父进程中设置环境变量