{"id":142,"date":"2026-08-30T04:23:37","date_gmt":"2026-08-30T04:23:37","guid":{"rendered":"https:\/\/domoviq.com\/tools\/smart-home-monitor-dashboard\/"},"modified":"2026-08-31T01:56:16","modified_gmt":"2026-08-31T01:56:16","slug":"home-monitor","status":"publish","type":"page","link":"https:\/\/domoviq.com\/tools\/home-monitor\/","title":{"rendered":"Smart Home Monitor Dashboard"},"content":{"rendered":"\n<div class=\"dvt\" id=\"dvt-mon\">\n<style>\n.dvt{--bg:#0b1220;--card:#161f34;--line:#2a3652;--teal:#2dd4bf;--amber:#fbbf24;--red:#f87171;--txt:#e9eefb;--mut:#96a3c0;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif;background:linear-gradient(180deg,#0e1730,var(--bg) 260px);color:var(--txt);border-radius:20px;padding:26px 22px;margin:10px 0;line-height:1.5;border:1px solid #1a2540}\n.dvt *{box-sizing:border-box}\n.dvt h2,.dvt h3{color:#fff;margin:0 0 8px;letter-spacing:-.01em}\n.dvt h2{font-size:23px}\n.dvt p{color:var(--mut);margin:0 0 12px;font-size:14px}\n.dvt a{color:var(--teal)}\n.dvt :focus-visible{outline:2px solid var(--teal);outline-offset:2px;border-radius:6px}\n.dvt-nav{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px;font-size:12px}\n.dvt-nav a{color:var(--mut);text-decoration:none;background:var(--card);border:1px solid var(--line);padding:5px 11px;border-radius:999px;transition:border-color .15s ease,color .15s ease}\n.dvt-nav a:hover{border-color:var(--teal);color:var(--txt)}\n.dvt-nav a.on{color:#06221c;background:var(--teal);border-color:var(--teal);font-weight:700}\n.dvt-sec{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:14px}\n.dvt-btn{background:var(--teal);color:#06221c;font-weight:700;border:none;padding:10px 16px;border-radius:9px;font-size:14px;cursor:pointer;text-decoration:none;display:inline-block;transition:filter .15s ease}\n.dvt-btn:hover{filter:brightness(1.08)}\n.dvt-btn.sec{background:var(--card);color:var(--txt);border:1px solid var(--line)}\n.dvt-btn.danger{background:transparent;color:var(--red);border:1px solid var(--red)}\n.dvt-btn.danger:hover{background:rgba(248,113,113,.1);filter:none}\n.dvt-row{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}\n.dvt-msg{font-size:13px;color:var(--teal);margin-top:8px;min-height:18px}\n.mo-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}\n.mo-tile{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:15px;text-align:center;transition:border-color .15s ease}\n.mo-tile:hover{border-color:#3a4a72}\n.mo-tile .n{font-size:20px;font-weight:800;color:var(--teal)}\n.mo-tile .n.dim{color:var(--mut);font-size:14px}\n.mo-tile .l{font-size:11.5px;color:var(--mut);margin-top:4px}\n.mo-tile a{color:inherit;text-decoration:none;display:block}\n.mo-steps{display:flex;flex-wrap:wrap;gap:6px;font-size:12px}\n.mo-steps a{padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--bg);color:var(--mut);text-decoration:none;transition:border-color .15s ease}\n.mo-steps a.done{border-color:var(--teal);color:var(--teal)}\n.mo-steps a:hover{border-color:var(--teal);color:var(--txt)}\n.mo-bud label{font-size:13px;color:var(--mut)}\n.mo-bud input[type=number]{width:110px;background:var(--bg);border:1px solid var(--line);color:#fff;border-radius:9px;padding:8px 10px;font-size:14px}\n.mo-barwrap{background:var(--bg);border:1px solid var(--line);border-radius:999px;height:16px;overflow:hidden;margin-top:10px}\n.mo-bar{height:100%;background:var(--teal);border-radius:999px;transition:width .3s ease}\n.mo-bar.over{background:var(--red)}\n.mo-budnote{font-size:12.5px;color:var(--mut);margin-top:6px}\n#mo-wl{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -2px}\n.mo-wl{width:100%;min-width:520px;border-collapse:collapse;font-size:13px}\n.mo-wl th,.mo-wl td{padding:9px 6px;border-bottom:1px solid var(--line);text-align:left;color:var(--mut)}\n.mo-wl th{color:var(--txt);font-size:12px}\n.mo-wl td.nm{color:var(--txt);font-weight:600}\n.mo-wl input{width:74px;background:var(--bg);border:1px solid var(--line);color:#fff;border-radius:7px;padding:6px 8px;font-size:13px}\n.mo-wl .st{font-size:11px;padding:2px 8px;border-radius:999px;white-space:nowrap}\n.st-buy{background:rgba(45,212,191,.15);color:var(--teal)}\n.st-wait{background:rgba(251,191,36,.15);color:var(--amber)}\n.st-na{background:var(--bg);color:var(--mut)}\n.dvt-empty{border:1px dashed var(--line);border-radius:14px;padding:26px 22px;text-align:center;color:var(--mut);font-size:14px}\n@media (max-width:520px){.dvt{padding:20px 15px;border-radius:16px}}\n<\/style>\n<div class=\"dvt-nav\"><a href=\"\/tools\/\">Tools home<\/a><a href=\"\/tools\/kit-builder\/\">1. Kit Builder<\/a><a href=\"\/tools\/compatibility-checker\/\">2. Checker<\/a><a href=\"\/tools\/setup-guide\/\">3. Setup Guide<\/a><a href=\"\/tools\/cost-calculator\/\">4. Calculator<\/a><a href=\"\/tools\/gear-finder\/\">5. Gear Finder<\/a><a class=\"on\" href=\"\/tools\/home-monitor\/\">6. Monitor<\/a><\/div>\n<h2>Home Monitor<\/h2>\n<p>Your dashboard for everything the other five tools know: kit, compatibility, costs, budget and a price watchlist. All data lives in your browser only.<\/p>\n<div class=\"dvt-sec\"><h3>Your smart home at a glance<\/h3><div class=\"mo-tiles\" id=\"mo-tiles\"><\/div><\/div>\n<div class=\"dvt-sec\"><h3>Pipeline progress<\/h3><div class=\"mo-steps\" id=\"mo-steps\"><\/div><\/div>\n<div class=\"dvt-sec mo-bud\"><h3>Budget tracker<\/h3>\n<label>My gear budget: $ <input type=\"number\" id=\"mo-budget\" min=\"0\" step=\"10\"><\/label>\n<div class=\"mo-barwrap\"><div class=\"mo-bar\" id=\"mo-bar\" style=\"width:0%\"><\/div><\/div>\n<div class=\"mo-budnote\" id=\"mo-budnote\"><\/div>\n<\/div>\n<div class=\"dvt-sec\"><h3>Price watchlist<\/h3>\n<p style=\"margin-bottom:8px\">Set a target price for each device in your kit. When you spot it cheaper (check via the <a href=\"\/tools\/gear-finder\/\" style=\"color:var(--teal)\">Gear Finder<\/a>), log the price here \u2014 the tool tells you when it&#8217;s time to buy.<\/p>\n<div id=\"mo-wl\"><\/div>\n<\/div>\n<div class=\"dvt-row\"><a class=\"dvt-btn sec\" href=\"\/tools\/kit-builder\/\">Edit kit<\/a><a class=\"dvt-btn sec\" href=\"\/tools\/setup-guide\/\">View setup guide<\/a><button class=\"dvt-btn danger\" id=\"mo-reset\">Reset all tool data<\/button><\/div>\n<div class=\"dvt-msg\" id=\"mo-msg\"><\/div>\n<script>\n(function(){\nvar K='dv_tools_v1';\nfunction load(){try{return JSON.parse(localStorage.getItem(K))||{}}catch(e){return{}}}\nfunction save(p){var s=load();for(var k in p)s[k]=p[k];localStorage.setItem(K,JSON.stringify(s));return s}\nfunction ecoName(e){return{alexa:'Alexa',google:'Google Home',apple:'Apple Home',smartthings:'SmartThings'}[e]||'Not chosen'}\nvar st=load();\nvar kit=st.kit||[];\nvar kitCost=0,kitCount=0;\nkit.forEach(function(i){kitCost+=(i.price||0)*i.qty;kitCount+=i.qty});\nfunction tiles(){\nvar t='';\nt+='<div class=\"mo-tile\"><a href=\"\/tools\/kit-builder\/\"><div class=\"n\">'+kitCount+'<\/div><div class=\"l\">Devices in kit<\/div><\/a><\/div>';\nt+='<div class=\"mo-tile\"><a href=\"\/tools\/kit-builder\/\"><div class=\"n\">$'+Math.round(kitCost)+'<\/div><div class=\"l\">Kit value<\/div><\/a><\/div>';\nt+='<div class=\"mo-tile\"><a href=\"\/tools\/kit-builder\/\"><div class=\"n dim\" style=\"font-size:16px\">'+ecoName(st.ecosystem)+'<\/div><div class=\"l\">Ecosystem<\/div><\/a><\/div>';\nt+=st.checker?'<div class=\"mo-tile\"><a href=\"\/tools\/compatibility-checker\/\"><div class=\"n\">'+st.checker.score+'\/100<\/div><div class=\"l\">Compatibility<\/div><\/a><\/div>':'<div class=\"mo-tile\"><a href=\"\/tools\/compatibility-checker\/\"><div class=\"n dim\">Run checker<\/div><div class=\"l\">Compatibility<\/div><\/a><\/div>';\nt+=st.calc?'<div class=\"mo-tile\"><a href=\"\/tools\/cost-calculator\/\"><div class=\"n\">$'+st.calc.savingsYr+'\/yr<\/div><div class=\"l\">Est. savings<\/div><\/a><\/div>':'<div class=\"mo-tile\"><a href=\"\/tools\/cost-calculator\/\"><div class=\"n dim\">Run calculator<\/div><div class=\"l\">Est. savings<\/div><\/a><\/div>';\nt+=st.calc?'<div class=\"mo-tile\"><a href=\"\/tools\/cost-calculator\/\"><div class=\"n dim\" style=\"font-size:15px\">'+st.calc.paybackLabel+'<\/div><div class=\"l\">Payback<\/div><\/a><\/div>':'';\ndocument.getElementById('mo-tiles').innerHTML=t;\n}\nfunction steps(){\nvar defs=[['Kit built',kit.length>0,'\/tools\/kit-builder\/'],['Compatibility checked',!!st.checker,'\/tools\/compatibility-checker\/'],['Guide generated',!!st.guideDone,'\/tools\/setup-guide\/'],['Costs calculated',!!st.calc,'\/tools\/cost-calculator\/'],['Gear browsed',!!st.gearVisited,'\/tools\/gear-finder\/'],['Monitoring',true,'\/tools\/home-monitor\/']];\nvar h='';\ndefs.forEach(function(d){h+='<a href=\"'+d[2]+'\" class=\"'+(d[1]?'done':'')+'\">'+(d[1]?'\u2713 ':'\u25cb ')+d[0]+'<\/a>'});\ndocument.getElementById('mo-steps').innerHTML=h;\n}\nvar budEl=document.getElementById('mo-budget');\nbudEl.value=st.budget||300;\nfunction budget(){\nvar b=parseFloat(budEl.value)||0;\nvar pct=b>0?Math.min(100,kitCost\/b*100):100;\nvar bar=document.getElementById('mo-bar');\nbar.style.width=pct+'%';\nbar.className='mo-bar'+(kitCost>b?' over':'');\nvar note;\nif(b===0)note='Set a budget to track your spend.';\nelse if(kitCost>b)note='Your kit ($'+Math.round(kitCost)+') is $'+Math.round(kitCost-b)+' over budget \u2014 trim it in the Kit Builder or wait for watchlist prices to drop.';\nelse note='$'+Math.round(b-kitCost)+' of headroom left in your $'+Math.round(b)+' budget.';\ndocument.getElementById('mo-budnote').textContent=note;\nsave({budget:b});\n}\nbudEl.addEventListener('input',budget);\nvar wl={};(st.watchlist||[]).forEach(function(w){wl[w.id]=w});\nfunction watchlist(){\nvar box=document.getElementById('mo-wl');\nif(kit.length===0){box.innerHTML='<div class=\"dvt-empty\">Your kit is empty \u2014 nothing to watch yet. <a href=\"\/tools\/kit-builder\/\" style=\"color:var(--teal)\">Build your kit \u2192<\/a><\/div>';return}\nvar h='<table class=\"mo-wl\"><tr><th>Device<\/th><th>Our price<\/th><th>Target $<\/th><th>Seen at $<\/th><th>Status<\/th><\/tr>';\nkit.forEach(function(i){\nvar w=wl[i.id]||{};\nvar status,cls;\nif(w.seen&&w.target&&w.target>=w.seen){status='Buy now \u2713';cls='st-buy'}\nelse if(w.target){status='Waiting for drop';cls='st-wait'}\nelse{status='No target set';cls='st-na'}\nh+='<tr><td class=\"nm\">'+i.name+'<\/td><td>$'+i.price+'<\/td>'+\n'<td><input type=\"number\" min=\"0\" step=\"1\" data-t=\"'+i.id+'\" value=\"'+(w.target||'')+'\"><\/td>'+\n'<td><input type=\"number\" min=\"0\" step=\"1\" data-s=\"'+i.id+'\" value=\"'+(w.seen||'')+'\"><\/td>'+\n'<td><span class=\"st '+cls+'\">'+status+'<\/span><\/td><\/tr>';\n});\nh+='<\/table>';\nbox.innerHTML=h;\n}\ndocument.getElementById('mo-wl').addEventListener('input',function(ev){\nvar el=ev.target;\nvar id=el.dataset.t||el.dataset.s;\nif(!id)return;\nif(!wl[id]){var ki=kit.filter(function(x){return x.id===id})[0];wl[id]={id:id,name:ki?ki.name:id}}\nvar v=parseFloat(el.value)||0;\nif(el.dataset.t)wl[id].target=v;else wl[id].seen=v;\nvar arr=[];for(var k in wl)arr.push(wl[k]);\nsave({watchlist:arr});\nwatchlist();\nvar again=document.querySelector('[data-'+(el.dataset.t?'t':'s')+'=\"'+id+'\"]');\nif(again){again.focus();var vv=again.value;again.value='';again.value=vv}\ndocument.getElementById('mo-msg').textContent='Watchlist saved \u2713';\n});\ndocument.getElementById('mo-reset').addEventListener('click',function(){\nif(!confirm('This clears your kit, results and watchlist from this browser. Continue?'))return;\nlocalStorage.removeItem(K);\nlocation.reload();\n});\nsave({monitorVisited:Date.now()});\ntiles();steps();budget();watchlist();\n})();\n<\/script>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Tools home1. Kit Builder2. Checker3. Setup Guide4. Calculator5. Gear Finder6. Monitor Home Monitor Your dashboard for everything the other five tools know: kit, compatibility, costs, budget and a price watchlist. All data lives in your browser only. Your smart home at a glance Pipeline progress Budget tracker My gear budget: $ Price watchlist Set a&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":129,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":"","_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","_yoast_wpseo_focuskw":"","rank_math_title":"Home Monitor \u2014 Smart Home Budget &amp; Price Watch Dashboard | DomoViq","rank_math_description":"Your smart home dashboard: kit summary, compatibility score, savings estimate, budget tracker and a price watchlist \u2014 all in one place, stored in your browser.","rank_math_focus_keyword":"","_aioseop_title":"","_aioseop_description":""},"class_list":["post-142","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/domoviq.com\/wp-json\/wp\/v2\/pages\/142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/domoviq.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/domoviq.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/domoviq.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/domoviq.com\/wp-json\/wp\/v2\/comments?post=142"}],"version-history":[{"count":2,"href":"https:\/\/domoviq.com\/wp-json\/wp\/v2\/pages\/142\/revisions"}],"predecessor-version":[{"id":152,"href":"https:\/\/domoviq.com\/wp-json\/wp\/v2\/pages\/142\/revisions\/152"}],"up":[{"embeddable":true,"href":"https:\/\/domoviq.com\/wp-json\/wp\/v2\/pages\/129"}],"wp:attachment":[{"href":"https:\/\/domoviq.com\/wp-json\/wp\/v2\/media?parent=142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}