{"id":1041,"date":"2021-03-12T14:50:30","date_gmt":"2021-03-12T14:50:30","guid":{"rendered":"http:\/\/www.igfasouza.com\/blog\/?p=1041"},"modified":"2021-04-19T20:55:07","modified_gmt":"2021-04-19T19:55:07","slug":"energy-switch-and-smart-home-with-kafka","status":"publish","type":"post","link":"http:\/\/www.igfasouza.com\/blog\/energy-switch-and-smart-home-with-kafka\/","title":{"rendered":"Energy switch and smart home with Kafka"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/Lamp-switch3.jpg\" alt=\"\" class=\"alignnone size-full wp-image-1042\" width=\"990\" height=\"381\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/Lamp-switch3.jpg 990w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/Lamp-switch3-300x115.jpg 300w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/Lamp-switch3-768x296.jpg 768w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/Lamp-switch3-624x240.jpg 624w\" sizes=\"auto, (max-width: 990px) 100vw, 990px\" \/><\/p>\n<p><b>How the hell are you?<\/b><br \/>\n<small style=\"color:#9f9f9f\">2021\/03\/12<\/small><\/p>\n<p>Smart devices are all of the everyday objects made intelligent with advanced computers, including AI and machine learning, and networked to form the internet of things (IoT).<br \/>\nNot just computers and smartphones, but everything: clocks, speakers, lights, doorbells, cameras, windows, window blinds, hot water heaters, appliances, cooking utensils, you name it. And what if those devices could all communicate, send you information, and take your commands? And what if I could use Kafka to get this device&#8217;s real-time information?<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/smart_home01.jpg\" alt=\"\" class=\"alignnone size-full wp-image-1043\" width=\"921\" height=\"498\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/smart_home01.jpg 921w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/smart_home01-300x162.jpg 300w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/smart_home01-768x415.jpg 768w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/smart_home01-624x337.jpg 624w\" sizes=\"auto, (max-width: 921px) 100vw, 921px\" \/><\/p>\n<p>Today I want to show a Raspberry PI Java Spring web app to simulate a Lamp switch using the TP-link smart bulb and smart plug. Once the device is on its start to collect the real-time energy consumption info and send to a Kafka topic.<\/p>\n<p>I already did a blog about <a href=\"http:\/\/www.igfasouza.com\/blog\/smart-plug-tp-link\/\" rel=\"noopener\" target=\"_blank\">TP-link smart plush<\/a>, but today I want to use a Java API that I found <a href=\"https:\/\/github.com\/CalicoCatalyst\/hs-100\" rel=\"noopener\" target=\"_blank\">here<\/a> and <a href=\"https:\/\/github.com\/Phi-S\/tplink_smartplug_HS110\" rel=\"noopener\" target=\"_blank\">here<\/a>. I kind of did a mix of both.<\/p>\n<p>I\u2019m using a smart plug HS110 and smart bulb LB110<\/p>\n<h2>code<\/h2>\n<div class=\"codecolorer-container java blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/><\/div><\/td><td><div class=\"java codecolorer\">@RequestMapping<span class=\"br0\">&#40;<\/span><br \/>\nvalue <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;\/process&quot;<\/span>,<br \/>\nmethod <span class=\"sy0\">=<\/span> RequestMethod.<span class=\"me1\">POST<\/span>,<br \/>\nconsumes <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;text\/plain&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> process<span class=\"br0\">&#40;<\/span>@RequestBody <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> payload<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">throws<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+exception\"><span class=\"kw3\">Exception<\/span><\/a> <span class=\"br0\">&#123;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<div class=\"codecolorer-container java blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/><\/div><\/td><td><div class=\"java codecolorer\">&nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system\"><span class=\"kw3\">System<\/span><\/a>.<span class=\"me1\">out<\/span>.<span class=\"me1\">println<\/span><span class=\"br0\">&#40;<\/span>payload<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span>payload.<span class=\"me1\">equals<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;true&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\nplug.<span class=\"me1\">switchOn<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"kw1\">this<\/span>.<span class=\"me1\">producer<\/span>.<span class=\"me1\">sendMessage<\/span><span class=\"br0\">&#40;<\/span>plug.<span class=\"me1\">getEnergy<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><br \/>\nplug.<span class=\"me1\">switchOff<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<div class=\"codecolorer-container java blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"java codecolorer\">&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>For configure kafka just need add the settings on \u201capplication.yml\u201d. Here I did with my <a href=\"http:\/\/www.igfasouza.com\/blog\/raspberry-pi-kafka-cluster\/\" rel=\"noopener\" target=\"_blank\">raspberry pi kafka cluster<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/01.jpg\" alt=\"\" class=\"alignnone size-full wp-image-1044\" width=\"959\" height=\"484\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/01.jpg 959w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/01-300x151.jpg 300w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/01-768x388.jpg 768w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/01-624x315.jpg 624w\" sizes=\"auto, (max-width: 959px) 100vw, 959px\" \/><\/p>\n<p>Disclaimer \u2013 I got the CSS from <a href=\"https:\/\/codepen.io\/designcouch\/pen\/dCBJr\" rel=\"noopener\" target=\"_blank\">here<\/a><\/p>\n<p>You can get the full code on my <a href=\"https:\/\/github.com\/igfasouza\/spring-switch\" rel=\"noopener\" target=\"_blank\">GitHub<\/a>.<\/p>\n<p>And you can combine this with my <a href=\"http:\/\/www.igfasouza.com\/blog\/raspberry-pi-with-influxdb-and-grafana\/\" rel=\"noopener\" target=\"_blank\">influxdb-and-grafana<\/a> blog and add some nice visualization.<\/p>\n<p>Smart Plug HS110<br \/>\n<iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/Rnp-8lNMg7I\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\" width=\"560\" height=\"315\" frameborder=\"0\"><\/iframe><\/p>\n<p>Smart Light lb110<br \/>\n<iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/g52DfgdJRL8\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\" width=\"560\" height=\"315\" frameborder=\"0\"><\/iframe><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-10-at-19.05.32-1024x333.png\" alt=\"\" class=\"alignnone size-large wp-image-1048\" width=\"625\" height=\"203\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-10-at-19.05.32-1024x333.png 1024w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-10-at-19.05.32-300x98.png 300w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-10-at-19.05.32-768x250.png 768w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-10-at-19.05.32-624x203.png 624w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/03\/Screenshot-2021-03-10-at-19.05.32.png 2012w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/p>\n<p>I mentored a colleague in a similar <a href=\"https:\/\/github.com\/jod98\/Oracle_Energy_Consumption_Project\" rel=\"noopener\" target=\"_blank\">project<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How the hell are you? 2021\/03\/12 Smart devices are all of the everyday objects made intelligent with advanced computers, including AI and machine learning, and networked to form the internet of things (IoT). Not just computers and smartphones, but everything:&hellip; <a href=\"http:\/\/www.igfasouza.com\/blog\/energy-switch-and-smart-home-with-kafka\/\" class=\"more-link\">Continue Reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1042,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1041","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/posts\/1041","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/comments?post=1041"}],"version-history":[{"count":8,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/posts\/1041\/revisions"}],"predecessor-version":[{"id":1112,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/posts\/1041\/revisions\/1112"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/media\/1042"}],"wp:attachment":[{"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/media?parent=1041"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/categories?post=1041"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/tags?post=1041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}