<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Internet of Things on Much Ado About IT</title><link>https://it.knightnet.org.uk/tags/internet-of-things/</link><description>
Recent content about Internet of Things from Much Ado About IT |
Ramblings and rantings from IT Architect &amp; Designer, Julian Knight</description><generator>Hugo | gohugo.io | Theme twenty-sixteen</generator><language>en-gb</language><copyright>This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.</copyright><lastBuildDate>Mon, 24 Apr 2023 21:27:28 +0000</lastBuildDate><atom:link href="https://it.knightnet.org.uk/tags/internet-of-things/feed.xml" rel="self" type="application/rss+xml"/><item><title>Drayton Wiser heating control</title><link>https://it.knightnet.org.uk/kb/nr-qa/drayton-wiser-heating-control/</link><guid isPermaLink="true">https://it.knightnet.org.uk/kb/nr-qa/drayton-wiser-heating-control/</guid><pubDate>Mon, 13 Aug 2018 17:31:52 +0000</pubDate><guid>https://it.knightnet.org.uk/kb/nr-qa/drayton-wiser-heating-control/</guid><description><div>Drayton are a very widely used manufacturer of heating controls. They make the "Wiser" control system which is low cost and easily fitted. This article shows you how to use Node-RED to query and control the system.</div><div>&lt;p>Drayton&amp;rsquo;s &lt;a href="https://wiser.draytoncontrols.co.uk/">Wiser smart heating controller&lt;/a> is a low-cost system for controlling boilers and radiators. Note that Drayton is part of Schneider-Electric&lt;/p>
&lt;p>It has the lowest cost &lt;a href="https://en.wikipedia.org/wiki/Thermostatic_radiator_valve">thermostatic radiator valves&lt;/a> (TRV&amp;rsquo;s, smart radiator controls)
of any of the smart home systems - around half the price of other systems. The control unit is also low-cost.&lt;/p>
&lt;p>It also has the advantage of not requiring the Internet or the Drayton cloud servers for the system to keep running so you are not dependent on
Drayton keeping the Wiser cloud service active. This was a really important point for me when choosing a smart heating controller since it is all
too easy to end up with a &amp;ldquo;brick&amp;rdquo; instead of a working system.&lt;/p>
&lt;p>However, the disadvantage of the Wiser system is that it isn&amp;rsquo;t as sophisticated as some others and clearly Drayton don&amp;rsquo;t have the resources
to rapidly develop it as some other manufacturers have (such as Honeywell for example).&lt;/p>
&lt;p>Of course, if you are reading this, you are probably already somewhat knowledgeable about &lt;a href="https://en.wikipedia.org/wiki/Home_automation">home automation&lt;/a>.
You may also be aware of &lt;a href="https://nodered.org/">Node-RED&lt;/a> which is a tool well suited for creating custom home automation systems with a minimum of knowledge and little to no
coding required.&lt;/p>
&lt;p>We can easily use Node-RED to help get information from the Wiser system and even use it to add smarter controls such as connecting to other sensors
or to other systems and services.&lt;/p>
&lt;p>At the end of this article is some code that you can import into your own Node-RED service and start working with the Wiser system straight away.&lt;/p>
&lt;h2 id="connecting-to-your-controller">Connecting to your controller&lt;/h2>
&lt;p>You will need to get a couple of pieces of information before you can start working with your Wiser system and Node-RED.&lt;/p>
&lt;p>Once you have this information, you can configure the example Node-RED flow at the end of this article and you should be able to
query information and override some settings at will. Once you have mastered the basics, you will be able to do pretty much
anything you want to using the power of Node-RED.&lt;/p>
&lt;h3 id="ip-address">IP Address&lt;/h3>
&lt;p>When your Wiser system connects to your home Wi-Fi, it will be given an IP address and we need to know that before we can talk to it.
There is no really easy way to do this. The address will generally be set by your Internet router (or Wi-Fi access point) so you should start
by checking your router&amp;rsquo;s web interface for &amp;ldquo;DHCP&amp;rdquo;. Hopefully you will see a list of assigned DHCP IP addresses, the Wiser controller is likely
to be the highest number if you have just connected it.&lt;/p>
&lt;p>You should configure your router to give the controller a fixed IP address otherwise it may change if the router is restarted.&lt;/p>
&lt;h3 id="system-secret">System Secret&lt;/h3>
&lt;p>In order to interface with the controller, you need to know a very long string of random characters that is its system secret.&lt;/p>
&lt;p>You can get the system secret by doing the following (&lt;a href="https://community.smartthings.com/t/drayton-wiser-home-thermostat/105055/12">reference&lt;/a>):-&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Press the setup button on your HeatHub, the light will start flashing&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Look for the Wi-Fi network (SSID) called &amp;lsquo;WiserHeatXXX&amp;rsquo; where XXX is random&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Connect to the network from a Windows PC&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Once connected run the following command in PowerShell&lt;/p>
&lt;p>&lt;code>Invoke-RestMethod -Method Get -UseBasicParsing -Uri http://192.168.8.1/secret/&lt;/code>&lt;/p>
&lt;p>If you are using a different type of operating system, you will need a tool that will return
data from a web query.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>This will return a string which is your system secret&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Press the setup button on the HeatHub again and it will go back to normal operations&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Copy the secret and save it somewhere.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h3 id="node-red-flow-to-configure-ip-address-and-system-secret">Node-RED flow to configure IP address and System Secret&lt;/h3>
&lt;p>To save having to repeatedly enter the IP address and system secret into your flows, use the following flow
to put them into memory. The query and control example flows will use this later on.
This flow will run automatically every time you start Node-RED.&lt;/p>
&lt;p>Don&amp;rsquo;t forget to change the change node (the 2nd node in this flow) to the information you obtained above.&lt;/p>
&lt;figure>&lt;img src="https://it.knightnet.org.uk/uploads/2018/NR-Wiser-Config.PNG"/>&lt;figcaption>
&lt;h4>Example Wiser Configuration Flow&lt;/h4>
&lt;/figcaption>
&lt;/figure>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;738ed75a.9b0dc8&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;inject&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;Save controller configuration for Wiser&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;topic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;payload&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;payloadType&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;str&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;repeat&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;crontab&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;once&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;onceDelay&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mf">0.1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">230&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">460&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;d34f3b88.6b3008&amp;#34;&lt;/span>&lt;span class="p">]]},{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;d34f3b88.6b3008&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;change&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;Set Wiser Variables (Secret and Host)&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;rules&amp;#34;&lt;/span>&lt;span class="p">:[{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;wiserSecret&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;flow&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;lt;Change_this_to_your_systems_secret_string&amp;gt;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;str&amp;#34;&lt;/span>&lt;span class="p">},{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;wiserHost&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;flow&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;lt;your_controllers_ip_address&amp;gt;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;str&amp;#34;&lt;/span>&lt;span class="p">}],&lt;/span>&lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;property&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;from&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;reg&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">570&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">460&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[]]}]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Copy the code in the black box and use the &amp;ldquo;Import&amp;rdquo; menu in Node-RED.&lt;/p>
&lt;h2 id="controlling-the-system">Controlling the system&lt;/h2>
&lt;p>The following sections contain basic information about how to control the Wiser system.&lt;/p>
&lt;p>Don&amp;rsquo;t forget that the system may be controlled by other applications (like the mobile app) or services such as Google Home or Amazon Alexa integrations.&lt;/p>
&lt;p>Note that you &lt;em>do not need the Internet&lt;/em>
for this at all. You only need your local network. All of this will work even if your Internet connection is down or the Wiser cloud
service stops working.&lt;/p>
&lt;p>Each entry below has a &amp;ldquo;path&amp;rdquo; such as &amp;lsquo;/data/domain/System/RequestOverride&amp;rsquo; and some text or JSON in a grey box. In the example flows, the
information in the grey box goes into the &lt;code>payload&lt;/code> property (&lt;code>msg.payload&lt;/code>) and the the path goes into the &lt;code>path&lt;/code> property (&lt;code>msg.path&lt;/code>).
These property values are then used by the flow and sent to the controller. These property values are set in the node that follows the inject node,
they are the second node in each flow, they are called &amp;ldquo;change&amp;rdquo; nodes.&lt;/p>
&lt;h3 id="room-ids">Room ID&amp;rsquo;s&lt;/h3>
&lt;p>The Wiser system mainly works by controlling &amp;ldquo;rooms&amp;rdquo;. In the mobile app, these are all named and you can find the names in the data you can query as well.
However, in order to control the system from Node-RED or any other home automation system, we need to know the ID of the room.&lt;/p>
&lt;p>Wherever you see &lt;code>&amp;lt;roomNumber&amp;gt;&lt;/code> in the information below, this is the ID not the offset in the &lt;code>/data/domain/Room&lt;/code> array.&lt;/p>
&lt;h3 id="temperature-values">Temperature values&lt;/h3>
&lt;p>The values use to control and query temperatures are multiplied by 10.
So 200 equals 20.0°C, 195 equals 19.5°C.
Note that the value will be rounded to the nearest ½ a degree by the controller.&lt;/p>
&lt;h3 id="set-or-cancel-an-override-of-the-thermostatic-temperature-for-a-room">Set or cancel an override of the thermostatic temperature for a Room&lt;/h3>
&lt;p>&lt;em>Path&lt;/em>: /data/domain/Room/&lt;code>&amp;lt;roomNumber&amp;gt;&lt;/code>&lt;/p>
&lt;p>&lt;em>Payload&lt;/em>: &lt;code>{&amp;quot;RequestOverride&amp;quot;:{&amp;quot;Type&amp;quot;:&amp;quot;Manual&amp;quot;,&amp;quot;SetPoint&amp;quot;:195}}&lt;/code>&lt;/p>
&lt;p>This will be permanent until something else changes the setting.&lt;/p>
&lt;h3 id="setcancel-boost-for-a-room">Set/cancel Boost for a Room&lt;/h3>
&lt;p>/data/domain/Room/&lt;code>&amp;lt;roomNumber&amp;gt;&lt;/code>&lt;/p>
&lt;p>&lt;code>{&amp;quot;RequestOverride&amp;quot;:{&amp;quot;Type&amp;quot;:&amp;quot;Manual&amp;quot;,&amp;quot;DurationMinutes&amp;quot;: 30, &amp;quot;SetPoint&amp;quot;:200, &amp;quot;Originator&amp;quot;:&amp;quot;App&amp;quot;}}&lt;/code>&lt;/p>
&lt;p>&lt;code>{&amp;quot;RequestOverride&amp;quot;:{&amp;quot;Type&amp;quot;:&amp;quot;None&amp;quot;,&amp;quot;DurationMinutes&amp;quot;: 0, &amp;quot;SetPoint&amp;quot;:0, &amp;quot;Originator&amp;quot;:&amp;quot;App&amp;quot;}}&lt;/code>&lt;/p>
&lt;p>Note: Duration is in minutes. The returned info includes a &lt;code>OverrideTimeoutUnixTime&lt;/code> property, to convert this to a real time, you can use the &lt;a href="https://www.unixtimestamp.com/index.php">Unix timestamp converter&lt;/a> website.&lt;/p>
&lt;h3 id="setcancel-manual-mode-for-a-room">Set/Cancel Manual mode for a room&lt;/h3>
&lt;p>/data/domain/Room/&lt;code>&amp;lt;roomNumber&amp;gt;&lt;/code>&lt;/p>
&lt;p>&lt;code>{&amp;quot;Mode&amp;quot;:&amp;quot;Manual&amp;quot;}&lt;/code> or &lt;code>{&amp;quot;Mode&amp;quot;:&amp;quot;Auto&amp;quot;}&lt;/code>&lt;/p>
&lt;h3 id="setcancel-window-state-detection-for-a-room">Set/Cancel window state detection for a room&lt;/h3>
&lt;p>/data/domain/Room/&lt;code>&amp;lt;roomNumber&amp;gt;&lt;/code>/WindowDetectionActive&lt;/p>
&lt;p>&lt;code>true&lt;/code> or &lt;code>false&lt;/code>&lt;/p>
&lt;h3 id="setcancel-away-mode">Set/cancel Away Mode&lt;/h3>
&lt;p>/data/domain/System/RequestOverride&lt;/p>
&lt;p>&lt;code>{&amp;quot;type&amp;quot;:2,&amp;quot;setPoint&amp;quot;:100}&lt;/code>&lt;/p>
&lt;p>&lt;code>{&amp;quot;type&amp;quot;:0,&amp;quot;setPoint&amp;quot;:0}&lt;/code>&lt;/p>
&lt;p>Note: Sets the min temperature to 10°C&lt;/p>
&lt;p>Also note that you should cancel manual overrides for all rooms.&lt;/p>
&lt;h2 id="references">References&lt;/h2>
&lt;p>Much of the above was gleaned from the following reference code.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/andrew-schofield/openhab2-addons/blob/draytonwiser/addons/binding/org.openhab.binding.draytonwiser/src/main/java/org/openhab/binding/draytonwiser/handler/HeatHubHandler.java">andrew-schofield/openhab2-addons&lt;/a> - also has references for hot water, scheduling and smart plugs&lt;/li>
&lt;li>&lt;a href="https://github.com/chrisduffer/drayton-wiser/blob/master/smartapps/chrisduffer/drayton-wiser-connect.src/drayton-wiser-connect.groovy">chrisduffer/drayton-wiser&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="example-control-and-query-code">Example control and query code&lt;/h2>
&lt;p>Copy the code and import it into Node-RED. You will need the &lt;a href="#node-red-flow-to-configure-ip-address-and-system-secret">configuration flow&lt;/a> as well.&lt;/p>
&lt;p>The configuration flow sets the flow variables &lt;code>flow.wiserHost&lt;/code> and &lt;code>flow.wiserSecret&lt;/code>.&lt;/p>
&lt;h3 id="query-the-current-settings">Query the current settings&lt;/h3>
&lt;h4 id="query-everything-or-query-a-single-room">Query everything or query a single room&lt;/h4>
&lt;p>The top inject will return everything that the controller can tell us. It is useful in helping understand what data is available and
how it is structured. The bottom inject queries a single room, change the room ID in the first change node.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;3822a01a.859ea&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;inject&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;topic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;Wiser QUERY&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;payload&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;payloadType&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;str&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;repeat&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;crontab&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;once&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;onceDelay&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mf">0.1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">160&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">620&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;2dfd4a60.601b06&amp;#34;&lt;/span>&lt;span class="p">]]},{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fcb37ac1.cb36f8&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;http request&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;method&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;use&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;ret&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;obj&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;url&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tls&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">770&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">620&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;c21166d6.4784c8&amp;#34;&lt;/span>&lt;span class="p">]]},{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;c21166d6.4784c8&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;debug&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;active&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;tosidebar&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;console&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tostatus&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;complete&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;payload&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">950&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">620&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[]},{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;a9652fa4.60f24&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;change&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;rules&amp;#34;&lt;/span>&lt;span class="p">:[{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;method&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;GET&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;str&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;url&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;\&amp;#34;http://\&amp;#34; &amp;amp; $flowContext(&amp;#39;wiserHost&amp;#39;) &amp;amp; $.path&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;jsonata&amp;#34;&lt;/span>&lt;span class="p">},{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;headers&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;{\t \&amp;#34;SECRET\&amp;#34;: $flowContext(&amp;#39;wiserSecret&amp;#39;),\t \&amp;#34;HOST\&amp;#34;: $flowContext(&amp;#39;wiserHost&amp;#39;) &amp;amp; \&amp;#34;:80\&amp;#34;\t}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;jsonata&amp;#34;&lt;/span>&lt;span class="p">}],&lt;/span>&lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;property&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;from&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;reg&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">560&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">620&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;fcb37ac1.cb36f8&amp;#34;&lt;/span>&lt;span class="p">]]},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;2dfd4a60.601b06&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;change&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;rules&amp;#34;&lt;/span>&lt;span class="p">:[{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;path&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;/data/domain/&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;str&amp;#34;&lt;/span>&lt;span class="p">}],&lt;/span>&lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;property&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;from&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;reg&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">330&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">620&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;a9652fa4.60f24&amp;#34;&lt;/span>&lt;span class="p">]]},{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;9b02c89.7609c38&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;inject&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;topic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;Wiser QUERY Room&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;payload&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;payloadType&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;str&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;repeat&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;crontab&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;once&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;onceDelay&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mf">0.1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">180&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">680&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;38d8c719.5ae978&amp;#34;&lt;/span>&lt;span class="p">]]},{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;38d8c719.5ae978&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;change&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;rules&amp;#34;&lt;/span>&lt;span class="p">:[{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;path&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;/data/domain/Room/6&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;str&amp;#34;&lt;/span>&lt;span class="p">}],&lt;/span>&lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;property&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;from&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;reg&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">370&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">680&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;a9652fa4.60f24&amp;#34;&lt;/span>&lt;span class="p">]]}]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="get-a-simplified-view-of-all-of-the-rooms">Get a simplified view of all of the rooms&lt;/h4>
&lt;p>This flow queries the &amp;lsquo;/data/domain/Room/&amp;rsquo; path and then simplifies the output using JSONata&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;c8566325.8a07b&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;inject&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;topic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;Start Query&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;payload&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;payloadType&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;str&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;repeat&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;crontab&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;once&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;onceDelay&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mf">0.1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">130&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">800&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;82a69e2d.bd5a1&amp;#34;&lt;/span>&lt;span class="p">]]},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;a3f3790.4883288&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;http request&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;method&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;use&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;ret&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;obj&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;url&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tls&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">630&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">800&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;2887038d.8bd21c&amp;#34;&lt;/span>&lt;span class="p">]]},{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;55b4a3e7.8eb21c&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;debug&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;active&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tosidebar&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;console&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tostatus&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;complete&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;payload&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">950&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">800&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[]},{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;a8da7133.b0ced&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;change&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;rules&amp;#34;&lt;/span>&lt;span class="p">:[{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;method&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;GET&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;str&amp;#34;&lt;/span>&lt;span class="p">},{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;url&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;\&amp;#34;http://\&amp;#34; &amp;amp; $flowContext(&amp;#39;wiserHost&amp;#39;) &amp;amp; $.path&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;jsonata&amp;#34;&lt;/span>&lt;span class="p">},{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;headers&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;{\t \&amp;#34;SECRET\&amp;#34;: $flowContext(&amp;#39;wiserSecret&amp;#39;),\t \&amp;#34;HOST\&amp;#34;: $flowContext(&amp;#39;wiserHost&amp;#39;) &amp;amp; \&amp;#34;:80\&amp;#34;\t}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;jsonata&amp;#34;&lt;/span>&lt;span class="p">}],&lt;/span>&lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;property&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;from&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;reg&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">460&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">800&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;a3f3790.4883288&amp;#34;&lt;/span>&lt;span class="p">]]},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;82a69e2d.bd5a1&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;change&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;rules&amp;#34;&lt;/span>&lt;span class="p">:[{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;path&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;/data/domain/Room&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;str&amp;#34;&lt;/span>&lt;span class="p">}],&lt;/span>&lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;property&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;from&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;reg&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">289&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">800&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;a8da7133.b0ced&amp;#34;&lt;/span>&lt;span class="p">]]},{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;5d6dc6ef.f8cae8&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;comment&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;Get basic room info for all rooms&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;info&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">190&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">760&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[]},{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;2887038d.8bd21c&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;change&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;trim output&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;rules&amp;#34;&lt;/span>&lt;span class="p">:[{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;payload&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;payload{ \t $.Name : {\t \&amp;#34;id\&amp;#34;: $.id,\t \&amp;#34;Name\&amp;#34;: $.Name,\t \&amp;#34;CurrentTemperature\&amp;#34;: $.CalculatedTemperature/10,\t \&amp;#34;DesiredTemperature\&amp;#34;: $.CurrentSetPoint/10,\t \&amp;#34;Override\&amp;#34;: $.OverrideType?\&amp;#34;Yes\&amp;#34;:\&amp;#34;No\&amp;#34;,\t \&amp;#34;OverrideTimeout\&amp;#34;: $.OverrideType?$split($split($fromMillis($.OverrideTimeoutUnixTime),\&amp;#34;T\&amp;#34;)[1],\&amp;#34;.\&amp;#34;)[0]:\&amp;#34;N/A\&amp;#34;\t }\t}\t&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;jsonata&amp;#34;&lt;/span>&lt;span class="p">}],&lt;/span>&lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;property&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;from&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;reg&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">790&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">800&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;55b4a3e7.8eb21c&amp;#34;&lt;/span>&lt;span class="p">]]}]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The output looks like:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;Bedroom 2&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;Name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Bedroom 2&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;CurrentTemperature&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">19.2&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;DesiredTemperature&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">12.5&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;Override&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;No&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;OverrideTimeout&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;N/A&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;Master Bedroom&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">6&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;Name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Master Bedroom&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;CurrentTemperature&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">19.2&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;DesiredTemperature&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">12.5&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;Override&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Yes&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;OverrideTimeout&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;18:09:42&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="control-the-system">Control the system&lt;/h3>
&lt;p>These flows show you how to make changes to the controller from Node-RED.&lt;/p>
&lt;h4 id="boost-the-temperature-in-a-room-for-30-minutes">Boost the temperature in a room for 30 minutes&lt;/h4>
&lt;p>Applies a 30 minute boost to 18.5°C for room id 1.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;9d700a39.ebbaa8&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;http request&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;method&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;use&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;ret&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;obj&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;url&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;tls&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">770&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">560&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;58845d6d.bf2a24&amp;#34;&lt;/span>&lt;span class="p">]]},{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;32c33bee.cf6c24&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;inject&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;Wiser SET&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;topic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;payload&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;payloadType&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;str&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;repeat&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;crontab&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;once&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;onceDelay&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mf">0.1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">140&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">560&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;855deb47.8df6f8&amp;#34;&lt;/span>&lt;span class="p">]]},{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;58845d6d.bf2a24&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;debug&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;active&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tosidebar&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;console&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tostatus&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;complete&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;true&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">930&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">560&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[]},{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;6ec2a88e.839598&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;change&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;rules&amp;#34;&lt;/span>&lt;span class="p">:[{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;method&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;PATCH&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;str&amp;#34;&lt;/span>&lt;span class="p">},{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;url&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;\&amp;#34;http://\&amp;#34; &amp;amp; $flowContext(&amp;#39;wiserHost&amp;#39;) &amp;amp; $.path&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;jsonata&amp;#34;&lt;/span>&lt;span class="p">},{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;headers&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;{\t \&amp;#34;SECRET\&amp;#34;: $flowContext(&amp;#39;wiserSecret&amp;#39;),\t \&amp;#34;HOST\&amp;#34;: $flowContext(&amp;#39;wiserHost&amp;#39;) &amp;amp; \&amp;#34;:80\&amp;#34;\t}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;jsonata&amp;#34;&lt;/span>&lt;span class="p">}],&lt;/span>&lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;property&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;from&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;reg&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">560&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">560&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;9d700a39.ebbaa8&amp;#34;&lt;/span>&lt;span class="p">]]},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;855deb47.8df6f8&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;change&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;z&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;fb0c842.c87fc78&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;rules&amp;#34;&lt;/span>&lt;span class="p">:[{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;payload&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;{\&amp;#34;RequestOverride\&amp;#34;:{\&amp;#34;Type\&amp;#34;:\&amp;#34;Manual\&amp;#34;,\&amp;#34;Originator\&amp;#34;:\&amp;#34;App\&amp;#34;,\&amp;#34;DurationMinutes\&amp;#34;:30,\&amp;#34;SetPoint\&amp;#34;:185}}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;json&amp;#34;&lt;/span>&lt;span class="p">},{&lt;/span>&lt;span class="nt">&amp;#34;t&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;set&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;path&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;pt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;msg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;/data/domain/Room/1&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;tot&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;str&amp;#34;&lt;/span>&lt;span class="p">}],&lt;/span>&lt;span class="nt">&amp;#34;action&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;property&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;#34;from&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;to&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;reg&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;x&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">340&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;y&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">560&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="nt">&amp;#34;wires&amp;#34;&lt;/span>&lt;span class="p">:[[&lt;/span>&lt;span class="s2">&amp;#34;6ec2a88e.839598&amp;#34;&lt;/span>&lt;span class="p">]]}]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The output from this contains updated room info.&lt;/p>
&lt;p>You can easily amend the payload and path to any of the settings listed in the &lt;a href="#controlling-the-system">controlling the system&lt;/a> section above.&lt;/p></div></description><author>Julian Knight</author><category domain="https://it.knightnet.org.uk/categories/development">Development</category><category domain="https://it.knightnet.org.uk/categories/internet-of-things-iot">Internet of Things (IoT)</category><category domain="https://it.knightnet.org.uk/tags/node-red">Node-RED</category><category domain="https://it.knightnet.org.uk/tags/internet-of-things">Internet of Things</category><category domain="https://it.knightnet.org.uk/tags/iot">IoT</category><category domain="https://it.knightnet.org.uk/tags/heating">Heating</category><category domain="https://it.knightnet.org.uk/tags/home-automation">Home Automation</category></item><item><title>Mosquitto MQTT Server on a Raspberry Pi</title><link>https://it.knightnet.org.uk/2015/11/mosquitto-mqtt-server-on-a-raspberry-pi.html</link><guid isPermaLink="true">https://it.knightnet.org.uk/2015/11/mosquitto-mqtt-server-on-a-raspberry-pi.html</guid><pubDate>Sun, 29 Nov 2015 23:10:53 +0000</pubDate><guid>https://it.knightnet.org.uk/2015/11/mosquitto-mqtt-server-on-a-raspberry-pi.html</guid><description><div>To access an MQTT broker direct from the browser, you need websockets support. On a Raspberry Pi, this used to require a custom build from source. That is no longer required. You can now install direct from the mosquitto.org repository and add a simple config change. This article explains the details.</div><div>&lt;p>&lt;!-- raw HTML omitted -->MQTT&lt;!-- raw HTML omitted --> is a messaging protocol for the “Internet of Things” (IoT). It allows devices to communicate easily with minimal overheads. The Raspberry Pi of course makes an excellent low cost platform for managing IoT. Not only is it cheap to buy, it is also cheap to keep running.&lt;/p>
&lt;p>To use MQTT, you need a “broker” which is simply a service running in the background. &lt;!-- raw HTML omitted -->Mosquitto&lt;!-- raw HTML omitted --> is one of the more popular brokers, partly because it is pretty small and therefore ideal for running on a Pi.&lt;/p>
&lt;p>If you want to use MQTT from the browser however, you also need the broker to support something called “&lt;!-- raw HTML omitted -->websockets&lt;!-- raw HTML omitted -->” since browsers cannot directly talk using the MQTT protocol. In the past, Mosquitto didn’t have websockets compiled in by default and compiling your own version on a Pi is painful to say the least.&lt;/p>
&lt;p>Thankfully, this is no longer a problem since the authors of Mosquitto now &lt;!-- raw HTML omitted -->provide a repository&lt;!-- raw HTML omitted --> containing ARM versions which work fine on the Pi. See mosquitto.org for the details.&lt;/p>
&lt;p>Once installed from the repository, you will need to add a suitable configuration since websockets are not part of the default configuration.&lt;/p>
&lt;p>To turn it on, you should add a new file to &lt;code>/etc/mosquitto/conf.d/&lt;/code> containing something like:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># See: http://mm011106.github.io/reference/mosquitto_conf.html&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Standard Listener&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">listener &lt;span class="m">1883&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">protocol mqtt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">allow_anonymous &lt;span class="nb">false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">password_file /etc/mosquitto/passwords.txt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Websockets Listener&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">listener &lt;span class="m">9001&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">http_dir
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Set the protocol to accept &lt;span class="k">for&lt;/span> this listener. Can be mqtt &lt;span class="o">(&lt;/span>the default&lt;span class="o">)&lt;/span>, or websockets.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">protocol websockets
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Note that you can create more than one listener of the same type. You might, for example, want to create another listener that is restricted to a subset of topics so that you can allow access to that over the Internet. Perhaps you would restrict it to listing only sensor data but not control messages for your home automation project for example.&lt;/p>
&lt;p>Once you have enabled websockets access to Mosquitto, you can do some interesting things directly from web pages. Get hold of &lt;!-- raw HTML omitted -->MQTT.js&lt;!-- raw HTML omitted --> for the browser and you can both listen to and send messages from/to the broker. Combined with a framework such as &lt;!-- raw HTML omitted -->REACT&lt;!-- raw HTML omitted --> allows you to, with only a few lines of code, display all the messages that arrive at your broker.&lt;/p>
&lt;p>Updated 2018-04-24 21:20:16 - Tidy output after migration from WordPress.&lt;/p></div></description><author>Julian Knight</author><category domain="https://it.knightnet.org.uk/categories/development">Development</category><category domain="https://it.knightnet.org.uk/categories/home-automation-ha">Home Automation (HA)</category><category domain="https://it.knightnet.org.uk/categories/internet-of-things-iot">Internet of Things (IoT)</category><category domain="https://it.knightnet.org.uk/categories/software">Software</category><category domain="https://it.knightnet.org.uk/tags/home-automation">Home Automation</category><category domain="https://it.knightnet.org.uk/tags/internet-of-things">Internet of Things</category><category domain="https://it.knightnet.org.uk/tags/iot">IoT</category><category domain="https://it.knightnet.org.uk/tags/mqtt">MQTT</category><category domain="https://it.knightnet.org.uk/tags/node-red">Node-Red</category><category domain="https://it.knightnet.org.uk/tags/raspberry-pi">Raspberry Pi</category><category domain="https://it.knightnet.org.uk/tags/react">REACT</category></item><item><title>Home Automation Hub using Node-Red</title><link>https://it.knightnet.org.uk/2015/01/home-automation-hub-using-node-red.html</link><guid isPermaLink="true">https://it.knightnet.org.uk/2015/01/home-automation-hub-using-node-red.html</guid><pubDate>Fri, 30 Jan 2015 15:32:18 +0000</pubDate><guid>https://it.knightnet.org.uk/2015/01/home-automation-hub-using-node-red.html</guid><description><div>The Internet of Things (IoT) comes alive with the help of Node-Red, a Flow-Based Programming (FBP) tool designed to help link together sensors, switches, logic and displays. With hardware magic from Arduino's, Raspberry Pi's, low cost sensors and wireless switches. We can easily build a bespoke home automation and monitoring hub.</div><div>&lt;p>Having got into some electronics with my son over the last couple of years, I’ve found a new enthusiasm for doing some home automation and monitoring. In the process joining a much overhyped band of people creating the so-called “&lt;!-- raw HTML omitted -->Internet of Things&lt;!-- raw HTML omitted -->” (IoT)
Between &lt;!-- raw HTML omitted -->Arduino’s&lt;!-- raw HTML omitted --> and &lt;!-- raw HTML omitted -->Raspbery Pi’s&lt;!-- raw HTML omitted -->, some &lt;!-- raw HTML omitted -->simple low cost sensors&lt;!-- raw HTML omitted --> and a fair bit of patience, it is amazing what can be achieved.&lt;/p>
&lt;p>One of the big tasks though is trying to link everything together. Generally, this involves either using a big pre-build tool such as the popular &lt;!-- raw HTML omitted -->Domoticz&lt;!-- raw HTML omitted --> or programming your own monitoring and control hub from the bottom up. Personally, I find the former approach too restrictive with the packages rarely doing what I need so that I am always fighting with them. But I find the latter approach too time consuming to ever get very far.&lt;/p>
&lt;p>Thankfully, some great folks at IBM have come to the rescue by creating a tool called “&lt;a href="http://nodered.org/" title="Node Red homepage">Node-Red&lt;/a>“. This uses an approach called “&lt;!-- raw HTML omitted -->Flow-Based Programming&lt;!-- raw HTML omitted -->” (FBP). Indeed, FBP was invented at IBM in the 1970’s so it seems only logical that the &lt;!-- raw HTML omitted -->IBM Emerging Technology&lt;!-- raw HTML omitted --> team should carry on the good work.&lt;/p>
&lt;p>Flow-based programming uses diagrams to connect together small functions, in this case referred to as “nodes”. Rather like putting together a flowchart. Node-Red is aimed at people creating connections between IoT things such as sensors and switches so it is ideal for what I wanted. Even better is that it is based on my chosen programming and automation tool, Node.JS which runs everywhere, is lightweight, fast, flexible and powerful. Node.JS uses Javascript as its programming language and so I only need to learn 1 language to programme for both the server (the back-end) and the client (browser, the front-end or user interface).&lt;/p>
&lt;p>Why not give &lt;!-- raw HTML omitted -->Node-Red&lt;!-- raw HTML omitted --> a try? It is getting more and more attention with lots of new node types being contributed by the community. There is a site for reviewing new nodes and examples at &lt;!-- raw HTML omitted -->flows.nodered.org&lt;!-- raw HTML omitted -->. There is a &lt;!-- raw HTML omitted -->Slack site&lt;!-- raw HTML omitted --> and a lively &lt;!-- raw HTML omitted -->Google news group&lt;!-- raw HTML omitted -->. There is also some good documentation at the &lt;!-- raw HTML omitted -->docs site&lt;!-- raw HTML omitted -->.&lt;/p>
&lt;p>You may also find Node-Red useful for a lot more than just IoT as it makes it easy to work through computing tasks, reducing coding to a minimum.&lt;/p></div></description><author>Julian Knight</author><category domain="https://it.knightnet.org.uk/categories/home-automation-ha">Home Automation (HA)</category><category domain="https://it.knightnet.org.uk/categories/internet-of-things-iot">Internet of Things (IoT)</category><category domain="https://it.knightnet.org.uk/categories/software">Software</category><category domain="https://it.knightnet.org.uk/tags/electronics">Electronics</category><category domain="https://it.knightnet.org.uk/tags/fbp">FBP</category><category domain="https://it.knightnet.org.uk/tags/flow-based-programming">Flow-Based Programming</category><category domain="https://it.knightnet.org.uk/tags/ha">HA</category><category domain="https://it.knightnet.org.uk/tags/home-automation">Home Automation</category><category domain="https://it.knightnet.org.uk/tags/internet-of-things">Internet of Things</category><category domain="https://it.knightnet.org.uk/tags/iot">IoT</category><category domain="https://it.knightnet.org.uk/tags/monitoring">Monitoring</category><category domain="https://it.knightnet.org.uk/tags/node-red">Node-RED</category><category domain="https://it.knightnet.org.uk/tags/sensors">Sensors</category></item></channel></rss>