https://www.v2ex.com/t/336563#reply56
https://github.com/qoli/MiHomePlus
http://staticshare.5mlstudio.com/img-5168-mov(2017-06-20T08:13:45+08:00).mov
天氣開始熱起來了,某日突發奇想,買了一個 NanoPi。


後來數日后,歡喜地買了一個小米的空調伴侶。悲劇就從而而生了。
小米的空調伴侶,竟然是不支持裝好的 Homebridge ! 我無法接受的我,開始了浪費生命的折騰。

鑒於我只是一個設計師而言,我首先想到的辦法,是基於 Android ADB 指令,透過數據線去操作 Android 手機作為代理。 在大約 30 分鐘 ~ 60 分鐘后,我寫出了像樣的腳本了。

在集成到 Homebridge 時候就遇到大問題了。調用腳本操作時候一切都好,但是就是無法在 HomeKit 使用。我上網檢查了文檔,發現 HomeKit 最長允許 2s 以內的指令,然而,我這個模擬方案,指令時長達到 30s 以上。 所以,只能放棄此 ADB 方案。

我作為人生從沒開發過 Android / iOS 的設計師。只會前端 / Nodejs / PHP 這三個語言。 經過我一番搜索之後,我看到 Accessibility 相關的代碼好像特別簡單。 所以,我決定下載一個 Android Studio 來啟動我的 Android 之旅。

經過了 2 天時間,我終於把能用的 Android App 寫好了。我沒有覺得太多坑,我只是覺得英文資料太多,看起來很累而已。除了每次編譯的速度真的很慢之外,其他都還挺好的。
在寫的過程中,我都很少去看文檔,主要依賴 Google 知識點,閱讀別人的源代碼,很快地,就把核心功能組裝好了。又花了 120 分鐘時間,把服務器通信部分也組裝好了。
又花了好多好多時間,把 Socket IO 也折騰好了。
Nodejs 部分最為簡單了,畢竟還是熟悉的嘛~簡單的接口就折騰好了。

Homebridge 使用了 homebridge-switcheroo 作為通信插件,搞定。

一切的都搞定了,除了程序配置化
http://staticshare.5mlstudio.com/img-5168-mov(2017-06-20T08:13:45+08:00).mov


我在小米的手機測試到無奈了。 就拿錘子測試了一下。
在錘子相同的代碼運作正常。很久很久也正常。
後來經過刷 ROM 等一系列無意義的掙扎之後,突發奇想地在 Google 搜索了「MIUI Socket 5 分鐘 斷線」。竟然被我找到一個叫做「神隱模式」的說明。

原文:https://kknews.cc/tech/zpav83.html


國產機的坑,真的好難猜得到啊。
|  |      1mritd      2017-06-20 09:05:24 +08:00 via iPhone 老铁双击 666 完美,周末折腾 | 
|  |      2mritd      2017-06-20 09:06:40 +08:00 via iPhone 讲真,Ios 的米家跟屎一样,动不动闪退 | 
|  |      3cctrv OP | 
|      4imyip      2017-06-20 09:11:08 +08:00 佩服!! | 
|  |      5designer      2017-06-20 09:15:19 +08:00 via iPhone  1 极客美少女! | 
|      6scnace      2017-06-20 09:25:42 +08:00 via Android  7 我拿起了我布满灰尘的树莓派 拍了拍上面的灰  叹了口气 又放下了… | 
|  |      7brucewzp      2017-06-20 09:30:29 +08:00 via iPhone 前后端都写了,最后你跟我说你只是一个设计师?[滑稽]好东西赞一个[认真脸] | 
|  |      8abmin521      2017-06-20 09:40:57 +08:00 via Android nano pi 不烧手吗 | 
|  |      9crossoverJie      2017-06-20 09:44:03 +08:00 全栈现在包含设计师啦 现在的小姐姐都这么 6 了嘛 😱 | 
|      10manihome      2017-06-20 09:46:05 +08:00 全栈不仅包设计师还包产品。。。 | 
|  |      11alexskywin      2017-06-20 10:00:27 +08:00 不会安卓开发的前端不是设计师,完美诠释 | 
|      12kely      2017-06-20 10:00:40 +08:00 我是一个假的前端,徘徊在被设计师支配的恐惧中 | 
|      13aksoft      2017-06-20 10:07:23 +08:00 现在的女孩子这么厉害??谁能罩得住 | 
|  |      14cctrv OP | 
|  |      15gongjianwei      2017-06-20 10:34:16 +08:00 via Android 非常感谢 | 
|  |      16graetdk      2017-06-20 10:43:16 +08:00 哈哈哈,厉害~ | 
|  |      17aliuwr      2017-06-20 11:13:22 +08:00 要脸不,还给不给中低端的前端 /后端 /产品活路? | 
|      18Betacoefficient      2017-06-20 11:16:07 +08:00 @aliuwr 你丢脸不,能力居然差,还觉得人能力强,还要人给你活路,你求她啊,哈哈哈 | 
|  |      19Exyn0s      2017-06-20 11:30:02 +08:00 via Android 小姐姐好強 | 
|  |      20tomczhen      2017-06-20 12:02:43 +08:00 via Android 嗯,其实 pi 也可以省掉 http://post.smzdm.com/p/553097 | 
|  |      21run2      2017-06-20 13:37:46 +08:00 厉害了, 服务器 IP 端口什么的 可以通过 bonjour 来广播吧 另求推荐个小巧的 android 盒子来做管理中枢 | 
|      22qceytzn      2017-06-20 14:31:12 +08:00 米家这个东西联网吗?你不担心隐私泄露? | 
|  |      23amorphobia      2017-06-20 15:07:04 +08:00 @cctrv 如果我理解没错的话,没有 Android 设备的情况下,不小心买了“空调伴侣”,就不适用这个方法了,对吗? | 
|  |      24queuey      2017-06-20 15:11:53 +08:00 这个界面设计,佩服之极 | 
|  |      26mysticzt123      2017-06-20 17:21:31 +08:00 这不是全栈   是全能  好厉害的小姐姐 | 
|  |      27Tunar      2017-06-20 18:21:10 +08:00 via Android 界面好看 | 
|  |      28U7Q5tLAex2FI0o0g      2017-06-20 18:24:41 +08:00 啊  好厉害的小姐姐 | 
|  |      2921grams      2017-06-20 18:32:03 +08:00 一晚? | 
|  |      30cctrv OP | 
|  |      31cctrv OP | 
|  |      32doggg      2017-06-20 18:54:55 +08:00 人漂亮,设计漂亮,技术也漂亮。膝盖给你就是。 | 
|  |      33doggg      2017-06-20 18:56:56 +08:00 有一群很棒的同事一起打理喜欢的事业应该每天都很有趣吧。 | 
|  |      34cctrv OP @qceytzn 洩漏吧~我大約 1/3 的密碼還是社工庫能找到的⋯😰 對個人隱私沒什麼在乎的普通玩家⋯😂 | 
|      36AsisA      2017-06-20 19:01:26 +08:00 via Android 233,这真是「不会写程序的设计师不是好作家」了,设计好,程序好,文章也好 | 
|  |      38amorphobia      2017-06-20 20:09:14 +08:00 @cctrv 别替换成 Android 啊,我有两个 pi 却没一个 Android [捂脸] | 
|  |      39meathill      2017-06-20 20:12:29 +08:00 极客妹子很强力 | 
|  |      40onion83      2017-06-20 21:05:05 +08:00 我也希望拥有 “人体感情器” ! | 
|  |      41MASAILA      2017-06-20 21:07:25 +08:00 很强啊 看开头 还以为会是哪家开发平台的软问 | 
|  |      42aristotll      2017-06-20 21:08:26 +08:00 amazing | 
|      43imyip      2017-06-20 21:26:19 +08:00 via iPhone 我也希望像楼主那样打扮成漂漂亮亮 | 
|      44mingyun      2017-06-20 22:35:50 +08:00 厉害了 | 
|  |      45leopku      2017-06-20 22:48:36 +08:00 666 的小姐姐 | 
|  |      46kingcos      2017-06-20 23:38:42 +08:00 真厉害。。 | 
|  |      47mnsw      2017-06-21 00:41:31 +08:00 设计师,,, | 
|  |      48huyinjie      2017-06-21 01:26:16 +08:00 via iPhone 好强 | 
|  |      49flowerains      2017-06-21 01:39:29 +08:00 很厉害了,关键是有心专研技术 | 
|      50yangff      2017-06-21 02:44:37 +08:00 感觉抓个包会比较简单吧…  虽然米家的设备经常有一种搞法是先发到小米的服务器再推送下来… 安全性做得还算不错的… | 
|  |      51newton108      2017-06-21 03:01:01 +08:00 完爆 99% v2exer | 
|  |      52kn007      2017-06-21 07:52:44 +08:00 via Android 扎心了,老铁。小姐姐,你为何这么 6 | 
|  |      53Yien      2017-06-21 07:54:33 +08:00 via iPhone 佩服! | 
|  |      54aleung      2017-06-21 08:09:22 +08:00 via Android 树莓派装过 home assistant,但小米的开放性太低,玩不了什么,就放弃了。没想过通过无障碍特性可以模拟人工操作 mihome 应用,这个思路超赞! | 
|  |      55badreamm      2017-06-21 08:33:18 +08:00 一晚時間從沒寫過 Android 和 JAVA 到學會入門  扎心了 老姐 | 
|  |      56steveshi      2017-06-21 09:55:45 +08:00 这个牛了…… | 
|  |      58likaci      2017-06-21 10:25:58 +08:00 不错啊,不知道直接用 homebridge 连 Android 红外控制传统设备行不行的通 | 
|      59test4zhou      2017-06-21 10:37:47 +08:00 看了小姐姐 github 的项目,厉害! | 
|  |      60denonw      2017-06-21 11:01:14 +08:00 赞 | 
|  |      61cxl008      2017-06-21 11:24:48 +08:00 一直不忍心下单米家全套。。。。 | 
|  |      62xuan_lengyue      2017-06-21 12:27:20 +08:00 示例视频看到最后有亮点… | 
|  |      63xuan_lengyue      2017-06-21 12:27:55 +08:00 看错了… | 
|  |      64cctrv OP | 
|  |      65cctrv OP  1 | 
|  |      66gyteng      2017-06-21 15:08:38 +08:00 没有 iPad 和 AppleTV 的情况下如何才能远程控制 HomeBridge 呢 | 
|  |      67yangxuan8282      2017-06-21 15:37:48 +08:00 @gyteng 用 vpn 应该可以,另外有网友说用 mqtt 也行 | 
|  |      68LeoNG      2017-06-21 16:03:37 +08:00 关于 Socket.io: 我最近也在做智能家居的一个项目,不过是 iOS 端的,遇到了和楼主类似的情况,而且是 100%可以重现的: 1. 打开,app 退到后台,锁屏。 2. ....... 干等,或者抠鼻屎,随你。 3. 再次打开 app,和 UDP 服务器之间的通讯,指令发送、心跳等等,一切都 ok。唯独,和 WiFi 模块之前的通过挂掉了。由于和硬件的通讯是局域网内的广播。所以不知是否是这个有影响。这个问题一直困扰了我很就,各种谷歌,Apple forum 去找,还真让我发现了一个:https://forums.developer.apple.com/thread/45283, 当时想着终于可以甩锅了,但是仔细斟酌(良心发现),发现情况不太一样。也同你一样,写了 Ping 请求保持手机 wifi 模块不休眠,然而没什么用。 之前,我是每次发送 UDP 都会判断是否绑定了端口,是否连接,按理说,这个没问题。但是如果手机锁屏后重新打开,在重连的过程中,发现没有 close socket,所以我在每次 reopen 的时候,都会手动 close。这样就没再出现过这种情况了。至于为什么,我暂时也不太清楚。端口被占用也考虑过,但是想了想不应该唯独 udp 广播有问题。所以想不通了。。。。 一点个人经验,希望能帮到你。 | 
|  |      69jonechenug      2017-06-21 16:26:15 +08:00 via Android  1 这么多人,只有我一个人想要微信吗? | 
|  |      70esmdxx1      2017-06-21 16:56:10 +08:00 via iPhone 好 | 
|  |      71Lucups      2017-06-21 17:15:51 +08:00 恕我直言,在大陆,楼主使用繁体字是不科学的。 看得累,不利于知识传播分享,尤其是在一些低分辨率屏幕上,繁体字没法看。 故建议楼主改用简体字。 | 
|  |      72cctrv OP @gyteng  HomeKit 必須 iPad 或 AppleTV。 HomeBridge 我記得有一個相關項目 Home-Assistant,你看看這個。http://www.keepwn.com/technology/build-home-cloud-center-for-IT/ @LeoNG 所以? 我大約 4 分鐘就先自行 close 來做一次重新連接就可能好了? 我遲些有空試試,因為做了這個項目。 我的外包的上帝在催死我了。 @jonechenug 微信可以啊~ 反正是 WebAPI。 你把 HomeKit 扔了,用這個 Android App + Server,你打開網頁都可以控制開關呢。反正我用 GET 來調用服務。 @Lucups 所以嘛~ 習慣繁體字就好了。 謝謝你的建議咯。我是不會改的。^-^ | 
|  |      74cctrv OP | 
|      75qaulau      2017-06-21 19:38:29 +08:00 via Android 楼上一堆看到美女头像就认为是女的的,应该是单身久了的,难道只有我觉得楼主是抠脚大汉,而且是有信仰的抠脚大汉… | 
|  |      77jonechenug      2017-06-21 23:46:54 +08:00 via Android /吐血,不是微信控制,是楼主的微信号 | 
|      78Katy34      2017-06-22 10:14:47 +08:00 牛逼 666 | 
|      79azh7138m      2017-06-22 11:28:58 +08:00 via Android 被设计师支配的恐惧(瑟瑟发抖的萌新 | 
|  |      80goldenlove      2017-06-22 14:42:43 +08:00 默默地围观了楼主个人网站....佩服。 求 ins 围观地址~ | 
|  |      81DingSoung      2017-06-22 15:29:25 +08:00 你后面三张 iOS 截图是什么 APP 的呀 | 
|  |      82wingyiu      2017-06-22 17:04:42 +08:00 一晚几个小时哦 | 
|      83Thoxvi      2017-06-22 19:03:43 +08:00 via Android @jonechenug 这里有个假装不想要的 | 
|  |      84dven      2017-06-23 15:21:04 +08:00 NanoPi NEO2,sunxi/Allwinner H5 A53 Quad ? 其實用緊繁體字都冇咩稀奇,喺廣州都幾常見下 | 
|  |      85dven      2017-06-23 15:24:47 +08:00 | 
|  |      86loveminds      2017-06-23 15:52:02 +08:00 via Android 😂比小敏更能折腾的妹子出现了 | 
|  |      87cctrv OP 有人已經找到我微信了 | 
|  |      8819tj      2017-06-24 15:11:37 +08:00 那个……你一定没有男朋友吧…… | 
|  |      89ihainan      2017-06-24 22:05:44 +08:00 老早就关注了小姐姐的微博……小姐姐棒棒。 | 
|  |      90Poko      2017-06-24 22:18:03 +08:00 夭寿啦,没有活路啦 | 
|  |      91litpen      2017-06-25 09:27:44 +08:00 不行,我也要努力了,不能呆在没有发展的公司里等死了! | 
|  |      92cctrv OP 我終於,找到神奇的 Socket Bug 的問題所在了。 | 
|  |      93ZiLong      2017-06-25 22:59:24 +08:00 不就是膝盖么 | 
|  |      96fumichael      2017-07-04 09:13:11 +08:00 哇,好酷的工作。 | 
|  |      97GeekCat      2017-07-26 14:15:50 +08:00 忽然觉得被一个设计师在代码上给打败了。。。。 |