你是否厭倦了普通的 Junkers/Bosch 室內(nèi)恒溫器?是時(shí)候升級(jí)了!
介紹
忙碌了一天,回到溫暖舒適的家,這種感覺確實(shí)讓人心往神馳!多年來,我的家里一直使用的是一臺(tái) Junkers (Bosch) 燃?xì)忮仩t,為壁掛式散熱器面板提供熱水。
得益于 ESP8266 和 Amazon Alexa,現(xiàn)在可以從任何地方甚至通過語音控制中央供暖系統(tǒng)!
一些現(xiàn)代燃?xì)忮仩t對(duì)燃?xì)忮仩t和房間控制單元之間的接口采用了開放標(biāo)準(zhǔn)(OpenTherm),但在我的安裝中,該接口是制造商專有的。此處顯示的解決方案取代了 Junkers (Bosch) TW2 房間控制單元或任何兼容的單元。
背景
燃?xì)饧訜崞魇且环N具有天氣補(bǔ)償功能的調(diào)節(jié)燃?xì)忮仩t,由基本房間控制單元控制。與開/關(guān)恒溫器相反,加熱控制是通過精確控制循環(huán)回路中的水溫來實(shí)現(xiàn)的,從而通過散熱器面板釋放到房屋中的熱能。水溫受 TW2 房間控制單元的影響,室外溫度由溫度傳感器測量。
圖為鍋爐用戶手冊(cè)中的加熱曲線。室外溫度 (AT) 越低,水溫設(shè)定點(diǎn) (VT) 就越高,以補(bǔ)償通過房屋外殼的更大熱量損失。
燃?xì)忮仩t的控制系統(tǒng)試圖通過調(diào)制以盡可能少的燃?xì)馐褂昧縼磉_(dá)到和保持要求的水溫。這是制造商的專有技術(shù),我們不會(huì)干涉。
現(xiàn)有的房間控制單元由一個(gè)選擇恒溫器模式的開關(guān)、一個(gè)用于增加/減少水溫設(shè)定點(diǎn)的旋鈕(電位器)和一些電阻器組成?,F(xiàn)在的情況主要是:電位器磨損了,并向燃?xì)忮仩t產(chǎn)生了異常的控制信號(hào)。所以會(huì)突然感覺到莫名其妙變熱了!
概念
控制單元有一個(gè)簡單的 2 線制燃?xì)忮仩t接口,沒有有源組件或處理器。它本質(zhì)上是一個(gè)可變電阻。逆向工程非常簡單:燃?xì)忮仩t通過電線發(fā)送固定電流,并測量控制單元電阻產(chǎn)生的輸出電壓。所以我們需要的是一個(gè)精確控制的電壓源。
我沒有使用數(shù)模轉(zhuǎn)換器 (DAC),而是選擇使用 esp8266 的內(nèi)部 sigma-delta 源,據(jù)報(bào)道這是一個(gè)隱藏的功能,但在 arduino-esp8266 平臺(tái)內(nèi)核中尚不支持。它是一個(gè)高頻 PWM 信號(hào),具有 256 個(gè)離散占空比步長,對(duì)于此應(yīng)用來說綽綽有余。使用 RC 低通濾波器,PWM 信號(hào)被平滑為 DC 信號(hào)。Arduino AnalogWrite 不適合,它的頻率太低,然后 RC 濾波器會(huì)在輸出信號(hào)上留下相當(dāng)大的紋波。
通過射極跟隨器配置中的電阻分壓器網(wǎng)絡(luò)和 PNP 晶體管電路,我們獲得了適用于該應(yīng)用的有效范圍 (0.6V 。.1.02V) 的輸出信號(hào)。
構(gòu)建
電子電路可以很容易地構(gòu)建在一塊單面穿孔板上,非常適合 100x60x25mm 的項(xiàng)目盒。
Wemos 板使用2.54mm 母頭;這樣模塊可以在必要時(shí)輕松插入和拔出。
對(duì)于電源,我使用了一個(gè)可調(diào) DC/DC 轉(zhuǎn)換器(降壓),因?yàn)槲铱梢栽诤銣仄麟娎|中的 2 根備用電線上使用 24 VDC 電源,但任何其他穩(wěn)定的 3.3V 電源都可以。
將 Wemos 板插入其接頭之前調(diào)整 DC/DC 模塊的輸出電壓
使用約 15 厘米長的電線將 OLED 顯示屏、電容式觸摸按鈕和溫度/濕度傳感器連接到電路板:這些組件必須在構(gòu)建結(jié)束時(shí)粘在項(xiàng)目盒的前殼上幾滴熱膠。因此,請(qǐng)確保將所有電線焊接到這些組件的背面。
注意:OLED 模塊帶有一個(gè)預(yù)焊接的接頭,小心地拆焊它,不要損壞 oled 的玻璃。
接下來是電容式觸摸按鈕,效果很好,它們粘在項(xiàng)目盒的內(nèi)部,通過塑料外殼檢測觸摸。它們可以在一系列電壓下工作,但這里是 3.3V,因?yàn)?ESP8266 I/O 是 3.3V。
模塊上有 2 個(gè)焊盤可將行為更改為低/高電平有效,或開關(guān)模式與切換模式;我使用了標(biāo)準(zhǔn)配置中的模塊:高電平有效和開關(guān)。
為了避免重影,我在模塊電源輸入附近添加了一個(gè)額外的 1uF 電容器。這里提供的草圖不僅會(huì)檢測按鈕觸摸,還會(huì)檢測滑動(dòng)手勢。
接下來是項(xiàng)目框,它需要幾個(gè)孔:背板上的一個(gè)用于穿過四根墻線(電源和恒溫器控制),一個(gè)用于溫度/濕度傳感器的孔,以及一個(gè)用于顯示器的方孔。一個(gè)基本的鉆頭、一把切割刀和對(duì)堅(jiān)韌塑料的耐心就可以完成這項(xiàng)工作。
然后是構(gòu)建中最有趣的部分:油漆工作。
油漆工作完成后,是時(shí)候用幾滴熱膠將 OLED 顯示屏、觸摸按鈕和傳感器粘合到位。
完成的項(xiàng)目盒足夠輕,可以用兩個(gè)藍(lán)色大頭釘固定在墻上,無需螺絲。
Arduino軟件
請(qǐng)先安裝 arduino-esp8266 平臺(tái)https://github.com/esp8266/Arduino
對(duì)于顯示圖形,我使用了 Daniel Eichhorn 為 esp8266 氣象站所做的出色工作。該庫實(shí)現(xiàn)了漂亮的幀動(dòng)畫,并支持位圖。
https://github.com/ThingPulse/esp8266-oled-ssd1306
NessieGraphics.h 文件包含草圖使用的所有位圖。位圖采用 xbm (X-Bitmap) 格式,一種基于文本的格式,可以將其剪切和粘貼到頭文件中,并與您的代碼一起編譯。如果您打算創(chuàng)建自己的自定義 xbm 位圖,GIMP 是 goto 工具:在 GIMP 中打開任何圖像文件,調(diào)整到預(yù)期的像素?cái)?shù),然后保存為 xbm 格式。
arduino 草圖將連接到 Amazon AWS IOT 服務(wù)。亞馬遜提供了一些設(shè)置此連接的選項(xiàng),請(qǐng)參閱此鏈接:https ://docs.aws.amazon.com/iot/latest/developerguide/protocols.html
我選擇使用客戶端證書作為身份驗(yàn)證的 MQTT 協(xié)議,在端口 443 上。要使此連接正常工作,必須另外安裝 Pubsubclient MQTT 庫(轉(zhuǎn)到https://github.com/knolleary/pubsubclient,或直接從在 Arduino IDE 中)。用于設(shè)置 TLS 1.2 連接的所有其他庫已經(jīng)是 arduino-esp8266 平臺(tái)的一部分。
在正常工作之前,還有一些事情要做:
在 .ino 文件中填寫您的 WiFi 憑據(jù)。
應(yīng)用一些庫修復(fù):文件位于 bitbucket 存儲(chǔ)庫中;按照自述文件的說明進(jìn)行操作。
軟件構(gòu)建不需要任何特定參數(shù)。作為參考,我使用了 80MHz,1M+3M spiffs,沒有調(diào)試。
亞馬遜網(wǎng)絡(luò)服務(wù)設(shè)置
如果您像我一樣沒有使用過亞馬遜云服務(wù)的經(jīng)驗(yàn),那么這一步可能會(huì)花費(fèi)大部分時(shí)間。這是一個(gè)復(fù)雜的設(shè)置,盡管邏輯布局合理,并且存在許多好的指南,亞馬遜和其他人都有。
學(xué)習(xí)需要時(shí)間,但完全免費(fèi)!亞馬遜為其服務(wù)提供免費(fèi)套餐,這在很大程度上足以建立這種 DIY 項(xiàng)目。IOT 服務(wù)在前 12 個(gè)月是免費(fèi)的,只要您不從您的設(shè)備發(fā)送數(shù)百萬條 mqtt 消息。
首先創(chuàng)建一個(gè)亞馬遜賬戶和一個(gè)亞馬遜開發(fā)者賬戶。您將需要開發(fā)者帳戶來創(chuàng)建您的 Alexa 技能。
AWS - 第 1 部分:在 Amazon AWS IOT 上創(chuàng)建您的事 things
按照這些說明https://docs.aws.amazon.com/iot/latest/developerguide/iot-gs.html
創(chuàng)建您的事項(xiàng),創(chuàng)建設(shè)備證書,設(shè)置策略,將策略附加到設(shè)備證書,并將證書附加到您的事項(xiàng)。無需在此處進(jìn)一步配置您的設(shè)備,或配置規(guī)則。我們不會(huì)在我們的應(yīng)用程序中使用這些。
從截圖中可以看出,我將我的東西命名為“stefaan_wemos”。該名稱必須在 arduino 草圖中進(jìn)行硬編碼。
創(chuàng)建設(shè)備證書后,將文件下載到您的 PC。
我們將使用 openssl 將客戶端證書和私鑰轉(zhuǎn)換為二進(jìn)制格式。在 Windows 上,您可能需要安裝 openssl:https://wiki.openssl.org/index.php/Binaries。在命令行類型:
》 openssl x509 -in c7ddc08d09.cert.pem-out cert.der -outform DER
》 openssl rsa -in c7ddc08d09.private.key -out key.der-outform DER
用您的證書和私鑰的確切名稱替換輸入文件名。將輸出文件名保留為“cert.der”和“key.der” :這些文件必須存儲(chǔ)在 SPIFFS 中,并且草圖代碼正在引用這些確切的文件名。
我沒有使用 AWS IOT 的公鑰和根 CA;我的代碼沒有驗(yàn)證 AWS IOT 服務(wù)器的身份。
在“交互”選項(xiàng)卡下,您將找到將您的 esp8266 硬件連接到亞馬遜云所需的最后一個(gè)參數(shù)。將屏幕截圖中紅色顯示的字符串復(fù)制到您的草圖中,就可以編譯和上傳了。
如果一切順利,esp8266 將向 AWS IOT 設(shè)備影子報(bào)告其狀態(tài)。串行輸出將幫助您識(shí)別潛在錯(cuò)誤。
AWS IOT MQTT 客戶端控制臺(tái)可用于向 esp8266 設(shè)備發(fā)送 mqtt 測試消息。
在$aws/things/《yourthingname》/update上發(fā)布任何內(nèi)容,您應(yīng)該會(huì)看到消息在串行輸出中回顯。
或訂閱$aws/things/《yourthingname》/update/accepted以接收來自 esp8266 的任何消息。
如果您沒有收到來自 AWS IOT 的回調(diào),那么很可能您忘記應(yīng)用庫修復(fù),尤其是#define MQTT_MAX_PACKET_SIZE 768在PubSubClient.h.
如果 Serial 未顯示“MQTT connection ok”,請(qǐng)查看串行輸出以獲取線索。設(shè)置 TLS 連接可能存在問題:檢查硬編碼的 AWS 參數(shù)和證書/私鑰文件。
AWS - 第 2 部分:設(shè)置 AWS Lambda 函數(shù)
按照本指南設(shè)置您的 lambda 函數(shù):
https://docs.aws.amazon.com/lambda/latest/dg/get-started-create-function.html
確保在N. Virginia地區(qū)創(chuàng)建函數(shù)。該功能需要訪問AWS IOT 和 CloudWatch 日志;確保相應(yīng)地設(shè)置策略。檢查您的視圖是否類似于下面的屏幕截圖。
注意您的 lambda 函數(shù)的 ARN;稍后在設(shè)置您的 Alexa Skill時(shí),您將需要它。
將我的 bitbucket 存儲(chǔ)庫中的 javascript 代碼index.js復(fù)制到代碼窗口中。不要忘記使用您自己的事物名稱和端點(diǎn)修改對(duì)象“iotData”和“thingName”。
var iotData = new AWS.IotData({endpoint: “aaaaaaaaaaaaaa.iot.eu-west-1.amazonaws.com”});
const thingName = “your-AWS-IOT-thingname”;
bitbucket 存儲(chǔ)庫包含一些測試事件來測試您的 lambda 函數(shù)。轉(zhuǎn)到“配置測試事件”并在文本字段中復(fù)制粘貼示例測試事件(json 代碼)。測試事件允許測試與您在上一步中設(shè)置的 AWS IOT 影子的連接。
如果您的 esp8266 硬件仍處于連接狀態(tài),您會(huì)注意到測試事件將通過事物的設(shè)備影子有效地檢索和修改恒溫器設(shè)置。
如果到這工作依舊正常,距離啟用語音的恒溫器僅一步之遙!
AWS - 第 3 部分:創(chuàng)建您的 Alexa 智能家居技能
作為最后一步,我們將為恒溫器創(chuàng)建語音控制。我們將使用 Alexa 智能家居框架。
從初始屏幕中,選擇“智能家居”技能類型,并為您的技能命名。注意 Application id (amzn1.ask.skill.xxxx) :您需要將其添加到您在上一步中創(chuàng)建的 lambda 函數(shù)的觸發(fā)器中。這將使您的技能能夠調(diào)用您的 lambda 函數(shù)。
在“端點(diǎn)”部分,填寫您之前創(chuàng)建的 lambda 函數(shù)的 ARN。您也可以在其他地區(qū)添加額外的 lambda 函數(shù)。
在配置屏幕中,設(shè)置帳戶鏈接;這是 Alexa 智能家居技能的強(qiáng)制性步驟。我選擇使用“登錄亞馬遜”;這是一個(gè)方便的選擇,因?yàn)槟恍枰O(shè)置自己的身份驗(yàn)證服務(wù)器。
屏幕截圖上以藍(lán)色矩形顯示的字段特定于您的技能和帳戶鏈接。確保它們是正確的!如果您在執(zhí)行帳戶鏈接時(shí)從 Alexa 應(yīng)用程序收到奇怪的錯(cuò)誤,請(qǐng)回到這一步嘗試找出您的錯(cuò)誤!
現(xiàn)在是時(shí)候在 Alexa 商店中找到您的技能并激活它了。
帳戶關(guān)聯(lián)成功后,你可以使用任何 Alexa 語音服務(wù)來測試您的結(jié)果。
結(jié)語
如果你不想喚醒 Alexa,可以隨時(shí)通過其內(nèi)部 Web 界面控制恒溫器。要將 Web 界面暴露給外界,一種可能的方法是使用 dyndns 服務(wù),并在路由器中設(shè)置端口轉(zhuǎn)發(fā)到 esp8266。
評(píng)論
查看更多