我创建“无智能”房屋的经验

我该分享我创建“没有智能”房屋的经验。 我真的不想就智能家居的所有相同之处以及它应该能够做什么进行辩论。 就我而言,我们将驯服ITEAD的wifi模块Sonoff,并学习打开/关闭手机的“负载”功能。 该出版物将讨论如何刷新模块,将温度/湿度传感器连接到模块,以及如何通过HomeKit(“主页”)和Siri应用程序控制模块。 将所有这些添加到树莓派上的Domoticz智能家居管理系统。 将wifi添加到咖啡机,并教Siri打开对讲机。

我订购了三个常规的Sonoff模块和一个SV(安全电压)进行测试。 订购时,按库存看,通常的4.85模块始终为绿色,尽管库存看起来是永久的。 SV的相似价格为4.85。 运送到乌克兰后,总成本为26绿色。 中国和非洲的中国,中国的钱都没了,货物还有三周的期望,也许还有更多。 您当然可以在乌克兰购买而不需要等待,但是价格会贵一点。

迈向“没有智能”房屋的第一步


共有四个模块,通常的模块装在盒子中,而SV装在防静电袋中。 情况和大小满意。



我不会描述安装本机e-Welink软件并将模块连接到家庭网络的过程,也不会描述Internet上任何语言的说明,我不会这样做。

无需三思,我们进入走廊并将此模块添加到吸顶灯。 模块很小,灯内有很多空间。 灯光经常留在走廊上,现在您可以关闭电视前面床上的灯光。 该公寓已在各处进行维修,并安装了常规开关。 请勿触摸维修并使用现有接线。

事实证明以下工作逻辑:

-开关关闭,则模块也不起作用;
-开关打开,然后可以从应用程序中关闭灯;
-在应用程序中打开开关并关闭灯,然后再打开灯,需要在将“分段电源”模块设置为ON之后打开/关闭开关(当继电器模块打开时,灯将打开)。

欢喜

第二个模块已添加到卧室的灯中。 然后,灯不像走廊那么宽敞。 我不得不提起案件,减少/削减按钮,它的高度不合适。 然后将模块整齐地隐藏在灯泡中。

我们重新制作按钮下方的开关


Schneider Unica系列交换机已安装在公寓中。 您可以通过在钥匙下面放置弹簧来重新制作这样的开关,并且该位置已经预先准备好了。

当他们在Internet上书写时,您可以使用圆珠笔尝试弹簧。 我用圆珠笔安装弹簧的尝试失败。 弹簧非常弱并且缺乏刚性,因此将琴键恢复到其原始位置。

原始的施耐德弹簧具有以下特性d = 3.6 mm,线粗0.6 mm,高10 mm。 我没有握住它,没有发现它在出售,我在一个论坛上找到了有关春季的信息。

在搜寻房屋之后,发现了一个类似的弹簧,该弹簧非常有弹性,并成功地添加到开关中。 不用花一分钱,我们得到的是按钮而不是开关。


看起来像是装有弹簧的开关。

现在,我们始终在网络中拥有带电源的模块。 在设置中,我们设置为当模块通电时,模块会更改继电器的状态。

在这种情况下的工作逻辑:

-Sonoff模块上总有电源,可通过应用程序打开和关闭照明灯;
-按下按钮将切断电源,继电器将其状态更改为相反的状态。

我们既可以控制交换机上的负载,也可以通过应用程序来控制负载。 本机应用程序和模块通过某些中文服务器工作。

是的,是的,我知道,在夜间会有跳闸/断路,接通电压,然后灯亮。 在模块运行期间,这从未发生过,但是我们住在乌克兰,头条新闻充满了停电的希望。

桌上是第三个模块。 亲爱的你在哪里? 我们将挑选您的本地人并嘲笑它!

安装备用固件


尸检表明该患者死于尸检,在梳子下方有一个放置5针的位置。



通过外壳上的按钮(3.3v Rx,Tx,GND,GPIO 14)。 用手焊接烙铁并连接USB到TTL适配器。 在我的usb-to-ttl适配器中有3.3v,我没有尝试从5v为模块供电,因此我不建议这样做。

接下来是软件部分。 github上有用于此类模块的固件 。 现在已经出现了新版本的固件 。 这些固件有什么用? 有Web控制,mqtt协议,OTA(无线)-无线固件。 至于本机固件,承诺会添加mqtt协议,OTA也在那里,但仅适用于它自己。 本机固件的缺点是它仅在连接到全局网络时才起作用。 我们为什么需要这个? 在这个阶段,这是没有必要的……尤其是因为我们不知道模块发送的内容和发送的位置。

安装Arduino IDE。 我安装了便携式版本1.8.1。 固件需要IDE 1.6.10或更高版本。

-添加对ESP8266模块的支持
-安装pubsubclient
○找到文件src \ PubSubClient.h,并将MQTT_MAX_PACKET_SIZE的值更改为400或更大(现在Tasmot版本要求的值是500或更高)。

下载草图,用手指交叉进行编译,希望一切顺利。 这不是我的情况,我们读取错误并添加了不存在的必要库。 折磨了几个小时,并且固件没有错误。 (主要问题是我在Win XP上安装了Arduino IDE)。 编辑配置文件并填写我们的固件。

我在User_config.h中裁定的最低限度。

User_config.h
#define PROJECT "bath" // -
#define STA_SSID1 "your_wifi_station_id" //
#define STA_PASS1 "your_pass" //
#define STA_SSID2 "your_wifi_station_id_plus" //
#define STA_PASS2 " " //

#define SYS_LOG_HOST "192.168.." // , raspberry pi,
//#define USE_I2C //
//#define USE_IR_REMOTE
//#define USE_WS2812


根据版本的不同,可能会添加其他设置,这些设置可能会导致不必要的关闭。 在最新固件(Tasmota)中,可以通过Web设置菜单进行越来越多的设置,并与User_config.h复制。

草图填充:


-以任何方便的方式关闭模块的电源;
-按住模块上的按钮并连接电源。 该模块已准备就绪,可以接收固件。
-在IDE中单击“确定”,然后再次交叉手指,我们等待固件开始上载到模块。

万一发生错误,我们将检查电线,是否所有地方都拧紧了,或者usb-to-ttl的功率不足,我们需要使用外部电源。 我们用铃鼓跳舞并重复该过程。

重要: 仅通过3.3v引脚为模块供电。 它不能通过模块本身的电源连接到电源负载。 经验丰富的用户写道,向模块提供220v固件会使其变成一块砖,虽然很小,但是却很砖。 我没有尝试,我不知道。 因此,在对模块进行闪烁时,仅将四根连接到引脚的布线连接到该模块,我们将其他所有部件都移除了。

如果一切正常,重新启动模块后,应连接到访问点,找到IP地址并在浏览器中访问它。


起始页的外观。

如果模块未连接到接入点,则继续用铃鼓跳舞。 在本文的框架内,我将不介绍各种解决方案。 我检查了配置,然后再次刷新了模块。

现在我们可以通过网络访问该模块及其设置mqtt,可以将电线放在抽屉中,通过空中进行固件/更新。

Siri在哪里?


所有这些当然都很棒,是时候学习通过电话管理这种好处了。 我从iPhone的应用程序尝试了几种程序,但没有得到任何有趣的结果。 决定使用Home应用程序或HomeKit,这也使得可以通过Siri控制模块。

我们在架子上找到Raspberry pi并连接到网络。 以我为例,已经有一个“树莓”连接到网络。 如何安装操作系统并连接“树莓”以对其进行描述没有任何意义。

要与HomeKit通信,必须安装Homebridge。 Homebridge是在本地网络上运行并模拟iOS HomeKit API的NodeJS服务器。

 sudo apt-get update sudo apt-get upgrade sudo apt-get install git make sudo apt-get install g++ 

根据您的系统,您可能需要更新C ++编译器。

安装Nodejs。 我们去商店选择合适的dist 。 复制发行版的地址,然后在图像中进一步复制

 wget https://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-armv6l.tar.gz tar -xvf node-v4.0.0-linux-armv6l.tar.gz cd node-v4.0.0-linux-armv6l sudo cp -R * /usr/local/ 

我为自己安装了v6.9.4,现在有更新的。

添加其他必要的软件包:

 sudo apt-get install libavahi-compat-libdnssd-dev 

安装Homebridge本身:

 sudo npm install -g --unsafe-perm homebridge 

如果这不起作用,请尝试:

 sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp cd /usr/local/lib/node_modules/homebridge/ sudo npm install --unsafe-perm bignum cd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns sudo node-gyp BUILDTYPE=Release rebuild 

安装Homebridge之后,您需要再安装一些插件,然后继续更改Homebridge服务器的设置。

安装插件的方法与homebridge本身相同

 sudo npm install -g --unsafe-perm homebridge-plugin-name 

我们在包管理器中找到所需的插件。 在这里,我们找到了一个需要添加到我们的设置中的示例。

对于一个简单的开关。

 npm install -g homebridge-mqttswitch 

转到设置,创建(如果尚未创建)配置文件:

 sudo nano .homebridge/config.json 

配置文件如下:

config.json
 { "bridge": { "name": "Homebridge", "username": "CC:22:3D:E3:CE:30", "port": 51826, "pin": "031-45-154" }, "platforms": [ ], "accessories": [ { "accessory": "mqttswitch", "name": "", "url": "mqtt://192.168.178.123:1883", "username": "admin", "password": "admin", "caption": "room", "topics": { "statusGet": "stat/sleeping/POWER", "statusSet": "cmnd/sleeping/power" }, "onValue": "1", "offValue": "0", "integerValue": "true" } ] } 


保存设置文件之前,请在此处进行检查。 保存后,尝试运行:

 Homebridge 

如果一切开始,它将写信给我们,例如:

  11:27:43 PM] [] Initializing mqttswitch accessory... 

如果未在设置中更改,将在此处显示用于连接的代码031-45-154。

现在打开运行iOS的手机/最顺畅的飞机。 我们找到“ Home”应用程序或“ HomeKit”→添加附件,然后等待“ Homebridge”附件出现,添加它,输入代码,为交换机分配空间。 瞧,“嗨Siri,打开/关闭房间里的灯”-奏效了。 第5系列及以下版本手机上的“ Hi Siri”仅在连接到充电时才能工作。

如果对我们来说一切正常,则可以将Homebridge添加到启动中。 完整的英文说明 。 就我而言,通过init.d创建文件sudo nano /etc/init.d/homebridge
模板复制到此文件中的文件中,并在homebridge下对其进行更改

/etc/init.d/homebridge
#!/bin/sh
### BEGIN INIT INFO
# Provides: homebridge
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO

dir="/home/pi"
cmd="DEBUG=* /usr/local/bin/homebridge"
user="pi"


保存,退出。

 sudo chmod 755 /etc/init.d/homebridge sudo update-rc.d homebridge defaults 

现在,homebridge将在系统启动时启动。

我们固定DHT22传感器(温度/湿度)


细心的读者会注意到梳子上有5个引脚,其中一个是GPIO14。同样,我们将烙铁拿到手中,并将这三根导线焊接到DHT22湿度温度传感器的3.3V,GND,GPIO 14。 您可以使用其他传感器(ds18b20,DHT 11或固件支持的其他传感器),但我的包装盒中为DHT22。 传感器通过连接器连接,该连接器固定在本机机箱的侧面。 如有必要,可以在没有手术刀和烙铁的情况下连接另一个传感器。



在图片中,我只是固定了连接器,还没有连接电线。 在Sonoff-MQTT-OTA-Arduino固件中,您需要检查设置:

 #define DHT_PIN 14 // GPIO 14 = AM2301 (Sonoff_TH10A(16A), Sonoff SV) #define DHT_TYPE AM2301 // DHT module type (DHT11, DHT21, DHT22, AM2301, AM2302 or AM2321) 

对于Tasmota固件,可以在Web设置中指定管脚和传感器类型。

如果一切均已正确连接和配置,则通过进入Web界面,我们将看到继电器的状态和传感器读数。 在设置中,您可以设置传感器的轮询速率。 默认值为300秒(5分钟)。



我们将深入研究Homebridge的插件,以使用温度和湿度传感器。 现在,我们需要在附录中显示这些读数。 我设法做到了所有这些,但是恕我直言,这是我的耙,不应该这样做。

怎么了 一切都非常简单,仅将传感器拧紧在探杆上就没有意义,您需要根据这些读数打开/关闭某些功能。 但是在固件设置中没有这种可能性,可以出于这种目的配置Home / HomeKit应用程序,但是您需要一台经常在家里或Apple TV上使用的平板电脑。 固件中与Domoticz进行通信的能力使我走上了安装Domoticz智能家庭控制系统的艰难道路。

我会说,以小题大做的形式,我尝试将插件连接到Homebridge,以允许您从网络摄像头传输RTSP流。 我有一个来自中国同行的网络摄像机TOP-201。

安装插件:

 npm install -g --unsafe-perm homebridge-camera-ffmpeg 

添加到设置文件:

config.json
 "platforms": [{ "platform": "Camera-ffmpeg", "cameras": [ { "name": "top-201", "videoConfig": { "source": "-re -i rtsp://admin@192.168.178.10:554/user=admin_password=tlJwpbo6_channel=1_stream=0.sdp?real_stream", "maxStreams": 2, "maxWidth": 640, "maxHeight": 480, "maxFPS": 3 } } ] 


此外,HomeKit应用程序中会显示来自摄像机的图片,但是所有这些工作的速度都很慢,因此不需要此摄像机。 为了避免不必要地加载系统,我删除了ip-camera。 让我们回到安装用于管理“无智能”房屋的系统。

为Sonoff模块安装和配置Domoticz


腻子→ssh→然后我们再次选择树莓。 令人惊讶的是,在我的情况下,该装置不需要铃鼓跳舞,就足够了

 sudo curl -L install.domoticz.com | sudo bash 

添加自动启动:

 sudo cp domoticz.sh /etc/init.d sudo chmod +x /etc/init.d/domoticz.sh sudo update-rc.d domoticz.sh defaults 

如有必要,请更改一些设置:

 sudo nano /etc/init.d/domoticz.sh 

打开树莓派的地址192.168.xxx.xxx:8080 。 他们应该转到domotics页面。 此外,传感器的配置和添加已经通过网络进行。


Sonoff传感器和街道传感器已添加到屏幕截图中。

要添加传感器/开关,请转到设置→硬件,然后添加虚拟(不执行任何操作,仅用于虚拟开关)。 我们的“虚拟”将出现在设备列表中。 通过在“创建虚拟传感器”上单击它,调用我们的传感器/开关,然后从列表中选择所需的类型。 现在,在“设置”→“设备”选项卡中,将出现一个新设备,现在您还可以在其中看到设备IDX。

我们撕下交换机/传感器的网页并保存配置→domoticz→交换机的idx。 在新的Tasmota固件中,可以指定多个idx。 用于继电器/开关,并分别用于GPIO。 根据模块的不同,它可以是一个或多个传感器,因为在SV版本中,可以在系统中另外分配三个引脚(继电器/传感器)。

在该模块的旧固件(Sonoff-MQTT-OTA-Arduino)中,我不得不用铃鼓进行一些跳舞,以便Domoticz可以看到湿度和温度的读数。 我认为这里没有必要对其进行描述,因为不需要新固件(Tasmota)。

根据湿度读数,您可以控制浴室的抽油烟机。 如果有排气扇,则该模块有足够的空间,我们已经拥有所需的一切。 剩下的只是调整湿度读数的控件。

设置→更多选项→事件



使用构造函数,我们创建引擎盖操作逻辑(如图所示)。 您仍然可以使用Lua,但这不是我的情况。 进一步的经验表明,轮询传感器5分钟太大,我将其减少到3分钟。 现在正在淋浴,当湿度上升到70%以上时,引擎盖打开。 随后,当降低到45%以下时,它将关闭。 通过实验选择的湿度数据。 唯一的负面影响,也许不是负值,而是系统的功能,如果您通过按按钮强制打开引擎盖,则在询问湿度传感器3分钟后,系统将关闭。

但是Siri呢? 原来,一切都很简单。

 sudo npm install -g -g --unsafe-perm homebridge-edomoticz 

并添加到设置

 sudo nano .homebridge/config.json 

  "platform": "mqtt", "name": "mqtt", "url": "mqtt://127.0.0.1", "topic_prefix": "homebridge", "username": "foo", "password": "bar" 

当您启动Homebridge时,我们得到

 [5/8/2017, 11:42:30 PM] [eDomoticz] You have 10 devices defined in Domoticz. [5/8/2017, 11:42:30 PM] [eDomoticz] Initializing platform accessory 'bath-temp'... [5/8/2017, 11:42:30 PM] [eDomoticz] Initializing platform accessory ' '... [5/8/2017, 11:42:30 PM] [eDomoticz] Initializing platform accessory ' '... [5/8/2017, 11:42:30 PM] [eDomoticz] Initializing platform accessory ''... 

现在,我们添加到Domotics的所有设备都将显示在Homekit的设备中,您可以通过朋友Siri对其进行控制。 对于Homebridge的其他插件的需求已经以某种方式消失了。

我们有一堆的Domoticz-Homebridge,一切运行得非常稳定。 已经不是第一个月的测试了。

将来自过去工艺的温度/湿度传感器DHT22固定在Raspberry pi上,每10分钟使用python脚本将数据传输到narodmon.ru。 在现有脚本中添加几行。

 #domoticz settings IP = '192.168..' #IP domoticz PORT = '8080' #port of server IDX_1 = '7' #IDX of the DHT temp sensor //…. ,        narodmon.ru url = 'http://{}:{}/json.htm?type=command¶m=udevice&nvalue=0&idx={}&svalue={}'.format(IP, PORT, IDX_1, sensor_value_1) request = urllib2.Request(url) response = urllib2.urlopen(request) 

在Domoticz中,我们添加了另一个虚拟传感器。 现在,我们还可以通过本地主页上的Web和iOS应用程序,在街道上查看温度和湿度。

向谁靠近mqtt,可以通过mqtt发送传感器读数。

  playload = '{{ "idx": {} , "nvalue" : {}, "svalue" : "1" }}'.format(IDX_1, humidity) client.publish(TOPIC_DOMOTICZ, playload, qos =0 , retain =False) #publish 

将Wifi添加到咖啡机。


当我的机器正在维修中并且等待控制单元从德国运抵时,我收到了Delonghi咖啡机作为礼物。 在面板上,我们有一个“开/关”按钮,可以用来冲淡,加倍的咖啡以及另外两个我不使用的咖啡,因为 我不用蒸汽搅打牛奶,我不喝拿铁咖啡和其他饮料。 缺点是咖啡本身不会磨碎,有必要将其磨碎并装满一杯。

对于咖啡机,我使用Sonoff SV。 引脚3,3v,Rx,Tx,GND均已签名。 单独的GPIO 4、5、14仍显示在板上,固件与上述相同。

我们打开设备并通过按钮进入董事会。

该板具有5v电源,足以为我们的无线sonoff sv模块供电。 找到我们珍爱的5c并不难。

按下按钮仅会使信号接地。 我们根据方案连接模块。



从图中可以看到,我只连接了两个按钮:开/关和煮咖啡。 打个比方,您可以使所有其他按钮。 在sonoff sv上,我们有3个引脚输出到板,一个继电器,您还可以使用Rx,Tx(在最新的Tasmota固件中)。



我们根据计划收集所有东西,在咖啡机内找到合适的位置。 在Web界面的模块设置中,向GPIO5添加第二个继电器。 在菜单“控制台”中设置以下设置:

 PowerOnState 0 //   ,     . PulseTime1 10 //   0,1 ,      PulseTime2 10 //     1 . 1  2     . 

在Domotics设置中,再创建两个“虚拟传感器”,并将其idx添加到Domotics设置菜单中的模块设置中(配置→配置Domoticz→IDX 1和IDX 2)。

结果,我们得到了另外两个开关,其中一个按下咖啡机的开/关按钮,第二个按下咖啡制作按钮。

无论如何,要煮咖啡,您必须用腿走路,但是您需要倒咖啡。 但是打开机器很方便。 从打开电源到煮咖啡之前,您需要一些时间来预热咖啡机。 因此,坐在房间里工作时,您可以远程打开咖啡机,过一会儿便会legs脚,喝一杯。

在咖啡机中的全自动咖啡机上进行这样的开关时,这将更加有用,您只需要记住事先将杯子放好即可。 我们正在等待控制板。

添加wifi以使用Vizit对讲机打开门


在公共走廊中,电梯附近的前厅被带磁力锁和Vizit出入系统的门关闭。 进行维修后就安装了该系统,未按下打开公寓前厅门的按钮。 为了开始客人,您必须先到门上,然后使用按钮打开才能在走廊中打开门。 KTM-602M控制单元。



关闭OP + GND将打开门/断开磁铁7秒钟。

我们通过移除两个电阻器来共享Sonoff SV模块和继电器的电源,如下图所示。



我们将OP连接到输入继电器“输入+”,在继电器“输出+”的输出处固定GND。 在18v控制单元的ELC和GND之间,我们从中为模块本身供电。

我们将门铃“ door bell”添加到Domotiks中,现在Siri可以帮助我们为客人打开门。

助理Siri识别语音命令“打开门”,胜于“打开咖啡机”。

我在那里装饰了sonoff模块。

小奖金


一旦这种豪饮消失了,我们还将关闭/打开电视。 关闭电视并打开它与wifi模块无关。 电视非常靠近树莓派。 在这里,IR LED和一对标称值不同的电阻对我们有帮助。 我们安装了lirc,在数据库中找到了您的遥控器/电视的设置。

为了与Domotics合作,我们运行了一个小的python脚本,该脚本将我们希望将电视的开/关从mqtt转换为lirc。

mqtt在lirc
 import paho.mqtt.client as mqtt import os import time import json IP = '192.168..' PORT = '1883' device = {18 : 'OpenBox', 19 : 'PHILIPS', 22 : 'air'} TOPIC_DOMOTICZ = 'domoticz/in' def send(device, command): # """ Sends IR-signal to the device """ os.system("irsend SEND_ONCE '" + device + "' '" + command + "'") # The callback for when the client receives a CONNACK response from the server. def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) # Subscribing in on_connect() means that if we lose the connection and # reconnect then subscriptions will be renewed. client.subscribe(TOPIC_DOMOTICZ,0) def on_publish(client,userdata,result): #create function for callback print("data published \n") pass # The callback for when a PUBLISH message is received from the server. def on_message(client, userdata, msg): domoticz = json.loads(msg.payload) if domoticz ['idx'] in device.keys(): idx = domoticz ['idx'] dev = device [idx] command = 'KEY_POWER' send (dev, command) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.on_publish = on_publish client.connect(IP, PORT, 60) client.loop_forever() 


我们在Domoticz中为电视,接收器和空调添加了三个虚拟按钮。
无论如何,通过电话控制电视都不方便。 但是当我忘了离开房间时,请关掉电视。

所有这些的一个不错的补充就是Pemoticz应用程序的Pebble手表的可用性。 在设置中添加了地址,应用程序拉动了所有开关。 现在没有一个Siri可以打开咖啡机/打开门并关闭电灯。 手表通常在手边,并且手机可能不在附近。 这也有其优点。 我花了几个小时没有处理语音识别的话题,但这也是可能的。



也许您可以在此完成“没有智能”房屋的故事。

结论


以结论的形式,然后呢?

待办事项清单:

-空调,无法找到用于lirc的遥控器的设置,并且第一次尝试复制点击也没有成功。 进一步锯。
-我们正在等待来自中国公司Mi c网关和几个传感器的订单。 通过棘手的操作将开门传感器变成泄漏传感器。 我们将添加到我们的系统。 触发后,传感器将向所有者发送通知。
“思想到此为止……”

使用的来源


在Raspberry Pi上运行HomeBridge
Sonoff-Tasmota维基
在已经运行的Pi上安装Domoticz
操作方法:将WiFi添加到咖啡机

Source: https://habr.com/ru/post/zh-CN403869/


All Articles