小米MiIO设备控制Homey App使用教程

小米MiIO设备控制Homey App使用教程

com.xiaomi-miioHomey app to control Mi Home devices that implement the miIO protocol and Xiaomi gateway child devices项目地址:https://gitcode.com/gh_mirrors/co/com.xiaomi-miio

1. 项目介绍

com.xiaomi-miio 是一个由jghaanstra开发的开源Homey应用程序,用于控制采用miIO协议的Mi Home智能设备以及Xiaomi网关下的子设备。这个App允许用户通过Homey智能家居平台管理包括WiFi设备和Aqara Zigbee设备在内的一系列小米生态产品。尽管如此,需要注意的是并非所有小米设备都支持非Mi Home app的远程控制,且可能存在设备兼容性限制。

2. 项目快速启动

安装Homey App

  1. 登录到你的Homey管理界面
  2. 搜索并找到 com.xiaomi-miio 应用程序。
  3. 点击 Install 进行安装。
  4. 在Homey应用中配置必要的设置,如获取Token(参见下文"获取Token"章节)。

获取Token

要使App正常工作,你需要获取一个设备的Token。遵循以下步骤:

  1. 在Mi Home应用程序中登录你的账户。

  2. 设置开发者选项:进入手机的系统设置,打开开发者选项,找到“MIUI版本”连续点击直到提示已启用开发者模式。

  3. 回到开发者选项,开启“USB调试”。

  4. 连接手机到电脑,通过ADB命令运行以下指令以获取Token:

    adb shell pm dump com.xiaomi.mitv.power | grep -Eo 'token\":\"([^\"]+)\"'
    

    从输出结果中复制Token。

  5. 在Homey应用的设备设置中输入该Token。

3. 应用案例和最佳实践

  • 自动化场景:你可以创建自动化,例如当家中的温湿度传感器检测到特定条件时,自动开启或关闭空调。
  • 定时任务:利用Homey的定时功能,可以设定设备在特定时间点执行特定操作,比如每天早上自动开灯。
  • 多设备联动:如果你有多个Xiaomi网关,可以将Zigbee设备合理分配,实现多区域联动控制。

4. 典型生态项目

  • Xiaomi Gateway:作为连接Zigbee设备的中心,配合Homey可方便地监控和控制Zigbee设备。
  • Aqara传感器:如门窗传感器、人体感应器等,可用于触发自动化事件。
  • Mi Smart BulbsSmart Plugs:通过Homey进行智能照明和插座的远程操控。

确保关注项目更新及官方文档,以获取最新的功能支持和故障排查信息。同时,参与社区讨论也能获取更多用户的使用经验和技巧。

com.xiaomi-miioHomey app to control Mi Home devices that implement the miIO protocol and Xiaomi gateway child devices项目地址:https://gitcode.com/gh_mirrors/co/com.xiaomi-miio

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用C#调用小米Miio协议并需要token的代码示例: ```csharp using System; using System.Security.Cryptography; using System.Text; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using RestSharp; namespace MiioClient { public class MiioClient { private readonly string _ip; private readonly string _token; public MiioClient(string ip, string token) { _ip = ip; _token = token; } public object Send(string method, params object[] parameters) { var request = new RestRequest("/", Method.POST); var data = new JObject { ["id"] = DateTime.Now.Ticks, ["method"] = method, ["params"] = parameters }; request.AddParameter("application/json", JsonConvert.SerializeObject(data), ParameterType.RequestBody); var client = new RestClient($"http://{_ip}:54321"); var response = client.Execute(request); if (response.IsSuccessful) { var json = JObject.Parse(response.Content); if (json.ContainsKey("result")) { return json["result"]; } else if (json.ContainsKey("error")) { throw new Exception(json["error"].ToString()); } else { throw new Exception("Invalid response from device."); } } else { throw new Exception($"Connection error: {response.StatusCode}"); } } public string GetToken() { var response = Send("miIO.info"); var json = JObject.Parse(response.ToString()); return json["token"].ToString(); } public static string ComputeMd5Hash(string input) { using (var md5 = MD5.Create()) { var inputBytes = Encoding.ASCII.GetBytes(input); var hashBytes = md5.ComputeHash(inputBytes); var sb = new StringBuilder(); for (int i = 0; i < hashBytes.Length; i++) { sb.Append(hashBytes[i].ToString("x2")); } return sb.ToString(); } } public static string GenerateToken(string deviceId, string deviceKey) { var timestamp = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000; var str = $"{timestamp}{deviceId}{deviceKey}"; return ComputeMd5Hash(str); } public static string GetDeviceId(string token) { var data = Convert.FromBase64String(token); var deviceId = Encoding.ASCII.GetString(data, 0, 16); return deviceId; } } } ``` 使用方法: ```csharp var client = new MiioClient("192.168.1.1", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); var result = client.Send("get_prop", new[] { "power" }); Console.WriteLine(result.ToString()); ``` 需要替换掉ip和token,并且注意修改调用的方法及参数。如果要获取设备的token,可以调用`GetToken`方法。如果需要生成token,可以使用`GenerateToken`方法。获取设备ID可以使用`GetDeviceId`方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孔祯拓Belinda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值