broadlink的智能插座sp2简单分析--更新

2023-11-03 23:59

本文主要是介绍broadlink的智能插座sp2简单分析--更新,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载请保留作者信息:星辉斑斓http://blog.csdn.net/hnmsky

最近入手一个broadlink的智能插座sp2.图就不上了,官网上有.拿到手第一印象觉得有些大,插在插排

上要占好几个位置.功能上wifi配置可以用smart config和ap模式,还是不错的.而且有功率统计,估计

里面有测量电流电压的芯片.

至于手机上的app,目前不是很完善.首先,这个app极其耗电,即使在后台也是.而且这个app有时会

卡住,然后从此再也搜索不到设备,要清除数据才可以,当时我以为坏了差点去退货.所以我准备自己写

程序来控制开关,这个也可以自己订制各种应用场景,毕竟等这个app完善还有段时间.

 

简单研究了下sp2, 有兴趣的可以再深入下.

配置wifi部分我觉得没有必要hack了, 感兴趣的可以参考[1],毕竟配置一次就可以了.


至于指令,无非就是开和关,这个用wireshark抓包就可以看出来.


指令是每次配置完都会变化,所以配置后就要重新抓包更改。所以抓的包只能自己用。

下面我说一下如何抓包:

  最好用PC通过网线来连接路由器,这样抓的包不是加密的。

1:在路由器上查看sp2的ip, 假设为192.168.0.102

2:如果你的电脑的网卡支持monitor模式,可直接看第4条。如果不支持moniter模式,现在自己电脑上的80端口运行个udp的echo server,就是把所有80端口收到的udp包都原封不动的发送回原来的发送端。我写了程序(server.c)可以参考。

3:把自己电脑ip改为和sp2一样,假设为192.168.0.102。

4:用wireshark抓包,可以看到开关指令其实就是2个udp包(开一个,关一个),其中data长度是72byte。大概类似于这个样子(0x5a,0xa5,0xaa,0x55,0x5a,0xa5,0xaa,0x55,0x00,0x00,0x00,0x00,0x00,0x00......)


这个是发送开指令时抓的包,其中192.168.0.101是nexus7 的ip, 192.168.0.102是开关的ip. 

可以看到手机发送一个udp包,然后sp2收到后会把这个把发送给手机.

5:要写这个程序就很简单了,把这个包(72byte)发出去,然后再收到包就成功了. 用python写了个示例代码,见sample.py。

因此要你自己抓包,然后用抓到数据,类似于这种(0x5a,0xa5,0xaa,0x55,0x5a,0xa5,0xaa,0x55,0x00,0x00,0x00,0x00,0x00,0x00......),替换掉程序里的on 和 off两个数组。




关于功率,可以看到sp2一直在给手机发包,功率信息应该在这里.不过这个就不研究了.


不知道像定时休眠一类的功能是用手机发命令还是外部服务器来发,但我没有发现sp2会经常

的连接外部服务器.(开始时会连一次的,应为需要NAT,这个可以参考[2])



代码在

http://download.csdn.net/detail/hnmsky/7434419 去掉了积分要求。

server.c 是echo server

sample.py 示例代码

我以前放的代码别人不能用的,所以要用这个新的,并自己抓包。现在sdk不开放给个人,所以就用这个方法凑合着用了,只能控制开关,不能看功率。

一些问题的更新:

1:抓包后,不能重新配置sp2去连接路由器,也不要去改路由器的配置(改密码啥的),这肯定是不行的。另外抓包不要通过wifi去抓加密的数据,通过eth口去抓解密好的数据。

2:抓的包要是点了手机App上开关按钮后,手机发出来的udp包,你点一次按钮,只会发3个udp的包。  不要去抓那个每过一段时间就会发的包,那个是用来查询状态的。


参考文献:

1:smartconfig

http://depletionregion.blogspot.ch/2013/10/cc3000-smart-config-transmitting-ssid.html

2:NAT

http://en.wikipedia.org/wiki/Network_address_translation


这篇关于broadlink的智能插座sp2简单分析--更新的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/341793

相关文章

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

Linux中的more 和 less区别对比分析

《Linux中的more和less区别对比分析》在Linux/Unix系统中,more和less都是用于分页查看文本文件的命令,但less是more的增强版,功能更强大,:本文主要介绍Linu... 目录1. 基础功能对比2. 常用操作对比less 的操作3. 实际使用示例4. 为什么推荐 less?5.

基于Python实现智能天气提醒助手

《基于Python实现智能天气提醒助手》这篇文章主要来和大家分享一个实用的Python天气提醒助手开发方案,这个工具可以方便地集成到青龙面板或其他调度框架中使用,有需要的小伙伴可以参考一下... 目录项目概述核心功能技术实现1. 天气API集成2. AI建议生成3. 消息推送环境配置使用方法完整代码项目特点