{"id":25580,"date":"2015-01-12T08:10:12","date_gmt":"2015-01-12T08:10:12","guid":{"rendered":"https:\/\/automatedhome.com\/?p=25580"},"modified":"2020-04-15T15:37:40","modified_gmt":"2020-04-15T14:37:40","slug":"hack-diy-arduino-smart-home-control-panel-uses-openhab-mqtt","status":"publish","type":"post","link":"https:\/\/automatedhome.com\/hardware\/hack-diy-arduino-smart-home-control-panel-uses-openhab-mqtt.html","title":{"rendered":"Hack: DIY Arduino Smart Home Control Panel Uses OpenHAB &#038; MQTT"},"content":{"rendered":"<p style=\"text-align: left;\">We always admired the amazing hardware and software that\u00a0DIY home automators can put together and Mat Smiths project to build his ultimate home control panel is a great example.<\/p>\n<p>Mat is designing and building an Arduino based controller to deploy around his next home. The system uses an inexpensive OLED display and a rotary encoder that will be mounted in custom laser cut brushed stainless steel wall plates along with a capacitive touch sensor to wake it all up<\/p>\n<p>The controller communicates with Mat&#8217;s <a href=\"https:\/\/automatedhome.com\/software\/video-openhab-the-open-home-automation-bus.html\" target=\"_blank\" rel=\"noopener noreferrer\">OpenHAB<\/a> home automation server via\u00a0<a href=\"https:\/\/automatedhome.com\/new-products\/ah0010-andy-stanford-clark.html\" target=\"_blank\" rel=\"noopener noreferrer\">MQTT<\/a> and can be programmed\u00a0to monitor and control pretty much any\u00a0systems around the home &#8211; such as entertainment, heating or curtains \/ blinds.<\/p>\n<p>Here&#8217;s Mat&#8217;s latest update on the project. Make sure to check out his videos below too.<\/p>\n<h2>The spec for the ultimate home control panel<\/h2>\n<p>A number of months ago I became obsessed with the idea of controlling my room lighting using knobs in the wall. Crazy, I know \ud83d\ude09<\/p>\n<p>Seriously though, most lighting automation systems do not use rotary controllers (i.e. knobs), but rather you have to keep your finger on a button until the desired light level is reached. Isn\u2019t that so 1990s? Knobs are the way forward. Worse still, many only let you select \u201cscenes\u201d without even controlling individual light level. So I set about making my own digitally controlled lightswitch. The process has been one of research and learning new skills. Soon enough I stumbled upon the ultimate way for things within the home to communicate with other things: MQTT.<\/p>\n<p>Here are my design goals for the ultimate home control panel for each room.<\/p>\n<h2>Aesthetics<\/h2>\n<p><strong>Use physical buttons and lights NOT touchscreen<\/strong>. I find touchscreens great for web browsing but when I want to control lights and volume I need an accuracy and responsiveness that can only come from;<\/p>\n<ul>\n<li>Tactile switches with visual feedback<\/li>\n<li>Rotary controller knobs<\/li>\n<li>Display screen showing levels as percentage (i.e. numbers) for fine adjustment<\/li>\n<\/ul>\n<p><strong>Look Sexy<\/strong>. DIY metal faceplates with push buttons conjure-up images of 1970s style control panels. Disabled toilets. Hobby aeroplane remotes. I\u2019m going with brushed stainless steel faceplates with no visible screws, smaller LED-integrated tactile buttons, matching brushed steel knob.<\/p>\n<p><strong>Use numbers on the display<\/strong>. In the increased sexification of home automation, things have become too touchy-feely. Having controlled lights and music from my iPad, I get annoyed if you press in slightly the wrong place, or need to make that super-fine adjustment. Also I get annoyed by the ubiquitous slider and the lack of information it provides the user.<\/p>\n<h2>Installation<\/h2>\n<ul>\n<li>The faceplate must run at low voltage, requiring no special electrical certification<\/li>\n<li>Connected with ethernet (CAT5, 6, or 7)<\/li>\n<li>Powered over the same ethernet cable<\/li>\n<li>Fit within a back-box readily available in shops: 47mm depth max<\/li>\n<\/ul>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-25605 size-full\" src=\"https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2015\/01\/mats-home-automation-control-panel-2.jpg?resize=500%2C280&#038;ssl=1\" alt=\"Arduino, MQTT &amp; OpenHAB Powered DIY Smart Home Control Panel\" width=\"500\" height=\"280\" srcset=\"https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2015\/01\/mats-home-automation-control-panel-2.jpg?w=500&amp;ssl=1 500w, https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2015\/01\/mats-home-automation-control-panel-2.jpg?resize=300%2C168&amp;ssl=1 300w, https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2015\/01\/mats-home-automation-control-panel-2.jpg?resize=180%2C101&amp;ssl=1 180w, https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2015\/01\/mats-home-automation-control-panel-2.jpg?resize=260%2C146&amp;ssl=1 260w, https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2015\/01\/mats-home-automation-control-panel-2.jpg?resize=373%2C210&amp;ssl=1 373w, https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2015\/01\/mats-home-automation-control-panel-2.jpg?resize=120%2C67&amp;ssl=1 120w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/p>\n<h2>Function<\/h2>\n<ul>\n<li>Use \u201cScene\u201d buttons to quickly select the lighting mood in a room<\/li>\n<li>Dim individual lights in a room to create your own scene<\/li>\n<li>Quickly cycle between different lights in a room<\/li>\n<li>Control music volume and see what\u2019s playing (track title and artist)<\/li>\n<li>Similar to light scenes, there should be audio \u201cfavourites\u201d (i.e. radio channels, playlists, shuffle mode for a given genre, etc.)<\/li>\n<\/ul>\n<h2>Scalability<\/h2>\n<ul>\n<li>The unit is designed for a range of functions, but can be expanded later to incorporate more. e.g. lighting and audio modes have their special uses and displays. As it\u2019s based on Arduino, the sketch can be updated by USB later.<\/li>\n<li>\u201cThing\u201d settings (i.e. how many lights in a room, the name of a light in the room, the name of a scene for a given room) should be queried from a server and downloaded to volatile memory at startup. These things are not stored in the unit.<\/li>\n<li>We should be able to press an \u201cupdate\u201d button to pick-up the latest settings. Home automation installers and users change their minds all the time!<\/li>\n<\/ul>\n<h2>Interface<\/h2>\n<ul>\n<li>\u201cWAF\u201d is an offensive phrase used in #homeautomation talk. It stands for \u201cwife adoption factor\u201d. Maybe \u201cGAF\u201d \u2013 grandparent adoption factor? No \u2013 that\u2019s swapping one prejudice for another. \u201cHAF\u201d will do nicely \u2013 human adoption factor. The controller must be the perfect balance between powerful and usable. I don\u2019t mean \u201cpowerful for the geek, usable for the granny\u201d. I mean \u201cequally powerful and usable for both\u201d.<\/li>\n<li>This means: consistency of display and immediate access to primary functions. No menus, no prompts! Placement of buttons should be intuitive.<\/li>\n<li>All light should cease when it hasn\u2019t been touched for a while. No lights in the middle of the night!<\/li>\n<\/ul>\n<p>The solution I\u2019ve settled for is a \u201cmode cycle\u201d one. Like old digital watches. The mode button is set apart from other buttons and placed near the icon displaying the current mode. All other physical controls depend on the mode in question, and their function is intuitive given the placement. Consistency comes from the\u00a0unit defaulting back to a \u201cprimary\u201d mode after x seconds of not being touched. The display dims appropriately.<\/p>\n<p class=\"p1\"><p >No products found.<\/p><\/p>\n<p>Here&#8217;s Mat&#8217;s previous video from August 2014&#8230;<\/p>\n<p><iframe loading=\"lazy\"  id=\"_ytid_34167\"  width=\"480\" height=\"270\"  data-origwidth=\"480\" data-origheight=\"270\" src=\"https:\/\/www.youtube.com\/embed\/g8xL1aKikNo?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;modestbranding=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;\" class=\"__youtube_prefs__  epyt-is-override  no-lazyload\" title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/p>\n<p>Here\u2019s the latest demo of the progress so far from this month&#8230;<\/p>\n<p><iframe loading=\"lazy\"  id=\"_ytid_60878\"  width=\"480\" height=\"270\"  data-origwidth=\"480\" data-origheight=\"270\" src=\"https:\/\/www.youtube.com\/embed\/OrfZngB2f4w?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;modestbranding=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;\" class=\"__youtube_prefs__  epyt-is-override  no-lazyload\" title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/p>\n<p>Reproduced from <a href=\"http:\/\/hazymat.co.uk\/2015\/01\/the-spec-for-the-ultimate-home-control-panel\/\" target=\"_blank\" rel=\"noopener noreferrer\">original post<\/a> by kind permission of Mat Smith. Follow along on Mat&#8217;s on-going DIY home automation\u00a0journey\u00a0at\u00a0<a href=\"http:\/\/hazymat.co.uk\/\" target=\"_blank\" rel=\"noopener noreferrer\">hazymat.co.uk<\/a><\/p>\n<p><a href=\"http:\/\/hazymat.co.uk\/\" target=\"_blank\" rel=\"noopener noreferrer\">hazymat.co.uk<\/a>\u00a0 : \u00a0<a href=\"http:\/\/mqtt.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">MQTT.org<\/a> \u00a0: \u00a0<a href=\"http:\/\/www.openhab.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">openHAB.org<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>We always admired the amazing hardware and software that\u00a0DIY home automators can put together and Mat Smiths project to build his ultimate home control panel&#8230;<\/p>\n","protected":false},"author":3,"featured_media":25591,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"apple_news_api_created_at":"","apple_news_api_id":"","apple_news_api_modified_at":"","apple_news_api_revision":"","apple_news_api_share_url":"","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":"","apple_news_is_paid":"","apple_news_is_preview":"","apple_news_is_sponsored":"","apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":[],"apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","footnotes":""},"categories":[41,15],"tags":[3],"class_list":["post-25580","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hack","category-hardware","tag-featured"],"apple_news_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2015\/01\/mats-home-automation-control-panel.jpg?fit=500%2C341&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/posts\/25580"}],"collection":[{"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/comments?post=25580"}],"version-history":[{"count":45,"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/posts\/25580\/revisions"}],"predecessor-version":[{"id":50310,"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/posts\/25580\/revisions\/50310"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/media\/25591"}],"wp:attachment":[{"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/media?parent=25580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/categories?post=25580"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/tags?post=25580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}