<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.mios.com/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.mios.com/index.php?action=history&amp;feed=atom&amp;title=UI_Simple</id>
		<title>UI Simple - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.mios.com/index.php?action=history&amp;feed=atom&amp;title=UI_Simple"/>
		<link rel="alternate" type="text/html" href="http://wiki.mios.com/index.php?title=UI_Simple&amp;action=history"/>
		<updated>2026-06-03T02:56:44Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.8</generator>

	<entry>
		<id>http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=7464&amp;oldid=prev</id>
		<title>Futzle at 22:00, 27 August 2013</title>
		<link rel="alternate" type="text/html" href="http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=7464&amp;oldid=prev"/>
				<updated>2013-08-27T22:00:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 22:00, 27 August 2013&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 34:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 34:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;When the user clicks 'go' attempt to the open this url: http://ip:3480/data_request?id=lu_alive (substitute the actual IP), and if you get back an &amp;quot;OK&amp;quot; in the response, store the IP address in your controller locally (ie a conf file, registry, etc) and continue to the next step. If you don't get an OK, display an error and go back. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;When the user clicks 'go' attempt to the open this url: http://ip:3480/data_request?id=lu_alive (substitute the actual IP), and if you get back an &amp;quot;OK&amp;quot; in the response, store the IP address in your controller locally (ie a conf file, registry, etc) and continue to the next step. If you don't get an OK, display an error and go back. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;If the user supplied a mios.com username, open this URL: &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;http&lt;/del&gt;://sta1.mios.com/locator_json.php?username=user (substitute 'user' for the actual username). This will return a list of all the engines you can control, both with method #1 and with method #2, meaning you will see both engines on the local network which may or may not be tied to the user's mios.com account, and you will see engines tied to the mios.com account which may or may not be on the local network. As with most of the requests, the returned data is in JSON format. The data you get back is not formatted with new lines and spaces. If you want to be more human readable for debugging, copy/paste the results into http://jsonlint.com and it will format it nicely. The controller needs to have a json library so it can parse the json responses. The data you get back will be like this: &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;If the user supplied a mios.com username, open this URL: &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;https&lt;/ins&gt;://sta1.mios.com/locator_json.php?username=user (substitute 'user' for the actual username). This will return a list of all the engines you can control, both with method #1 and with method #2, meaning you will see both engines on the local network which may or may not be tied to the user's mios.com account, and you will see engines tied to the mios.com account which may or may not be on the local network. As with most of the requests, the returned data is in JSON format. The data you get back is not formatted with new lines and spaces. If you want to be more human readable for debugging, copy/paste the results into http://jsonlint.com and it will format it nicely. The controller needs to have a json library so it can parse the json responses. The data you get back will be like this: &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;quot;units&amp;quot;: [&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;quot;units&amp;quot;: [&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key micasaverde_wiki:diff:version:1.11a:oldid:4611:newid:7464 --&gt;
&lt;/table&gt;</summary>
		<author><name>Futzle</name></author>	</entry>

	<entry>
		<id>http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=4611&amp;oldid=prev</id>
		<title>Micasaverde at 20:52, 5 September 2012</title>
		<link rel="alternate" type="text/html" href="http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=4611&amp;oldid=prev"/>
				<updated>2012-09-05T20:52:11Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 20:52, 5 September 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 353:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 353:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;CATEGORY #6 - Camera: These don't have a status. The control button is marked 'VIEW', but it doesn't send an action. It just displays an image viewer on the controller. The viewer should have a large JPEG image which you get by calling: http://ip:3480/data_request?id=cam_image&amp;amp;amp;Device_Num=x where x is the device ID. This request returns a JPEG file. If the camera also has a status 'streaming' and the status is not empty, the the image viewer popup should display a 'LIVE VIDEO' button, which displays the streaming video instead. See the [[Remote Camera Streaming]] to learn how. Both the JPEG image viewer and the motion image viewer must have buttons for the user to control the pan/tilt/zoom of the camera. These buttons are L, R, U, D, +, - (for left, right, up, down, zoom in, zoom out). When those buttons are pressed, use the lu_action with the service &amp;quot;urn:micasaverde-com:serviceId:PanTiltZoom1&amp;quot; and the action &amp;quot;MoveLeft&amp;quot;, &amp;quot;MoveRight&amp;quot;, &amp;quot;MoveUp&amp;quot;, &amp;quot;MoveDown&amp;quot;, &amp;quot;ZoomIn&amp;quot; or &amp;quot;ZoomOut&amp;quot;. There are no arguments for those actions. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;CATEGORY #6 - Camera: These don't have a status. The control button is marked 'VIEW', but it doesn't send an action. It just displays an image viewer on the controller. The viewer should have a large JPEG image which you get by calling: http://ip:3480/data_request?id=cam_image&amp;amp;amp;Device_Num=x where x is the device ID. This request returns a JPEG file. If the camera also has a status 'streaming' and the status is not empty, the the image viewer popup should display a 'LIVE VIDEO' button, which displays the streaming video instead. See the [[Remote Camera Streaming]] to learn how. Both the JPEG image viewer and the motion image viewer must have buttons for the user to control the pan/tilt/zoom of the camera. These buttons are L, R, U, D, +, - (for left, right, up, down, zoom in, zoom out). When those buttons are pressed, use the lu_action with the service &amp;quot;urn:micasaverde-com:serviceId:PanTiltZoom1&amp;quot; and the action &amp;quot;MoveLeft&amp;quot;, &amp;quot;MoveRight&amp;quot;, &amp;quot;MoveUp&amp;quot;, &amp;quot;MoveDown&amp;quot;, &amp;quot;ZoomIn&amp;quot; or &amp;quot;ZoomOut&amp;quot;. There are no arguments for those actions. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;CATEGORY #7 - Door lock: 'status' is &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;0 &lt;/del&gt;for locked or &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;1 &lt;/del&gt;for unlocked. Display a 'lock' and 'unlock' button which are bound to the 'status' variable. If selected, use the service &amp;quot;urn:micasaverde-com:serviceId:DoorLock1&amp;quot; action &amp;quot;SetTarget&amp;quot; and value newTargetValue which is 0 for unlocked and 1 for locked. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;CATEGORY #7 - Door lock: 'status' is &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;1 &lt;/ins&gt;for locked or &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;0 &lt;/ins&gt;for unlocked. Display a 'lock' and 'unlock' button which are bound to the 'status' variable. If selected, use the service &amp;quot;urn:micasaverde-com:serviceId:DoorLock1&amp;quot; action &amp;quot;SetTarget&amp;quot; and value newTargetValue which is 0 for unlocked and 1 for locked. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;CATEGORY #8 - Window covering: same as Dimmable Light. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;CATEGORY #8 - Window covering: same as Dimmable Light. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key micasaverde_wiki:diff:version:1.11a:oldid:4287:newid:4611 --&gt;
&lt;/table&gt;</summary>
		<author><name>Micasaverde</name></author>	</entry>

	<entry>
		<id>http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=4287&amp;oldid=prev</id>
		<title>Mcvdaniel at 20:19, 16 May 2012</title>
		<link rel="alternate" type="text/html" href="http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=4287&amp;oldid=prev"/>
				<updated>2012-05-16T20:19:56Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://wiki.mios.com/index.php?title=UI_Simple&amp;amp;diff=4287&amp;amp;oldid=3967&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Mcvdaniel</name></author>	</entry>

	<entry>
		<id>http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=3967&amp;oldid=prev</id>
		<title>Micasaverde: /* Status of the device or scene and control buttons */</title>
		<link rel="alternate" type="text/html" href="http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=3967&amp;oldid=prev"/>
				<updated>2012-01-25T15:10:04Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Status of the device or scene and control buttons&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:10, 25 January 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 334:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 334:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;When the user selects a control button for a device or scene, you will use lu_action to tell the engine what to do.&amp;#160; In all cases you will get back either an OK or a JobID inside a response tag.&amp;#160; If you don't, you will get back an error message which you should pass to the user.&amp;#160; If you don't get anything back, retry the lu_action once every 2 seconds for up to 30 seconds, displaying an hour glass or busy indicator while you do, and, if, after 30 seconds you still cannot get a response to lu_action, report to the user that you lost contact with the engine.&amp;#160; It is normal for lu_action to fail if the engine is reloading.&amp;#160; So, for example, if the user clicks 'Lock' and you get back the error message &amp;quot;Lock operation is not available&amp;quot;, then display a popup message in the user interface with an 'ERROR' icon and display the message &amp;quot;Lock operation is not available&amp;quot; with an 'OK' button.&amp;#160; On the other hand if you do not get any response at all to lu_action, or get an html error, just keep retrying over and over until you either get a response or timeout.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;When the user selects a control button for a device or scene, you will use lu_action to tell the engine what to do.&amp;#160; In all cases you will get back either an OK or a JobID inside a response tag.&amp;#160; If you don't, you will get back an error message which you should pass to the user.&amp;#160; If you don't get anything back, retry the lu_action once every 2 seconds for up to 30 seconds, displaying an hour glass or busy indicator while you do, and, if, after 30 seconds you still cannot get a response to lu_action, report to the user that you lost contact with the engine.&amp;#160; It is normal for lu_action to fail if the engine is reloading.&amp;#160; So, for example, if the user clicks 'Lock' and you get back the error message &amp;quot;Lock operation is not available&amp;quot;, then display a popup message in the user interface with an 'ERROR' icon and display the message &amp;quot;Lock operation is not available&amp;quot; with an 'OK' button.&amp;#160; On the other hand if you do not get any response at all to lu_action, or get an html error, just keep retrying over and over until you either get a response or timeout.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;You will always pass a 'service', an 'action', and optionally arguments on lu_action.&amp;#160; So you should have a common function, like SendAction(string service, string action, string arguments), which has the logic of sending the command to the engine.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;You will always pass a 'service', an 'action', and optionally arguments on lu_action.&amp;#160; So you should have a common function, like SendAction(string service, string action, string arguments), which has the logic of sending the command to the engine&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;.&amp;#160; To determine what service, action and arguments to use, you can 1) log in with ssh, the root password is the wi-fi password printed on the bottom, and type: ''tail -f /var/log/cmh/LuaUPnP.log | grep ^08'' and then control the device through the web UI.&amp;#160; You will see in the console all the service/action/arguments for the commands you're sending.&amp;#160; 2) You can also call the data_request lu_invoke, like ''http://__IP__:3480/data_request?id=invoke'' which has a human-readable list of devices and when you click them it shows you the service/action/arguments available.&amp;#160; 3) If you understand UPNP terminology, you can go in the Web UI to Apps, Develop Apps, Luup files, and retrieve the actual UPNP XML files.&amp;#160; The device files start with D_, and when you click the settings for a device in the web UI, you will see the name of the UPNP device file it uses&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;When the user selects a control button, do not automatically show that button highlighted.&amp;#160; For example, if a light is 'off' and the user selects 'on', give the user feedback with the 'on' button so he knows his selection was recognized, but do not automatically switch which button is highlighted.&amp;#160; The background poll loop will get back a new 'status' for the device when the engine has completed turning off the light.&amp;#160; As soon as you send the command with lu_action, the polling loop should immediately return and the state for the device or scene will change to 'PENDING'.&amp;#160; This means the user should see the 'blue' busy indicator so he knows the engine is busy controlling the device.&amp;#160; When the engine has succeeded in setting the device, the state will change to 'SUCCESS' and the status variable(s) will be changed, and that will cause the UI to re-render the control showing the new status.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;When the user selects a control button, do not automatically show that button highlighted.&amp;#160; For example, if a light is 'off' and the user selects 'on', give the user feedback with the 'on' button so he knows his selection was recognized, but do not automatically switch which button is highlighted.&amp;#160; The background poll loop will get back a new 'status' for the device when the engine has completed turning off the light.&amp;#160; As soon as you send the command with lu_action, the polling loop should immediately return and the state for the device or scene will change to 'PENDING'.&amp;#160; This means the user should see the 'blue' busy indicator so he knows the engine is busy controlling the device.&amp;#160; When the engine has succeeded in setting the device, the state will change to 'SUCCESS' and the status variable(s) will be changed, and that will cause the UI to re-render the control showing the new status.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key micasaverde_wiki:diff:version:1.11a:oldid:3947:newid:3967 --&gt;
&lt;/table&gt;</summary>
		<author><name>Micasaverde</name></author>	</entry>

	<entry>
		<id>http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=3947&amp;oldid=prev</id>
		<title>Mcvflorin: /* Testing everything on a public MiOS engine */</title>
		<link rel="alternate" type="text/html" href="http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=3947&amp;oldid=prev"/>
				<updated>2012-01-18T13:34:21Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Testing everything on a public MiOS engine&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 13:34, 18 January 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 368:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 368:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Note: All devices, regardless of category, will have a 'watts' tag if we can measure the current consumption.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Note: All devices, regardless of category, will have a 'watts' tag if we can measure the current consumption.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Testing everything on a public MiOS engine ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Testing everything on a public MiOS engine &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;A MiOS engine is available on the internet with a static IP so you can use it to test your user interface both in local mode&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;as well as remote mode.&amp;#160; The IP is demo.mios.com (76.168.224.30&lt;/del&gt;)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.&amp;#160; So to test your application in local mode, just use that IP and you will talk to it as though it were on the local network.&amp;#160; The port 3480 is publicly accessible like a device on the local network would be (see: http&lt;/del&gt;:/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;/76.168.224.30&lt;/del&gt;:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;3480/data_request?id=lu_sdata&lt;/del&gt;)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.&amp;#160; You can also test it in remote mode with the username demomios password demomios123 and serial number 12082.&amp;#160; So, you can retrieve the same data above with this URL in remote mode: https://fwd2&lt;/del&gt;.mios.com/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;demomios/demomios123/12082/data_request?id=lu_sdata&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&amp;lt;span style=&amp;quot;color: rgb(255&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;0, 0&lt;/ins&gt;)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;;&amp;quot;&amp;gt;NOTE&lt;/ins&gt;:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;&lt;/ins&gt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;span&amp;gt; &amp;lt;span style=&amp;quot;color&lt;/ins&gt;: &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;rgb(255, 0, 0&lt;/ins&gt;)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;;&amp;quot;&amp;gt;demo&lt;/ins&gt;.mios.com &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;it's not available anymore&amp;lt;&lt;/ins&gt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;span&amp;gt;.'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;So, as &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;walkthrough &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;see how things work, first open up the regular MiOS web-based &lt;/del&gt;user interface that &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;comes with &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;system at&lt;/del&gt;: http://&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;demo&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;mios&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;com&lt;/del&gt;:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;8080&lt;/del&gt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;cmh/ Note that unlike the simple control-only user interface described &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;this document, this is a full user interface that let's you change configuration &lt;/del&gt;and &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;do advanced things&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; It uses a different polling mechanism than &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;simple lu_sdata described here&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;A MiOS engine is available on the internet with &lt;/ins&gt;a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;static IP so you can use it &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;test your &lt;/ins&gt;user interface &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;both in local mode, as well as remote mode. The IP is demo.mios.com (76.168.224.30). So to test your application in local mode, just use &lt;/ins&gt;that &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;IP and you will talk to it as though it were on &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;local network. The port 3480 is publicly accessible like a device on the local network would be (see&lt;/ins&gt;: http://&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;76&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;168&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;224.30&lt;/ins&gt;:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;3480&lt;/ins&gt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;data_request?id=lu_sdata). You can also test it &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;remote mode with the username demomios password demomios123 &lt;/ins&gt;and &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;serial number 12082&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;So, you can retrieve &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;same data above with this URL in remote mode: https://fwd2&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;mios.com/demomios/demomios123/12082/data_request?id=lu_sdata &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Now&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;in another tab, using Firefox, which has &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;built-in xml parser&lt;/del&gt;, open: http://demo.mios.com:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;3480&lt;/del&gt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;data_request?id=lu_sdata&amp;amp;output_format=xml&amp;#160; NOTE: You will not use output_format=xml &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;your app&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;it's just to make it easier to see what&lt;/del&gt;'s &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;going if &lt;/del&gt;you &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;have &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Firefox browser&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;So&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;as &lt;/ins&gt;a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;walkthrough to see how things work&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;first &lt;/ins&gt;open &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;up the regular MiOS web-based user interface that comes with the system at&lt;/ins&gt;: http://demo.mios.com:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;8080&lt;/ins&gt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;cmh/ Note that unlike the simple control-only user interface described &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;this document&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;this is a full user interface that let&lt;/ins&gt;'s you &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;change configuration and do advanced things. It uses &lt;/ins&gt;a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;different polling mechanism than the simple lu_sdata described here&lt;/ins&gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Now, in another tab, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;open this URL&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;but substitute the dataversion and loadtime variables from the prior tab&lt;/del&gt;: http://demo.mios.com:3480/data_request?id=lu_sdata&amp;amp;output_format=xml&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;amp;loadtime&lt;/del&gt;=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;1282601808&amp;amp;dataversion=601808034&amp;amp;minimumdelay=3000&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Now, in another tab, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;using Firefox&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;which has a built-in xml parser, open&lt;/ins&gt;: http://demo.mios.com:3480/data_request?id=lu_sdata&amp;amp;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;amp;&lt;/ins&gt;output_format=xml &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;NOTE: You will not use output_format&lt;/ins&gt;=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;xml in your app, it's just to make it easier to see what's going if you have a Firefox browser. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;You should see that &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;page waits 3 seconds to load because the minimum delay is a minimum response time.&amp;#160; Then you get an empty page without any data, &lt;/del&gt;and the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;tag full is 0&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; This means nothing has changed since the dataversion&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; If you change even 1 digit in the &lt;/del&gt;loadtime= &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;on the URL, which is a timestamp of the configuration file, then you will get back the full data again because the lu_sdata requests sees that you do not have the current database.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Now, in another tab, open this URL, but substitute &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;dataversion &lt;/ins&gt;and &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;loadtime variables from &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;prior tab: http://demo&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;mios&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;com:3480/data_request?id=lu_sdata&amp;amp;amp;output_format=xml&amp;amp;amp;&lt;/ins&gt;loadtime=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;1282601808&amp;amp;amp;dataversion=601808034&amp;amp;amp;minimumdelay=3000 &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Now put back &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;correct loadtime and dataversion and add &amp;amp;timeout=15 &lt;/del&gt;to the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;URL&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;like this: http://demo&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;mios&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;com:3480/data_request?id=lu_sdata&amp;amp;output_format=xml&amp;amp;&lt;/del&gt;loadtime=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;1282601808&amp;amp;dataversion=601808034&amp;amp;minimumdelay=3000&amp;amp;timeout=15&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;You should see that &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;page waits 3 seconds &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;load because &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;minimum delay is a minimum response time. Then you get an empty page without any data&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;and the tag full is 0&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;This means nothing has changed since the dataversion&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;If you change even 1 digit in the &lt;/ins&gt;loadtime= &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;on the URL, which is a timestamp of the configuration file, then you will get back the full data again because the lu_sdata requests sees that you do not have the current database. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;You should see that it now waits 15 seconds, and again returns nothing.&amp;#160; &lt;/del&gt;Now &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;change &lt;/del&gt;the timeout to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;60, and open &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;page again.&amp;#160; During the next 60 seconds while the page is loading&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;go back to the MiOS user interface you first opened, and in the room &amp;quot;Patio&amp;quot; turn the 'White Light' on if it's off, or off it's on.&amp;#160; The tab that's blocking on the lu_sdata should immediately return and give you &lt;/del&gt;this: &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;device &lt;/del&gt;id=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;3&amp;quot; status&lt;/del&gt;=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;1&amp;quot; state&lt;/del&gt;=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;1&amp;quot; comment&lt;/del&gt;=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot;White Light: Sending the Z-Wave command after 0 retries&amp;quot;/&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Now &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;put back &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;correct loadtime and dataversion and add &amp;amp;amp;&lt;/ins&gt;timeout&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;=15 &lt;/ins&gt;to the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;URL&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;like &lt;/ins&gt;this: &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;http://demo.mios.com:3480/data_request?&lt;/ins&gt;id=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;lu_sdata&amp;amp;amp;output_format&lt;/ins&gt;=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;xml&amp;amp;amp;loadtime&lt;/ins&gt;=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;1282601808&amp;amp;amp;dataversion&lt;/ins&gt;=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;601808034&amp;amp;amp;minimumdelay=3000&amp;amp;amp;timeout=15 &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This is what causes your user interface &lt;/del&gt;to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;update device id 3&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; The state &lt;/del&gt;is &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;now &lt;/del&gt;'&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;1&lt;/del&gt;'&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, meaning &lt;/del&gt;it's &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pending or busy while the engine is turning on &lt;/del&gt;or off &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the device&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;The &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;indicator should appear in blue at this point.&amp;#160; Copy/paste &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;dataversion from the request back into the URL &lt;/del&gt;and &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;request it again.&amp;#160; This time &lt;/del&gt;you &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;should see&lt;/del&gt;: &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;&lt;/del&gt;device id=&amp;quot;3&amp;quot; status=&amp;quot;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;0&lt;/del&gt;&amp;quot; state=&amp;quot;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;4&lt;/del&gt;&amp;quot; comment=&amp;quot;&amp;quot;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;You should see that it now waits 15 seconds, and again returns nothing. Now change the timeout &lt;/ins&gt;to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;60, and open the page again&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;During the next 60 seconds while the page &lt;/ins&gt;is &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;loading, go back to the MiOS user interface you first opened, and in the room &amp;quot;Patio&amp;quot; turn the &lt;/ins&gt;'&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;White Light&lt;/ins&gt;' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;on if &lt;/ins&gt;it's &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;off, &lt;/ins&gt;or off &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;it's on&lt;/ins&gt;. The &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;tab that's blocking on &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;lu_sdata should immediately return &lt;/ins&gt;and &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;give &lt;/ins&gt;you &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;this&lt;/ins&gt;: &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;amp;lt;&lt;/ins&gt;device id=&amp;quot;3&amp;quot; status=&amp;quot;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;1&lt;/ins&gt;&amp;quot; state=&amp;quot;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;1&lt;/ins&gt;&amp;quot; comment=&amp;quot;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;White Light: Sending the Z-Wave command after 0 retries&lt;/ins&gt;&amp;quot;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;amp;gt; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;The state will be 4 if you do it soon, meaning &lt;/del&gt;your user interface &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;should show the &lt;/del&gt;device &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;with a green &lt;/del&gt;'&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;success&lt;/del&gt;' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;indicator&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and if you do &lt;/del&gt;it &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;again &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;30 seconds, &lt;/del&gt;it &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;will have a state of -1, meaning nothing&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;This is what causes &lt;/ins&gt;your user interface &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;to update &lt;/ins&gt;device &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;id 3. The state is now &lt;/ins&gt;'&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;1&lt;/ins&gt;', &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;meaning &lt;/ins&gt;it&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'s pending or busy while the engine is turning on or off the device. The indicator should appear &lt;/ins&gt;in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;blue at this point. Copy/paste the dataversion from the request back into the URL and request &lt;/ins&gt;it &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;again&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;This time you should see: &amp;amp;lt;device id=&amp;quot;3&amp;quot; status=&amp;quot;0&amp;quot; state=&amp;quot;4&amp;quot; comment=&amp;quot;&amp;quot;/&amp;amp;gt; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;To turn the device like &lt;/del&gt;your user interface will, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;open this:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;The state will be 4 if you do it soon, meaning &lt;/ins&gt;your user interface &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;should show the device with a green 'success' indicator, and if you do it again in 30 seconds, it &lt;/ins&gt;will &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;have a state of -1&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;meaning nothing. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;http&lt;/del&gt;:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;//demo.mios.com:3480/data_request?id=lu_action&amp;amp;DeviceNum=3&amp;amp;serviceId=urn:upnp-org:serviceId:SwitchPower1&amp;amp;action=SetTarget&amp;amp;newTargetValue=1&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;To turn the device like your user interface will, open this&lt;/ins&gt;: &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;change the =1 to an =0 to turn it off&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; Note that the response is a jobID&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; This means the engine is asynchronously turning on&lt;/del&gt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;off the device.&amp;#160; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;http://demo&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;mios&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;com:3480&lt;/ins&gt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;data_request?id=lu_action&amp;amp;amp;DeviceNum=3&amp;amp;amp;serviceId=urn:upnp-org:serviceId:SwitchPower1&amp;amp;amp;action=SetTarget&amp;amp;amp;newTargetValue=1 &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Now try &lt;/del&gt;to turn on &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;or &lt;/del&gt;off device &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;#26, like this:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;change the =1 to an =0 &lt;/ins&gt;to turn &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;it off. Note that the response is a jobID. This means the engine is asynchronously turning &lt;/ins&gt;on&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;/&lt;/ins&gt;off &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;the &lt;/ins&gt;device&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;http://demo.mios.com:3480/data_request?id=lu_action&amp;amp;DeviceNum=&lt;/del&gt;26&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;amp;serviceId=urn:upnp-org:serviceId&lt;/del&gt;:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;SwitchPower1&amp;amp;action=SetTarget&amp;amp;newTargetValue=0&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Now try to turn on or off device #&lt;/ins&gt;26&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, like this&lt;/ins&gt;: &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;You will get back an error &amp;quot;ERROR&lt;/del&gt;: &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;No implementation&amp;quot;&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; In your user interface, this means if the user tries to control device #26, the user should get an error popup dialog box with that error message in it&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;http&lt;/ins&gt;:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;//demo&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;mios&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;com:3480/data_request?id=lu_action&amp;amp;amp;DeviceNum=26&amp;amp;amp;serviceId=urn:upnp-org:serviceId:SwitchPower1&amp;amp;amp;action=SetTarget&amp;amp;amp;newTargetValue=0 &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;You &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;can test all the controls in &lt;/del&gt;your user interface &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;with &lt;/del&gt;this &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;demo system since it has all the current device categories.&amp;#160; The devices in the room &amp;quot;Patio&amp;quot; are real devices and will give you proper responses when you try to control them.&amp;#160; All other devices are dummy devices that will return an error &lt;/del&gt;if &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;you do anything with them.&amp;#160; The 'White Light' is a functioning light that should go through &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pending and success states when you control it.&amp;#160; The red light is a light that is ok, but, every time you try &lt;/del&gt;to control &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;it&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the job will fail.&amp;#160; So &lt;/del&gt;the user should &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;see a blue pending for a while when trying to turn it on or off, which then goes red and stays there for several seconds with &lt;/del&gt;an error message&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, but, after a while, reverts back to a neutral state (-1).&amp;#160; The device 'Bad Light' is &lt;/del&gt;in &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;a perpetually bad state and should always appear as red&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;You &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;will get back an error &amp;quot;ERROR: No implementation&amp;quot;. In &lt;/ins&gt;your user interface&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/ins&gt;this &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;means &lt;/ins&gt;if the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;user tries &lt;/ins&gt;to control &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;device #26&lt;/ins&gt;, the user should &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;get &lt;/ins&gt;an &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;error popup dialog box with that &lt;/ins&gt;error message in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;it&lt;/ins&gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;In &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;patio &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;scenes 'Light on' &lt;/del&gt;and 'Light &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;off&lt;/del&gt;' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;turn the white &lt;/del&gt;light &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;on &lt;/del&gt;and &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;off&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; One or &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;other scene &lt;/del&gt;will &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;be 'active' depending &lt;/del&gt;on &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;what &lt;/del&gt;state &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the light &lt;/del&gt;is in.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;You can test all &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;controls in your user interface with this demo system since it has all &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;current device categories. The devices in the room &amp;quot;Patio&amp;quot; are real devices &lt;/ins&gt;and &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;will give you proper responses when you try to control them. All other devices are dummy devices that will return an error if you do anything with them. The &lt;/ins&gt;'&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;White &lt;/ins&gt;Light' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;is a functioning &lt;/ins&gt;light &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;that should go through the pending &lt;/ins&gt;and &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;success states when you control it&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;The red light is a light that is ok, but, every time you try to control it, &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;job &lt;/ins&gt;will &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;fail. So the user should see a blue pending for a while when trying to turn it &lt;/ins&gt;on &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;or off, which then goes red and stays there for several seconds with an error message, but, after a while, reverts back to a neutral &lt;/ins&gt;state &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(-1). The device 'Bad Light' &lt;/ins&gt;is in &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;a perpetually bad state and should always appear as red&lt;/ins&gt;. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Please don't try to change the configuration settings on this demo system since it is used by several developers. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;If something is messed up on it, email support [at] micasaverde [dot] com and someone will restore it back to the default setting.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;In the patio the scenes 'Light on' and 'Light off' turn the white light on and off. One or the other scene will be 'active' depending on what state the light is in. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Please don't try to change the configuration settings on this demo system since it is used by several developers. If something is messed up on it, email support [at] micasaverde [dot] com and someone will restore it back to the default setting.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key micasaverde_wiki:diff:version:1.11a:oldid:2567:newid:3947 --&gt;
&lt;/table&gt;</summary>
		<author><name>Mcvflorin</name></author>	</entry>

	<entry>
		<id>http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=2567&amp;oldid=prev</id>
		<title>Micasaverde at 04:48, 6 September 2010</title>
		<link rel="alternate" type="text/html" href="http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=2567&amp;oldid=prev"/>
				<updated>2010-09-06T04:48:52Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 04:48, 6 September 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Development]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Development]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;NOTE: After reading this document to familiarize yourself with the concepts, see [[UI_Simple_Sample]] which has source code for a free implementation that you can embed within your applications to do all the work.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;MIOS is a lightweight home automation system.&amp;#160; The 'brain' of the MIOS software is the back-end, the engine, which runs stand-alone on a variety of internet-connected devices, such as PC's, Mac's, Wi-Fi access points, and dedicated home automation gateways.&amp;#160; MIOS also includes a portal at mios.com, which acts as secure relay to MIOS systems that may be behind firewalls.&amp;#160; Users can register for an account at mios.com, and that account can be linked to one or more MIOS systems to provide the user remote access to his MIOS system from anywhere.&amp;#160; It is easy to control a MIOS system with simple http get's (normal internet requests).&amp;#160; The URL you will open is generally data_request?id=xxx, where xxx is some sort of request or control command.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;MIOS is a lightweight home automation system.&amp;#160; The 'brain' of the MIOS software is the back-end, the engine, which runs stand-alone on a variety of internet-connected devices, such as PC's, Mac's, Wi-Fi access points, and dedicated home automation gateways.&amp;#160; MIOS also includes a portal at mios.com, which acts as secure relay to MIOS systems that may be behind firewalls.&amp;#160; Users can register for an account at mios.com, and that account can be linked to one or more MIOS systems to provide the user remote access to his MIOS system from anywhere.&amp;#160; It is easy to control a MIOS system with simple http get's (normal internet requests).&amp;#160; The URL you will open is generally data_request?id=xxx, where xxx is some sort of request or control command.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key micasaverde_wiki:diff:version:1.11a:oldid:2563:newid:2567 --&gt;
&lt;/table&gt;</summary>
		<author><name>Micasaverde</name></author>	</entry>

	<entry>
		<id>http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=2563&amp;oldid=prev</id>
		<title>Ap15e: /* lu_sdata: The polling loop */</title>
		<link rel="alternate" type="text/html" href="http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=2563&amp;oldid=prev"/>
				<updated>2010-08-30T14:01:59Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;lu_sdata: The polling loop&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 14:01, 30 August 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 205:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 205:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;full=&amp;quot;1&amp;quot; loadtime=&amp;quot;1282441735&amp;quot; dataversion=&amp;quot;441736333&amp;quot; state=&amp;quot;-1&amp;quot; comment=&amp;quot;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;full=&amp;quot;1&amp;quot; loadtime=&amp;quot;1282441735&amp;quot; dataversion=&amp;quot;441736333&amp;quot; state=&amp;quot;-1&amp;quot; comment=&amp;quot;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;full is either 0 or 1, and 1 means lu_sdata has returned the complete list of sections, rooms, devices and scenes.&amp;#160; If full is 0, the lu_sdata is only returning the devices and scenes which have changed since the last request.&amp;#160; On subsequent calls to lu_sdata you will the loadtime and dataversion back on the URL, like this:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;full is either 0 or 1, and 1 means lu_sdata has returned the complete list of sections, rooms, devices and scenes.&amp;#160; If full is 0, the lu_sdata is only returning the devices and scenes which have changed since the last request.&amp;#160; On subsequent calls to lu_sdata you will &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;get &lt;/ins&gt;the loadtime and dataversion back on the URL, like this:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;http://76.168.224.30:3480/data_request?id=lu_sdata&amp;amp;loadtime=1282441735&amp;amp;dataversion=441736333&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;http://76.168.224.30:3480/data_request?id=lu_sdata&amp;amp;loadtime=1282441735&amp;amp;dataversion=441736333&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key micasaverde_wiki:diff:version:1.11a:oldid:2562:newid:2563 --&gt;
&lt;/table&gt;</summary>
		<author><name>Ap15e</name></author>	</entry>

	<entry>
		<id>http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=2562&amp;oldid=prev</id>
		<title>Ap15e: /* lu_sdata: The polling loop */</title>
		<link rel="alternate" type="text/html" href="http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=2562&amp;oldid=prev"/>
				<updated>2010-08-30T13:59:49Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;lu_sdata: The polling loop&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 13:59, 30 August 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 205:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 205:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;full=&amp;quot;1&amp;quot; loadtime=&amp;quot;1282441735&amp;quot; dataversion=&amp;quot;441736333&amp;quot; state=&amp;quot;-1&amp;quot; comment=&amp;quot;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;full=&amp;quot;1&amp;quot; loadtime=&amp;quot;1282441735&amp;quot; dataversion=&amp;quot;441736333&amp;quot; state=&amp;quot;-1&amp;quot; comment=&amp;quot;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;full is either 0 or 1, and 1 means lu_sdata has returned the complete list of sections, rooms, devices and scenes.&amp;#160; If &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;fill &lt;/del&gt;is 0, the lu_sdata is only returning the devices and scenes which have changed since the last request.&amp;#160; On subsequent calls to lu_sdata you will the loadtime and dataversion back on the URL, like this:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;full is either 0 or 1, and 1 means lu_sdata has returned the complete list of sections, rooms, devices and scenes.&amp;#160; If &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;full &lt;/ins&gt;is 0, the lu_sdata is only returning the devices and scenes which have changed since the last request.&amp;#160; On subsequent calls to lu_sdata you will the loadtime and dataversion back on the URL, like this:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;http://76.168.224.30:3480/data_request?id=lu_sdata&amp;amp;loadtime=1282441735&amp;amp;dataversion=441736333&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;http://76.168.224.30:3480/data_request?id=lu_sdata&amp;amp;loadtime=1282441735&amp;amp;dataversion=441736333&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key micasaverde_wiki:diff:version:1.11a:oldid:2557:newid:2562 --&gt;
&lt;/table&gt;</summary>
		<author><name>Ap15e</name></author>	</entry>

	<entry>
		<id>http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=2557&amp;oldid=prev</id>
		<title>Micasaverde at 22:47, 23 August 2010</title>
		<link rel="alternate" type="text/html" href="http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=2557&amp;oldid=prev"/>
				<updated>2010-08-23T22:47:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 22:47, 23 August 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 401:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 401:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In the patio the scenes 'Light on' and 'Light off' turn the white light on and off.&amp;#160; One or the other scene will be 'active' depending on what state the light is in.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In the patio the scenes 'Light on' and 'Light off' turn the white light on and off.&amp;#160; One or the other scene will be 'active' depending on what state the light is in.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Please don't try to change the configuration settings on this demo system since it is used by several developers.&amp;#160; If something is messed up on it, email support [at] micasaverde [dot] com and someone will restore it back to the default setting.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key micasaverde_wiki:diff:version:1.11a:oldid:2556:newid:2557 --&gt;
&lt;/table&gt;</summary>
		<author><name>Micasaverde</name></author>	</entry>

	<entry>
		<id>http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=2556&amp;oldid=prev</id>
		<title>Micasaverde at 22:45, 23 August 2010</title>
		<link rel="alternate" type="text/html" href="http://wiki.mios.com/index.php?title=UI_Simple&amp;diff=2556&amp;oldid=prev"/>
				<updated>2010-08-23T22:45:14Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 22:45, 23 August 2010&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 8:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 8:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The user interface has only two screens, or modes: 1) Basic setup which only consists of identifying the engine the user will control, and 2) Normal usage which consists of running scenes (pre-defined groups of commands), and controlling devices.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The user interface has only two screens, or modes: 1) Basic setup which only consists of identifying the engine the user will control, and 2) Normal usage which consists of running scenes (pre-defined groups of commands), and controlling devices.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;A publicly accessible MiOS engine is available on the internet so you can test all these commands as you go.&amp;#160; See the section at the end of this document.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Mode 1: Basic setup and locating the engine ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Mode 1: Basic setup and locating the engine ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 98:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 100:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;units is an array of JSON objects, one representing each engine.&amp;#160; If the tag ipAddress exists for an engine, that means it's available on the local network and can be controlled locally with method #1, otherwise the ipAddress tag will not exist.&amp;#160; The users array is a list of all the mios.com usernames which have access to this engine.&amp;#160; So, if the username you passed on the locator_json.php URL is also in the users array, then the engine can be controlled remotely with the username, using whatever server is listed in the &amp;quot;active_server&amp;quot; tag.&amp;#160; The forwardServers tag lists the primary server for remote access and one or more backups.&amp;#160; If the tag &amp;quot;name&amp;quot; exists, that is a name which the user assigned to his engine.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;units is an array of JSON objects, one representing each engine.&amp;#160; If the tag ipAddress exists for an engine, that means it's available on the local network and can be controlled locally with method #1, otherwise the ipAddress tag will not exist.&amp;#160; The users array is a list of all the mios.com usernames which have access to this engine.&amp;#160; So, if the username you passed on the locator_json.php URL is also in the users array, then the engine can be controlled remotely with the username, using whatever server is listed in the &amp;quot;active_server&amp;quot; tag.&amp;#160; The forwardServers tag lists the primary server for remote access and one or more backups.&amp;#160; If the tag &amp;quot;name&amp;quot; exists, that is a name which the user assigned to his engine.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;If you cannot get a response from sta1.mios.com, try sta2.mios.com.&amp;#160; They are mirrored servers with the same data but in different data centers for redundancy.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The next screen in the UI should say &amp;quot;What MiOS engine do you want to control?&amp;quot; and then display a list of all the engines with both the serialNumber and name if it exists.&amp;#160; You should have 2 icons next to each for 'remote' and 'local' access.&amp;#160; In the above example, assuming the username I passed in is &amp;quot;skyvera&amp;quot; 10516 will have the 'local' icon only, since there are no users, and for 8035 it will also be 'local' only because skyvera is not one of the allowed users.&amp;#160; For 10266 display both the 'remote' and 'local' icon.&amp;#160; At the bottom of the page you can have a legend:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The next screen in the UI should say &amp;quot;What MiOS engine do you want to control?&amp;quot; and then display a list of all the engines with both the serialNumber and name if it exists.&amp;#160; You should have 2 icons next to each for 'remote' and 'local' access.&amp;#160; In the above example, assuming the username I passed in is &amp;quot;skyvera&amp;quot; 10516 will have the 'local' icon only, since there are no users, and for 8035 it will also be 'local' only because skyvera is not one of the allowed users.&amp;#160; For 10266 display both the 'remote' and 'local' icon.&amp;#160; At the bottom of the page you can have a legend:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 326:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 330:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This depends on what category of device you are showing.&amp;#160; The status tags returned by lu_sdata are different for a thermostat, which has status tags like mode, heatsp, coolsp, etc., than for a light switch with has the status tags level and status.&amp;#160; Normally a control button, like the button that turns on a light, if bound to a status so the user can tell by whether the button is highlighted or not if the command is already active.&amp;#160; For example, with a light switch, there is a 'status' tag that is 0 or 1 depending on if it's on or off.&amp;#160; There are also 2 command buttons: on and off.&amp;#160; Those 2 command buttons are bound to the status, meaning that if the status is 0, then the 'off' button should appear highlighted so the user can tell the light is already off.&amp;#160; Each control button is tied to a command, like the 'on' button sends the 'on' command to the device.&amp;#160; You should always send the command even if the command button is already highlighted.&amp;#160; In other words, even if the status of a light is 0 (off) and the off button is already highlighted, when the user selects the off button, send the 'off' command regardless.&amp;#160; You send commands by opening a URL on the engine, just like the poll loop does.&amp;#160; The difference is that to run a command the data_request is generally &amp;quot;lu_action&amp;quot; instead of &amp;quot;lu_sdata&amp;quot;.&amp;#160; The engine is multi-threaded and can handle many requests at once.&amp;#160; So you should not interrupt the background polling loop when you want to send a command.&amp;#160; The polling loop will continue to block on the lu_sdata request, and, in parallel, the you will do a lu_action request when the user selects a command button.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This depends on what category of device you are showing.&amp;#160; The status tags returned by lu_sdata are different for a thermostat, which has status tags like mode, heatsp, coolsp, etc., than for a light switch with has the status tags level and status.&amp;#160; Normally a control button, like the button that turns on a light, if bound to a status so the user can tell by whether the button is highlighted or not if the command is already active.&amp;#160; For example, with a light switch, there is a 'status' tag that is 0 or 1 depending on if it's on or off.&amp;#160; There are also 2 command buttons: on and off.&amp;#160; Those 2 command buttons are bound to the status, meaning that if the status is 0, then the 'off' button should appear highlighted so the user can tell the light is already off.&amp;#160; Each control button is tied to a command, like the 'on' button sends the 'on' command to the device.&amp;#160; You should always send the command even if the command button is already highlighted.&amp;#160; In other words, even if the status of a light is 0 (off) and the off button is already highlighted, when the user selects the off button, send the 'off' command regardless.&amp;#160; You send commands by opening a URL on the engine, just like the poll loop does.&amp;#160; The difference is that to run a command the data_request is generally &amp;quot;lu_action&amp;quot; instead of &amp;quot;lu_sdata&amp;quot;.&amp;#160; The engine is multi-threaded and can handle many requests at once.&amp;#160; So you should not interrupt the background polling loop when you want to send a command.&amp;#160; The polling loop will continue to block on the lu_sdata request, and, in parallel, the you will do a lu_action request when the user selects a command button.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;When the user selects a control button for a device or scene, you will use lu_action to tell the engine what to do.&amp;#160; In all cases you will get back either an OK or a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;JOB&lt;/del&gt;.&amp;#160; If you don't, you will get back an error message which you should pass to the user.&amp;#160; If you don't get anything back, retry the lu_action once every 2 seconds for up to 30 seconds, displaying an hour glass or busy indicator while you do, and, if, after 30 seconds you still cannot get a response to lu_action, report to the user that you lost contact with the engine.&amp;#160; It is normal for lu_action to fail if the engine is reloading.&amp;#160; So, for example, if the user clicks 'Lock' and you get back the error message &amp;quot;Lock operation is not available&amp;quot;, then display a popup message in the user interface with an 'ERROR' icon and display the message &amp;quot;Lock operation is not available&amp;quot; with an 'OK' button.&amp;#160; On the other hand if you do not get any response at all to lu_action, or get an html error, just keep retrying over and over until you either get a response or timeout.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;When the user selects a control button for a device or scene, you will use lu_action to tell the engine what to do.&amp;#160; In all cases you will get back either an OK or a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;JobID inside a response tag&lt;/ins&gt;.&amp;#160; If you don't, you will get back an error message which you should pass to the user.&amp;#160; If you don't get anything back, retry the lu_action once every 2 seconds for up to 30 seconds, displaying an hour glass or busy indicator while you do, and, if, after 30 seconds you still cannot get a response to lu_action, report to the user that you lost contact with the engine.&amp;#160; It is normal for lu_action to fail if the engine is reloading.&amp;#160; So, for example, if the user clicks 'Lock' and you get back the error message &amp;quot;Lock operation is not available&amp;quot;, then display a popup message in the user interface with an 'ERROR' icon and display the message &amp;quot;Lock operation is not available&amp;quot; with an 'OK' button.&amp;#160; On the other hand if you do not get any response at all to lu_action, or get an html error, just keep retrying over and over until you either get a response or timeout.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;You will always pass a 'service', an 'action', and optionally arguments on lu_action.&amp;#160; So you should have a common function, like SendAction(string service, string action, string arguments), which has the logic of sending the command to the engine.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;You will always pass a 'service', an 'action', and optionally arguments on lu_action.&amp;#160; So you should have a common function, like SendAction(string service, string action, string arguments), which has the logic of sending the command to the engine.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 361:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 365:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Note: All devices, regardless of category, will have a 'watts' tag if we can measure the current consumption.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Note: All devices, regardless of category, will have a 'watts' tag if we can measure the current consumption.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;== Testing everything on a public MiOS engine ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;A MiOS engine is available on the internet with a static IP so you can use it to test your user interface both in local mode, as well as remote mode.&amp;#160; The IP is demo.mios.com (76.168.224.30).&amp;#160; So to test your application in local mode, just use that IP and you will talk to it as though it were on the local network.&amp;#160; The port 3480 is publicly accessible like a device on the local network would be (see: http://76.168.224.30:3480/data_request?id=lu_sdata).&amp;#160; You can also test it in remote mode with the username demomios password demomios123 and serial number 12082.&amp;#160; So, you can retrieve the same data above with this URL in remote mode: https://fwd2.mios.com/demomios/demomios123/12082/data_request?id=lu_sdata&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;So, as a walkthrough to see how things work, first open up the regular MiOS web-based user interface that comes with the system at: http://demo.mios.com:8080/cmh/ Note that unlike the simple control-only user interface described in this document, this is a full user interface that let's you change configuration and do advanced things.&amp;#160; It uses a different polling mechanism than the simple lu_sdata described here.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Now, in another tab, using Firefox, which has a built-in xml parser, open: http://demo.mios.com:3480/data_request?id=lu_sdata&amp;amp;output_format=xml&amp;#160; NOTE: You will not use output_format=xml in your app, it's just to make it easier to see what's going if you have a Firefox browser.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Now, in another tab, open this URL, but substitute the dataversion and loadtime variables from the prior tab: http://demo.mios.com:3480/data_request?id=lu_sdata&amp;amp;output_format=xml&amp;amp;loadtime=1282601808&amp;amp;dataversion=601808034&amp;amp;minimumdelay=3000&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;You should see that the page waits 3 seconds to load because the minimum delay is a minimum response time.&amp;#160; Then you get an empty page without any data, and the tag full is 0.&amp;#160; This means nothing has changed since the dataversion.&amp;#160; If you change even 1 digit in the loadtime= on the URL, which is a timestamp of the configuration file, then you will get back the full data again because the lu_sdata requests sees that you do not have the current database.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Now put back the correct loadtime and dataversion and add &amp;amp;timeout=15 to the URL, like this: http://demo.mios.com:3480/data_request?id=lu_sdata&amp;amp;output_format=xml&amp;amp;loadtime=1282601808&amp;amp;dataversion=601808034&amp;amp;minimumdelay=3000&amp;amp;timeout=15&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;You should see that it now waits 15 seconds, and again returns nothing.&amp;#160; Now change the timeout to 60, and open the page again.&amp;#160; During the next 60 seconds while the page is loading, go back to the MiOS user interface you first opened, and in the room &amp;quot;Patio&amp;quot; turn the 'White Light' on if it's off, or off it's on.&amp;#160; The tab that's blocking on the lu_sdata should immediately return and give you this: &amp;lt;device id=&amp;quot;3&amp;quot; status=&amp;quot;1&amp;quot; state=&amp;quot;1&amp;quot; comment=&amp;quot;White Light: Sending the Z-Wave command after 0 retries&amp;quot;/&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;This is what causes your user interface to update device id 3.&amp;#160; The state is now '1', meaning it's pending or busy while the engine is turning on or off the device.&amp;#160; The indicator should appear in blue at this point.&amp;#160; Copy/paste the dataversion from the request back into the URL and request it again.&amp;#160; This time you should see: &amp;lt;device id=&amp;quot;3&amp;quot; status=&amp;quot;0&amp;quot; state=&amp;quot;4&amp;quot; comment=&amp;quot;&amp;quot;/&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;The state will be 4 if you do it soon, meaning your user interface should show the device with a green 'success' indicator, and if you do it again in 30 seconds, it will have a state of -1, meaning nothing.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;To turn the device like your user interface will, open this:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;http://demo.mios.com:3480/data_request?id=lu_action&amp;amp;DeviceNum=3&amp;amp;serviceId=urn:upnp-org:serviceId:SwitchPower1&amp;amp;action=SetTarget&amp;amp;newTargetValue=1&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;change the =1 to an =0 to turn it off.&amp;#160; Note that the response is a jobID.&amp;#160; This means the engine is asynchronously turning on/off the device.&amp;#160; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Now try to turn on or off device #26, like this:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;http://demo.mios.com:3480/data_request?id=lu_action&amp;amp;DeviceNum=26&amp;amp;serviceId=urn:upnp-org:serviceId:SwitchPower1&amp;amp;action=SetTarget&amp;amp;newTargetValue=0&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;You will get back an error &amp;quot;ERROR: No implementation&amp;quot;.&amp;#160; In your user interface, this means if the user tries to control device #26, the user should get an error popup dialog box with that error message in it.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;You can test all the controls in your user interface with this demo system since it has all the current device categories.&amp;#160; The devices in the room &amp;quot;Patio&amp;quot; are real devices and will give you proper responses when you try to control them.&amp;#160; All other devices are dummy devices that will return an error if you do anything with them.&amp;#160; The 'White Light' is a functioning light that should go through the pending and success states when you control it.&amp;#160; The red light is a light that is ok, but, every time you try to control it, the job will fail.&amp;#160; So the user should see a blue pending for a while when trying to turn it on or off, which then goes red and stays there for several seconds with an error message, but, after a while, reverts back to a neutral state (-1).&amp;#160; The device 'Bad Light' is in a perpetually bad state and should always appear as red.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;In the patio the scenes 'Light on' and 'Light off' turn the white light on and off.&amp;#160; One or the other scene will be 'active' depending on what state the light is in.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key micasaverde_wiki:diff:version:1.11a:oldid:2555:newid:2556 --&gt;
&lt;/table&gt;</summary>
		<author><name>Micasaverde</name></author>	</entry>

	</feed>