คู่มือสำหรับผู้เริ่มต้น OpenHAB ตอนที่ 2: ZWave, MQTT, กฎเกณฑ์และการสร้างแผนภูมิ

คู่มือสำหรับผู้เริ่มต้น OpenHAB ตอนที่ 2: ZWave, MQTT, กฎเกณฑ์และการสร้างแผนภูมิ

ฟรีไม่ได้หมายความว่า 'ไม่ดีเท่าจ่าย' เสมอไป และ OpenHAB ก็ไม่มีข้อยกเว้น ซอฟต์แวร์โอเพนซอร์สโฮมออโตเมชั่นมีศักยภาพเหนือกว่าระบบโฮมออโตเมชั่นอื่นๆ ในตลาด – แต่การติดตั้งนั้นไม่ง่าย อันที่จริง มันอาจจะน่าหงุดหงิดจริงๆ





ในส่วนที่ 1 ของไกด์ ผมแนะนำคุณตลอด ติดตั้ง OpenHAB บน Raspberry Pi แนะนำแนวคิดหลักของ OpenHAB และแสดงวิธีเพิ่มรายการแรกของคุณลงในระบบ วันนี้เราจะไปกันต่อ:





  • การเพิ่มอุปกรณ์ ZWave
  • การเพิ่มตัวควบคุม Harmony Ultimate
  • แนะนำกฎ
  • ขอแนะนำ MQTT และติดตั้งโบรกเกอร์ MQTT บน Pi ของคุณด้วยเซ็นเซอร์บน Arduino
  • บันทึกข้อมูลแล้วสร้างกราฟ

ข้อมูลเบื้องต้นเกี่ยวกับ Z-Wave

Z-Wave เป็นโปรโตคอลระบบอัตโนมัติภายในบ้านที่โดดเด่นมาหลายปีแล้ว: มีความน่าเชื่อถือ ได้รับการพัฒนาอย่างกว้างขวาง และใช้งานได้หลากหลายกว่าผลิตภัณฑ์บ้านอัจฉริยะอื่นๆ มีเซ็นเซอร์ Z-Wave หลายร้อยตัวที่ใช้งานได้หลากหลาย OpenHAB สามารถ ใช้งานได้กับ Z-Wave แต่การตั้งค่ายุ่งยากและไม่รับประกันความน่าเชื่อถือ





หากคุณกำลังพิจารณาที่จะซื้อบ้านที่เต็มไปด้วยเซ็นเซอร์ Z-Wave สำหรับใช้กับ OpenHAB โดยเฉพาะ เราขอแนะนำให้คุณพิจารณาใหม่ อาจใช้ได้ผลดีสำหรับคุณ หรืออาจมีปัญหาเล็กๆ น้อยๆ ตามมาเรื่อยๆ อย่างน้อย อย่าซื้อบ้านที่มีเซ็นเซอร์เต็มไปหมด จนกว่าคุณจะมีโอกาสได้ลองใช้ดูบ้าง เหตุผลเดียวในการเลือก Z-Wave ก็คือถ้าคุณยังไม่ตกลงกับ OpenHAB 100% และต้องการเปิดตัวเลือกของคุณไว้ในอนาคต ตัวอย่างเช่น Z-Wave ใช้งานได้กับฮับ Samsung SmartThings เช่นเดียวกับฮับเฉพาะ Z-Wave เช่น Homeseer และตัวเลือกซอฟต์แวร์อื่นๆ มากมาย เช่น domoticz .

แม้ว่า OpenHAB จะรวมการผูก Z-Wave ไว้ แต่คุณยังต้อง กำหนดค่าเครือข่าย Z-Wave ก่อน ก่อนที่ OpenHAB จะเริ่มสืบค้นข้อมูลได้ หากคุณมีบอร์ดควบคุม Rasberry แสดงว่าคุณมีซอฟต์แวร์สำหรับกำหนดค่าเครือข่าย ดังนั้นเราจะไม่กล่าวถึงในที่นี้ หากคุณซื้อคอนโทรลเลอร์ Aeotec USB Z-Stick หรือที่คล้ายกัน คุณอาจไม่มีซอฟต์แวร์ใดๆ รวมอยู่ด้วย ดังนั้นโปรดอ่านต่อไป



Aeotec Z-Stick Gen5 Z-Wave Hub Z-Wave Plus USB เพื่อสร้างเกตเวย์ (Ordinary White) ซื้อเลยที่ AMAZON

หากคุณมีการตั้งค่าเครือข่าย Z-Wave อยู่แล้ว คุณสามารถเสียบคอนโทรลเลอร์ของคุณเข้ากับ Pi และเริ่มกำหนดค่าการเชื่อมโยงและรายการ หากนี่เป็นการโจมตี Z-Wave ครั้งแรกของคุณ มันจะซับซ้อนกว่านี้เล็กน้อย

อย่างแรก ในด้านฮาร์ดแวร์: คอนโทรลเลอร์แต่ละตัวมีวิธีจับคู่กับอุปกรณ์ของตัวเอง (เรียกทางเทคนิคว่า 'โหมดรวม' ซึ่งกำหนดโหนด ID) ในกรณีของ Aotec Z-Stick นี่หมายถึงการถอดปลั๊กออกจากพอร์ต USB และกดปุ่มหนึ่งครั้งเพื่อวางลงในโหมดการรวม จากนั้นนำอุปกรณ์ไปใกล้กับอุปกรณ์ที่คุณกำลังจับคู่ แล้วกดปุ่มรวมที่อุปกรณ์นั้นด้วย (สิ่งนี้จะแตกต่างกันไป: ซ็อกเก็ต Everspring ของฉันต้องการให้กดปุ่ม 3 ครั้งติดต่อกันอย่างรวดเร็ว ดังนั้นบทเรียนที่นี่คือการอ่านคู่มือสำหรับอุปกรณ์ของคุณ) .





Z-Stick จะกะพริบชั่วครู่เพื่อแสดงความสำเร็จ สิ่งนี้ทำให้เกิดปัญหาเมื่อเสียบกลับเข้าไปใน Pi เนื่องจากมีการกำหนดพอร์ตใหม่ รีสตาร์ท Pi ของคุณเพื่อรีเซ็ตกลับเป็นพอร์ตมาตรฐาน หากคุณพบว่ามีการกำหนดค่าใหม่แบบไดนามิกเป็นพอร์ตอื่น ยังดีกว่า: อย่าเสียบเข้ากับ Pi จนกว่าคุณจะจับคู่ฮาร์ดแวร์ทั้งหมดก่อน

การติดตั้ง HABmin และ Z-Wave Bindings

เนื่องจาก OpenHAB ไม่ใช่ยูทิลิตี้การกำหนดค่าสำหรับ Z-Wave จริงๆ เราจึงจะติดตั้งเครื่องมือการจัดการเว็บตัวอื่นที่ใช้งานได้ ซึ่งเรียกว่า HABmin ตรงไปที่ ที่เก็บ HABmin Github ดาวน์โหลดรุ่นปัจจุบัน เมื่อคุณคลายซิปแล้ว คุณจะพบ 2 .ไห ไฟล์ในไดเร็กทอรี addons - ควรวางไว้ในไดเร็กทอรี addons ที่เกี่ยวข้องในการแชร์ OpenHAB Home ของคุณ (หากคุณใช้ Aotec gen5 Z-Stick ด้วย ตรวจสอบให้แน่ใจว่าคุณมี Z-Wave เวอร์ชัน 1.8 เป็นอย่างน้อย) .





ถัดไป สร้างโฟลเดอร์ใหม่ในไดเร็กทอรี webapps และเรียกมันว่า 'habmin' (ตัวพิมพ์เล็กมีความสำคัญ) คัดลอกไฟล์ที่เหลือที่ดาวน์โหลดไปไว้ที่นั่น

หมายเหตุ: นอกจากนี้ยังมีa HABmin2 ภายใต้การพัฒนาอย่างแข็งขัน การติดตั้งจะเหมือนกันมาก แต่มี .jar addon เพิ่มเติมอีกหนึ่งรายการ มันอาจจะคุ้มค่าที่จะลองทั้งสองอย่างเพื่อดูว่าคุณชอบอันไหน

หากคุณยังไม่ได้เสียบคอนโทรลเลอร์ของคุณเข้ากับ Pi พิมพ์ข้อมูลต่อไปนี้เพื่อค้นหาพอร์ตที่ถูกต้อง

ls /dev/tty*

คุณกำลังมองหาอะไรก็ได้ที่มี USB ในชื่อหรือในกรณีของฉัน Z-stick นำเสนอตัวเองเป็น / dev / ttyACM0 (โมเด็ม). คำสั่งอาจง่ายกว่าหนึ่งครั้งก่อนที่คุณจะเสียบปลั๊ก และอีกครั้งหลังจากนั้น คุณจึงเห็นการเปลี่ยนแปลงได้หากไม่แน่ใจ

เปิดไฟล์กำหนดค่า OpenHAB และแก้ไขส่วนใน Z-Wave โดยยกเลิกการใส่เครื่องหมายทั้งสองบรรทัดและใส่ที่อยู่อุปกรณ์จริงของคุณ ขั้นตอนสุดท้ายสำหรับฉันคือการอนุญาตให้ผู้ใช้ OpenHAB เข้าถึงโมเด็ม

sudo usermod -a -G dialout openhab

ตอนนี้ เพื่อเริ่มต้นการทำงานทั้งหมด ให้รีสตาร์ท OpenHAB

sudo service openhab เริ่มใหม่

หวังว่า หากคุณกำลังตรวจสอบบันทึกการดีบัก คุณจะเห็นสิ่งนี้ ยินดีด้วย คุณกำลังพูดถึง Z-Wave คุณอาจพบว่าบันทึกการดีบักเต็มไปด้วยข้อความจากโหนด Z-Wave ต่างๆ เริ่มต้นด้วยการตรวจสอบ HABMIN เพื่อดูว่าพบอะไร: http://openhab.local:8080/habmin/index.html (แทนที่ openhab.local ด้วยชื่อโฮสต์ Raspberry Pi หรือที่อยู่ IP ของคุณ)

มีอะไรให้ดูมากมายใน HABMIN แต่เรากังวลจริงๆ กับ การกำหนดค่า -> การผูก -> Z-Wave -> อุปกรณ์ แท็บดังที่คุณเห็นด้านล่าง ขยายโหนดเพื่อแก้ไขตำแหน่งและป้ายชื่อเพื่อให้ง่ายต่อการอ้างอิง

การกำหนดค่ารายการ Z-Wave

อุปกรณ์ Z-Wave แต่ละเครื่องจะมีการกำหนดค่าเฉพาะสำหรับ OpenHAB โชคดีที่อุปกรณ์ส่วนใหญ่ได้รับการสำรวจแล้วและจะมีตัวอย่างให้คุณอยู่แล้ว การกำหนดค่าอุปกรณ์แบบกำหนดเองที่ไม่รู้จักนั้นอยู่นอกเหนือขอบเขตของคู่มือนี้ แต่สมมติว่าตอนนี้รองรับแล้ว

อันดับแรก ฉันมีสวิตช์เปิดปิดและมิเตอร์วัด Everspring AN158 แบบพื้นฐานบน Node 3 Googling ฉบับย่อนำฉันไปที่บล็อกโพสต์บน Wetwa.re พร้อมการกำหนดค่ารายการตัวอย่าง ฉันปรับสิ่งนี้ดังนี้:

เปลี่ยนเครื่องลดความชื้น_Switch 'เครื่องลดความชื้น' {zwave='3:command=switch_binary'}

Number Dehumidifier_Watts 'การใช้พลังงานของเครื่องลดความชื้น [%.1f W]' { zwave='3:command=meter' }

สมบูรณ์แบบ.

ถัดมาคือ Aeotec Gen5 Multi-Sensor

Aeon Labs Aeotec Z-Wave Gen5 มัลติเซ็นเซอร์ (Z-Wave Plus) ซื้อเลยที่ AMAZON

สำหรับอันนี้ ฉันพบตัวอย่างการกำหนดค่าที่ iwasdot.com และมัลติเซนเซอร์ของฉันอยู่บนโหนด 2

หมายเลข Hallway_Temperature 'อุณหภูมิโถงทางเดิน [%.1f °C]' (โถงทางเดิน อุณหภูมิ) {zwave='2:0:command=sensor_multilevel,sensor_type=1,sensor_scale=0'}

Number Hallway_Humidity 'ความชื้นในห้องโถง [%.0f %%]' (โถงทางเดิน, ความชื้น) {zwave='2:0:command=sensor_multilevel,sensor_type=5'}

Number Hallway_Luminance 'Hallway Luminance [%.0f Lux]' (โถงทางเดิน) {zwave='2:0:command=sensor_multilevel,sensor_type=3'}

ติดต่อ Hallway_Motion 'Hallway Motion [%s]' (Hallway, Motion) {zwave='2:0:command=sensor_binary,respond_to_basic=true'}

ตัวเลข sensor_1_battery 'แบตเตอรี่ [%s %%]' (การเคลื่อนไหว) {zwave='2:0:command=battery'}

หากรูปแบบนี้ดูแปลกสำหรับคุณ โปรดย้อนกลับไปที่รูปแบบแรก คู่มือสำหรับผู้เริ่มต้น โดยเฉพาะส่วนการผูก Hue ซึ่งฉันอธิบายวิธีการเพิ่มไอเท็ม คุณอาจจำเป็นต้องคัดลอกตัวอย่างการวางแบบนี้เท่านั้น แต่ในกรณีที่คุณมีอุปกรณ์ใหม่ เอกสารประกอบการผูกจะระบุรายละเอียดทั้งหมด คำสั่ง .

Logitech Harmony Binding

ก่อนที่เราจะเข้าสู่กฎ ฉันต้องการเพิ่มข้อความสั้นๆ เกี่ยวกับการทำงานกับการเชื่อมโยง Harmony ฉันเป็นแฟนตัวยงของรีโมตระยะไกลชุด Harmony เพื่อลดความซับซ้อนของประสบการณ์โฮมมีเดียเซ็นเตอร์ แต่มักจะทำหน้าที่เป็นระบบที่แยกจากกันภายในสมาร์ทโฮม ด้วย OpenHAB กิจกรรมของ Logitech Harmony และการควบคุมอุปกรณ์เต็มรูปแบบสามารถเป็นส่วนหนึ่งของระบบที่รวมศูนย์ของคุณได้แล้ว และยังรวมอยู่ในกฎการทำงานอัตโนมัติอีกด้วย

เริ่มต้นด้วยการติดตั้งไฟล์การโยงสามไฟล์ที่คุณพบโดยใช้ apt-cache เพื่อค้นหา 'harmony':

อย่าลืม chown ไดเร็กทอรีการโยงอีกครั้งเมื่อคุณทำเสร็จแล้ว:

sudo apt-get ติดตั้ง openhab-addon-action-harmonyhub

sudo apt-get ติดตั้ง openhab-addon-binding-harmonyhub

sudo apt-get ติดตั้ง openhab-addon-io-harmonyhub

sudo chown -hR openhab:openhab /usr/share/openhab

ในการกำหนดค่าการเชื่อมโยง ให้เปิดไฟล์ openhab.cfg และเพิ่มส่วนใหม่ดังนี้:

########## HARMONY รีโมทคอนโทรล ##########

HarmonyHub:host=192.168.1.181 หรือ ip ของคุณ

Harmonyhub:ชื่อผู้ใช้= your-harmony-email-เข้าสู่ระบบ

HarmonyHub:รหัสผ่าน= รหัสผ่านของคุณ

ที่อยู่ IP เป็นของฮับ Harmony ของคุณ ใช้เครื่องสแกนเครือข่ายเพื่อค้นหาสิ่งนั้น คุณจะต้องป้อนรายละเอียดการเข้าสู่ระบบของคุณ ซึ่งเป็นข้อมูลที่คุณป้อนเมื่อคุณเปิดยูทิลิตีการกำหนดค่า Harmony มาตรฐาน แค่นั้นแหละ. เมื่อรีสตาร์ท Hue ของคุณ บันทึกการดีบักควรมีเอาต์พุตจากการโยงอย่างกะทันหัน

นี่คือรายการรูปแบบ JSON ของกิจกรรม อุปกรณ์ และคำสั่งทั้งหมดของคุณที่สามารถส่งได้ เป็นความคิดที่ดีที่จะคัดลอกข้อมูลนี้เพื่อใช้อ้างอิงในอนาคต คุณสามารถทำให้อ่านง่ายยิ่งขึ้นด้วยโหนดที่ยุบได้ โดยการวางลงในฟอร์แมตเตอร์ JSON ออนไลน์ แบบนี้ .

เช่นเดียวกับกิจกรรม PowerOff มาตรฐานซึ่งเป็นค่าเริ่มต้น คุณจะพบกิจกรรมที่คุณกำหนดไว้ที่นี่ตามชื่อ ตอนนี้ มาสร้างการควบคุมด้วยปุ่มเดียวง่ายๆ เพื่อเริ่มกิจกรรม ขั้นแรก ในไฟล์รายการของคุณ ให้เพิ่มบรรทัดต่อไปนี้ เปลี่ยนกลุ่มและไอคอนหากต้องการ

/* ฮาร์โมนี่ ฮับ */

สตริง Harmony_Activity 'Harmony [%s]' (Living_Room) {harmonyhub='*[currentActivity]' }

มันคือ การผูกสตริงแบบสองทาง ซึ่งสามารถดึงทั้งกิจกรรมปัจจุบันและสั่งกิจกรรมปัจจุบันให้เป็นอย่างอื่นได้ ตอนนี้ เราสามารถสร้างปุ่มสำหรับมันในไฟล์แผนผังเว็บไซต์

สลับรายการ=การจับคู่ Harmony_Activity=[PowerOff='Off',Exercise='Exercise',13858434='TV',Karaoke='Karaoke']

windows 10 บูทไม่ได้

ในวงเล็บเหลี่ยม คุณจะเห็นแต่ละกิจกรรมพร้อมกับป้ายกำกับ โดยทั่วไป คุณสามารถอ้างถึงกิจกรรมได้โดยตรงตามที่คุณตั้งชื่อไว้บนรีโมตของคุณ แต่ฉันพบว่ามีข้อยกเว้นสำหรับกิจกรรมนี้ อะไรก็ได้ที่มีช่องว่างในชื่อกิจกรรม เช่น 'ดูทีวี' ในกรณีนี้ คุณจะต้องใช้รหัสกิจกรรม อีกครั้ง คุณสามารถค้นหา ID ได้ในเอาต์พุตการดีบัก JSON บันทึกและรีเฟรชอินเทอร์เฟซของคุณ คุณควรเห็นสิ่งที่คล้ายกันนี้:

คุณยังสามารถอ้างอิงถึงกิจกรรมในกฎของคุณได้ ตามที่เราจะเห็นต่อไป อ่านหน้าวิกิสำหรับข้อมูลเพิ่มเติมเกี่ยวกับ ความสามัคคีผูกพัน .

บทนำทั่วไปเกี่ยวกับกฎ

ฮับโฮมอัจฉริยะส่วนใหญ่มีการสร้างกฎเกณฑ์บางอย่าง ดังนั้นคุณจึงสามารถตอบสนองต่อข้อมูลเซ็นเซอร์และเหตุการณ์ในบ้านได้โดยอัตโนมัติ อันที่จริง ฉันขอโต้แย้งว่าบ้านอัจฉริยะที่แท้จริงไม่ใช่บ้านที่คุณต้องใช้เวลาโต้ตอบกับแอปบนอุปกรณ์เคลื่อนที่ แต่เป็นบ้านที่ผู้ใช้ปลายทางมองไม่เห็นและเป็นไปโดยอัตโนมัติโดยสมบูรณ์ ด้วยเหตุนี้ OpenHAB จึงรวมภาษาสคริปต์กฎที่มีประสิทธิภาพซึ่งคุณสามารถตั้งโปรแกรมได้ ซึ่งมากกว่าความซับซ้อนของฮับสมาร์ทโฮมส่วนใหญ่หรือสูตร IFTTT

กฎการเขียนโปรแกรมฟังดูแย่กว่าที่เป็นอยู่ มาเริ่มง่ายๆ ด้วยกฎสองข้อที่จะเปิดหรือปิดไฟโดยขึ้นอยู่กับเซ็นเซอร์การมีอยู่:

กฎ 'ไฟสำนักงานเปิดเมื่อเจมส์นำเสนอ'

เมื่อไร

รายการ JamesInOffice เปลี่ยนจาก OFF เป็น ON

แล้ว

sendCommand(Office_Hue,ON)

จบ

กฎ 'สำนักงานปิดไฟเมื่อเจมส์จากไป'

เมื่อไร

รายการ JamesInOffice เปลี่ยนจาก ON เป็น OFF

แล้ว

sendCommand(Office_Hue,ปิด)

จบ

ขั้นแรก เราตั้งชื่อกฎ – ให้รายละเอียด เพื่อให้คุณรู้ว่าเหตุการณ์ใดกำลังจะเกิดขึ้น ต่อไป เรากำหนดกฎง่ายๆ ของเราโดยพูดว่า เมื่อ x เป็นจริง ให้ทำ y . End หมายถึงการปิดกฎนั้น ๆ มีคำพิเศษจำนวนหนึ่งที่คุณสามารถใช้ในกฎได้ แต่ตอนนี้ เรากำลังจัดการกับไวยากรณ์ง่ายๆ สองบิต - รายการ ซึ่งช่วยให้คุณสามารถค้นหาสถานะของบางสิ่งได้ และ sendCommand ซึ่งทำสิ่งที่คุณคิดว่ามันจะทำอย่างแน่นอน ฉันบอกคุณว่ามันง่าย

อาจไม่จำเป็นต้องใช้กฎสองข้อ แต่เมื่อตรรกะของฉันซับซ้อนขึ้น จะเป็นประโยชน์ที่จะแยกกฎเหล่านั้นออกจากกัน ไม่ว่าฉันจะเข้าหรือออกจากพื้นที่ - และอาจเป็นความคิดที่ดีที่จะเพิ่มเซ็นเซอร์วัดแสงที่ใดที่หนึ่ง ในสมการจะได้ไม่ต้องเปิดไฟโดยไม่จำเป็น

มาดูตัวอย่างอื่นเพื่อสร้างกฎที่ตั้งเวลาไว้

กฎ 'ออกกำลังกายทุกเช้า'

เมื่อไร

เวลา cron '0 0 8 1/1 * ? *'

แล้ว

HarmonyStartActivity('ออกกำลังกาย')

จบ

อีกครั้ง เราตั้งชื่อกฎ ระบุเงื่อนไขว่าเมื่อใดควรเริ่มทำงาน และการดำเนินการที่ต้องทำ แต่ในกรณีนี้ เรากำลังกำหนดรูปแบบเวลา รหัสตลกที่คุณเห็นในเครื่องหมายคำพูดคือนิพจน์ CRON สำหรับ Quartz Scheduler (รูปแบบแตกต่างไปจาก CRONtab ปกติเล็กน้อย) ฉันใช้ cronmaker.com เพื่อช่วยสร้างนิพจน์ แต่คุณยังสามารถอ่านคำแนะนำรูปแบบ [ไม่มีให้ใช้งานอีกต่อไป] สำหรับคำอธิบายโดยละเอียดและตัวอย่างเพิ่มเติม

CronMaker.com ใช้เพื่อสร้างนิพจน์ Cron ที่มีรูปแบบถูกต้อง

กฎของฉันบอกว่า '8 โมงเช้าทุกเช้า ทุกวันในสัปดาห์ บอกระบบ Harmony Ultimate ของฉันให้เริ่มกิจกรรมการออกกำลังกาย' ซึ่งจะเปิดใช้งานทีวี, Xbox, เครื่องขยายเสียง และกดปุ่ม A หลังจากนั้นหนึ่งนาทีเพื่อเปิด ดิสก์ในไดรฟ์

น่าเศร้าที่ OpenHAB ยังไม่สามารถทำแบบฝึกหัดให้ฉันได้

กฎอีกข้อหนึ่งที่ฉันจะแสดงให้คุณเห็นคือสิ่งที่ฉันใช้จัดการระดับความชื้นในบ้าน ฉันมีเครื่องลดความชื้นเครื่องเดียวที่ฉันต้องย้ายไปทุกที่ที่ต้องการ ดังนั้นฉันจึงตัดสินใจดูเซ็นเซอร์ความชื้นทั้งหมดของฉัน ค้นหาว่าอันไหนสูงสุด และเก็บไว้ในตัวแปร ขณะนี้มีการเรียกใช้ทุกนาที แต่สามารถลดลงได้อย่างง่ายดาย ลองดูก่อน:

นำเข้า org.openhab.core.library.types.*

นำเข้า org.openhab.model.script.actions.*

นำเข้า java.lang.String

กฎ 'เครื่องวัดความชื้น'

เมื่อเวลา cron '0 * * * * ?'

แล้ว

var prevHigh = 0

วาร์สูงฮัม = ''

ความชื้น?.members.forEach[hum|

logDebug('humidity.rules', hum.name);

if(hum.state เป็น DecimalType > prevHigh){

prevHigh = hum.state

highHum = hum.name + ': ' + hum.state + '%'

}

วิธีการสร้างการผจญภัยข้อความ

]

logDebug('humidity.rules', highHum);

postUpdate(Dehumidifier_Needed,highHum);

จบ

แก่นของกฎอยู่ใน ความชื้น?.members.foreach ไลน์. ความชื้นเป็นชื่อกลุ่มสำหรับเซ็นเซอร์ความชื้นของฉัน .สมาชิก คว้าไอเท็มทั้งหมดในกลุ่มนั้น แต่ละ วนซ้ำไปซ้ำมา (ด้วยรูปแบบวงเล็บเหลี่ยมที่น่าสงสัยซึ่งคุณอาจไม่คุ้นเคย) วากยสัมพันธ์ของกฎนั้นมาจาก Xtend ดังนั้นคุณจึงสามารถอ่านค่า เอกสาร Xtend หากคุณไม่สามารถหาตัวอย่างมาปรับใช้ได้

คุณอาจไม่จำเป็นต้องทำ – มีกฎตัวอย่างหลายร้อยข้อ:

MQTT สำหรับ OpenHAB และ Internet of Things

MQTT เป็นระบบส่งข้อความที่มีน้ำหนักเบาสำหรับการสื่อสารระหว่างเครื่องกับเครื่อง ซึ่งเป็น Twitter ชนิดหนึ่งสำหรับ Arduinos หรือ Raspberry Pis ของคุณเพื่อพูดคุยกัน (แต่แน่นอนว่าใช้งานได้มากกว่านั้น) กำลังได้รับความนิยมอย่างรวดเร็วและพบว่าตัวเองมีอุปกรณ์ Internet of Things ซึ่งโดยทั่วไปแล้วจะเป็นไมโครคอนโทรลเลอร์ที่มีทรัพยากรต่ำซึ่งต้องการวิธีที่เชื่อถือได้ในการส่งข้อมูลเซ็นเซอร์กลับไปยังฮับของคุณหรือรับคำสั่งจากระยะไกล นั่นคือสิ่งที่เราจะทำกับมัน

แต่ทำไมต้องคิดค้นล้อใหม่?

MQ Telemetry Transport ถูกคิดค้นขึ้นในปี 2542 เพื่อเชื่อมต่อท่อส่งน้ำมันผ่านการเชื่อมต่อดาวเทียมที่ช้า ซึ่งออกแบบมาโดยเฉพาะเพื่อลดการใช้แบตเตอรี่และแบนด์วิดท์ ในขณะที่ยังคงให้ข้อมูลที่เชื่อถือได้ ตลอดหลายปีที่ผ่านมา หลักการออกแบบยังคงเหมือนเดิม แต่กรณีการใช้งานได้เปลี่ยนจากระบบฝังตัวแบบพิเศษมาเป็นอุปกรณ์ Internet of Things ทั่วไป ในปี 2010 โปรโตคอลได้รับการปล่อยตัวโดยไม่มีค่าลิขสิทธิ์ ซึ่งเปิดให้ทุกคนใช้และนำไปใช้ เราชอบฟรี

คุณอาจสงสัยว่าทำไมเราถึงต้องกังวลกับโปรโตคอลอื่น - เรามี HTTP แล้ว - ซึ่งสามารถใช้เพื่อส่งข้อความด่วนระหว่างระบบที่เชื่อมต่อเว็บทุกรูปแบบ (เช่น OpenHAB และ IFTTT โดยเฉพาะกับช่องผู้สร้างใหม่ ). และคุณจะพูดถูก อย่างไรก็ตาม โอเวอร์เฮดในการประมวลผลของเซิร์ฟเวอร์ HTTP นั้นค่อนข้างใหญ่ – มากจนคุณไม่สามารถเรียกใช้งานบนไมโครคอนโทรลเลอร์แบบฝังตัวอย่าง Arduino ได้อย่างง่ายดาย (อย่างน้อย คุณก็ทำได้ แต่หน่วยความจำเหลือสำหรับอย่างอื่นอีกไม่มาก ). MQTT เป็นอีกทางหนึ่งที่มีน้ำหนักเบา ดังนั้นการส่งข้อความทั่วเครือข่ายของคุณจะไม่อุดตันท่อ และสามารถพอดีกับพื้นที่หน่วยความจำ Arduino เล็กๆ ของเราได้อย่างง่ายดาย

MQTT ทำงานอย่างไร

MQTT ต้องการทั้งเซิร์ฟเวอร์ (เรียกว่า 'นายหน้า') และลูกค้าหนึ่งรายหรือมากกว่า เซิร์ฟเวอร์ทำหน้าที่เป็นคนกลาง รับข้อความและออกอากาศซ้ำไปยังลูกค้าที่สนใจ

มาต่อกันที่ ทวิตเตอร์สำหรับเครื่อง การเปรียบเทียบแม้ว่า เช่นเดียวกับที่ผู้ใช้ Twitter สามารถทวีตอักขระที่ไม่มีความหมายได้ 140 ตัว และผู้ใช้สามารถ 'ติดตาม' ผู้ใช้รายอื่นเพื่อดูโพสต์ที่รวบรวมไว้ ลูกค้า MQTT สามารถสมัครรับข้อความจากช่องหนึ่งๆ เพื่อรับข้อความทั้งหมดจากที่นั่น เช่นเดียวกับการเผยแพร่ข้อความของตนเอง ไปที่ช่องนั้น รูปแบบการเผยแพร่และสมัครรับข้อมูลนี้เรียกว่า ผับ / ย่อย ตรงข้ามกับประเพณี ลูกค้า/เซิร์ฟเวอร์ รูปแบบของ HTTP

HTTP กำหนดให้คุณเอื้อมมือออกไปที่เครื่องที่คุณกำลังสื่อสารด้วย กล่าวสวัสดี จากนั้นให้มีการตอบรับซึ่งกันและกันอย่างต่อเนื่องในขณะที่คุณรับหรือใส่ข้อมูล ด้วย pub/sub ลูกค้าที่ทำการเผยแพร่ไม่จำเป็นต้องรู้ว่าลูกค้ารายใดสมัครรับข้อมูล: เพียงแค่ปั๊มข้อความและนายหน้าจะแจกจ่ายให้กับลูกค้าที่สมัครรับข้อมูล ลูกค้าทุกคนสามารถเผยแพร่และสมัครรับข้อมูลหัวข้อได้ เช่นเดียวกับผู้ใช้ Twitter

ต่างจาก Twitter ตรงที่ MQTT ไม่จำกัดเพียง 140 อักขระ เนื่องจากเป็นข้อมูลที่ไม่เชื่อเรื่องพระเจ้า คุณจึงส่งตัวเลขขนาดเล็กหรือบล็อกข้อความขนาดใหญ่ ดาต้าแกรมที่จัดรูปแบบ JSON หรือแม้แต่รูปภาพและไฟล์ไบนารีได้

ไม่ใช่ว่า MQTT ดีกว่า HTTP สำหรับทุกสิ่ง – แต่มัน เป็น เหมาะสมกว่าถ้าเราจะมีเซ็นเซอร์จำนวนมากทั่วบ้าน รายงานเข้ามาอย่างต่อเนื่อง

สิ่งสำคัญคือต้องรู้ว่า OpenHAB จะไม่ทำหน้าที่เป็นนายหน้า MQTT ของคุณ – เราจะพูดถึงเรื่องนี้ในภายหลัง อย่างไรก็ตาม OpenHAB จะทำหน้าที่เป็นไคลเอนต์ โดยสามารถเผยแพร่บันทึกกิจกรรม OpenHAB ของคุณ ตลอดจนผูกช่องสัญญาณเฉพาะกับอุปกรณ์ได้ ตัวอย่างเช่น คุณสามารถมีสวิตช์ที่ควบคุมโดยข้อความ MQTT บนช่องสัญญาณเฉพาะ เหมาะอย่างยิ่งสำหรับการสร้างบ้านที่เต็มไปด้วยเซนเซอร์

ติดตั้ง Mosquitto บน Pi . ของคุณ

แม้ว่า OpenHAB จะมีไคลเอ็นต์ MQTT เพื่อให้คุณสามารถสมัครรับข้อมูลจากหัวข้อและเผยแพร่ข้อความได้ แต่จะไม่ทำหน้าที่เป็นเซิร์ฟเวอร์ เพื่อที่คุณจะต้องใช้โบรกเกอร์ MQTT บนเว็บ (ชำระเงินหรือฟรี) หรือติดตั้งซอฟต์แวร์ฟรีบน Pi ของคุณ ฉันต้องการเก็บทุกอย่างไว้ในบ้าน ดังนั้นฉันจึงติดตั้ง Mosquitto บน Pi

น่าเสียดายที่เวอร์ชันที่มีให้ผ่าน apt-get ปกติล้าสมัยไปโดยสมบูรณ์ ให้เพิ่มแหล่งข้อมูลล่าสุดแทน

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

sudo apt-key เพิ่ม mosquitto-repo.gpg.key

cd /etc/apt/sources.list.d/

sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list

sudo apt-get ติดตั้งยุง

นั่นคือทั้งหมดที่เราต้องทำเพื่อให้เซิร์ฟเวอร์ MQTT ทำงานบนเครือข่ายท้องถิ่น นายหน้าของคุณกำลังทำงานบนพอร์ต 1883 โดยค่าเริ่มต้น

ตรวจสอบว่าเซิร์ฟเวอร์ MQTT ของคุณทำงานโดยใช้ MQTT.fx ฟรี ซึ่งเป็นข้ามแพลตฟอร์ม คลิกไอคอนการตั้งค่าเพื่อสร้างโปรไฟล์ใหม่และป้อนที่อยู่ IP หรือชื่อ Raspberry Pi บันทึกและกดเชื่อมต่อ หากสัญญาณไฟจราจรเล็ก ๆ ที่ด้านบนขวาเปลี่ยนเป็นสีเขียว คุณก็พร้อมแล้ว

สำหรับการทดสอบอย่างรวดเร็ว ให้คลิกที่แท็บ 'สมัครสมาชิก' และพิมพ์ ในหัวข้อ / ลงในกล่องข้อความ แล้วกด ติดตาม ปุ่ม. ตอนนี้คุณสมัครรับข้อความในหัวข้อที่ชื่อ inTopic แม้ว่าจะแสดง 0 ข้อความก็ตาม กลับไปที่แท็บเผยแพร่ พิมพ์หัวข้อลงในช่องเล็กๆ แล้วพิมพ์ข้อความสั้นๆ ลงในช่องข้อความขนาดใหญ่ด้านล่าง ตี เผยแพร่ สองสามครั้งแล้วมองย้อนกลับไปที่แท็บสมัครรับข้อมูล คุณควรเห็นข้อความสองสามข้อความปรากฏในหัวข้อนั้น

ก่อนที่เราจะเพิ่มเซ็นเซอร์จริงบางตัวลงในเครือข่ายของเรา เราต้องเรียนรู้เกี่ยวกับระดับหัวข้อ ซึ่งช่วยให้เราสามารถจัดโครงสร้างและกรองเครือข่าย MQTT ชื่อหัวข้อต้องคำนึงถึงขนาดตัวพิมพ์ ไม่ควรเริ่มต้นด้วย $ หรือมีช่องว่าง หรืออักขระที่ไม่ใช่ ASCII ซึ่งเป็นแนวทางปฏิบัติในการเขียนโปรแกรมมาตรฐานสำหรับชื่อตัวแปรจริงๆ

ตัวคั่น / ระบุระดับหัวข้อ ซึ่งเป็นลำดับชั้น ตัวอย่างเช่น ต่อไปนี้คือระดับหัวข้อที่ถูกต้องทั้งหมด

ในหัวข้อ / smallSubdivision / evenSmallerSubdivision

myHome/ห้องนั่งเล่น/อุณหภูมิ

myHome/ห้องนั่งเล่น/ความชื้น

myHome/ห้องครัว/อุณหภูมิ

myHome/ห้องครัว/ความชื้น

คุณควรจะได้เห็นแล้วว่าโครงสร้างต้นไม้นี้สมบูรณ์แบบสำหรับบ้านอัจฉริยะที่เต็มไปด้วยเซ็นเซอร์และอุปกรณ์อย่างไร แนวทางปฏิบัติที่ดีที่สุดสำหรับใช้กับเซ็นเซอร์หลายตัวในห้องเดียวคือการเผยแพร่ตัวแปรเซ็นเซอร์แต่ละตัวตามระดับหัวข้อของตัวเอง - แยกสาขาออกเป็นความเฉพาะเจาะจงมากขึ้น (ดังในตัวอย่างด้านบน) - แทนที่จะพยายามเผยแพร่เซ็นเซอร์หลายประเภทไปยังช่องสัญญาณเดียวกัน .

จากนั้นลูกค้าสามารถเผยแพร่หรือสมัครสมาชิกระดับหัวข้อแต่ละระดับจำนวนเท่าใดก็ได้ หรือใช้อักขระตัวแทนพิเศษเพื่อกรองจากที่สูงกว่าในแผนผัง

เครื่องหมาย + แทนที่ระดับหัวข้อใดระดับหนึ่ง ตัวอย่างเช่น:

myHome/+/อุณหภูมิ

จะสมัครลูกค้าทั้ง

myHome/ห้องนั่งเล่น/อุณหภูมิ

myHome/ห้องครัว/อุณหภูมิ

...แต่ไม่ใช่ระดับความชื้น

# เป็นไวด์การ์ดหลายระดับ คุณจึงสามารถดึงข้อมูลอะไรก็ได้จากอาร์เรย์เซ็นเซอร์ของห้องนั่งเล่นด้วย:

myHome/ห้องนั่งเล่น/#

ในทางเทคนิค คุณยังสามารถสมัครเป็นสมาชิกระดับรูท # ซึ่งคุณจะได้รับทุกอย่างที่ผ่านนายหน้า แต่นั่นก็เหมือนกับการเอาสายยางฉีดใส่หน้าของคุณ: ค่อนข้างท่วมท้น ลองเชื่อมต่อกับโบรกเกอร์ MQTT สาธารณะจาก HiveMQ และสมัครเป็นสมาชิก # ฉันได้รับข้อความประมาณ 300 ข้อความในไม่กี่วินาทีก่อนที่ไคลเอ็นต์จะขัดข้อง

MQTT เคล็ดลับสำหรับผู้เริ่มต้น: ' /บ้านของฉัน/' เป็นหัวข้อที่แตกต่างไปจาก ' บ้านของฉัน/' – การใส่เครื่องหมายทับในตอนเริ่มต้นจะสร้างระดับหัวข้อที่ว่างเปล่า ซึ่งแม้ว่าจะใช้ได้ในทางเทคนิค แต่ก็ไม่แนะนำเพราะอาจทำให้สับสนได้

ตอนนี้เรารู้ทฤษฎีแล้ว มาลองใช้ Arduino, Ethernet Shield และเซ็นเซอร์อุณหภูมิและความชื้น DHT11 กัน คุณอาจมีหนึ่งในชุดเริ่มต้น แต่ถ้าไม่ใช่ ให้เปลี่ยนเซ็นเซอร์สิ่งแวดล้อมเพื่อการเคลื่อนไหว เซ็นเซอร์ (หรือแม้แต่ปุ่ม)

เผยแพร่ MQTT จาก Arduino ด้วยการเชื่อมต่ออีเทอร์เน็ต

หากคุณมีอุปกรณ์ที่เข้ากันได้กับ Arduino แบบไฮบริดที่มี Wi-Fi หรืออีเทอร์เน็ตในตัว อุปกรณ์ดังกล่าวก็ใช้งานได้เช่นกัน ในที่สุด เราต้องการวิธีการสื่อสารที่ดีกว่า/ถูกกว่าที่ต้องใช้การเชื่อมต่อเครือข่ายในทุกห้อง แต่วิธีนี้ใช้เพื่อเรียนรู้พื้นฐาน

เริ่มต้นด้วยการดาวน์โหลด ไลบรารี pubsubclient จาก Github . หากคุณเคยใช้ปุ่ม 'ดาวน์โหลดเป็น ZIP' โครงสร้างอาจผิดไปเล็กน้อย เปิดเครื่องรูด เปลี่ยนชื่อโฟลเดอร์เป็น just ไคลเอนต์สาธารณะ จากนั้นนำทั้งสองไฟล์ออกจาก src โฟลเดอร์และย้ายขึ้นหนึ่งระดับไปที่รูทของโฟลเดอร์ที่ดาวน์โหลด จากนั้นย้ายทั้งโฟลเดอร์ไปที่ของคุณ Arduino/ไลบรารี่ ไดเรกทอรี

นี่คือโค้ดตัวอย่างของฉันที่คุณสามารถปรับเปลี่ยนได้ : เอาต์พุตสัญญาณ DHT11 อยู่ที่พิน 7 เปลี่ยน IP เซิร์ฟเวอร์สำหรับ Pi ของคุณในบรรทัดต่อไปนี้:

client.setServer('192.168.1.99', 1883);

ขออภัย เราไม่สามารถใช้ชื่อที่เป็นมิตรได้ (OpenHAB.local ในกรณีของฉัน) เนื่องจากสแต็ก TCP/IP บน Arduino นั้นง่ายมาก และการเพิ่มโค้ดสำหรับการตั้งชื่อ Bonjour จะเป็นหน่วยความจำจำนวนมากที่เราไม่ต้องการเสีย หากต้องการเปลี่ยนหัวข้อที่กำลังออกอากาศข้อมูลเซ็นเซอร์ ให้เลื่อนลงไปที่บรรทัดเหล่านี้:

ถ่านบัฟเฟอร์[10];

dtostrf(t,0, 0, บัฟเฟอร์);

client.publish('openhab/himitsu/temperature',บัฟเฟอร์);

dtostrf(h,0, 0, บัฟเฟอร์);

client.publish('openhab/himitsu/humidity',บัฟเฟอร์);

รหัสยังรวมถึงการสมัครสมาชิกช่องคำสั่ง ค้นหาและปรับบรรทัดต่อไปนี้:

client.subscribe('openhab/himitsu/command');

ตรวจสอบรหัสรอบๆ แล้วคุณจะพบว่าคุณสามารถควบคุม LED หรือรีเลย์ได้อย่างง่ายดายโดยส่งคำสั่งไปยังช่องสัญญาณเฉพาะ ในโค้ดตัวอย่าง มันเพียงส่งข้อความกลับเพื่อรับทราบการรับคำสั่ง

อัปโหลดโค้ดของคุณ เสียบ Arduino เข้ากับเครือข่าย และใช้ MQTT.fx สมัครรับข้อมูลอย่างใดอย่างหนึ่ง # หรือ openhab / himitsu / # (หรืออะไรก็ตามที่คุณเปลี่ยนชื่อห้องเป็น แต่อย่าลืมใส่ # ต่อท้ายด้วย) ในไม่ช้าคุณจะเห็นข้อความเข้ามา และหากคุณส่งเปิดหรือปิดไปที่หัวข้อคำสั่ง คุณจะเห็นการตอบรับกลับมาด้วย

การผูก MQTT สำหรับ OpenHAB

ขั้นตอนสุดท้ายในสมการคือการเชื่อมต่อกับ OpenHAB แน่นอนว่าเราต้องการการผูกมัด

sudo apt-get ติดตั้ง openhab-addon-binding-mqtt

sudo chown -hR openhab:openhab /usr/share/openhab

และแก้ไขไฟล์ปรับแต่งเพื่อเปิดใช้งานการเชื่อมโยง

mqtt:broker.url=tcp://localhost:1883

mqtt:broker.clientId=openhab

รีสตาร์ท OpenHAB

sudo service openhab เริ่มใหม่

จากนั้นมาเพิ่มรายการหนึ่งหรือสองรายการ:

/* เซ็นเซอร์ MQTT */

จำนวน Himitsu_Temp 'อุณหภูมิฮิมิตสึ [%.1f °C]' (ฮิมิตสึ,อุณหภูมิ) {mqtt='<[broker:openhab/himitsu/temperature:state:default]'}

จำนวน Himitsu_Humidity'Himitsu Humidity [% .1f %%]' (Himitsu, Humidity) {mqtt ='<[broker:openhab/himitsu/humidity:state:default]'}

ถึงตอนนี้คุณควรเข้าใจรูปแบบแล้ว มันจะได้รับ a รายการหมายเลข จากการรวม MQTT ในหัวข้อที่ระบุ นี่เป็นตัวอย่างง่ายๆ คุณอาจต้องการอ้างอิงถึงหน้าวิกิซึ่งมัน ซับซ้อนขึ้นได้อีกเยอะ .

ยินดีด้วย ตอนนี้คุณมีพื้นฐานของอาร์เรย์เซ็นเซอร์ที่ใช้ Arduino ราคาถูกแล้ว เราจะทบทวนสิ่งนี้ในอนาคตและวาง Arduino ลงในเครือข่าย RF ที่แยกจากกันโดยสิ้นเชิง ฉันยังได้สร้างเวอร์ชันที่เหมือนกัน สำหรับ Wizwiki 7500 บอร์ด ถ้าคุณมีหนึ่งในนั้น

ความคงอยู่และข้อมูลกราฟ

ถึงตอนนี้ คุณอาจตั้งค่าเซ็นเซอร์ไว้หลายตัวแล้ว ไม่ว่าจะเป็นจาก Z-Wave หรือ Arduinos แบบกำหนดเองที่ใช้ MQTT ดังนั้นคุณจึงสามารถดูสถานะปัจจุบันของเซ็นเซอร์เหล่านั้นได้ทุกเมื่อ และคุณควรตอบสนองต่อค่าของเซ็นเซอร์เหล่านั้นในกฎด้วย แต่สิ่งที่น่าสนใจเกี่ยวกับค่าเซ็นเซอร์โดยทั่วไปคือการเปลี่ยนแปลงเมื่อเวลาผ่านไป นั่นคือที่มาของความคงอยู่และการสร้างกราฟ วิริยะ ใน OpenHAB หมายถึงการบันทึกข้อมูลเมื่อเวลาผ่านไป ไปข้างหน้าและตั้งค่า RRD4J (ฐานข้อมูล Round Robin สำหรับ Java) ที่เรียกว่าเพราะข้อมูลถูกบันทึกในรูปแบบโรบิน - ข้อมูลที่เก่ากว่าจะถูกละทิ้งเพื่อบีบอัดขนาดของฐานข้อมูล

ติดตั้งแพ็คเกจ rrd4j ด้วยคำสั่งต่อไปนี้

sudo apt-get install openhab-addon-persistence-rrd4j
sudo chown -hR openhab:openhab /usr/share/openhab

จากนั้นสร้างไฟล์ใหม่ชื่อ rrd4j.persist ใน การกำหนดค่า/ความคงอยู่ โฟลเดอร์ วางสิ่งต่อไปนี้:

กลยุทธ์ {

ทุกนาที : '0 * * * * ?'

ทุกชั่วโมง : '0 0 * * * ?'

ทุกวัน : '0 0 0 * * ?'

ค่าเริ่มต้น = everyChange

}

รายการ {

// ยืนยันทุกอย่างเมื่อค่าถูกอัพเดต เพียงแค่ค่าดีฟอลต์ และกู้คืนจากฐานข้อมูลเมื่อเริ่มต้นระบบ

* : กลยุทธ์ = everyChange, restoreOnStartup

// ต่อไปเราจะกำหนดกลยุทธ์เฉพาะของทุก ๆ ชั่วโมงสำหรับทุกอย่างในกลุ่มอุณหภูมิ และทุก ๆ นาทีสำหรับความชื้น

วิธีบังคับปิดเครื่อง macbook pro

อุณหภูมิ* : กลยุทธ์ = ทุกชั่วโมง

ความชื้น* : กลยุทธ์ = everyMinute

// หรือคุณสามารถเพิ่มรายการเฉพาะที่นี่ เช่น

//Bedroom_Humidity,JamesInOffice : กลยุทธ์ = everyMinute

}

ในส่วนแรกของไฟล์นี้ เรากำลังกำหนดกลยุทธ์ ซึ่งหมายถึงการตั้งชื่อให้กับนิพจน์ CRON เหมือนกับที่เราทำกับ My.OpenHAB แล้ว แต่คราวนี้เรากำลังสร้างกลยุทธ์ใหม่ๆ ที่เราสามารถใช้ได้ทุกวัน ทุกชั่วโมง และทุกนาที ฉันยังไม่ได้ใช้มันทั้งหมด แต่ฉันอาจจะใช้ในอนาคต

ในช่วงครึ่งหลังของไฟล์ เราบอก rr4dj ว่าควรบันทึกค่าข้อมูลใด ตามค่าเริ่มต้น เราจะบันทึกทุกอย่างทุกครั้งที่อัปเดต แต่ฉันยังได้ระบุกลยุทธ์ตามเวลาสำหรับเซ็นเซอร์เฉพาะอีกด้วย ฉันไม่ได้ใส่ใจเรื่องอุณหภูมิมากนัก ดังนั้นฉันจึงตั้งค่าให้บันทึกทุกชั่วโมงเท่านั้น แต่เรื่องความชื้นเป็นปัญหาใหญ่สำหรับฉัน ฉันจึงต้องการดูว่ามันเปลี่ยนแปลงไปทุกนาทีอย่างไร หากมีข้อมูลอื่นๆ ที่คุณต้องการบันทึกโดยเฉพาะในช่วงเวลาที่กำหนด ให้เพิ่มข้อมูลเหล่านี้ที่นี่ตอนนี้หรือปรับเปลี่ยนตามต้องการ

หมายเหตุ: หากคุณต้องการสร้างกราฟข้อมูลด้วย คุณต้องเก็บข้อมูลไว้อย่างน้อยนาทีละครั้ง ไม่สำคัญหรอกว่าข้อมูลเซ็นเซอร์ของคุณจะได้รับการอัพเดตอย่างรวดเร็วหรือไม่ คุณเพียงแค่บอกให้ rr4dj เก็บข้อมูลไว้นาทีละครั้ง

ด้วยการกำหนดดังกล่าว คุณควรเริ่มเห็นเอาต์พุตการดีบักที่แจ้งว่าค่าต่างๆ ถูกจัดเก็บไว้

ต่อไป มาสร้างกราฟสวยๆ ของข้อมูลทั้งหมดนี้กัน มันง่ายมาก ในการสร้างกราฟของเซ็นเซอร์แต่ละตัว ให้เพิ่มข้อมูลต่อไปนี้ในแผนผังเว็บไซต์:

รายการแผนภูมิ=ห้องนอน_ช่วงความชื้น=h

นั่นคือทั้งหมดที่คุณต้องการอย่างแท้จริง ค่าที่ถูกต้องสำหรับช่วงเวลาคือ ชั่วโมง, 4 ชั่วโมง, 8 ชั่วโมง, 12 ชั่วโมง, D, 3D, W, 2W, M, 2M, 4M, Y ; มันควรจะชัดเจนว่าสิ่งเหล่านี้หมายถึงอะไร มีค่าเริ่มต้นเป็น D สำหรับข้อมูลเต็มวันหากไม่ระบุ

หากต้องการสร้างกราฟที่มีหลายรายการ ให้สร้างกราฟชื่อกลุ่มแทน:

รายการแผนภูมิ=ระยะเวลาความชื้น=h

คุณอาจสนใจที่จะรู้ว่าคุณสามารถใช้กราฟนี้ในที่อื่นได้ กำลังสร้างภาพโดยใช้ URL ต่อไปนี้: http://YOUROPENHABURL:8080/chart?groups=Humidity&period=h

เป็นไงบ้าง ของคุณ ระบบ OpenHAB กำลังมา?

เพียงเท่านี้สำหรับคู่มือนี้ แต่อย่าคาดหวังว่านี่จะเป็นครั้งสุดท้ายที่คุณได้ยินเกี่ยวกับ OpenHAB จากเรา หวังว่าคู่มือนี้และคู่มือสำหรับผู้เริ่มต้นจะช่วยให้คุณมีพื้นฐานที่มั่นคงในการพัฒนาระบบ OpenHAB ที่สมบูรณ์ของคุณเอง – แต่เป็นกระบวนการที่ยังไม่เสร็จสิ้นอย่างสมบูรณ์

โชคดีที่ OpenHAB สามารถปรับขนาดได้ดีจากอุปกรณ์สองสามเครื่องไปจนถึงหลายร้อยเครื่อง ตั้งแต่ความซับซ้อนของกฎธรรมดาไปจนถึงระบบอัตโนมัติภายในบ้านขั้นสูงสุด – แล้วระบบของคุณจะเป็นอย่างไร คุณเลือกอุปกรณ์ใด โครงการใหญ่ครั้งต่อไปที่คุณกำลังจะทำคืออะไร?

มาพูดคุยกันในความคิดเห็น – และได้โปรด หากคุณพบว่าคู่มือนี้มีประโยชน์ ให้คลิกปุ่มแชร์เหล่านั้นเพื่อบอกเพื่อนของคุณว่าพวกเขาสามารถตั้งค่าระบบ OpenHAB ของตนเองได้อย่างไร

เราหวังว่าคุณจะชอบรายการที่เราแนะนำและพูดคุย! MUO มีพันธมิตรในเครือและผู้สนับสนุน ดังนั้นเราจึงได้รับส่วนแบ่งรายได้จากการซื้อบางส่วนของคุณ การดำเนินการนี้จะไม่ส่งผลต่อราคาที่คุณจ่ายและช่วยให้เราเสนอคำแนะนำผลิตภัณฑ์ที่ดีที่สุด

แบ่งปัน แบ่งปัน ทวีต อีเมล คู่มือสำหรับผู้เริ่มต้นในการพูดแบบเคลื่อนไหว

การพูดแบบเคลื่อนไหวอาจเป็นเรื่องท้าทาย หากคุณพร้อมที่จะเริ่มเพิ่มบทสนทนาในโครงการของคุณ เราจะแบ่งขั้นตอนให้คุณ

อ่านต่อไป
หัวข้อที่เกี่ยวข้อง
  • DIY
  • สมาร์ทโฮม
  • Arduino
  • ระบบอัตโนมัติในบ้าน
  • Longform
  • คู่มือแบบยาว
เกี่ยวกับผู้เขียน เจมส์ บรูซ(เผยแพร่บทความ 707 ฉบับ)

James มี BSc ในด้านปัญญาประดิษฐ์และได้รับการรับรองจาก CompTIA A+ และ Network+ เมื่อเขาไม่ได้ยุ่งในฐานะ Hardware Review Editor เขาสนุกกับ LEGO, VR และเกมกระดาน ก่อนร่วมงานกับ MakeUseOf เขาเป็นช่างเทคนิคแสงสว่าง ครูสอนภาษาอังกฤษ และวิศวกรศูนย์ข้อมูล

เพิ่มเติมจาก James Bruce

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก