PHP Floorplan 2.0 for Domoticz
Update of PHP Floorplan for Domoticz and PHP Floorplan for Domoticz Extra screenshots
I’ve been busy lately optimizing the code so it has a very small footprint on data traffic. I managed to optimize the code in a way that each pageview only requires 2.3KB instead of the 41KB before.
Most of that is achieved by moving the position and styling to a CSS file and changed the dimmer function. Before the dimmer layer was loaded but invisible, now it’s only loaded if you click a dimmer icon.
Another advantage of moving all positioning to a CSS file is that you can perfectly alter position depending on the used device.
Code is also published on my Github at https://github.com/Egregius/PHP-Custom-Floorplan-for-Domoticz
The Github repository will probably be updated more often than the code below…
<?php $start=microtime(true); //require "secure/settings.php";//My settings file holds an authentication scheme. require "secure/functions.php"; $home=true;//Create your own authentication in settings.php if(home){ error_reporting(E_ALL); ini_set("display_errors","on"); echo ' <html> <head> <title>Floorplan</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> <meta name="HandheldFriendly" content="true"/> <meta name="mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="viewport" content="width=device-width,height=device-height,user-scalable=yes,minimal-ui"/> <meta name="msapplication-TileColor" content="#000000"> <meta name="msapplication-TileImage" content="images/domoticzphp48.png"> <meta name="msapplication-config" content="/browserconfig.xml"> <link rel="manifest" href="/manifests/floorplan.json"> <meta name="theme-color" content="#000000"> <link rel="icon" type="image/png" href="images/domoticzphp48.png"/> <link rel="shortcut icon" href="images/domoticzphp48.png"/> <link rel="apple-touch-startup-image" href="images/domoticzphp450.png"/> <link rel="apple-touch-icon" href="images/domoticzphp48.png"/> <link rel="stylesheet" type="text/css" href="/styles/floorplan.php"> </head> <body class="floorplan"> '; if(isset($_POST['Schakel'])) Schakel($_POST['Schakel'],$_POST['Actie'],$_POST['Naam']); elseif(isset($_POST['Udevice'])) Udevice($_POST['Udevice'],$_POST['Naam']); elseif(isset($_POST['dimmer'])) Dim($_POST['dimmer'],$_POST['dimlevel'],$_POST['Naam']); $domostart=microtime(true); $domoticz=json_decode(curl('http://127.0.0.1:8084/json.htm?type=devices&plan=2',true,$ctx),true); $domotime=microtime(true)-$domostart; if($domoticz){ foreach($domoticz['result'] as $dom) { $name=$dom['Name']; isset($dom['SwitchType']) ?$SwitchType=$dom['SwitchType'] :'none'; if($SwitchType=='Dimmer') { ${'DI'.$name}=$dom['idx']; $dom['Status']=='Off'?${'D'.$name}='Off':${'D'.$name}='On'; $dom['Status']=='Off'?${'Dlevel'.$name}=0:${'Dlevel'.$name}=$dom['Level']; } else { ${'S'.$name}=$dom['Data']; ${'SI'.$name}=$dom['idx']; ${'ST'.$name}=strtotime($dom['LastUpdate']); } } //START USER LAYOUT echo ' <div class="fix clock"> <a href=\'javascript:navigator_Go("floorplan.php");\'>'.strftime("%k:%M:%S",$time).'</a> </div> <div class="fix denonicon"> <a href=\'javascript:navigator_Go("denon.php");\'> <img src="/images/denon.png" class="i48"> </a> </div> <div class="fix radioluisteren"> <form method="POST"> <input type="hidden" name="Naam" value="radioluisteren"> <input type="image" src="/images/Amp_';echo $Sdenon=='On'?'On':'Off';echo '.png" class="i70"> </form> </div> <div class="fix tvkijken"> <form method="POST"> <input type="hidden" name="Naam" value="tvkijken"> <input type="image" src="/images/TV_';echo $Stv=='On'?'On':'Off';echo '.png" class="i60"> </form> </div> <div class="fix kodikijken">'; echo $Skodi=='Off'?' <form method="POST"> <input type="hidden" name="Naam" value="kodikijken"> <input type="image" src="/images/Kodi_Off.png" class="i48"> </form>' :' <form action="kodi.php"> <input type="image" src="/images/Kodi_On.png" class="i48"> </form> '; echo '</div> <div class="fix heatingicon"> <a href=\'javascript:navigator_Go("heating.php");\'> <img src="/images/Fire_';echo $Sbrander=='On'?'On':'Off';echo '.png" class="i48"> </a> </div> <div class="fix floorplan2icon"> <a href=\'javascript:navigator_Go("floorplan2.php");\' onclick="toggle_visibility(\'Plus\');"> <img src="/images/plus.png" class="i60"/> </a> </div>'; Dimmer('tobi'); Dimmer('zithoek'); Dimmer('eettafel'); Dimmer('kamer'); Dimmer('alex'); Schakelaar('tvled','Light'); Schakelaar('kristal','Light'); Schakelaar('bureel','Light'); Schakelaar('inkom','Light'); Schakelaar('keuken','Light'); Schakelaar('wasbak','Light'); Schakelaar('kookplaat','Light'); Schakelaar('werkblad','Light'); Schakelaar('lichtbadkamer1','Light'); Schakelaar('lichtbadkamer2','Light'); Schakelaar('voordeur','Light'); Schakelaar('hall','Light'); Schakelaar('garage','Light'); Schakelaar('zolderg','Light'); Schakelaar('weg','Home'); Schakelaar('slapen','Sleepy'); Schakelaar('terras','Light'); Schakelaar('tuin','Light'); Schakelaar('zolder','Light'); Schakelaar('bureeltobi','Plug'); Schakelaar('badkamervuur','Plug'); Schakelaar('kerstboom','Kerstboom'); Thermometer('living_temp'); Thermometer('badkamer_temp'); Thermometer('kamer_temp'); Thermometer('tobi_temp'); Thermometer('alex_temp'); Thermometer('zolder_temp'); Blinds('zoldertrap'); if($Sweg=='On'||$Sslapen=='On'){Secured('zliving');Secured('zkeuken');Secured('zinkom');Secured('zgarage');} if($Sweg=='On'){Secured('zhalla');Secured('zhallb');} if($Spirliving!='Off'||$Spirliving!='Off')Motion('zliving'); if($Spirkeuken!='Off')Motion('zkeuken'); if($Spirinkom!='Off')Motion('zinkom'); if($Spirgarage!='Off')Motion('zgarage'); if($Spirhall!='Off'){Motion('zhalla');Motion('zhallb');} if($STbelknop>$eendag)Timestamp('belknop',270); if($STpirgarage>$eendag)Timestamp('pirgarage',0); if($STpirliving>$eendag)Timestamp('pirliving',0); if($STpirlivingR>$eendag)Timestamp('pirlivingR',0); if($STpirkeuken>$eendag)Timestamp('pirkeuken',0); if($STpirinkom>$eendag)Timestamp('pirinkom',0); if($STpirhall>$eendag)Timestamp('pirhall',0); if($STachterdeur>$eendag)Timestamp('achterdeur',270); if($STpoort>$eendag)Timestamp('poort',90); if($STraamliving>$eendag)Timestamp('raamliving',270); if($STraamtobi>$eendag)Timestamp('raamtobi',270); if($STraamalex>$eendag)Timestamp('raamalex',270); if($STraamkamer>$eendag)Timestamp('raamkamer',90); if($STdeurbadkamer>$eendag)Timestamp('deurbadkamer',90); if($Spoort!='Closed') echo ' <div class="fix poort"> </div>'; if($Sachterdeur!='Closed') echo ' <div class="fix achterdeur"> </div>'; if($Sraamliving!='Closed') echo ' <div class="fix raamliving"> </div>'; if($Sraamtobi!='Closed') echo ' <div class="fix raamtobi"> </div>'; if($Sraamalex!='Closed') echo ' <div class="fix raamalex"> </div>'; if($Sraamkamer!='Closed') echo ' <div class="fix raamkamer"> </div>'; if($Sdeurbadkamer!='Closed') echo ' <div class="fix deurbadkamer"> </div>'; $total=microtime(true)-$start; echo ' <div class="fix floorplanstats"> '.$udevice.' | D '.number_format(($domotime*1000),1).' | P '.number_format((($total-$domotime)*1000),1).' | T '.number_format(($total*1000),1).' </div>'; //END USER LAYOUT if(isset($_REQUEST['setdimmer'])) { $name=$_REQUEST['setdimmer']; echo ' <div id="D'.$name.'" class="fix dimmer" > <form method="POST" action="floorplan.php" oninput="level.value = dimlevel.valueAsNumber"> <div class="fix z" style="top:15px;left:90px;"> <h2>'.ucwords($name).': '.round(${'Dlevel'.$name},0).'%</h2> <input type="hidden" name="Naam" value="'.$name.'"> <input type="hidden" name="dimmer" value="'.${'DI'.$name}.'"> </div> <div class="fix z" style="top:100px;left:30px;"> <input type="image" name="dimleveloff" value ="0" src="images/Light_Off.png" class="i90"/> </div> <div class="fix z" style="top:100px;left:150px;"> <input type="image" name="dimsleep" value ="100" src="images/Sleepy.png" class="i90"/> </div> <div class="fix z" style="top:100px;left:265px;"> <input type="image" name="dimwake" value="100" src="images/Wakeup.png" style="height:90px;width:90px"/> <input type="hidden" name="dimwakelevel" value="'.${'Dlevel'.$name}.'"> </div> <div class="fix z" style="top:100px;left:385px;"> <input type="image" name="dimlevelon" value ="100" src="images/Light_On.png" class="i90"/> </div> <div class="fix z" style="top:210px;left:10px;">'; $levels=array(1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,22,24,26,28,30,32,35,40,45,50,55,60,65,70,75,80,85,90,95,100); foreach($levels as $level) { if(${'Dlevel'.$name}==$level) echo ' <input type="submit" name="dimlevel" value="'.$level.'"/ class="dimlevel dimlevela">'; else echo ' <input type="submit" name="dimlevel" value="'.$level.'" class="dimlevel"/>'; } echo ' </div> </form> <div class="fix z" style="top:5px;left:5px;"> <a href=\'javascript:navigator_Go("floorplan.php");\'> <img src="/images/close.png" width="72px" height="72px"/> </a> </div> </div> </body> <script type="text/javascript"> function navigator_Go(url){ window.location.assign(url); } </script> </html>'; exit; } }else echo '<div><br/><br/><br/><a href=""><h1> Geen verbinding met Domoticz</h1></a></div>'; } else { header("Location: index.php"); die("Redirecting to: index.php"); } ?> <script type="text/javascript"> function toggle_visibility(id){ var e=document.getElementById(id); if(e.style.display=='inherit') e.style.display='none'; else e.style.display='inherit'; } setTimeout('window.location.href=window.location.href;',4963); function navigator_Go(url){ window.location.assign(url); } </script> </body> </html>
<?php function lg($msg) { curl('http://127.0.0.1:8084/json.htm?type=command¶m=addlogmessage&message='.urlencode($msg)); } function Schakel($idx,$cmd,$name=NULL) { global $user; lg('>>> '.$user.' switched '.$idx.' '.$name.' '.$cmd); curl('http://127.0.0.1:8084/json.htm?type=command¶m=switchlight&idx='.$idx.'&switchcmd='.$cmd.'&level=0&passcode='); } function Scene($idx,$name=NULL) { global $user; lg('>>> '.$user.' Scene '.$name.' '.$cmd.' '.$reply); curl('http://127.0.0.1:8084/json.htm?type=command¶m=switchscene&idx='.$idx.'&switchcmd=On'); } function Dim($idx,$level,$name=NULL) { global $user; lg('>>> '.$user.' Dimmer '.$idx.' '.$name.' '.$level); if($level>0&&$level<100) $level=$level+1; curl('http://127.0.0.1:8084/json.htm?type=command¶m=switchlight&idx='.$idx.'&switchcmd=Set%20Level&level='.$level); } function Udevice($idx,$nvalue,$svalue,$name=NULL) { global $user; lg('>>> '.$user.' UDevice '.$idx.' '.$nvalue.' '.$level.' '.$svalue); curl('http://127.0.0.1:8084/json.htm?type=command¶m=udevice&idx='.$idx.'&nvalue='.$nvalue.'&svalue='.$svalue); } function Thermometer($name) { global $weer; if(isset($weer[$name])) $temp=$weer[$name]; //($temp>0)?$temp=$temp:$temp=1; $hoogte=$temp*3; if($hoogte>88) $hoogte=88; elseif($hoogte<20) $hoogte=20; $top=88-$hoogte; if($top<0) $top=0; $top=$top+5; switch($temp) { case $temp>=22: $tcolor='F00'; $dcolor='55F'; break; case $temp>=20: $tcolor='D12'; $dcolor='44F'; break; case $temp>=18: $tcolor='B24'; $dcolor='33F'; break; case $temp>=15: $tcolor='93B'; $dcolor='22F'; break; case $temp>=10: $tcolor='64D'; $dcolor='11F'; break; default: $tcolor='55F'; $dcolor='00F'; } echo ' <a href=\'javascript:navigator_Go("temp.php?sensor=998");\'> <div class="fix '.$name.'" > <div class="fix tmpbg" style="top:'.number_format($top,0).'px;height:'.number_format($hoogte,0).'px;background:linear-gradient(to bottom, #'.$tcolor.', #'.$dcolor.');"> </div> <img src="/images/temp.png" height="100px" width="auto"/> <div class="fix center" style="top:73px;left:5px;width:30px;"> '.number_format($temp,1).' </div> </div> </a>'; } function Schakelaar($name,$kind) { global ${'S'.$name},${'SI'.$name}; echo ' <div class="fix '.$name.'"> <form method="POST"> <input type="hidden" name="Schakel" value="'.${'SI'.$name}.'"/> <input type="hidden" name="Naam" value="'.$name.'"/>'; echo ${'S'.$name}=='Off'?' <input type="hidden" name="Actie" value="On"/> <input type="image" src="/images/'.$kind.'_Off.png" id="'.$name.'"/>' :' <input type="hidden" name="Actie" value="Off"> <input type="image" src="/images/'.$kind.'_On.png" id="'.$name.'"/>'; echo ' </form> </div>'; } function Dimmer($name) { global ${'D'.$name},${'DI'.$name},${'Dlevel'.$name},${'DT'.$name}; echo ' <form method="POST"> <a href="floorplan.php?setdimmer='.$name.'"> <div class="fix z '.$name.'"> <input type="hidden" name="setdimmer" value="'.$name.'"/>'; echo ${'D'.$name}=='Off'?' <input type="image" src="/images/Light_Off.png" class="i70"/>' :' <input type="image" src="/images/Light_On.png" class="i70"/> <div class="fix center dimmerlevel"> '.${'Dlevel'.$name}.' </div>'; echo ' </div> </a> </form>'; } function Timestamp($name,$draai) { global ${'ST'.$name}; echo ' <div class="fix stamp r'.$draai.' t'.$name.'"> '.strftime("%k:%M",${'ST'.$name}).' </div>';} function Secured($name) { echo ' <div class="fix secured '.$name.'"> </div>';} function Motion($name) { global $Sweg,$Sslapen; echo($Sweg=='On'||$Sslapen=='On') ?' <div class="fix motionr '.$name.'"> </div>' :' <div class="fix motion '.$name.'"> </div>';} function Blinds($name) { global ${'S'.$name},${'SI'.$name}; echo ' <div class="fix z '.$name.'"> <form method="POST"> <input type="hidden" name="Schakel" value="'.${'SI'.$name}.'"/> <input type="hidden" name="Naam" value="'.$name.'"/> <input type="hidden" name="Actie" value="Off"/>'; echo ${'S'.$name}=='Closed' ?' <input type="image" src="/images/arrowgreenup.png" class="i48"/>' :' <input type="image" src="/images/arrowup.png" class="i48"/>'; echo ' </form><br/> <form method="POST"> <input type="hidden" name="Schakel" value="'.${'SI'.$name}.'"/> <input type="hidden" name="Naam" value="'.$name.'"/> <input type="hidden" name="Actie" value="On"/>'; echo ${'S'.$name}=='Open' ?' <input type="image" src="/images/arrowgreendown.png" class="i48"/>' :' <input type="image" src="/images/arrowdown.png" class="i48"/>'; echo ' </form> </div>'; }
<?php error_reporting(E_ALL);ini_set("display_errors","on"); header("Content-type:text/css;charset:UTF-8"); header("Cache-Control:must-revalidate"); header("Expires:".gmdate("D, d M Y H:i:s",time()+86400)." GMT"); if(strpos($_SERVER['HTTP_USER_AGENT'],'iPad')!==false)$udevice='ipad'; elseif(strpos($_SERVER['HTTP_USER_AGENT'],'iPhone')!==false)$udevice='iphone'; else $udevice='other'; ?> .agent{<?php echo $_SERVER['HTTP_USER_AGENT']; ?>} .udevice{<?php echo $udevice; ?>} html{padding:0;margin:0;color:#ccc;font-family:sans-serif;height:100%;} body{padding:0;margin:0;background:#000;width:100%;height:100%;} .navbar{position:fixed;top:0px;left:0px;width:100%;padding:2px 0px 2px 0px;z-index:100;background-color:#111;} a:link{text-decoration:none;color:#ccc} a:visited{text-decoration:none;color:#ccc} a:hover{text-decoration:none;color:#ccc;} a:active{text-decoration:none;color:#ccc} form{display:inline;margin:0px;padding:0px;} input[type=text] {cursor:pointer;-webkit-appearance:none;border-radius:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;border:0px solid transparent;} input[type=number]{cursor:pointer;-webkit-appearance:none;border-radius:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;border:0px solid transparent;} input[type=submit]{cursor:pointer;-webkit-appearance:none;border-radius:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;border:0px solid transparent;} input[type=select]{cursor:pointer;-webkit-appearance:none;border-radius:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;border:0px solid transparent;} input[type=date]{cursor:pointer;-webkit-appearance:none;border-radius:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;border:0px solid transparent;} .btn{background-color:#333;color:#ccc;text-align:center;display:inline-block;border:0px solid transparent;padding:2px;margin:1px 0px 1px 1px;-webkit-appearance:none;} .btn:hover{color:#000;background-color:#ffba00;overflow:visible;} .btna{color:#000;background-color:#f5b324;} .clear{clear:both;} .box{text-align:center;left:0px;background:#222;padding:10px;margin:10px;} .right{text-align:right;} <?php if($udevice=='other'){ ?> .content{height:100%;min-height:80%;margin:0 auto;padding-top:55px;} .btn{height:40px;font-size:1.4em;} .b1{width:500px;max-width:99%} .b2{width:500px;max-width:48.55%} .b3{width:500px;max-width:31%} .b4{width:500px;max-width:23.9%} .b5{width:500px;max-width:19%} .b6{width:500px;max-width:15.7%} .b7{width:500px;max-width:13.2%} .b8{width:500px;max-width:12%} .b9{width:500px;max-width:10%} .b10{width:500px;max-width:10%} <?php }elseif($udevice=='iphone'){ ?> .content{height:100%;min-height:80%;margin:0 auto;padding-top:60px;} .btn{height:56px;font-size:2.5em;} .b1{width:500px;max-width:99%} .b2{width:500px;max-width:48.55%} .b3{width:500px;max-width:31%} .b4{width:500px;max-width:24.3%} .b5{width:500px;max-width:19%} .b6{width:500px;max-width:15.7%} .b7{width:500px;max-width:13.2%} .b8{width:500px;max-width:12%} .b9{width:500px;max-width:10.3%} .b10{width:500px;max-width:10%} <?php }elseif($udevice=='ipad'){ ?> @media only screen and (orientation: portrait) { .content{height:100%;min-height:80%;margin:0 auto;padding-top:120px;} .btn{height:75px;font-size:2em;} .b1{width:500px;max-width:99%} .b2{width:500px;max-width:48.55%} .b3{width:500px;max-width:31%} .b4{width:500px;max-width:24.62%} .b5{width:500px;max-width:19%} .b6{width:500px;max-width:15.7%} .b7{width:500px;max-width:13.2%} .b8{width:500px;max-width:12%} .b9{width:500px;max-width:10.75%} .b10{width:500px;max-width:10%} } @media only screen and (orientation: landscape) { .content{height:100%;min-height:80%;margin:0 auto;padding-top:120px;} .btn{height:75px;font-size:2em;} .b1{width:500px;max-width:99%} .b2{width:500px;max-width:48.55%} .b3{width:500px;max-width:31%} .b4{width:500px;max-width:24.74%} .b5{width:500px;max-width:19%} .b6{width:500px;max-width:15.7%} .b7{width:500px;max-width:13.2%} .b8{width:500px;max-width:12%} .b9{width:500px;max-width:10.85%} .b10{width:500px;max-width:10%} } <?php } ?>
<?php include "general.php";?> html{padding:0px;margin:0px;color:#ccc;font-family:sans-serif;} body{margin:0px;background:#000;width:100%} h2{font-size:36px;} .center{text-align:center;} .fix{position:absolute;} .i48{width:48px;height:auto;} .i60{width:60px;height:auto;} .i70{width:70px;height:auto;} .i90{width:90px;height:auto;} .r0{transform:rotate(0deg);-webkit-transform:rotate(0deg);} .r90{transform:rotate(90deg);-webkit-transform:rotate(90deg);} .r270{transform:rotate(270deg);-webkit-transform:rotate(270deg);} .tmpbg{background-repeat:no-repeat;z-index:-1;left:7px;width:26px;border-radius:8px;} .z0{z-index:-10;} .z{z-index:10;} .z1{z-index:100;} .red{background:rgba(255,50,50,0.6);padding:1px 2px 1px 2px;} .stamp{width:38px;text-align:center;font-size:120%;} .secured{background:repeating-linear-gradient(135deg,rgba(255,0,0,0),rgba(255,0,0,0) 7px,rgba(255,0,0,0) 8px,rgba(255,0,0,0.6) 15px);z-index:-1000;} .motion{background:rgba(255,0,0,0.4);z-index:-100;} .motionr{background:rgba(255,0,0,0.8);z-index:-100;} <?php if($udevice=='other'||$udevice=='iphone'){ ?> .dimmer{top:0px;left:0px;height:735px;width:390px;padding:50px;background:#111;z-index:1000;} .dimmerlevel{top:20px;left:25px;width:19px;color:#333;font-size:90%;} .dimlevel{background-color:#333;color:#eee;font-size:300%;padding:0px;margin-bottom:2px;text-align:center;width:18.5%;height:89px;} .dimlevela{background-color:#ffba00;color:#000;} .clock{top:5px;left:266px;width:142px;text-align:center;font-size:33px;font-weight:500;color:#CCC;} .floorplan{cursor:default;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;font-size:80%;font-family:Arial;padding:0px;text-align:center;background:#000;background-image:url(/images/HomeZw.png);background-repeat:no-repeat;background-position:-4px -15px;height:848px;width:486px;padding-top:0px;margin:0 auto;} .buiten_temp{top:125px;left:0px;height:270px;width:80px;} .poort{top:262px;left:404px;width:25px;height:128px;background:rgba(255,0,0,1);z-index:-10;} .achterdeur{top:264px;left:81px;width:30px;height:48px;background:rgba(255,0,0,1);z-index:-10;} .raamliving{top:46px;left:81px;width:8px;height:165px;background:rgba(255,0,0,1);z-index:-10;} .raamtobi{top:449px;left:81px;width:7px;height:43px;background:rgba(255,0,0,1);z-index:-10;} .raamalex{top:569px;left:81px;width:7px;height:43px;background:rgba(255,0,0,1);z-index:-10;} .raamkamer{top:586px;left:481px;width:7px;height:43px;background:rgba(255,0,0,1);z-index:-10;} .deurbadkamer{top:421px;left:341px;width:7px;height:46px;background:rgba(255,0,0,1);z-index:-10;} .eettafel{top:110px;left:245px;} .zithoek{top:110px;left:110px;} .kamer{top:550px;left:320px;} .tobi{top:432px;left:132px;} .alex{top:555px;left:142px;} .living_temp{top:120px;left:190px;} .badkamer_temp{top:403px;left:441px;} .kamer_temp{top:530px;left:430px;} .tobi_temp{top:433px;left:94px;} .alex_temp{top:544px;left:94px;} .zolder_temp{top:690px;left:125px;} .tvled{top:7px;left:87px;}#tvled{height:50px;width:auto;} .kristal{top:7px;left:147px;}#kristal{height:50px;width:auto;} .bureel{top:7px;left:208px;}#bureel{height:50px;width:auto;} .inkom{top:51px;left:349px;}#inkom{height:50px;width:auto;} .keuken{top:159px;left:390px;}#keuken{height:50px;width:auto;} .wasbak{top:145px;left:345px;}#wasbak{height:40px;width:auto;} .kookplaat{top:115px;left:386px;}#kookplaat{height:40px;width:auto;} .werkblad{top:208px;left:434px;}#werkblad{height:40px;width:auto;} .lichtbadkamer1{top:424px;left:380px;}#lichtbadkamer1{height:60px;width:auto;} .lichtbadkamer2{top:471px;left:341px;}#lichtbadkamer2{height:40px;width:auto;} .voordeur{top:59px;left:442px;}#voordeur{height:42px;width:auto;} .hall{top:410px;left:252px;}#hall{height:50px;width:auto;} .garage{top:305px;left:209px;}#garage{height:60px;width:auto;} .zolderg{top:315px;left:140px;}#zolderg{height:42px;width:auto;} .lichten_auto{top:312px;left:299px;}#lichten_auto{height:40px;width:auto;} .weg{top:257px;left:417px;}#weg{height:65px;width:auto;} .slapen{top:331px;left:417px;}#slapen{height:65px;width:auto;} .terras{top:7px;left:16px;}#terras{height:48px;width:auto;} .tuin{top:66px;left:16px;}#tuin{height:48px;width:auto;} .zolder{top:710px;left:260px;}#zolder{height:60px;width:auto;} .bureeltobi{top:730px;left:400px;}#bureeltobi{height:40px;width:auto;} .badkamervuur{top:403px;left:346px;}#badkamervuur{height:28px;width:auto;} .Kerstboom{top:200px;left:90px;}#Kerstboom{height:46px;width:auto;} .denonicon{top:350px;left:13px;} .radioluisteren{top:440px;left:2px;} .tvkijken{top:510px;left:8px;} .kodikijken{top:600px;left:14px;} .heatingicon{top:690px;left:14px;} .floorplan2icon{top:776px;left:9px;} .zliving{top:51px;left:89px;width:249px;height:197px;} .zkeuken{top:115px;left:345px;width:129px;height:133px;} .zinkom{top:51px;left:345px;width:129px;height:56px;} .zgarage{top:256px;left:89px;width:315px;height:139px;} .zhalla{top:403px;left:214px;width:127px;height:66px;} .zhallb{top:469px;left:214px;width:44px;height:66px;} .tbelknop{top:17px;left:466px;} .tpirgarage{top:256px;left:300px;} .tpirliving{top:230px;left:300px;} .tpirlivingR{top:230px;left:105px;} .tpirkeuken{top:115px;left:345px;} .tpirinkom{top:89px;left:398px;} .tpirhall{top:403px;left:215px;} .tachterdeur{top:278px;left:74px;} .tpoort{top:315px;left:376px;} .traamliving{top:72px;left:74px;} .traamtobi{top:462px;left:74px;} .traamalex{top:581px;left:74px;} .traamkamer{top:598px;left:460px;} .tdeurbadkamer{top:435px;left:329px;} .zoldertrap{top:675px;left:190px;} .weather{top:280px;left:11px;} .zon{top:224px;left:4px;} .floorplanstats{top:810px;left:94px;} <?php }elseif($udevice=='ipad'){ ?> .btn{color:#ccc;background-color:#333;min-width:1.3em;text-align:center;display:inline-block;margin-bottom:0;cursor:pointer;border:1px solid transparent;padding:5px;margin:3px 0px 2px 4px;font-size:1em;-webkit-appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;} .btn:hover{color:#fff;} @media only screen and (orientation: portrait) { .dimmer{top:0px;left:0px;height:735px;width:390px;padding:50px;background:#111;z-index:1000;} .dimmerlevel{top:20px;left:25px;width:19px;color:#333;font-size:90%;} .dimlevel{background-color:#333;color:#eee;font-size:300%;padding:0px;text-align:center;width:19.4%;height:91px;} .dimlevela{background-color:#ffba00;color:#000;} .floorplan{cursor:default;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;font-size:80%;font-family:Arial;padding:0px;text-align:center;background:#000;background-image:url(/images/HomeZw.png?v=2); background-repeat: no-repeat;background-position:96px -19px;background-size:80.1%;padding-top:0px;margin:0 auto;} .clock{top:8px;left:420px;width:169px;text-align:center;font-size:40px;font-weight:500;color:#CCC;} .dimmer{height:935px;width:665px;padding:50px;} .dimlevel{height:113px;} .buiten_temp{top:125px;left:100px;height:270px;width:80px;} .poort{top:326px;left:589px;width:25px;height:128px;background:rgba(255,0,0,1);z-index:-10;} .achterdeur{top:318px;left:198px;width:30px;height:56px;background:rgba(255,0,0,1);z-index:-10;} .raamliving{top:54px;left:198px;width:9px;height:200px;background:rgba(255,0,0,1);z-index:-10;} .raamtobi{top:539px;left:198px;width:9px;height:53px;background:rgba(255,0,0,1);z-index:-10;} .raamalex{top:684px;left:198px;width:9px;height:53px;background:rgba(255,0,0,1);z-index:-10;} .raamkamer{top:706px;left:682px;width:9px;height:53px;background:rgba(255,0,0,1);z-index:-10;} .deurbadkamer{top:506px;left:513px;width:9px;height:56px;background:rgba(255,0,0,1);z-index:-10;} .eettafel{top:140px;left:400px;} .zithoek{top:140px;left:230px;} .kamer{top:660px;left:490px;} .tobi{top:535px;left:260px;} .alex{top:680px;left:280px;} .living_temp{top:170px;left:330px;} .badkamer_temp{top:495px;left:630px;} .kamer_temp{top:640px;left:630px;} .tobi_temp{top:520px;left:204px;} .alex_temp{top:665px;left:204px;} .zolder_temp{top:845px;left:225px;} .tvled{top:11px;left:205px;}#tvled{height:55px;width:auto;} .kristal{top:11px;left:272px;}#kristal{height:55px;width:auto;} .bureel{top:11px;left:340px;}#bureel{height:55px;width:auto;} .inkom{top:70px;left:550px;}#inkom{height:50px;width:auto;} .keuken{top:195px;left:570px;}#keuken{height:50px;width:auto;} .wasbak{top:180px;left:514px;}#wasbak{height:45px;width:auto;} .kookplaat{top:140px;left:555px;}#kookplaat{height:45px;width:auto;} .werkblad{top:254px;left:622px;}#werkblad{height:45px;width:auto;} .lichtbadkamer1{top:515px;left:560px;}#lichtbadkamer1{height:60px;width:auto;} .lichtbadkamer2{top:565px;left:519px;}#lichtbadkamer2{height:40px;width:auto;} .voordeur{top:78px;left:678px;}#voordeur{height:45px;width:auto;} .hall{top:500px;left:395px;}#hall{height:50px;width:auto;} .garage{top:360px;left:390px;}#garage{height:60px;width:auto;} .zolderg{top:366px;left:290px;}#zolderg{height:45px;width:auto;} .lichten_auto{top:312px;left:399px;}#lichten_auto{height:45px;width:auto;} .weg{top:310px;left:700px;}#weg{height:65px;width:auto;} .slapen{top:410px;left:700px;}#slapen{height:65px;width:auto;} .terras{top:7px;left:116px;}#terras{height:50px;width:auto;} .tuin{top:70px;left:116px;}#tuin{height:50px;width:auto;} .zolder{top:840px;left:410px;}#zolder{height:60px;width:auto;} .bureeltobi{top:940px;left:600px;}#bureeltobi{height:42px;width:auto;} .badkamervuur{top:487px;left:520px;}#badkamervuur{height:28px;width:auto;} .Kerstboom{top:230px;left:190px;}#Kerstboom{height:46px;width:auto;} .denonicon{top:360px;left:117px;} .radioluisteren{top:476px;left:106px;} .tvkijken{top:592px;left:110px;} .kodikijken{top:708px;left:116px;} .heatingicon{top:824px;left:116px;} .floorplan2icon{top:940px;left:111px;} .zliving{top:61px;left:207px;width:302px;height:237px;} .zkeuken{top:138px;left:517px;width:156px;height:160px;} .zinkom{top:61px;left:518px;width:155px;height:67px;} .zgarage{top:308px;left:207px;width:382px;height:168px;} .zhalla{top:485px;left:359px;width:154px;height:79px;} .zhallb{top:564px;left:359px;width:54px;height:80px;} .belknop{top:17px;left:566px;} .pirgarage{top:280px;left:420px;} .pirliving{top:230px;left:430px;} .pirlivingR{top:230px;left:205px;} .pirkeuken{top:115px;left:450px;} .pirinkom{top:89px;left:498px;} .pirhall{top:403px;left:315px;} .tbelknop{top:17px;left:666px;} .tpirgarage{top:306px;left:470px;} .tpirliving{top:281px;left:470px;} .tpirlivingR{top:281px;left:315px;} .tpirkeuken{top:135px;left:520px;} .tpirinkom{top:48px;left:558px;} .tpirhall{top:484px;left:360px;} .tachterdeur{top:340px;left:190px;} .tpoort{top:385px;left:559px;} .traamliving{top:72px;left:190px;} .traamtobi{top:558px;left:190px;} .traamalex{top:698px;left:190px;} .traamkamer{top:720px;left:664px;} .tdeurbadkamer{top:525px;left:486px;} .zoldertrap{top:800px;left:310px;} .weather{top:280px;left:116px;} .zon{top:230px;left:109px;} .floorplanstats{top:980px;left:210px;} } @media only screen and (orientation: landscape) { .dimmer{top:0px;height:735px;width:100%;padding:50px;background:#111;z-index:1000;margin:0 auto;} .dimmerlevel{top:20px;left:25px;width:19px;color:#333;font-size:90%;} .dimlevel{background-color:#333;color:#eee;font-size:300%;padding:0px;text-align:center;width:140px;height:100px;} .dimlevela{background-color:#ffba00;color:#000;} .floorplan{cursor:default;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;font-size:80%;font-family:Arial;padding:0px;text-align:center;background:#000;background-image:url(/images/HomeZw.png?v=2);background-repeat:no-repeat;background-position:196px -15px;background-size:44.8%;padding-top:0px;margin:0 auto;} .clock{top:2px;left:438px;width:128px;text-align:center;font-size:33px;font-weight:500;color:#CCC;} .buiten_temp{top:125px;left:190px;height:270px;width:80px;} .poort{top:240px;left:563px;width:25px;height:102px;background:rgba(255,0,0,1);z-index:-10;} .achterdeur{top:238px;left:272px;width:30px;height:41px;background:rgba(255,0,0,1);z-index:-10;} .raamliving{top:40px;left:272px;width:7px;height:148px;background:rgba(255,0,0,1);z-index:-10;} .raamtobi{top:400px;left:272px;width:7px;height:41px;background:rgba(255,0,0,1);z-index:-10;} .raamalex{top:509px;left:272px;width:7px;height:41px;background:rgba(255,0,0,1);z-index:-10;} .raamkamer{top:526px;left:633px;width:7px;height:41px;background:rgba(255,0,0,1);z-index:-10;} .deurbadkamer{top:377px;left:507px;width:7px;height:41px;background:rgba(255,0,0,1);z-index:-10;} .eettafel{top:90px;left:420px;} .zithoek{top:90px;left:290px;} .kamer{top:480px;left:480px;} .tobi{top:385px;left:319px;} .alex{top:494px;left:342px;} .living_temp{top:120px;left:372px;} .badkamer_temp{top:354px;left:590px;} .kamer_temp{top:470px;left:590px;} .tobi_temp{top:370px;left:280px;} .alex_temp{top:480px;left:280px;} .zolder_temp{top:610px;left:280px;} .tvled{top:7px;left:282px;}#tvled{height:40px;width:auto;} .kristal{top:7px;left:335px;}#kristal{height:40px;width:auto;} .bureel{top:7px;left:388px;}#bureel{height:40px;width:auto;} .inkom{top:51px;left:510px;}#inkom{height:40px;width:auto;} .keuken{top:140px;left:560px;}#keuken{height:40px;width:auto;} .wasbak{top:140px;left:509px;}#wasbak{height:36px;width:auto;} .kookplaat{top:100px;left:556px;}#kookplaat{height:36px;width:auto;} .werkblad{top:184px;left:586px;}#werkblad{height:36px;width:auto;} .lichtbadkamer1{top:380px;left:544px;}#lichtbadkamer1{height:50px;width:auto;} .lichtbadkamer2{top:413px;left:510px;}#lichtbadkamer2{height:36px;width:auto;} .voordeur{top:59px;left:642px;}#voordeur{height:42px;width:auto;} .hall{top:363px;left:425px;}#hall{height:50px;width:auto;} .garage{top:260px;left:390px;}#garage{height:60px;width:auto;} .zolderg{top:270px;left:320px;}#zolderg{height:42px;width:auto;} .lichten_auto{top:312px;left:499px;}#lichten_auto{height:40px;width:auto;} .weg{top:230px;left:650px;}#weg{height:55px;width:auto;} .slapen{top:310px;left:650px;}#slapen{height:55px;width:auto;} .terras{top:6px;left:206px;}#terras{height:42px;width:auto;} .tuin{top:56px;left:206px;}#tuin{height:42px;width:auto;} .zolder{top:630px;left:440px;}#zolder{height:60px;width:auto;} .bureeltobi{top:690px;left:570px;}#bureeltobi{height:40px;width:auto;} .badkamervuur{top:360px;left:510px;}#badkamervuur{height:28px;width:auto;} .Kerstboom{top:170px;left:290px;}#Kerstboom{height:46px;width:auto;} .denonicon{top:10px;left:80px;} .radioluisteren{top:144px;left:70px;} .tvkijken{top:278px;left:74px;} .kodikijken{top:412px;left:79px;} .heatingicon{top:546px;left:80px;} .floorplan2icon{top:680px;left:75px;} .zliving{top:44px;left:279px;width:225px;height:178px;} .zkeuken{top:102px;left:510px;width:116px;height:120px;} .zinkom{top:44px;left:510px;width:116px;height:50px;} .zgarage{top:229px;left:279px;width:284px;height:125px;} .zhalla{top:361px;left:392px;width:114px;height:59px;} .zhallb{top:420px;left:392px;width:40px;height:60px;} .belknop{top:17px;left:466px;} .pirgarage{top:256px;left:270px;} .pirliving{top:230px;left:300px;} .pirlivingR{top:230px;left:105px;} .pirkeuken{top:115px;left:345px;} .pirinkom{top:89px;left:398px;} .pirhall{top:403px;left:215px;} .tbelknop{top:17px;left:622px;} .tpirgarage{top:228px;left:470px;} .tpirliving{top:205px;left:470px;} .tpirlivingR{top:205px;left:305px;} .tpirkeuken{top:100px;left:507px;} .tpirinkom{top:32px;left:531px;} .tpirhall{top:359px;left:389px;} .tachterdeur{top:249px;left:260px;} .tpoort{top:280px;left:534px;} .traamliving{top:66px;left:260px;} .traamtobi{top:411px;left:260px;} .traamalex{top:519px;left:260px;} .traamkamer{top:534px;left:613px;} .tdeurbadkamer{top:385px;left:489px;} .zoldertrap{top:605px;left:360px;} .weather{top:300px;left:209px;} .zon{top:230px;left:195px;} .floorplanstats{top:730px;left:815px;} } <?php } ?>