Category: GeekTech.

  • 如何用google音箱控制小米智能家居

    当家里有了米家的智能灯具之后,除了按键控制、app控制和人在感应控制,免不了就想把语音控制也弄起来,但是遗憾的是,不同的智能家居体系互不相通,米家智能、Google Home、Apple Home各成体系,互不开放,如果买的不是一个体系内的,就很互相控制。而我家的灯具和开关就是米家的,而音箱则是几年前买的Google Nest mini2,在主卧和餐厅各放了一个,除了问天气这种没用的功能之外,最常用的就是吃饭时坐下来后通过Hey Google让它播放spotify上面的歌了,所以当我想要用Google音箱来控制米家的灯具的时候,有意思的部分就来了。首先,Google home里是可以对接米家的,但是,能看到的只是米家的几个摄像头,蓝牙智能开关、人在感应器这些设备都无法发现。最简单的路线已经堵死了,不得不逼我开始折腾。

    主角出场:Home Assistant!原来,在各家智能家居厂商各自的体系之外,还有一个客观、中立、开源、免费的第三方平台,叫Home Assistant,可以通过它来作为跨厂商的调用平台。正好家里有闲置着吃灰的Synology NAS,可以直接折腾起来。

    Home Assistant(简称HA)是一个功能强大的开源智能家居平台,旨在本地化运行以实现高隐私安全。它能够跨品牌、跨协议(如Zigbee、Wi-Fi、Bluetooth)接入数千种智能设备,通过统一的界面进行集中控制与复杂自动化设置。HA用户可以利用树莓派、NAS或旧电脑等硬件部署,打破设备生态壁垒。 

    第一步是NAS上部署HA。Docker是真香啊,一键拉取镜像启动,直接搞定;在GPT的支持下,又专门给申请了一个安全证书,把HA登录页面通过nas上的反向代理和端口映射,开放到了外网,这样随时随地都可以访问到家里的HA后台服务网站了。

    第二步是让HA识别出米家的设备。这一步需要在HA上先安装一个叫HACS(Home Assistant Community Store)的插件,有点类似于开源应用市场,就像在小米电视盒子上装了个当贝市场,有了这个之后就可以通过HACS浏览和下载其他插件了。这个市场里有各种各样智能家居品牌的插件,比如说大金、LG等,这些家电本来只是能通过自己家的app来控制或者通知,现在全部都可以接入到HA里面了。这里对接米家的插件,原先最有名的是一个第三方的叫做hass-xiaomi-miot,但近两年小米官方Home Assistant 米家集成也下了场,提供了Xiaomi Home的HACS插件,从小米账号登录安全角度,我还是选择了官方插件。装完之后,米家里的设备就全部在HA里面出现了,顿时满屏的设备和参数就看到了,专业感十足:

    到这里还只是能从HA上控制米家灯具,但是还得打通HA-Google Home这条链路,所以还需要第三步:让Google Home能控制这些设备。这里ChatGPT也走了些弯路,本来它让我又在docker上安装了一个matter bridge服务,然后想把灯具在HA上虚拟为一个matter设备,然后让Google Home来发现添加,但这里面它出现幻觉了,在我怎么按照指令操作都找不到它说的设置方式之后,它告诉我,这条路其实并不通,我靠……

    Matter Bridge方案不行之后,它又给了两个方案,一个是Google Assistant Integration,一个是Nabu Casa,后者是一个收费订阅的SaaS服务自然被我pass,前者免费但更加Hard Core了,需要先注册一个Google Cloud Developer,好的,注册就注册。为了避免再被ChatGPT坑,接下来的动作我转移到了Gemini来支持我。注册之后,要新建一个project,然后在里面增加一个Cloud-to-Cloud integration,有意思的是,这里还必须要提供一个140x140px的图标,后来我才知道这里相当于就是让我扮演了类似LG的一个厂商开发者的角色,把我要控制的灯具封装成了一个Google Home能认出来的设备,然后再到Google Home里面选择通过第三方认证链接添加设备,这里的第三方各大品牌的列表里,赫然就能找到我刚新建的这个Project,从而终于把我的米家灯具添加到了Googe Home。

    到这里,基本上语音控制就没问题了,Hey Google,Turn on/off bed light之类的,就可以实现语音让Google开关米家灯具,代价是因为走的公网,反应稍有延迟,但是目的实现了,用Gemini给我的总结来说,我完成的其实是一个典型的 IoT 云对接架构米家设备 (Miot) -> 局域网网关 -> Home Assistant (中枢) -> 群晖反向代理 (HTTPS 隧道) -> Google Cloud (OAuth 握手) -> Google Nest (语音终端)。

    最终,整体连续折腾时间约5小时,花了我一整个星期天的下午,连娃的舞蹈班接送都没管,但能通过自己的这一顿折腾打通壁垒,实现需求,这个研究折腾的过程所获得的满足感,和最后搞定这件事情带来的成就感本身早已经超过了目的了。这5个小时,我是沉浸在一种心流的感觉里面的,非常的投入和享受,而这种感觉已经很久没有体验过了。后来,在把家里能接入的家居如石头的扫地机、LG的厨卫家电都接入到Home Assistant之后,可玩性进一步提升,比如我又加了一条规则:因为洗衣机离主卧远,在LG的洗衣机每次洗完之后,触发主卧的Google音箱播放语音提醒及时晾衣服,哈哈。期待接下来更好玩的折腾。

  • 智能家居折腾记

    起初,这只是因为家里的两个最常用的开关不太好按了:一个是餐厅的三组灯(三开),一个是过道里控制过道和客卫的开关(二开)。加上另一点,娃现在早上自己摸黑起床上学,我看着她们每天都要先跑到家门口去开餐厅灯,觉得这个动作有点多余,如果换成智能开关,那首先可能可以升级到双开,即在过道就可以开关餐厅灯,甚至还可以配合人在传感器,变成不需要自己开灯。

    于是就开始了采买,因为家里已经有不少米家的智能设备,所以继续选择了米家的智能开关,人在传感器选择了领普的ES3,蓝牙网关纠结了一下,选择了小米最新的蓝牙中枢网关,没有搞小米智能音箱代替,因为家里餐厅和主卧已经有google的智能音箱,我觉得没必要重复了,并且小米智能音箱在海外因为版权的原因也基本是个残废。

    东西到了之后就开始装了,先是把蓝牙中枢连上路由器上线,然后拆装开关算是电工小case,零线肯定是没有的,好在现在的智能开关都是单火和零火兼容的版本了。换完之后顺利接入米家,并且把过道的二开升级为了三开,多一个按钮作为智能按钮,单击可以控制餐厅灯的开关,双击则是关闭所有灯,智能开关每个按键支持单击、双击和长按三个动作,可以触发三种不同的指令,还是很好玩的。最后再把人在传感器在客卫和餐厅各放了一个,米家里面简单设置点规则,就实现了人来灯亮,人走灯灭,至此基础升级操作就搞定了。结果后来老大因为早上餐厅人不在就自动灯灭表示抗议,我才了解到她早上把餐厅、厨房、厕所灯都开着保持家里明亮的心理需求,这一需求前期没有调研清楚,导致了后期返工,哈哈,所以接着对于自动关灯的指令加了生效时间段,排除了早上她出门前的时间段。这样基础智能灯具升级,在米家的app里就完成了,到这里其实还算不上折腾。

    真正折腾的挑战出现在第二天:如何用家里已经有的google音箱来控制米家智能的灯亮灭,这个问题网上的案例太少,因为google音箱只有墙外能用,米家智能又基本只有墙内人用,需要把这两者结合使用的场景或家庭实在太少,所以只能自己探索,这个我需要另开一篇来讲。

  • Synology DS918+

    入一台家用nas的计划已经搁置了多年,毕竟在租的房子里不想折腾太多。不过之前老mbp的硬盘坏了两次,最近换了新的mbp存储空间又没有老本本大,就重新产生了把家里所有的照片视频文档等资料都归结到一台nas上的想法。结果,从想法到行动只花了半天的时间~
    前两天在我电子产品的好基友群里咨询,基友们推荐上DS918+,于是花很快的时间,结合张大妈(smdzm.com)上的评测快速研究对比了一下,在中高配置的DS418Play和高配置的DS918+之间摇摆了一小会儿,最终决定直接上到918+,唯一的理由就是“都花了这么多钱了,这点差价就别省了”哈哈哈。
    另一个快速入手的原因是,本来想着回国的时候买了背过来,结果一查发现,本地买比从国内买还便宜很多,那还等什么呢,直接入手了。DS918+本机支持4块硬盘,目前先同时配了两块4T的盘组成Raid1,确保数据安全性。主机+两块盘的价格是$1018新币,主机大概是占$700多新币,比国内行价便宜1000多RMB了。买自本地在线网站lazada。顺便一提,在lazada下单的时候顺便注册了其推出的LiveUp会员,感觉还挺划算的,除了在lazada和redmart两大网站购物折扣外,还关联其他网站福利,比如netflix免费6个月会员、ofo每月10趟免费骑行、foodpanda外卖免送货费等生活福利,跟后来淘宝推出的88会员非常像,也确实很实用。
    下单后两天,8.8收到货了。到手后就开始开心地开箱把玩起来,Synology群晖最备受称赞的就是他的NAS管理系统DSM,这个系统确实很不错,稳定可扩展,套件中心里各种各样的套件可以支持各种功能,管理文件、照片、视频都是基本功能,建网站、跑数据库也不在话下,甚至还可以搭建自己的dropbox服务端,以及支持类似google在线文档的私有在线功能,把家里变成了一个稳定可靠的私有云,功能太丰富了,简直够我这样的爱好者玩好久了。当然简单熟悉后第一件事就是把自己的照片视频都往上面备份。这个着实花了好几天才完成,接下来就是抽时间慢慢整理啦。有这样的东西折腾,愉悦~

  • iOS 10

    我的iPhone6P 升级到iOS10一段时间了。目前还不是太适应圆角的通知形式。可能是因为无法重按来直接点开消息吧,总觉得操作有点不便。锁屏左划直接进相机,然而如果并不是打算进相机的话,再右划可就回不来了。每次解锁都有点磕磕绊绊的。把墙纸换成了黑色背景,感觉酷酷的。时钟里多了睡眠记录不错。邮件app更好用了。其他方面就没啥特别的感觉了。坐等我的iPhone7P。

    对了,照片有了大改,不过基本上没有新鲜的,google照片都已经实现过了。除此之外,就是按键音非常爽了,字母、删除、功能键声音都不一样,组合着打起来,非常的舒服。

  • 用mklink修改Chrome的用户缓存数据目录

    家里的笔记本电脑是32G的SSD+500G的HDD,原来是可以组混合硬盘的,但是混合硬盘上的系统某一天突然就挂了,感觉不是太靠谱,所以还是把系统装到了32G的SSD上,数据放在了500G的HDD上,这样用了一段时间就遇到了一个问题,就是32G的系统盘满了。
    今天清理了下系统盘,发现用户数据里面有很大一块是Chrome的缓存数据,占了1.9个G,相对于我32G的C盘来说,是个不小的空间了。研究了下怎么样转移到D盘,很简单,经验如下:
    1、退出Chrome,如果有驻留在任务栏的chrome辅助程序,一并退出
    2、 先把原来的缓存目录整个删了(下面的Username放你自己电脑里的用户名)
    c:\Users\\AppData\Local\Google\Chrome\User Data
    把上面这个目录整个干掉。
    3、在要新放缓存的地方创建新目录,我的目录是:
    d:\ChromeCache\User Data\
    4、也是最关键的一步:打开cmd.exe,创建一个软链接,命令如下:
    C:\WINDOWS\system32>mklink /d “C:\Users\Jun\AppData\Local\Google\Chrome\User Data” “D:\ChromeCache\User Data”
    如果执行结果是下面这行,那就是成功了。
    为 C:\Users\Jun\AppData\Local\Google\Chrome\User Data <<===>> D:\ChromeCache\User Data 创建的符号链接
    5、重新打开Chrome,搞定,登录到你的账户,就会发现用户数据已经缓存到新的目录下了。
    chromecache

    PS:又清理了一些空间,用下面的指令,经过官网查询,这是安全的。
    rmdir /q /s %WINDIR%\Installer\$PatchCache$

  • Marshmallow

    Marshmallow:棉花糖,Android6.0的代号。
    今天发了一条朋友圈微信,大意就是说,苹果教会了我们很多大型猫科动物的英文,而谷歌则教会了我们很多甜品点心的英文。点赞者寥寥,可能看明白的并不多。。。
    总之今天凌晨看到抽屉里躺灰的nexus7平板之后突然一闪念:Android6是不是已经出了?就是这一闪念,导致了我的又一次晚睡。这种事情一旦想起来就停不下来了,于是一搜,我靠,10月份就已经发布了。然后就找下载,研究准备刷机。
    现有的平板是android5.0 lollipop棒棒糖,另外root过了,刷了TWRP,所以不支持OTA升级到6.0,需要重新刷,这次没有用zip包平刷,因为平板一直以来都是平滑升级的,导致空间太少了,所以这次准备全清后用官方镜像刷。于是就研究怎么全清,怎么用镜像刷。尽管花费了大量的时间研究,结果实际的执行却没花多少时间,简单来说:
    1、下载官方镜像 razor-mra58v-factory-45d0421b.tgz
    2、平板连上电脑(当然,这步说起来简单,其实里面包括了驱动、准备adb、fastboot等工具的事情)
    3、执行命令,刷官方bootloader:fastboot flash bootloader bootloader-flo-flo-04.05.img
    4、执行命令,刷os镜像:fastboot -w update image-razor-mra58v.zip
    总共不超过5分钟,再次启动后,就是全新的Android6.0系统了。登入google帐号后,贴心的询问是否需要从上一个备份恢复,并且可以选择需要恢复哪些app及其数据,这一步比苹果做得还贴心。Android的原生系统做的是越来越好了。
    整体的界面风格上,跟Android5的进化不大,还是延续的一样的风格。刷完系统之后恢复了一些常用的App,还从多看下了一本火星救援的书看了会儿,凌晨4点,睡觉了。
    (可以预料,即使是搭载最新的Android6的nexus7,还是免不了继续落灰的命运)

  • El Capitan

    升级到了最新的macos,El Capitan,直观感觉上跟上代的差别不大,应该更多的是在一些内部的提升吧。想我这台2010年的macbook买来的时候应该还是Snow Leopard,经过了Lion,Mountain Lion,Yosemite,Mavericks,一直到今年的El Capitan,都还能保持基本使用的流畅,更不可思议的是从买来就没有重装过一次系统,这么多次大版本升级也就是升级安装一下而已,其他的什么都还在,这在windows的电脑上是多么的不可思议。最后来一个我用过的MacOS全家福。(这篇是回头补记的)

       
        
        
     

  • 在google sheets中使用sumifs函数

    sumif的功能是很常用的,在我用来记账的google sheet里面也经常用到,比如说在另外一个页签里统计上一个页签中所有H列值为“食”的所有行对应的“B”列费用的总和,就可以得到acct_book这个页签里所有“食”方面的开支总和:

    =sumif(acct_book!H:H,"食",acct_book!B:B)

    然而这个记法有个问题,比如我在acct_book这个页签里记的是全年的记录,而我的“食”总和是要按月统计的话,之前用的土方法就是比如当1月份的帐记完了,发现占据了2-130行的记录,那么1月份“食”方面的消费就可以这么统计:

    =sumif(acct_book!H2:H130,"食",acct_book!B2:B130)

    也就是说,写死了需要统计的行数。这样可以实现分月统计,但是方法比较死,如果回头要补增加1月份的记录倒不用担心,因为插入新行的动作会自动同步到公式里,也就是我如果在acct_book页签的2-130行之间插入一行的话,这个公式会自动变成:

    =sumif(acct_book!H2:H131,"食",acct_book!B2:B131)

    这样虽然可以用,但仍然不灵活,我只能等每个月结束之后看记录到了哪行,才能开始为下个月的统计公式输入范围。于是研究能不能基于日期列A做判断,查询google sheets的文档之后发现是可以的:

    =sumif(acct_book!A:A,"<="&DATE(2014,2,1),acct_book!B:B)

    sumif函数里支持基于日期的运算,语法如上,但是问题又来了,我需要的if条件参数不止一个啊,至少有开始日期、结束日期、类型三个条件,这样sumif就不够用了,需要sumifs,sumifs支持多重条件,跟sumif一个显著的区别是结果域调整到了最前面,后面接着的参数是条件域1,值1,条件域2,值2,...的形式。经过调试,理论写法如下:

    =SUMIFS(acct_book!B:B,acct_book!H:H,"=食",acct_book!A:A,">="&DATE(2014,1,1),acct_book!A:A,"<"&DATE(2014,2,1))

    为什么说是理论写法呢,因为首先,sumifs函数在现有版本的google spreadsheets里面不被支持,必须把自己的google docs打开成试用新版本的模式,而且即使打开之后,所有现有的文档也还是旧格式的,只有新建的文档才是新格式,在右下角会有个new google sheets的标识,在这样的文档里才可以用sumifs函数。

    另外一点,中文或字符串的匹配判断在new google sheets里的支持也不理想,上面写法里的“=食”无法实现,而如果是英文的"=N"就OK,这一点还没有研究出来要怎么解决。

  • WBS Chart Pro

    三年前考了PMP,当时的一个重要收获就是认识了WBS工作分解结构,知道项目管理中需要把所有的工作进行breakdown,然后在此基础上进行各种估算,还有最短路径法之类的各种算法。上课的时候,讲这些算法,老师都是在黑板上画图,写上各个工作件的起止日期让我们手工去算工期的,从没想过有这样的专业工具。
    最近给一个新项目排计划的时候,看到别人传来一张很不错的图和一个.wbs的附件,才想到难道有专门的wbs管理工具?一番搜索之下发现了这个神器。
    别人传来的图
    High Level - Quantum WBS

    这工具就是WBS Chart Pro,出自Criticaltools,工具不知道哪年做的,这官方网站风格也太复古了。
    http://www.criticaltools.com/wbschartprosoftware.htm

    官网上下了最新版本,注册什么的略过不提了,自行google,安装的时候会提示是否安装project插件,确认之后发现居然可以跟project联动。联动的意思就是可以任意的在WBS图和mpp文件之间互转,并且同时开着WBS chart pro和project的时候,修改其中一个的数据,另一个的数据会跟着变动,这样感觉比直接编辑Project文件直观的多了。

    屏幕快照 2013-07-18 上午3.30.05

    WBS chart pro本身还可以直观地更新、查看进度,提供多种视图,只要把各个环节的时间排好了,可以通过各种视图很简单地查看当前的项目进度、成本等信息,以及当前项目的最短路径之类的项目管理相关的重要信息,看起来是个不错的项目管理工具,推荐下。

  • 用Google Docs协同管理团队日常事务

    一年前到项目现场之后推行了Dropbox作为项目成员之间的项目档案共享库,建立规范的目录要求大家都把文档按目录和日期规整地放到里面,一年之后已经卓有成效,项目档案清晰有调理,每个人的本地无需上传下载,都时刻保留着最新的一份拷贝,方便了很多。最新的另一个大项目,也是用了同样的方案进行团队文档共享。

    现场日常维护工作琐碎,经常被打断,所以最近在考虑日常的工作记录如何进行,特别是感觉需要一个团队成员共用的待办事项表,记录日期、待办事项、请求来源、处理人、处理结果就可以了。就好像在大家的办公桌前放一块白板,上面写着要做的事情1、2、3、4,随时提醒大家不要忘记,每个人都可以在上面增加或着修改记录这样。其实原来有一个excel文档是记录这个的,也放在dropbox里面大家都可以看,但是问题是不能大家同时编辑,否则会导致保存冲突,另外也没法要求大家平时都开着这个文档。

    另一个方案是我之前在ZTP研发团队里推行的,OneNote共享笔记本方案,虽然也不错,但是需要每个人都安装Office OneNote组件,受到客户端的限制,特别是OneNote还一直没有Mac版本,我自己只能在虚拟机里面用,很麻烦,所以考虑了一下也放弃了。

    这时想到了两年前玩过的Google Docs,在线的多人协作文档编辑工具,印象中当时还不太好用,但是如今试了一下发现改进非常显著,已经完全能胜任我的需求并且还有惊喜。

    屏幕快照 2013-02-21 下午10.34.03

    用自己的Google账号登陆到docs.google.com就可以创建自己的在线文档,创建之后通过右上角的Share可以共享给其他团队成员(需要有google帐号),加入的团队成员被赋予一个颜色的光标,就可以立即参与到这个excel的编辑中来,所有的编辑都是立即自动保存并且修改历史可以无限追溯,右上角查看协同编辑者的地方点开还可以实时聊天。

    下图就是我们团队四人同时在编辑这个todo list文档的场景,可以看到四个颜色的光标在不同的位置,各自可以同时输入内容,输入过程其他人完全是动态可见的,就跟共享桌面一样的感觉。

    google docs

    这样一来,上班时只要用浏览器开着这个页面,现场的大小工作事务,事无巨细大家都可以随手记下来到表格里面,也方便跟踪和分享。我也不用掏钱去买块真的白板了~奔跑着赞美一下Google,用最先进的科技,引领着人类最先进的生产力~