<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss-styles.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Fletcher Kelly</title><description>All round geek and tinkerer.</description><link>https://fskelly.github.io/</link><item><title>Enhancing Node-Red with GUIDs</title><link>https://fskelly.github.io/post/enhancing-node-red/</link><guid isPermaLink="true">https://fskelly.github.io/post/enhancing-node-red/</guid><description>A simple way to add traceability to your Node-Red flows</description><pubDate>Mon, 30 Jun 2025 12:47:26 GMT</pubDate><content:encoded>&lt;p&gt;Do you have a lot of automation in your house using &lt;a href=&quot;https://nodered.org/&quot;&gt;Node-RED&lt;/a&gt; and are you looking for a way to increase the possibility of finding a faulty flow? If yes, follow me as I come up with a solution that might work for you as well.&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;This is a use case for me. Your mileage may vary.
This will take some time.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Anything worth doing is worth doing well.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;background&quot;&gt;Background&lt;/h2&gt;
&lt;p&gt;So let me explain the problem and see if this sounds familiar. I use &lt;a href=&quot;https://nodered.org/&quot;&gt;Node-RED&lt;/a&gt; &lt;strong&gt;A LOT&lt;/strong&gt; along with &lt;a href=&quot;https://www.home-assistant.io&quot;&gt;Home Assistant&lt;/a&gt;. I made the decision a long time ago that the automations built into Home Assistant and the YAML engine was not for me. Please note that was quite a while, probably 5 or 6 years ago - the automation interface in  &lt;a href=&quot;https://www.home-assistant.io&quot;&gt;Home Assistant&lt;/a&gt; is so much better now, &lt;em&gt;however&lt;/em&gt; I am heavily invested in &lt;a href=&quot;https://nodered.org/&quot;&gt;Node-RED&lt;/a&gt; and will not be going back anytime soon.&lt;/p&gt;
&lt;h2 id=&quot;so-what-is-the-problem&quot;&gt;So what is the problem?&lt;/h2&gt;
&lt;p&gt;I have a lot of flows and nodes in my environment. I make heavy use of links and try to centralize as much as possible and use links (link in and link out) to ensure that the actions I perform are consistent. When you get to the size of my installation (over a 100 flows), troubleshooting and figuring out erratic or intermittent issues can be challenge. With all the wiring and multiple nodes and linking and multiple condition checking - it can become overwhelming to figure out where the problem starts and ends.&lt;/p&gt;
&lt;h2 id=&quot;how-did-i-fix-this&quot;&gt;How did I fix this?&lt;/h2&gt;
&lt;p&gt;I have spent time and this will be an on-going process to add GUIDs (yes, those long 32 digit things that are now everywhere) and simple use of a &lt;a href=&quot;https://nodered.org/docs/user-guide/editor/workspace/subflows&quot;&gt;subflow&lt;/a&gt;. The &lt;a href=&quot;https://nodered.org/docs/user-guide/editor/workspace/subflows&quot;&gt;subflow&lt;/a&gt; I created is simply used right at the beginning of my flow and its &lt;strong&gt;G&lt;/strong&gt;lobally &lt;strong&gt;U&lt;/strong&gt;nique &lt;strong&gt;ID&lt;/strong&gt;entifier now allows me to at least back-track to the start of the problematic flow and if the debug nodes returns more than 1 &lt;strong&gt;GUID&lt;/strong&gt; that is also helpful.&lt;/p&gt;
&lt;p&gt;So a simple enough change, but time-consuming to implement.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2025/enhancing-node-red-guids/subflow.png&quot;&gt;&lt;img src=&quot;/assetshttps://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2025/enhancing-node-red-guids/subflow.png&quot; alt=&quot;My GUID Subflow&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Click image to view full size.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here is the export of my subflow - feel free to use it.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;f44cf6f9b8f814e3&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;subflow&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Flow Trace Tagger (1)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;info&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Adds msg.flow_origin and msg.flow_trace for debugging and traceability.&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Set the environment variable TAG_NAME when using this subflow.&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;category&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:[{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;60&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:[{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;6c2c2c6e8e2f886c&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}]}],&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:[{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;440&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:[{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;6c2c2c6e8e2f886c&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;port&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}]}],&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;env&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:[{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;TAG_NAME&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}],&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;#FFD580&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;status&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;340&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;380&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:[{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;0df253ebbfe15d99&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;port&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}]}},{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;6c2c2c6e8e2f886c&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;change&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;f44cf6f9b8f814e3&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Set flow trace tags&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;rules&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:[{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;t&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;flow_origin&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;pt&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;$env(&apos;TAG_NAME&apos;) != &apos;&apos; ? $env(&apos;TAG_NAME&apos;) : &apos;Unlabeled Flow&apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;tot&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;jsonata&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;},{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;t&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;flow_trace&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;pt&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;$now() &amp;#x26; &apos; - &apos; &amp;#x26; ($env(&apos;TAG_NAME&apos;) != &apos;&apos; ? $env(&apos;TAG_NAME&apos;) : &apos;Unlabeled Flow&apos;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;tot&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;jsonata&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}],&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;250&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:[[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;363a78cde4fa6638&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]]},{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;0df253ebbfe15d99&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;status&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;f44cf6f9b8f814e3&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;scope&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:null,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;180&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;380&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:[[]]},{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;363a78cde4fa6638&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;f44cf6f9b8f814e3&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;status&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;func&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;//var date = new Date();&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;//var dateTime = date.toLocaleString(); // Format the date and time&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n\n&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;// In our `msg.payload` the `title` attribute contains the name of the game.&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;var statusText = msg.flow_trace;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n\n&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;// `node.status` will display the actual status below your function node using&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;// the data you provide here.&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;node.status({ fill: &lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;blue&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;, shape: &lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;ring&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;, text: statusText });&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;return msg;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;timeout&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;noerr&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;initialize&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;finalize&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;libs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:[],&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;490&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:[[]]}]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Example flow, this is just a simple example to show how everything stitches together.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2025/enhancing-node-red-guids/flow.png&quot;&gt;&lt;img src=&quot;/assetshttps://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2025/enhancing-node-red-guids/flow.png&quot; alt=&quot;Simple flow example using the GUID subflow&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Click image to view full size.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Configuration of sub-flow&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2025/enhancing-node-red-guids/flow-config.png&quot;&gt;&lt;img src=&quot;/assetshttps://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2025/enhancing-node-red-guids/flow-config.png&quot; alt=&quot;Subflow&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Click image to view full size.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Debug node&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2025/enhancing-node-red-guids/flow-debug.png&quot;&gt;&lt;img src=&quot;/assetshttps://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2025/enhancing-node-red-guids/flow-debug.png&quot; alt=&quot;Debug information with GUID&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Click image to view full size.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;is-it-worth-it&quot;&gt;Is it worth it?&lt;/h2&gt;
&lt;p&gt;Well, that depends on you and how much and effort you want to spend making your automation system resilient, robust and easy to troubleshoot.&lt;/p&gt;
&lt;p&gt;For me, absolutely **YES, **however in the last while the Automation capapbilities in Home Assisatant have improved greatly. Maybe I will look into this at some time in the future.&lt;/p&gt;</content:encoded><updated/></item><item><title>Using the Pinchflat YouTube Downloader</title><link>https://fskelly.github.io/post/using-pinchflat-yt-downloader/</link><guid isPermaLink="true">https://fskelly.github.io/post/using-pinchflat-yt-downloader/</guid><description>Are you tired of buffering videos and unreliable internet connections when trying to watch your favorite YouTube content? Look no further! I...</description><pubDate>Thu, 21 Nov 2024 16:23:31 GMT</pubDate><content:encoded>&lt;p&gt;Are you tired of buffering videos and unreliable internet connections when trying to watch your favorite YouTube content? Look no further! In this post, I’ll introduce you to Pinchflat, a powerful tool that allows you to download YouTube videos effortlessly. Inspired by a mention on the &lt;a href=&quot;https://selfhosted.show/&quot;&gt;Self-Hosted Podcast&lt;/a&gt;, I decided to give Pinchflat a try and share my experience with you.&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;I am an avid listener of the &lt;a href=&quot;https://selfhosted.show/&quot;&gt;Self-Hosted Podcast&lt;/a&gt;, and on a &lt;a href=&quot;https://selfhosted.show/134&quot;&gt;recent episode&lt;/a&gt;, they mentioned a new tool called &lt;a href=&quot;https://github.com/kieraneglin/pinchflat&quot;&gt;Pinchflat&lt;/a&gt;. Naturally, I decided to give it a try. I’ve already starred the repo, which is a great way to support the open-source community.&lt;/p&gt;
&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;
&lt;p&gt;There are specific &lt;a href=&quot;https://unRAID.net/&quot;&gt;unRAID&lt;/a&gt; &lt;a href=&quot;https://github.com/kieraneglin/pinchflat?tab=readme-ov-file#unRAID&quot;&gt;installation instructions&lt;/a&gt;, and thanks to the great community around unRAID, the installation was a breeze.&lt;/p&gt;
&lt;p&gt;Using unRAID, I was able to install Pinchflat via the Community App plugin. The tool is fairly intuitive and easy to use. I managed to download a few videos from YouTube without any issues. I’m the type of person who tries first and then reads the manual, so I didn’t read the manual initially. Despite this, I was able to figure out how to use the tool without any problems.&lt;/p&gt;
&lt;h2 id=&quot;usage&quot;&gt;Usage&lt;/h2&gt;
&lt;p&gt;I follow several people and channels on YouTube and like to download their videos to watch later. This tool makes it easier to download videos and watch them at my convenience.&lt;/p&gt;
&lt;p&gt;Currently, I’m consuming a &lt;a href=&quot;https://www.youtube.com/playlist?list=PLlVtbbG169nFr8RzQ4GIxUEznpNR53ERq&quot;&gt;DevOps Master Class&lt;/a&gt; by John Savill. Pinchflat was one of the first items I added to my list, and it works as expected. Now, I can watch the videos offline using JellyFin. Please make a point of liking and subscribing to John’s channel; he has some great content. Then, you can make the content available offline 😊.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I am now using &lt;a href=&quot;https://github.com/kieraneglin/pinchflat&quot;&gt;Pinchflat&lt;/a&gt; to monitor many other YouTube users and channels. For me, this is a great way to have the content downloaded and ready for when I have time to watch it.&lt;/p&gt;
&lt;p&gt;Happy downloading!&lt;/p&gt;</content:encoded><updated/></item><item><title>Time to get my “print” on</title><link>https://fskelly.github.io/post/new-bambu-printer/</link><guid isPermaLink="true">https://fskelly.github.io/post/new-bambu-printer/</guid><description>**Exciting times ahead!** As I mentioned in my earlier post, I have been eagerly waiting for my new 3D printer to arrive. After much conside...</description><pubDate>Fri, 20 Sep 2024 11:48:40 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Exciting times ahead!&lt;/strong&gt; As I mentioned in my earlier post, I have been eagerly waiting for my new 3D printer to arrive. After much consideration, I decided to go with the Bambu Lab P1S. For now, I opted not to get the bundled AMS unit. In this post, I’ll share why I chose this version over others and my initial impressions.&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/new-bambu-printer/arrival-boxes.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/new-bambu-printer/arrival-boxes.jpg&quot; alt=&quot;Arrival Boxes&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/new-bambu-printer/top.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/new-bambu-printer/top.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/new-bambu-printer/accessories.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/new-bambu-printer/accessories.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/new-bambu-printer/screen.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/new-bambu-printer/screen.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P1P&lt;/strong&gt;: Great price but not enclosed, whilst I do not need the enclosure now, I think that this allows more filament types to be used. Yes, I can &lt;a href=&quot;https://eu.store.bambulab.com/en-ie/products/p1p-enclosure-kit&quot;&gt;enclose&lt;/a&gt; the P1P after the fact with an &lt;a href=&quot;https://eu.store.bambulab.com/en-ie/products/p1p-enclosure-kit&quot;&gt;official upgrade&lt;/a&gt;. I did some quick maths, and determined at the price I got it for, it simply made sense as the upgrade would cost after the fact.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;X1C&lt;/strong&gt;: I could not justify this price for what I need this for, my use case is printing replacement parts for upgrades, house items and very basic items that I design (I am dipping my toe in Fusion 360, this makes a 3D printer truly useful). I am also using my 3D printer for management items like &lt;a href=&quot;https://www.multiboard.io/&quot;&gt;Multiboard&lt;/a&gt; and &lt;a href=&quot;https://gridfinity.xyz/catalog/&quot;&gt;Gridfinity&lt;/a&gt;. It does have a really nice touch screen and yes the frame rate for the camera is &lt;strong&gt;MUCH&lt;/strong&gt; better than the 1fps camera on the P1S.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AMS&lt;/strong&gt;: A very simple and easy plug and play upgrade, I am going to focus on learning this printer and getting the basics right before I go high-tech with an AMS. In time, &lt;strong&gt;YES&lt;/strong&gt; but not right now.&lt;/p&gt;
&lt;p&gt;There are a lot of upgrades and changes you can make or print for the P1S. There is an aftermarket screen – the &lt;a href=&quot;https://biqu.equipment/products/bigtreetech-panda-touch-5-display-for-bambu-lab-printers&quot;&gt;BIGTREETECH Panda Touch V1.0 – 5 Inch Touch Screen with Multi-Printer, Wireless Control For Bambu Lab X1, P1 and A1 Printers&lt;/a&gt; and the camera can be addressed in other. This is where I would like to focus my time, add-ons and changes to the printer &lt;strong&gt;WITHOUT&lt;/strong&gt; worrying about the print quality, time and speed.&lt;/p&gt;
&lt;p&gt;And a quick video of the printer in action. Thank you to &lt;a href=&quot;https://dev.to/hi_artem/add-a-video-to-your-hugo-website-104&quot;&gt;this&lt;/a&gt; for the video shortcode and the resulting video below.&lt;/p&gt;
&lt;p&gt;&lt;video controls src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/new-bambu-printer/print-time.mp4&quot; class=&quot;my-player&quot;&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;Here is a sample print.
&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/new-bambu-printer/print.JPG&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/new-bambu-printer/print.JPG&quot; alt=&quot;Image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;More on this printing journey to come. Until then, &lt;strong&gt;happy printing&lt;/strong&gt;.&lt;/p&gt;</content:encoded><updated/></item><item><title>Planning for my new 3D printer</title><link>https://fskelly.github.io/post/new-3dprinter-research/</link><guid isPermaLink="true">https://fskelly.github.io/post/new-3dprinter-research/</guid><description>So, I have been 3D printing for a little while now. Not as long as many, but a little while. It has been about 4 years now, when I get my fi...</description><pubDate>Thu, 12 Sep 2024 12:54:34 GMT</pubDate><content:encoded>&lt;p&gt;So, I have been 3D printing for a little while now. Not as long as many, but a little while. It has been about 4 years now, when I get my first and currently only 3D printer. So where have I come from and what is next on my 3D printing journey?&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;My journey started with a Creality Ender 3 Pro, I was lucky enough to get a slightly more polished version with the “PRO” version. I am a &lt;strong&gt;tinkerer&lt;/strong&gt; by nature and I learn the most by doing.&lt;/p&gt;
&lt;p&gt;My Ender 3 Pro is &lt;strong&gt;VERY FAR&lt;/strong&gt; from stock, it did not remain stock for very long, like I said “&lt;strong&gt;I learn by doing&lt;/strong&gt;“. So what have I done to this printer?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Changed from Creality build to Marlin&lt;/li&gt;
&lt;li&gt;Marlin 1.0 -&gt; Marlin 2.0&lt;/li&gt;
&lt;li&gt;Added BLTouch&lt;/li&gt;
&lt;li&gt;Custom wiring and extensions&lt;/li&gt;
&lt;li&gt;External MOSFETs added for bed and nozzle heating&lt;/li&gt;
&lt;li&gt;Install Octoprint&lt;/li&gt;
&lt;li&gt;Custom printed control box&lt;/li&gt;
&lt;li&gt;Marlin 2.0 -&gt; &lt;a href=&quot;https://www.klipper3d.org/&quot;&gt;Klipper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Added a camera, multiple actually&lt;/li&gt;
&lt;li&gt;Install &lt;a href=&quot;https://mobileraker.com/&quot;&gt;Mobileraker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Added Runout Sensor – &lt;a href=&quot;https://bigtree-tech.com/blogs/news/new-release-bigtreetech-sfs-v2-0&quot;&gt;BTT SFS 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Added &lt;a href=&quot;https://klipperscreen.readthedocs.io/en/latest/&quot;&gt;KlipperScreen&lt;/a&gt; with &lt;a href=&quot;https://biqu.equipment/products/bigtreetech-hdmi5-v1-0-hdmi7-v1-0&quot;&gt;BTT HDMI 5.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Upgraded to Direct Drive – &lt;a href=&quot;https://www.orbiterprojects.com/orbiter-v2-0/&quot;&gt;Orbiter 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Upgraded to &lt;a href=&quot;https://www.orbiterprojects.com/apogee-ender-3-v2/&quot;&gt;Apogee&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Move Klipper from RPI3 to an Intel NUC (Yes, it is possible, just needs time, patience and perseverance)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Like I said, done a few things 😊&lt;/p&gt;
&lt;h2 id=&quot;so-what-did-this-lead-to&quot;&gt;&lt;strong&gt;So, what did this lead to?&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;I learned a lot about 3D printers and how they work. Broke some parts, replaced many more, clogged nozzles, cleaned nozzles. I have had some amazing prints but I have also spent countless hours debugging, tweaking and searching online.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOW&lt;/strong&gt;, I am looking for a workhorse, something that just prints and prints well all the time (ok, most of the time – cannot be all the time – this is simply not possible). I am happy about the learning and the like and that knowledge will still used with the new printer and helping others in the 3D Printing community. It is however time for something new – a workhorse if you will.&lt;/p&gt;
&lt;p&gt;Can you guess which printer I have ordered as a replacement?&lt;/p&gt;</content:encoded><updated/></item><item><title>What is a PV Fireman Switch?</title><link>https://fskelly.github.io/post/fireman-switch-solar-pv/</link><guid isPermaLink="true">https://fskelly.github.io/post/fireman-switch-solar-pv/</guid><description>Join me as I dive deeper into my Solar system and learn more about how it works in detail and maintain the system as items age/break (everyt...</description><pubDate>Tue, 03 Sep 2024 16:00:15 GMT</pubDate><content:encoded>&lt;p&gt;Join me as I dive deeper into my Solar system and learn more about how it works in detail and maintain the system as items age/break (everything breaks eventually), so let’s learn about a PV Fireman switch.&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;Definition of PV Fireman Switch&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“Automatically disconnects the DC supply on a Solar PV system when the AC grid supply is interrupted. When installed at the point of cable entry into the premises, this product creates a safe environment for Firefighters.”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/fireman-switch-solarpv/fireman-switch-1.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/fireman-switch-solarpv/fireman-switch-1.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So what does this actually mean and what happens if it stops working as expected?&lt;/p&gt;
&lt;p&gt;In essence, you can think of the PV Fireman Switch as a DC Relay, that is in the “Normally Open” (NO) position. By default it makes sure that the circuit is open. So when there is no AC power being provided, the switch is in NO position so the voltage from the PV panels will &lt;strong&gt;NOT&lt;/strong&gt; reach your inverter and possibly back-feed. When AC power is provided to the unit, it will close the circuit – “Normally Closed” – and allow the voltage to flow to the inverter and allow the inverter to perform its tasks as normal.&lt;/p&gt;
&lt;h2 id=&quot;so-why-is-this-needed-with-on-grid-systems&quot;&gt;So, why is this needed with on-grid systems?&lt;/h2&gt;
&lt;p&gt;It is a safety feature. Imagine this scenario, the entity responsible for maintaining the grid and electricity needs to performs works on the grid, so they stop the supply (Hopefully with warning you 😊). Under normal circumstances there would be no voltage on any on the networks, however with Solar PV, &lt;strong&gt;many of us can back-feed into the grid and get credits and this is the where the need for this device comes in&lt;/strong&gt;. If you did &lt;strong&gt;NOT&lt;/strong&gt; follow standards and this device installed, you would now back-feed into the grid and turn the &lt;strong&gt;grid live again and risk injuring maintenance staff&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;what-happens-if-it-breaks&quot;&gt;What happens if it “breaks”?&lt;/h2&gt;
&lt;p&gt;This device consists of electronics and can only handle so much “abuse” (read power trips and power fluctuations), and can fail. Mine did, so what happens now? In essence, your PV panels become irrelevant and the voltage being generated by them is basically dropped to nominal voltage (0-2 V) and the inverter will run only off of batteries or pull power from the grid.&lt;/p&gt;
&lt;p&gt;Can I fix it?&lt;/p&gt;
&lt;p&gt;The unit is NOT designed to be repaired, it is &lt;strong&gt;NOT field replaceable&lt;/strong&gt;. It is delivered pre-wired and not meant to have items replaced. This ensures that a standard is used. This is my unit that failed and yes it was replaced.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/fireman-switch-solarpv/fireman-switch-2.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/fireman-switch-solarpv/fireman-switch-2.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/fireman-switch-solarpv/fireman-switch-3.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/fireman-switch-solarpv/fireman-switch-3.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It must be &lt;strong&gt;replaced&lt;/strong&gt;, it is an easy enough job to perform as long as your system is well labelled (which it should be already). It has a label for PV IN and PV OUT and the connection for the AC supply is well marked. Replace your unit and you are up and running again.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/fireman-switch-solarpv/fireman-switch-4.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2024/fireman-switch-solarpv/fireman-switch-4.jpg&quot; alt=&quot;Image&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Until next time.&lt;/p&gt;</content:encoded><updated/></item><item><title>Using the AZ Rest CLI command</title><link>https://fskelly.github.io/post/using-the-az-rest-cli-command/</link><guid isPermaLink="true">https://fskelly.github.io/post/using-the-az-rest-cli-command/</guid><description>What are we doing? With this post I am going to show you how you can easily do Azure API calls and “skip” a lot of the difficult items. I ha...</description><pubDate>Thu, 29 Aug 2024 16:00:56 GMT</pubDate><content:encoded>&lt;p&gt;What are we doing?&lt;/p&gt;
&lt;p&gt;With this post I am going to show you how you can easily do Azure API calls and “skip” a lot of the difficult items. I have been on something interesting tools to help my customers, when I can talk more about it, I will. As part of this tooling exercise, the Azure REST API is used extensively. With “normal” applications like APIDog, ThunderClient and the like, you often need to get a token and then add this to the header as an auth object and this involves configuration on EntraID and the like. This is not necessarily the best approach for what I was looking for. I was looking for a quick testing framework for Azure REST API calls and then look at the output to be further extracted / manipulated with JQ.&lt;/p&gt;
&lt;p&gt;These are the principal / considerations&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;This is NOT designed to replace a full API solution like APIDog or Postman or ThunderClient&lt;/li&gt;
&lt;li&gt;Designed for quick queries against the Azure REST API&lt;/li&gt;
&lt;li&gt;Uses the currently logged on person credentials to run queries&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ok, so down to business, the tool/command that I am using is “az rest”. Using this tool is quite easy but thanks to some additional insights from a colleague in my team you can make it even easier. So, how do we use the command. Let’s say we wanted to make the following request – Virtual Machines – List.&lt;/p&gt;
&lt;p&gt;The command looks like this.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;GET&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines?api-version=2024-07-01&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We need to provide some variable(s) or information as marked by items in braces (“{}”), so we need to provide &lt;strong&gt;“subscriptionId”&lt;/strong&gt; and &lt;strong&gt;“resourceGroupName”&lt;/strong&gt;. I will endeavour to provide as much information as possible, however for safety reason, some items will be obfuscated.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Please remember to login first az login, as the az rest command uses the context of the currently authenticated to Azure user, hence no auth tokens.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here is a quick shell script to show this and allow you to test.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;# Set your variables here&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptionId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;&amp;#x3C;your_subscription_id&gt;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;&amp;#x3C;your_resource_group_name&gt;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;# Construct the URL&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;https://management.azure.com/subscriptions/&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptionId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;/resourceGroups/&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;/providers/Microsoft.Compute/virtualMachines?api-version=2024-07-01&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;# Use az rest command&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;az&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; rest&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; --method&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; get&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; --url&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; $url&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You will get a result similar to the below,&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2024/using-the-az-rest-cli-command/result1.png&quot; alt=&quot;az rest result&quot;&gt;
For me and the testing I am doing, this is a great, rapid and repeatable way of testing queries and quickly testing if the URI is valid before spending many hours troubleshooting the &lt;strong&gt;“why is this not working”&lt;/strong&gt; versus &lt;strong&gt;“is my URI correct”&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;What is also quite handy is the fact that the &lt;strong&gt;“&lt;a href=&quot;https://management.azure.com&quot;&gt;https://management.azure.com&lt;/a&gt;”&lt;/strong&gt; aspect can be dropped as this is already assumed, and as such you run a query directly against the ID to get more information or an ID returned from an Azure Resource Graph Query, with the correct API version appended in this example&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2024/using-the-az-rest-cli-command/result2.png&quot; alt=&quot;az rest result2&quot;&gt;&lt;/p&gt;
&lt;p&gt;Without the API Version appended&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2024/using-the-az-rest-cli-command/failure.png&quot; alt=&quot;failure&quot;&gt;&lt;/p&gt;
&lt;p&gt;With the correct API version appended 👍&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2024/using-the-az-rest-cli-command/image-4.png&quot; alt=&quot;failure&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2024/using-the-az-rest-cli-command/image-5.png&quot; alt=&quot;failure&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can now do the same process with other IDs that are returned.&lt;/p&gt;</content:encoded><updated/></item><item><title>Azure VMware Solution How Do I &apos;Monitor my SDDC Deployment&apos;</title><link>https://fskelly.github.io/post/azure-vmware-solution-how-do-i-monitor-sddc-deployment/</link><guid isPermaLink="true">https://fskelly.github.io/post/azure-vmware-solution-how-do-i-monitor-sddc-deployment/</guid><description>What are we doing? As I spend more time with my customers and my teams within my organization, I am learning that there a lot of aspects of...</description><pubDate>Tue, 21 Nov 2023 09:54:43 GMT</pubDate><content:encoded>&lt;h2 id=&quot;what-are-we-doing&quot;&gt;What are we doing?&lt;/h2&gt;
&lt;p&gt;As I spend more time with my customers and my teams within my organization, I am learning that there a lot of aspects of Azure VMware Solution that we take for granted and simply skim over as we assume (badly) that everyone knows exactly how to “the basics”. With this series of “How Do I” posts, I am going to try and address some of the more common questions that I get asked and hopefully provide some useful information to help you on your Azure VMware Solution journey. I will endeavour to copy as many topics as I can and I am always open to ideas and suggestions. You can reach out to me on &lt;a href=&quot;https://www.twitter.com/fskelly&quot;&gt;Twitter&lt;/a&gt; or post a suggestion for the log on &lt;a href=&quot;https://github.com/fskelly/flkelly-cloudblog/issues&quot;&gt;GitHub&lt;/a&gt; - please remember these are designed to be short and sweet and not full blown tutorials.&lt;/p&gt;
&lt;p&gt;For the start of this “series”, it will most likely cover topics or aspects that affect me day to day with multiple deployments and customers. As time goes on, I will try and expand the topics to cover more and more aspects of Azure VMware Solution.&lt;/p&gt;
&lt;h3 id=&quot;how-do-i-monitor-an-azure-vmware-solution-deployment&quot;&gt;How do I monitor an Azure VMware Solution deployment?&lt;/h3&gt;
&lt;p&gt;I often need to to deploy an !avsAzure VMware Solution Software Defined Data Center (SDDC) and then monitor the deployment to ensure that it is successful. I have a PowerShell script that monitors this for me and allows me to continue with other work. It works by getting the deployment status of the SDDC and then checking the status every 5 minutes until the deployment is complete. Once the deployment is complete, it will display a completed message and then you add whatever notification method you want. I save this file as &lt;a href=&quot;https://github.com/fskelly/flkelly-cloudblog/blob/main/blogFiles/2023/Azure-VMware-Solution-how-do-I/deployment-check/deployment-check.ps1&quot;&gt;deployment-check.ps1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I am well aware and hve contributed to the &lt;a href=&quot;https://github.com/Azure/Enterprise-Scale-for-AVS&quot;&gt;Enterprise-Scale-For-AVS&lt;/a&gt;, these are designed to augment this or to be used on their own and are not a replacement for the Enterprise-Scale-For-AVS scripts - if used by your organization.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I do have a bit of a backlog for some of these “how-to’s” so I will try and get them out as quickly as I can. If you have any suggestions or ideas, please let me know.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;&amp;#x3C;#&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;SYNOPSIS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;This script checks the deployment status of private clouds and monitors the provisioning process.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;DESCRIPTION&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;The script prompts the user to monitor a deployment or skip the deployment check. If the user chooses to monitor, it retrieves a list of private clouds and allows the user to select a private cloud to check the deployment status. It then continuously checks the provisioning status of the selected private cloud until it is no longer in the &quot;Building&quot; state.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;PARAMETER&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt; None&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;INPUTS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;None&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;OUTPUTS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;None&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;EXAMPLE&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;.\deployment-check.ps1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;Prompts the user to monitor a deployment and select a private cloud to check the deployment status.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;NOTES&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;Author: Your Name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;Date: Current Date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;#&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;#deployment check&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Waiting 60 seconds before checking deployment status&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Start-Sleep&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;s &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;60&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;YesOrNo &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Read-Host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Do you need to monitor a deployment (y/n)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;n&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -notcontains&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;YesOrNo &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;YesOrNo &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Read-Host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Please enter your response (y/n)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;YesOrNo &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Monitoring deployment&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt; else&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Skipping deployment check&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;    break&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateClouds &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzVMwarePrivateCloud&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloudCount &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateClouds.count&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Found &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloudCount&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; private clouds&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;i &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloud &lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateClouds&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cloudValue &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;i&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cloudText &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cloudValue &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; : &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloud.Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloud.ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; )&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloud.Location&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;  Write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cloudText&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;++&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;Do&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  [&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloudChoice &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; read-host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;prompt &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Select a private to check deployment &amp;#x26; press enter&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;until&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloudChoice &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-le&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloudCount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedprivateCloud &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;You selected &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateClouds&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloudChoice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.Name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedprivateCloud&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloudRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateClouds&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloudChoice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.resourcegroupname&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloudLocation &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateClouds&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloudChoice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.location&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cloudName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateClouds&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloudChoice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloud &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzVMwarePrivateCloud&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloudRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cloudName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;do&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloud &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzVMwarePrivateCloud&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloudRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cloudName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;provisioningStatus &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateCloud.provisioningState&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;timestamp &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; get-date&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Format &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;dd-MM-yyyy - HH:mm:ss&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;    switch&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;provisioningStatus&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Building&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;            $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;statusMessage &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Provisioning status for &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cloudName&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; is : &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;provisioningStatus &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;timestamp&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;            Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;statusMessage&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;            Start-Sleep&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Seconds &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;300&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;       }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Succeeded&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;            $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;statusMessage &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Provisioning status for &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cloudName&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; is : &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;provisioningStatus &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;timestamp&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;            Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;statusMessage&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;            break&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;       }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;        Default&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;            Start-Sleep&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Seconds &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;300&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;            $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;statusMessage &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Provisioning status for &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cloudName&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; is : &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;provisioningStatus &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;timestamp&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;            Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;statusMessage&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;   }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;   }&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt; until&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;provisioningStatus &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Building&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content:encoded><updated/></item><item><title>Azure VMware Solution Starter Links</title><link>https://fskelly.github.io/post/azure-vmware-solution-starter-links/</link><guid isPermaLink="true">https://fskelly.github.io/post/azure-vmware-solution-starter-links/</guid><description>What are we doing? Providing people with a list of useful links and blog posts to help you get grounded in Azure VMware Solution. Some of th...</description><pubDate>Thu, 26 Oct 2023 09:23:27 GMT</pubDate><content:encoded>&lt;h2 id=&quot;what-are-we-doing&quot;&gt;What are we doing?&lt;/h2&gt;
&lt;p&gt;Providing people with a list of useful links and blog posts to help you get grounded in Azure VMware Solution. Some of the links are very high-level and others are very detailed. Each link or blog post will address different items at different depths so you can hopefully find the exact link or information that you are looking for to make your journey in Azure VMware Solution a little easier.&lt;/p&gt;
&lt;h3 id=&quot;azure-vmware-solution-architecture&quot;&gt;Azure VMware Solution Architecture&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://learn.microsoft.com/en-us/azure/azure-vmware/media/concepts/adjacency-overview-drawing-double.png&quot; alt=&quot;On-premises inter connectivity&quot;&gt;&lt;/p&gt;





















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Topic&lt;/th&gt;&lt;th&gt;Reference&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Architectural components&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-vmware/introduction&quot;&gt;Introduction - Azure VMware Solution&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Network &amp;#x26; connectivity architecture(s)&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-network-topology-connectivity&quot;&gt;Enterprise-scale network topology and connectivity for Azure VMware Solution - Cloud Adoption Framework&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Service Level Agreement requirements&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1&quot;&gt;Licensing Documents (microsoft.com)&lt;/a&gt; - &lt;strong&gt;Download the latest version available and search for “Azure VMware Solution”&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;azure-vmware-solution-design&quot;&gt;Azure VMware Solution Design&lt;/h3&gt;





































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Topic&lt;/th&gt;&lt;th&gt;Reference&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Azure VMware Solution Azure Landing Zone Checklist&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://github.com/Azure/review-checklists&quot;&gt;Azure/review-checklists&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SDDC &amp;#x26; cluster design considerations&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-vmware/concepts-private-clouds-clusters&quot;&gt;Private clouds and clusters - Azure VMware Solution&lt;/a&gt;   •   &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-vmware/deploy-vsan-stretched-clusters&quot;&gt;Deploy vSAN stretched clusters - Azure VMware Solution&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;BCDR considerations&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-business-continuity-and-disaster-recovery&quot;&gt;Enterprise-scale BCDR for Azure VMware Solution - Cloud Adoption Framework&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Connectivity design considerations&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/example-architectures&quot;&gt;Enterprise-scale example architectures connectivity to Azure VMware Solution - Cloud Adoption Framework&lt;/a&gt;   • &lt;a href=&quot;https://techcommunity.microsoft.com/t5/itops-talk-blog/network-design-guide-for-azure-vmware-solution/ba-p/3832546&quot;&gt;Network Design Guide for Azure VMware Solution - Microsoft Community Hub&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Identity &amp;#x26; Access Management considerations&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-identity-and-access-management&quot;&gt;Enterprise-scale identity and access management - Azure VMware Solution - Cloud Adoption Framework&lt;/a&gt;   • &lt;a href=&quot;https://techcommunity.microsoft.com/t5/fasttrack-for-azure/configure-ldaps-within-azure-vmware-solution/ba-p/3725759&quot;&gt;Configure LDAPS within Azure VMware Solution - Microsoft Community Hub&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Storage considerations&lt;/td&gt;&lt;td&gt;•&lt;a href=&quot;https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring#storage-considerations&quot;&gt;Management and monitoring for Azure VMware Solution - Cloud Adoption Framework&lt;/a&gt;   • &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-vmware/concepts-storage&quot;&gt;Storage - Azure VMware Solution&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Security considerations&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-vmware/concepts-security-recommendations&quot;&gt;Security recommendations for Azure VMware Solution - Azure VMware Solution&lt;/a&gt;   • &lt;a href=&quot;https://learn.microsoft.com/en-us/security/benchmark/azure/baselines/azure-vmware-solution-security-baseline?toc=%2Fazure%2Fazure-vmware%2Ftoc.json&quot;&gt;Azure security baseline for Azure VMware Solution&lt;/a&gt;   • &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-security-governance-and-compliance#security&quot;&gt;Security, governance, and compliance disciplines for Azure VMware Solution - Cloud Adoption Framework&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;azure-vmware-solution-management-and-operations&quot;&gt;Azure VMware Solution Management and Operations&lt;/h3&gt;





































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Topic&lt;/th&gt;&lt;th&gt;Reference&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Hybrid management considerations&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-arc/servers/overview&quot;&gt;Azure Arc-enabled servers Overview - Azure Arc&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Governance considerations&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-vmware/faq#how-often-is-the-vmware-solution-software--esxi--vcenter-server--nsx-t-data-center--patched--updated--or-upgraded-in-the-azure-vmware-solution-private-cloud&quot;&gt;Azure VMware Solution - Platform management&lt;/a&gt;  • &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-security-governance-and-compliance#governance&quot;&gt;Security, governance, and compliance disciplines for Azure VMware Solution - Cloud Adoption Framework&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Log management considerations&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-vmware/configure-vmware-syslogs&quot;&gt;Configure VMware syslogs for Azure VMware Solution - Azure VMware Solution&lt;/a&gt;  • &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring#azure-tooling-recommendations&quot;&gt;Management and monitoring for Azure VMware Solution - Cloud Adoption Framework&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Performance monitoring considerations&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-vmware/configure-alerts-for-azure-vmware-solution&quot;&gt;Configure alerts and work with metrics in Azure VMware Solution - Azure VMware Solution&lt;/a&gt;  • &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring#azure-tooling-recommendations&quot;&gt;Management and monitoring for Azure VMware Solution - Cloud Adoption Framework&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Alerting considerations&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring#azure-tooling-recommendations&quot;&gt;Management and monitoring for Azure VMware Solution - Cloud Adoption Framework&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Elevated operations (run-commands)&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-vmware/concepts-run-command&quot;&gt;Concepts - Run Command in Azure VMware Solution (Preview) - Azure VMware Solution&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Azure VMware Solution Design Series&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://techcommunity.microsoft.com/t5/azure-migration-and/azure-vmware-solution-availability-design-considerations/ba-p/3682915&quot;&gt;Azure VMware Solution Availability Design Considerations&lt;/a&gt;    • &lt;a href=&quot;https://techcommunity.microsoft.com/t5/azure-migration-and/azure-vmware-solution-recoverability-design-considerations/ba-p/3746509&quot;&gt;Azure VMware Solution Recoverability Design Considerations&lt;/a&gt;   • &lt;a href=&quot;https://techcommunity.microsoft.com/t5/azure-migration-and/azure-vmware-solution-performance-design-considerations/ba-p/3903291&quot;&gt;Azure VMware Solution Performance Design Considerations&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;azure-vmware-solution-migrate&quot;&gt;Azure VMware Solution Migrate&lt;/h3&gt;
&lt;h4 id=&quot;assessment&quot;&gt;Assessment&lt;/h4&gt;

















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Topic&lt;/th&gt;&lt;th&gt;Reference&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Migration Assessment with Azure Migrate&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/migrate/how-to-create-azure-vmware-solution-assessment&quot;&gt;Create an Azure VMware Solution assessment with Azure Migrate - Azure Migrate&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;RVTools&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/architecture/solution-ideas/articles/azure-vmware-solution-foundation-capacity#discovery&quot;&gt;Azure VMware Solution capacity planning - Azure Solution Ideas&lt;/a&gt;  • &lt;a href=&quot;https://www.youtube.com/watch?v=2A-fOuNQWKc&quot;&gt;RVTools - The Ultimate free VMware Tool you need to have!&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h4 id=&quot;migration-tooling&quot;&gt;Migration Tooling&lt;/h4&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Topic&lt;/th&gt;&lt;th&gt;Reference&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;HCX&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/migrate/azure-best-practices/contoso-migration-vmware-to-azure&quot;&gt;Move on-premises VMware infrastructure to Azure VMWare Solution - Cloud Adoption Framework&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Zerto&lt;/td&gt;&lt;td&gt;•  &lt;a href=&quot;https://www.zerto.com/solutions/use-cases/cloud/microsoft-azure/&quot;&gt;Zerto on Microsoft Azure - Data Protection &amp;#x26; Recovery - Zerto&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Veeam&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://www.veeam.com/kb4012&quot;&gt;KB4012: Azure VMware Solution Support - Considerations and Limitations (veeam.com)&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Deploying HCX&lt;/td&gt;&lt;td&gt;•  &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-vmware/install-vmware-hcx&quot;&gt;Install and activate VMware HCX in Azure VMware Solution - Azure VMware Solution&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Configuring HCX&lt;/td&gt;&lt;td&gt;•  &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-vmware/configure-vmware-hcx&quot;&gt;Configure VMware HCX in Azure VMware Solution - Azure VMware Solution&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;other-tools-and-links&quot;&gt;Other tools and links&lt;/h3&gt;













&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Topic&lt;/th&gt;&lt;th&gt;Reference&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Azure VMware Solution Road map&lt;/td&gt;&lt;td&gt;• &lt;a href=&quot;https://azure.microsoft.com/en-us/updates/?query=%22azure%20vmware%20solution%22&quot;&gt;Azure updates - Azure VMware Solution&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</content:encoded><updated/></item><item><title>Starting Wth Rest Calls With AzCli With Some Copilot Help</title><link>https://fskelly.github.io/post/starting-wth-rest-calls-with-az-cli-with-some-co-pilot-help/</link><guid isPermaLink="true">https://fskelly.github.io/post/starting-wth-rest-calls-with-az-cli-with-some-co-pilot-help/</guid><description>What are we doing? I am working more and more with the Azure REST APIs now. My previous post using API with Powershell got me thinking about...</description><pubDate>Wed, 11 Oct 2023 12:34:50 GMT</pubDate><content:encoded>&lt;h2 id=&quot;what-are-we-doing&quot;&gt;What are we doing?&lt;/h2&gt;
&lt;p&gt;I am working more and more with the Azure REST APIs now. My &lt;a href=&quot;https://cloud.fskelly.com/post/2023/starting-wth-rest-calls-with-powershell/&quot;&gt;previous post using API with Powershell&lt;/a&gt; got me thinking about opening the idea to go beyond &lt;a href=&quot;https://learn.microsoft.com/en-us/powershell/scripting/overview&quot;&gt;PowerShell&lt;/a&gt;. I am very open with people around my lack of skill with &lt;a href=&quot;https://learn.microsoft.com/en-us/cli/azure/&quot;&gt;Azure CLI&lt;/a&gt;, I do however want to learn some new things.&lt;/p&gt;
&lt;p&gt;We also have this great technology called &lt;a href=&quot;https://github.com/features/copilot&quot;&gt;GitHub Copilot&lt;/a&gt; and &lt;a href=&quot;https://openai.com/blog/chatgpt&quot;&gt;ChatGPT&lt;/a&gt;, so I figured let me dig into “AI” as I am a techy at heart and let me improve my skills with Azure CLI.&lt;/p&gt;
&lt;p&gt;As a result, the script below actually has two “flavours” or options available in certain places. This is simply because the two different AI’s have different suggestions. I have left both in as I think it is interesting to see the differences and they actually work in slightly different ways. The one approach is to use the context of the currently logged on person and the other uses the “traditional” approach of using an app registration.&lt;/p&gt;
&lt;h2 id=&quot;constraints--limitations&quot;&gt;Constraints / limitations&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Primary focus is on the Azure API.&lt;/li&gt;
&lt;li&gt;Using Azure Tokens.&lt;/li&gt;
&lt;li&gt;Enterprise Application is already registered. (Not strictly needed for the CLI version that uses the currently logged on person’s context.)&lt;/li&gt;
&lt;li&gt;You have securely stored your secret for the above point.&lt;/li&gt;
&lt;li&gt;Designed to be modular - so you can run these in snippets/sections.&lt;/li&gt;
&lt;li&gt;This is &lt;strong&gt;NOT PRODUCTION&lt;/strong&gt; ready yet.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;lets-build-this&quot;&gt;Lets build this&lt;/h2&gt;
&lt;p&gt;Reminder, you will need to have an Application ID, Secret value and Tenant ID on hand as these are needed as part of the API call. &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app&quot;&gt;Here&lt;/a&gt; is a guide for registering an Azure AD application for testing purposes. Please note that additional controls are needed for production environments.&lt;/p&gt;
&lt;p&gt;For production scenarios, secret management should be used as the variables should &lt;strong&gt;NOT&lt;/strong&gt; be saved in the file, but instead in a &lt;a href=&quot;https://azure.microsoft.com/en-us/products/key-vault&quot;&gt;Azure Keyvault&lt;/a&gt; and then read out as needed in the script/function/…&lt;/p&gt;
&lt;p&gt;The process flow for this is as follows.&lt;br&gt;
Perform a rest API Call to get a token -&gt; Save Token in variable -&gt; Use saved variable for subsequent calls.&lt;/p&gt;
&lt;h3 id=&quot;get-azure-ad-token&quot;&gt;Get Azure AD Token&lt;/h3&gt;
&lt;p&gt;In this script I am using prompts and obfuscating in the script with the use of the &lt;em&gt;“-AsSecureString”&lt;/em&gt;. This will then save the acquired token in the &lt;strong&gt;$token&lt;/strong&gt; variable.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;#option 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Enter your Azure tenant ID: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; tenantId&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Enter your Azure client ID: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; clientId&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Enter your client secret: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; clientSecret&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;accessToken&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=$(&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; -X&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; POST&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; -d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;grant_type=client_credentials&amp;#x26;scope=https://management.azure.com/.default&amp;#x26;client_id=&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;$clientId&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;&amp;#x26;client_secret=&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;$clientSecret&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;https://login.microsoftonline.com/&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;$tenantId&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;/oauth2/v2.0/token&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt; jq&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.access_token&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Token is &lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;$accessToken&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;#option 2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;az&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; login&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; --scope&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; https://management.core.windows.net//.default&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Enter your Azure tenant ID: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; tenantId&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;#read -p &quot;Enter your Azure client ID: &quot; clientId&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;#read -sp &quot;Enter your client secret: &quot; clientSecret&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;authResult&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=$(&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;az&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; account&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; get-access-token&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; --tenant=&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;$tenantId&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; --query&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;accessToken&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; --output&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; tsv&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;$authResult&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ];&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt; then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Token is empty&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;else&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;    # Output the access token&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;    token&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=${&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;authResult&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;#*&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;access_token\&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;};&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; token&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=${&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;token&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;%%&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;*}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    echo&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Token is &lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;$token&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now we have our token and we can move onto the next phase, for this I am using a simple Rest API call to get my resource groups, but this token can be used for any api in the &lt;a href=&quot;https://management.azure.com/&quot;&gt;&lt;em&gt;&lt;strong&gt;“https://management.azure.com/”&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; scope, so this would NOT work for an Azure OpenAI Rest API call as the scope is different. A quick search with your choice of search engine will get the correct scope for that. I will create another blog about that soon.&lt;/p&gt;
&lt;h3 id=&quot;getting-resource-groups-with-an-api-call&quot;&gt;Getting resource groups with an API call&lt;/h3&gt;
&lt;p&gt;You will see here that the API call needs authorization (US Spelling) and we are using the token from earlier &lt;em&gt;“Authorization” = “Bearer $token”&lt;/em&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; -p&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Enter your subscription ID: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; subscriptionId&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;apiVersion&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;2020-09-01&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;# step below can be used to get the access token for the current session&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;#accessToken=$(az account get-access-token --resource=https://management.azure.com --query accessToken -o tsv)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;headers&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Authorization: Bearer &lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;$accessToken&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;uri&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;https://management.azure.com/subscriptions/&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;$subscriptionId&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;/resourcegroups?api-version=&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;$apiVersion&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;queryResult&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=$(&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; -H&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;$headers&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; -X&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; GET&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; $uri&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; $queryResult &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt; jq&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; -r&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.value[] | {name: .name, location: .location}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This same principle can be applied to any API call, just change the scope and the API call. I will be adding more to this as I go along, but this is a good start.&lt;/p&gt;</content:encoded><updated/></item><item><title>Starting Wth API Rest Calls With Powershell</title><link>https://fskelly.github.io/post/starting-wth-rest-calls-with-powershell/</link><guid isPermaLink="true">https://fskelly.github.io/post/starting-wth-rest-calls-with-powershell/</guid><description>What are we doing? I am working more and more with the Azure REST APIs now. My first dive into cost management was a big hit, so I am expand...</description><pubDate>Thu, 17 Aug 2023 08:09:54 GMT</pubDate><content:encoded>&lt;h2 id=&quot;what-are-we-doing&quot;&gt;What are we doing?&lt;/h2&gt;
&lt;p&gt;I am working more and more with the Azure REST APIs now. My &lt;a href=&quot;https://cloud.fskelly.com/post/2023/azure-cost-management-playing-with-api-in-powershell/&quot;&gt;first dive into cost management&lt;/a&gt; was a big hit, so I am expanding on that. The main consideration around that particular API is that is it open. By this, I mean a simple HTTP request will return results, no authentication or additional headers or the like are needed. So nice and easy. As we dive more into API and REST API’s, this is likely to change. This post, with more planned, is designed to make this easier and break it down into smaller chunks. THese chunks/snippets can be re-used and the principles in the chunks/snippets can be applied to other API’s. These in particular are aimed at Azure API’s.&lt;/p&gt;
&lt;h2 id=&quot;constraints--limitations&quot;&gt;Constraints / limitations&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Primary focus is on the Azure API.&lt;/li&gt;
&lt;li&gt;Using Azure Tokens.&lt;/li&gt;
&lt;li&gt;Enterprise Application is already registered.&lt;/li&gt;
&lt;li&gt;You have securely stored your secret for the above point.&lt;/li&gt;
&lt;li&gt;Designed to be modular - so you can run these in snippets/sections.&lt;/li&gt;
&lt;li&gt;This is &lt;strong&gt;NOT PRODUCTION&lt;/strong&gt; ready yet.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;lets-build-this&quot;&gt;Lets build this&lt;/h2&gt;
&lt;p&gt;Reminder, you will need to have an Application ID, Secret value and Tenant ID on hand as these are needed as part of the API call. &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app&quot;&gt;Here&lt;/a&gt; is a guide for registering an Azure AD application for testing purposes. Please note that additional controls are needed for production environments.&lt;/p&gt;
&lt;p&gt;For production scenarios, secret management should be used as the variables should &lt;strong&gt;NOT&lt;/strong&gt; be saved in the file, but instead in a &lt;a href=&quot;https://azure.microsoft.com/en-us/products/key-vault&quot;&gt;Azure Keyvault&lt;/a&gt; and then read out as needed in the script/function/…&lt;/p&gt;
&lt;p&gt;The process flow for this is as follows.&lt;br&gt;
Perform a rest API Call to get a token -&gt; Save Token in variable -&gt; Use saved variable for subsequent calls.&lt;/p&gt;
&lt;h3 id=&quot;get-azure-ad-token&quot;&gt;Get Azure AD Token&lt;/h3&gt;
&lt;p&gt;In this script I am using prompts and obfuscating in the script with the use of the &lt;em&gt;“-AsSecureString”&lt;/em&gt;. This will then save the acquired token in the &lt;strong&gt;$token&lt;/strong&gt; variable.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;tenantId &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Read-Host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Enter your Azure tenant ID&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;clientID &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Read-Host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Enter your Azure client ID&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;clientSecret &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Read-host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;enter your client secret&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;AsSecureString&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;normalString &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;System.Runtime.InteropServices.Marshal&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;::PtrToStringAuto&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;System.Runtime.InteropServices.Marshal&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;::SecureStringToBSTR&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;clientSecret&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;params &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;    Uri &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;https://login.microsoftonline.com/&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;tenantId&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;/oauth2/v2.0/token&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;    Method &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;POST&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;    Body &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;        grant_type &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;client_credentials&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;        scope &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;https://management.azure.com/.default&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;        client_id &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;clientID&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;        client_secret &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;normalString&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;authResult &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Invoke-RestMethod&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;params&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;# Output the access token&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;token &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;authResult.access_token&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now we have our token and we can move onto the next phase, for this I am using a simple Rest API call to get my resource groups, but this token can be used for any api in the &lt;a href=&quot;https://management.azure.com/&quot;&gt;&lt;em&gt;&lt;strong&gt;“https://management.azure.com/”&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; scope, so this would NOT work for an Azure OpenAI Rest API call as the scope is different. A quick search with your choice of search engine will get the correct scope for that. I will create another blog about that soon.&lt;/p&gt;
&lt;h3 id=&quot;getting-resource-groups-with-an-api-call&quot;&gt;Getting resource groups with an API call&lt;/h3&gt;
&lt;p&gt;You will see here that the API call needs authorization (US Spelling) and we are using the token from earlier &lt;em&gt;“Authorization” = “Bearer $token”&lt;/em&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptionId &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; read-host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Enter your subscription ID&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;apiVersion &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;2020-09-01&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;headers &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Authorization&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Bearer &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;token&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;params &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;    Uri &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;https://management.azure.com/subscriptions/&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptionId&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;/resourcegroups?api-version=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;apiVersion&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;    Method &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;GET&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;queryResult &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Invoke-RestMethod&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;params &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Headers &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;headers &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;queryResult.value &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; select-object&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Property name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;location&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This same principle can be applied to any API call, just change the scope and the API call. I will be adding more to this as I go along, but this is a good start.&lt;/p&gt;</content:encoded><updated/></item><item><title>Can I run this cheaper? Use case for the Azure Cost Management API</title><link>https://fskelly.github.io/post/azure-cost-management-playing-with-api-in-powershell/</link><guid isPermaLink="true">https://fskelly.github.io/post/azure-cost-management-playing-with-api-in-powershell/</guid><description>What are we doing? I was given inspiration by a colleague, Ben Hummerstone who used a Azure Python Function, whilst super cool and interesti...</description><pubDate>Thu, 03 Aug 2023 14:24:21 GMT</pubDate><content:encoded>&lt;h2 id=&quot;what-are-we-doing&quot;&gt;What are we doing?&lt;/h2&gt;
&lt;p&gt;I was given inspiration by a colleague, &lt;a href=&quot;https://www.linkedin.com/in/bhummerstone/&quot;&gt;Ben Hummerstone&lt;/a&gt; who used a &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-functions/functions-reference-python?tabs=asgi%2Capplication-level&amp;#x26;pivots=python-mode-configuration&quot;&gt;Azure Python Function&lt;/a&gt;, whilst super cool and interesting, I am a PowerShell advocate through and through. So I used PowerShell and wrote a script to show some of the use cases. This is just the tip of the iceberg and the script has been built to show some of the options available.&lt;/p&gt;
&lt;h2 id=&quot;constraints--limitations&quot;&gt;Constraints / limitations&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;The primary focus of this script is IaaS.&lt;/li&gt;
&lt;li&gt;Could be better implemented as a function. If there is enough of an ask, I might build this into a function.&lt;/li&gt;
&lt;li&gt;Built for my sample use cases.&lt;/li&gt;
&lt;li&gt;This is a quick and dirty implementation.&lt;/li&gt;
&lt;li&gt;This is &lt;strong&gt;NOT PRODUCTION&lt;/strong&gt; ready yet.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;lets-build-this&quot;&gt;Lets build this&lt;/h2&gt;
&lt;h3 id=&quot;steps&quot;&gt;Steps&lt;/h3&gt;
&lt;p&gt;You will need the following&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;PowerShell&lt;/li&gt;
&lt;li&gt;An understanding of the Cost API (Insert link here)&lt;/li&gt;
&lt;li&gt;Willingness to learn and experiment&lt;/li&gt;
&lt;li&gt;Postman or the Postman VS Code extension is great for testing, however a normal browser will also return the required details.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In essence, there are snippets of code built into one bigger script.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Login and list all subscriptions you have access to then pick one to get the vms against.&lt;/li&gt;
&lt;li&gt;Check for vms with the same in different resource groups.&lt;/li&gt;
&lt;li&gt;We perform an overall call for data.&lt;/li&gt;
&lt;li&gt;Check for pagination - as the results are returned 100 rows at a time.&lt;/li&gt;
&lt;li&gt;We filter the data - we remove Spot and Low Priority Items.&lt;/li&gt;
&lt;li&gt;We find cheaper options with the above filter applied.&lt;/li&gt;
&lt;li&gt;We can check against specific regions, again with the filter from step2 applied. Was interesting to get the formatting correct here. :)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I will do my best to explain the script, I have also added comments. Please use this as a base and modify as needed. This scripts only &lt;strong&gt;GETS&lt;/strong&gt; information, there are &lt;strong&gt;NO WRITES/SETS&lt;/strong&gt; in this script. This is by design, please add this functionality yourself.&lt;/p&gt;
&lt;p&gt;The snippet below, is designed to allow you to log into Azure (Azure Commercial by default) and then list all the subscriptions you have access to and present a list and then connect to the selected subscription.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Select-SubscriptionsAndConnectTo&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;    Login&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;AzAccount&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptions &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzSubscription&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Select-Object&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; Name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;SubscriptionId &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Sort-Object&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; Name &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    [&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptionCount &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptions.count&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Found&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptionCount &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Subscriptions&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;i &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscription &lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptions&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subValue &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;i&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subText &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subValue &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; : &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscription.Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; ( &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscription.SubscriptionId &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; ) &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;        Write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subText&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;++&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;    Do&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        [&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptionChoice &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; read-host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;prompt &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Select number &amp;#x26; press enter&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    }&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;    until&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptionChoice &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-le&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptionCount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedSub &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;You selected &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptions&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptionChoice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.Name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedSub&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Set-AzContext&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;SubscriptionId &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptions&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;subscriptionChoice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.SubscriptionId&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Select-SubscriptionsAndConnectTo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Get VMs and check if the same VM name is used in multiple resource groups.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## getting all vms in a subscription&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;vms &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzVM&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;vms &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Select-Object&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; Name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Location&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;VMSize&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;={$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.HardwareProfile.VmSize&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}}|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Sort-Object&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Format-Table&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;AutoSize&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## reading in virtual machines&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedVmName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; read-host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Which VM would you like to check for better pricing?&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedRGName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;vms &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Where-Object&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedVmName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Select-Object&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; ResourceGroupName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## checking for duplicate names in multiple resource groups&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedRGName.count &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-gt&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgCount &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedRGName.count&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Found multiple VMs with the same name in different resource groups&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgNames &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedRGName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Select-Object&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; ResourceGroupName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;    #write-output $rgNames.resourcegroupname&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;i &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgNames&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgValue &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;i&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgText &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgValue &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; : &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgName.ResourceGroupName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;        Write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgText&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;++&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;    Do&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        [&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgChoice &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; read-host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;prompt &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Select number &amp;#x26; press enter&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    }&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;    until&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgChoice &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-le&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgCount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedRGText &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;You selected &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedRGName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgChoice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.ResourceGroupName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedRGText&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedRG &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedRGName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgChoice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.ResourceGroupName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;    ## selecting the vm from the selected resource group&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;azureVm &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; get-azvm&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedRG &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedVmName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt; else&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;    ## selecting the vm from the selected resource group&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;azureVm &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; get-azvm&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedRGName.ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;selectedVmName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Getting information about the selected VM and establishing the current base price.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## building variables for api call&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;azureVMSKU &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;azureVm.HardwareProfile.VmSize&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;azureVmLocation &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;azureVm.Location&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## api variables&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;apiUrl &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;https://prices.azure.com/api/retail/prices?&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;armSkuName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;azureVMSKU&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## get base information around pricing&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;baseFilter &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;armSkuName eq &apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;armSkuName&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;&apos; and priceType eq &apos;Consumption&apos; and armRegionName eq &apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;azureVmLocation&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;baseUrl &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;apiUrl &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;`$&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;filter=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;baseFilter&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Current Url is &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;baseUrl&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;baseJsonData &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Invoke-RestMethod&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Uri &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;baseUrl &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Method Get&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## selecting most expensive price&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;baseVMPrice &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;baseJsonData.Items  &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Where-Object&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.skuName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-notlike&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;*Spot*&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.skuName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-notlike&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;*Low Priority*&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; }&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Sort-Object&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; unitPrice &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Descending &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Select-Object&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Last &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.unitPrice&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## formatting for results&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;baseVMPrice &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{0:N4}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;baseVMPrice&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Base price is &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;baseVMPrice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Build an array to store the information for later manipulation and sorting. Filter out “Low Priority” and “Spot VMs” and deal with pagination.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## get all pricing data for the selected vm&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;filter &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;armSkuName eq &apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;armSkuName&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;&apos; and priceType eq &apos;Consumption&apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;allItems &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;# Run Query&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;url &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;apiUrl &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;`$&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;filter=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Current Url is &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;currentJsonData &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Invoke-RestMethod&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Uri &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;url &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Method Get&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;allItems &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;currentJsonData.Items&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;# pagination&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;NextPage &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;currentJsonData.NextPageLink&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;NextPage&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-Verbose&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Current Url is &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;NextPage&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;currentJsonData &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Invoke-RestMethod&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Uri &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;NextPage &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Method Get&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;allItems &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;currentJsonData.Items&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;NextPage &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;currentJsonData.NextPageLink&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;# filter out spot and low priority item from array&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;filteredItems &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;allItems &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Select-Object&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; skuName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; meterName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; unitOfMeasure&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;unitPrice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{0:N4}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.unitPrice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}},&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; armRegionName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Where-Object&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.skuName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-notlike&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;*Spot*&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.skuName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-notlike&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;*Low Priority*&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Total items: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;filteredItems.Count&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;#$filteredItems&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;filteredItems &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Sort-Object&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Property unitPrice &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Format-Table&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;AutoSize&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cheaperOptions &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;filteredItems &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Where-Object&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Property unitPrice &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-lt&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;baseVMPrice &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Sort-Object&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Property unitPrice&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Cheaper than &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;baseVMPrice&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; options: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cheaperOptions.Count&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cheaperOptions &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Format-Table&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Property skuName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; meterName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; unitOfMeasure&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;unitPrice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{0:N4}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.unitPrice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}},&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; armRegionName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;AutoSize&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I have also included an option to check against specific regions if that is something you would like to do. You will get prompted if you want to check against other regions. A &lt;strong&gt;Y&lt;/strong&gt; will continue to ask which regions, this is a comma seperated list, &lt;em&gt;swedencentral,westeurope&lt;/em&gt; (as an example). A &lt;strong&gt;N&lt;/strong&gt; will simply stop the script.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## how to check against specific regions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionCheck &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; read-host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Would you like to check against specific regions? (y/n)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;while&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;n&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -notcontains&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionCheck&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionCheck &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; read-host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Would you like to check against specific regions? (y/n)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionCheck &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;specificRegions &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; read-host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;please enter region names separated by comma&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;specificRegions &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;specificRegions.split&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionItems &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionQueryBaseUrlFilter &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;armSkuName eq &apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;armSkuName&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;&apos; and priceType eq &apos;Consumption&apos; &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;    foreach&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;item &lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;specificRegions&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;item&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionQueryBaseUrlFilter &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;armSkuName eq &apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;armSkuName&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;&apos; and priceType eq &apos;Consumption&apos; &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionQueryBaseUrlFilter &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionQueryBaseUrlFilter &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;and armRegionName eq &apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;&apos; &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionQueryBaseUrlFilter&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionQueryUrl &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;apiUrl &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;`$&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;filter=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionQueryBaseUrlFilter&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;otherRegionJsonData &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Invoke-RestMethod&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Uri &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionQueryUrl &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Method Get&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionItems &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;otherRegionJsonData.Items&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;NextPage &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;otherRegionJsonData.NextPageLink&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;        while&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;NextPage&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;            Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Current Url is &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;NextPage&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;            $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;otherRegionJsonData &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Invoke-RestMethod&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Uri &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;NextPage &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Method Get&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;            $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionItems &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;otherRegionJsonData.Items&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;            $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;NextPage &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;otherRegionJsonData.NextPageLink&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;    &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Output below&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;regionItems &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Where-Object&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.skuName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-notlike&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;*Spot*&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.skuName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-notlike&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;*Low Priority*&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; }&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Format-Table&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Property skuName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; meterName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; unitOfMeasure&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;unitPrice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;={&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{0:N4}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.unitPrice&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}},&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; armRegionName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;AutoSize&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Full script can be found &lt;a href=&quot;https://github.com/fskelly/flkelly-AzureCode-powershell/blob/main/cost-management/get-vms-list-costings.ps1&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</content:encoded><updated/></item><item><title>New LDAPS run-command for Azure VMware Solution</title><link>https://fskelly.github.io/post/avs-new-ldaps-run-command/</link><guid isPermaLink="true">https://fskelly.github.io/post/avs-new-ldaps-run-command/</guid><description>What are we doing? Showing a newer version of the New LDAPSIDentitySource Run Command within Azure VMware Solution Lets build this If you ha...</description><pubDate>Fri, 19 May 2023 08:39:57 GMT</pubDate><content:encoded>&lt;h2 id=&quot;what-are-we-doing&quot;&gt;What are we doing?&lt;/h2&gt;
&lt;p&gt;Showing a newer version of the New-LDAPSIDentitySource Run-Command within Azure VMware Solution&lt;/p&gt;
&lt;h2 id=&quot;lets-build-this&quot;&gt;Lets build this&lt;/h2&gt;
&lt;p&gt;If you have been following along and you have used our previous article(s) - &lt;a href=&quot;https://cloud.fskelly.com/post/2023/avs-ldaps-configure-part1/&quot;&gt;AZURE VMWARE SOLUTION: A COMPREHENSIVE GUIDE TO LDAPS IDENTITY INTEGRATION - PART 1&lt;/a&gt; - you would have realized that this quite a process. We took our many customers feedback to our Product Group (PG) within &lt;a href=&quot;https://www.microsoft.com&quot;&gt;Microsoft&lt;/a&gt; and we have worked with them, to create a new version of the “Run-Command” and this has been released publicly.&lt;/p&gt;
&lt;p&gt;You are looking for the “5.3.54” version of the run commands and “New-LDAPSIdentitySource”&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-new-ldaps-run-command/new-avs-run-command-version.png&quot; alt=&quot;new version of the tools&quot;&gt;&lt;/p&gt;
&lt;p&gt;You will notice that the “SSLCertificateSasUrl” field is now &lt;strong&gt;OPTIONAL&lt;/strong&gt;. The “i” information bubble will now explain how it works. Basically the service now looks for the Domain Controllers based upon the information you provide and now connects and attempts to download the certificates automatically. Provided you have the pre-requisites in place, Like a Certificate Authority (CA), this works really well and speeds up the process tremendously and removes lot of complexity like dealing with Stroage Accounts, uploading the certificates and creating the required SAS Tokens.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-new-ldaps-run-command/new-avs-run-command-new-1.png&quot; alt=&quot;information block explaining the new process&quot;&gt;&lt;/p&gt;
&lt;p&gt;A very welcome change.&lt;/p&gt;</content:encoded><updated/></item><item><title>Azure VMware Solution: A comprehensive guide to LDAPS identity integration - Part 1</title><link>https://fskelly.github.io/post/avs-ldaps-configure-part1/</link><guid isPermaLink="true">https://fskelly.github.io/post/avs-ldaps-configure-part1/</guid><description>Author(s): Robin Heringa and Fletcher Kelly Implementing LDAPS identity integration with Azure VMware Solution series 1 of 4 This is the fir...</description><pubDate>Wed, 25 Jan 2023 08:45:43 GMT</pubDate><content:encoded>&lt;p&gt;Author(s): &lt;a href=&quot;/about/robinheringa/&quot;&gt;Robin Heringa&lt;/a&gt; and &lt;a href=&quot;/about/fletcherkelly/&quot;&gt;Fletcher Kelly&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&quot;implementing-ldaps-identity-integration-with-azure-vmware-solution-series---1-of-4&quot;&gt;Implementing LDAPS identity integration with Azure VMware Solution series - 1 of 4&lt;/h1&gt;
&lt;p&gt;This is the first part of the blog series on how to implement LDAPS identity integration with Azure VMware Solution. Other parts of this series can be found here:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;../avs-ldaps-configure-part2/&quot;&gt;LDAPS integration - part 2 of 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../avs-ldaps-configure-part3/&quot;&gt;LDAPS integration - part 3 of 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../avs-ldaps-configure-part4/&quot;&gt;LDAPS integration - part 4 of 4&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Azure VMware Solution (AVS) offers a fully managed software defined data center based on VMware vSphere technologies in the shape of an Azure PaaS service. The PaaS nature of Azure VMware Solution results in a service that is functionally equivalent to your well-known on-premises VMware deployment you may have been using for years with some specific “restrictions” as Microsoft provides a service level agreement and therefor Microsoft is responsible for ensuring a robust and resilient platform in deployment and operation.  Azure VMware Solution is functionally equivalent to on-premises VMware but due to the PaaS nature of the service there are significant technical differences to properly consider.&lt;/p&gt;
&lt;h2 id=&quot;run-commands-for-higher-privileged-operations&quot;&gt;Run-Commands for high(er) privileged operations&lt;/h2&gt;
&lt;p&gt;As a consumer of Azure VMware Solution, you are granted limited administrative privileges that are aligned with the PaaS nature of the service. You are granted access to the CloudAdmin role which holds a subset of the full administrator role. As it is at times needed to allow for “privilege escalation”, Microsoft has enabled you to do so using a feature in the Azure AVS portal blades called “Run-Commands”. Run-Commands allow you to perform a selected number of high privileged actions without requiring the need to submit a service request through Azure Support from the Azure Portal. More details on Run-Commands can be found on Microsoft Learn &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-vmware/concepts-run-command&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To integrate your Azure VMware Solution SDDC with a directory services provider, in our case Active Directory, we will use a Run-Command: New-LDAPSIdentitySource.&lt;/p&gt;
&lt;h2 id=&quot;our-azure-vmware-solution-lab-environment&quot;&gt;Our Azure VMware Solution lab environment&lt;/h2&gt;
&lt;p&gt;To allow us to create this article using “understandable” values for the prerequisites and the parameters required to successfully implement the LDAPS identity integration, we have created a lab environment which is shown in the picture below. Using this picture as a reference we hope to make it easier for anyone to implement LDAPS integration by simply replacing the prerequisite values and parameters (displayed in bold through-out this document) with the values applicable to your environment by simply comparing with our lab and easily translating this to what is applicable for your deployment.&lt;/p&gt;
&lt;p&gt;Our lab consists of:&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Required resources:&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;One Azure VMware Solution Private Cloud called&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;avs-fta-gwc&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;One Active Directory forest and domain called&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;avsemea.com&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Two Active Directory domain controllers called&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;avs-gwc-dc001&lt;/strong&gt; and &lt;strong&gt;avs-gwc-dc002&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;One Active Directory hosted enterprise root certificate authority called&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;avsemea-avs-gwc-rootca&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;One Azure Virtual WAN called&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;avs-germanywestcentral-vwan1&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;One jumpbox virtual machine used for management activities called&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;avs-gwc-jumpbox&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;One Azure Virtual Network called&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;avs-gwc-172_16_11_0-24&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;This vnet holds three separate subnets called&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;SN-172_16_11_0-26-ADDS&lt;/strong&gt;, &lt;strong&gt;AzureBastionSubnet&lt;/strong&gt; and &lt;strong&gt;SN-172_16_11_128-26&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;All virtual machines used in the lab are joined to the above mentioned avsemea.com domain
Our lab environment also holds some additional resources that are not required for the LDAPS integration but they will be used when creating additional articles on different Azure VMware related topics just like this one.&lt;/p&gt;





















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Optional resources for future use:&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Two NSX-T segments inside our AVS SDDC called&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;NSX-SN-192-168-200-0-24&lt;/strong&gt; and &lt;strong&gt;NSX-SN-192-168-201-0-24&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;One virtual machine for forwarding additional metrics from our AVS SDDC to the Azure Metrics infrastructure called&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;avs-gwc-metrics001&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;One Azure NetAppFiles account that will be used as extensible storage for our AVS SDDC in a later article called&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;avs-gwc-anfaccount001&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;A graphical representation of our lab environment is shown below:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part1/FTA-lab-environment.jpg&quot; alt=&quot;FTA Lab Environment&quot;&gt;&lt;/p&gt;
&lt;p&gt;While guiding you through the process of gathering all required details and artifacts and using them to complete the LDAPS integration for AVS, we assume that you have all resources mentioned in the table required resources available and that sufficient access permissions are in place.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/fskelly/flkelly-cloudblog/blob/main/content/post/2023/avs-ldaps-configure-part1/snippets.ps1&quot;&gt;snippets.ps1 file (all code commands)&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;../avs-ldaps-configure-part2/&quot;&gt;Next&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><updated/></item><item><title>Azure VMware Solution: A comprehensive guide to LDAPS identity integration - Part 4</title><link>https://fskelly.github.io/post/avs-ldaps-configure-part4/</link><guid isPermaLink="true">https://fskelly.github.io/post/avs-ldaps-configure-part4/</guid><description>Author(s): Robin Heringa and Fletcher Kelly Implementing LDAPS identity integration with Azure VMware Solution series 4 of 4 This is the fou...</description><pubDate>Wed, 25 Jan 2023 08:45:43 GMT</pubDate><content:encoded>&lt;p&gt;Author(s): &lt;a href=&quot;/about/robinheringa/&quot;&gt;Robin Heringa&lt;/a&gt; and &lt;a href=&quot;/about/fletcherkelly/&quot;&gt;Fletcher Kelly&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&quot;implementing-ldaps-identity-integration-with-azure-vmware-solution-series---4-of-4&quot;&gt;Implementing LDAPS identity integration with Azure VMware Solution series - 4 of 4&lt;/h1&gt;
&lt;p&gt;This is the fourth and final part of the blog series on how to implement LDAPS identity integration with Azure VMware Solution. Other parts of this series can be found here:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;../avs-ldaps-configure-part1/&quot;&gt;LDAPS integration - part 1 of 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../avs-ldaps-configure-part2/&quot;&gt;LDAPS integration - part 2 of 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../avs-ldaps-configure-part3/&quot;&gt;LDAPS integration - part 3 of 4&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These steps, for now, are run manually from the Azure Portal. This will be found “Azure VMware Solution” and under Operations, Run command. Then select “New-LDAPSIdentitySource”. An automated way of executing the run-command is in the making. Please check back soon as this article will be updated as soon as this is available.
Navigate to Azure Portal and ensure you are on AVS Private Cloud blade&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the AVS Private Cloud blade, click “Run Command”;&lt;/li&gt;
&lt;li&gt;Ensure Packages is selected.&lt;/li&gt;
&lt;li&gt;Click “New-LDAPSIdentitySource”.&lt;/li&gt;
&lt;li&gt;Ensure the correct Run is open before populating the required information.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part4/1-run-command-1.jpg&quot; alt=&quot;run-command-pane&quot;&gt;&lt;/p&gt;
&lt;p&gt;Populate the information as needed.&lt;/p&gt;
&lt;p&gt;The SSLCertificateSasUrl is a single string consisting of the SASTokens separated with a ”&lt;strong&gt;,&lt;/strong&gt;”. For example:
{{&amp;#x3C; highlight go &gt;}}
&lt;a href=&quot;https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc001.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;%5BRemoved%5D,https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc002.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;%5BRemoved&quot;&gt;https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc001.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;[Removed],https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc002.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;[Removed&lt;/a&gt;]
{{&amp;#x3C; /highlight &gt;}} and &lt;strong&gt;pasted as a single long string&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example string:&lt;/strong&gt;
{{&amp;#x3C; highlight shell &gt;}}
&lt;a href=&quot;https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc001.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;%5BRemoved%5D,https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc002.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;%5BRemoved%5D%7B%7B&quot;&gt;https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc001.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;[Removed],https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc002.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;[Removed]{{&lt;/a&gt;&amp;#x3C; /highlight &gt;}}&lt;/p&gt;
&lt;p&gt;The other values would need to be updated as per your environment. The BaseDNGroups and BaseDNUsers are the &lt;strong&gt;D&lt;/strong&gt;istinguished &lt;strong&gt;N&lt;/strong&gt;ames  for the groups and users. These can be found using the ADSIedit tool and navigating to the required groups within Active Directory and noting down these values. More information can be here about &lt;a href=&quot;https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ldap/distinguished-names&quot;&gt;Distinguished Names&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With the BaseDNGroups and BaseDNUsers, watch the values used as these should be under the same tree. In this example, &lt;strong&gt;“OU=Corp,DC=avsemea,DC=com”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2023/avs-ldaps-configure-part4/2-run-command-populated.jpg&quot; alt=&quot;run-command-pane&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2023/avs-ldaps-configure-part4/3-run-command-run.jpg&quot; alt=&quot;run-command-execute&quot;&gt;&lt;/p&gt;
&lt;p&gt;Once all information is entered, Run the command. You can check the status of the Run command within the portal.
Navigate to Azure Portal and ensure you are on AVS Private Cloud blade&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the AVS Private Cloud blade, click “Run Command”;&lt;/li&gt;
&lt;li&gt;Ensure “Run execution status” is selected.&lt;/li&gt;
&lt;li&gt;Click the latest run execution that is applicable to your environment. In this case, &lt;strong&gt;New-LDAPSIdentitySource-Exec33&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Ensure you click the Execution name (3.) that is the running state.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2023/avs-ldaps-configure-part4/4-run-command-execution-status.jpg&quot; alt=&quot;run-command-execute-status&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can check the status of the job now and you are waiting for all the tasks to be completed and show that your selected group was added to CloudAdmins
Once you have clicked the Execution name link&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check the information tab to see the steps being executed by the script;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2023/avs-ldaps-configure-part4/5-run-command-execution-status-2.jpg&quot; alt=&quot;run-command-execute&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can also check the output and ensure that the correct name was added.
Once you have clicked the Execution name link&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check the Output tab to see the steps being executed by the script;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2023/avs-ldaps-configure-part4/6-run-command-execution-status-3.jpg&quot; alt=&quot;run-command-execute-1&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can log on with LDAP based credentials. Using the link found under “VMware credentials”, navigate to vCenter Server Credentials Web client URL
Navigate to Azure Portal and ensure you are on AVS Private Cloud blade&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the AVS Private Cloud blade, click “VMware credentials”;&lt;/li&gt;
&lt;li&gt;Click the copy icon for the WebClient URL under “vCenter Server credentials”&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2023/avs-ldaps-configure-part4/7-vmware-creds.jpg&quot; alt=&quot;vmware-urls&quot;&gt;&lt;/p&gt;
&lt;p&gt;Navigate to the URL with your browser of choice and use your Directory Services based credentials to ensure that login and authentication is working as expected.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2023/avs-ldaps-configure-part4/8-vmware-external-creds-checking-1.jpg&quot; alt=&quot;ldaps vmware url logon 1&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part4/9-vmware-external-creds-checking-2.jpg&quot; alt=&quot;ldaps vmware url logon 2&quot;&gt;&lt;/p&gt;
&lt;p&gt;Logon to Azure VMware Solution based components is now possible and should be now be working as expected.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/fskelly/flkelly-cloudblog/blob/main/content/post/2023/avs-ldaps-configure-part1/snippets.ps1&quot;&gt;snippets.ps1 file (all code commands)&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;../avs-ldaps-configure-part3/&quot;&gt;&amp;#x3C; Previous&lt;/a&gt;&lt;/p&gt;</content:encoded><updated/></item><item><title>Azure VMware Solution: A comprehensive guide to LDAPS identity integration - Part 2</title><link>https://fskelly.github.io/post/avs-ldaps-configure-part2/</link><guid isPermaLink="true">https://fskelly.github.io/post/avs-ldaps-configure-part2/</guid><description>Author(s): Robin Heringa and Fletcher Kelly Implementing LDAPS identity integration with Azure VMware Solution series 2 of 4 This is the sec...</description><pubDate>Wed, 25 Jan 2023 08:45:43 GMT</pubDate><content:encoded>&lt;p&gt;Author(s): &lt;a href=&quot;/about/robinheringa/&quot;&gt;Robin Heringa&lt;/a&gt; and &lt;a href=&quot;/about/fletcherkelly/&quot;&gt;Fletcher Kelly&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&quot;implementing-ldaps-identity-integration-with-azure-vmware-solution-series---2-of-4&quot;&gt;Implementing LDAPS identity integration with Azure VMware Solution series - 2 of 4&lt;/h1&gt;
&lt;p&gt;This is the second part of the blog series on how to implement LDAPS identity integration with Azure VMware Solution. Other parts of this series can be found here:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;../avs-ldaps-configure-part1/&quot;&gt;LDAPS integration - part 1 of 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../avs-ldaps-configure-part3/&quot;&gt;LDAPS integration - part 3 of 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../avs-ldaps-configure-part4/&quot;&gt;LDAPS integration - part 4 of 4&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;configure-dns-forwarding-prerequisite&quot;&gt;Configure DNS forwarding prerequisite&lt;/h2&gt;
&lt;p&gt;Before we can configure integration with an external identity store (e.g. Active Directory Domain Services) we need to make sure that the AVS platform components have the ability to resolve customer DNS zones hosting the LDAPS domain records. This configuration must be made through the Azure Portal blades for Azure VMware Solution.&lt;/p&gt;
&lt;h2 id=&quot;open-the-azure-vmware-solution-dns-configuration-pane&quot;&gt;Open the Azure VMware Solution DNS configuration pane&lt;/h2&gt;
&lt;p&gt;The first step in configuring DNS name resolution from the Azure VMware Solution networks (management and workload segments) is to add a DNS zone for Azure VMware.
Login to the Azure Portal and select the Azure Active Directory tenant and Azure subscription where you have deployed your Azure VMware Solution Private Cloud.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part2/open-DNS-configuration-pane.jpg&quot; alt=&quot;Open DNS Configuration&quot;&gt;&lt;/p&gt;
&lt;p&gt;As depicted in the image above:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click on “Azure VMware Solution” in the main navigation pane;&lt;/li&gt;
&lt;li&gt;Click the Azure VMware Solution Private Cloud you want to configure. In our scenario walk-through we select &lt;strong&gt;avs-fta-gwc&lt;/strong&gt; as per the description of our lab environment used;&lt;/li&gt;
&lt;li&gt;In the navigation pane that now opened, scroll down to the section “Workload networking” and select “DNS”.
The Azure Portal blade for configuring the Azure VMware Solution DNS configuration will now open.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;configure-the-required-dns-zones-details&quot;&gt;Configure the required DNS zones details&lt;/h2&gt;
&lt;p&gt;The Azure VMware Solution DNS configuration pane opens the section where “conditional DNS forwarder” zones are configured.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part2/configure-the-required-DNS-zones-details-1.jpg&quot; alt=&quot;Advanced DNS Configuration&quot;&gt;&lt;/p&gt;
&lt;p&gt;As shown in the image above:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click ”+ Add” in the top navigation structure. A new configuration panel will appear on the right side of your browser window;&lt;/li&gt;
&lt;li&gt;Under (DNS zone) Type, select the “FQDN zone” option;&lt;/li&gt;
&lt;li&gt;Under DNS zone name, enter a descriptive name used within NSX-T to identify the DNS zone. We recommend to use the DNS FQDN of the zone used by your LDAP/S identity infrastructure. In our scenario the DNS zone name we use is &lt;strong&gt;avsemea.com&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;Under Domain, enter the DNS zone FQDN we will be forwarding traffic for. In our scenario we use &lt;strong&gt;avsemea.com&lt;/strong&gt; here as well;&lt;/li&gt;
&lt;li&gt;Under DNS server IP, enter the IP addresses of your DNS servers. It is recommended to use DNS servers that are situated inside of Azure. In our scenario we will use the IP addresses of our two avsemea.com domain controllers: &lt;strong&gt;172.16.11.4&lt;/strong&gt; and &lt;strong&gt;172.16.11.5&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;Click the “OK” button to create the required DNS FQDN zone in NSX-T.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After a few minutes, the DNS FQDN zone, &lt;strong&gt;avsemea.com&lt;/strong&gt;, will be listed in the DNS blade for your Azure VMware Solution Private Cloud as shown below:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part2/configure-the-required-DNS-zones-details-2.jpg&quot; alt=&quot;Advanced DNS Configuration 2&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;attach-the-dns-zone-configuration-to-the-nsx-t-dns-forwarder-service&quot;&gt;Attach the DNS zone configuration to the NSX-T DNS forwarder service&lt;/h2&gt;
&lt;p&gt;Now that we created the DNS conditional forwarder zone we need to attach this zone to the NSX-T DNS service running in Azure VMware Solution to enable NSX-T to actually use the DNS conditional forwarder zone for use.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part2/Attach-the-DNS-zone-configuration-to-the-NSX-T-DNS-forwarder-service-1.jpg&quot; alt=&quot;DNS and NSX-T Forwarder&quot;&gt;&lt;/p&gt;
&lt;p&gt;In the Azure VMware Solution DNS blade:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click “DNS service” at the top of the blade;&lt;/li&gt;
&lt;li&gt;Click “Edit” to enable configuration changes to the NSX-T DNS service;&lt;/li&gt;
&lt;li&gt;In the “Edit DNS service” screen, open the “FQDN zones” drop down and select the FQDN zone you want to attach to the service. In our scenario we select the &lt;strong&gt;avsemea.com&lt;/strong&gt; zone;&lt;/li&gt;
&lt;li&gt;Click “OK” to save the configuration change.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When the change to the NSX-T DNS service is effectuated the &lt;strong&gt;avsemea.com&lt;/strong&gt; DNS zone will now be listed in the DNS service configuration:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part2/configure-the-required-DNS-zones-details-2.jpg&quot; alt=&quot;Advanced DNS Configuration 2&quot;&gt;&lt;/p&gt;
&lt;p&gt;After this step the configuration of the Azure VMware Solution DNS service is complete.
The next article in this series will describe the detailed steps in configuring LDAPS integration through the Azure portal or automation where possible.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/fskelly/flkelly-cloudblog/blob/main/content/post/2023/avs-ldaps-configure-part1/snippets.ps1&quot;&gt;snippets.ps1 file (all code commands)&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;../avs-ldaps-configure-part1/&quot;&gt;&amp;#x3C; Previous&lt;/a&gt; &lt;a href=&quot;../avs-ldaps-configure-part3/&quot;&gt;Next&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><updated/></item><item><title>Azure VMware Solution: A comprehensive guide to LDAPS identity integration - Part 3</title><link>https://fskelly.github.io/post/avs-ldaps-configure-part3/</link><guid isPermaLink="true">https://fskelly.github.io/post/avs-ldaps-configure-part3/</guid><description>Author(s): Robin Heringa and Fletcher Kelly Implementing LDAPS identity integration with Azure VMware Solution series 3 of 4 This is the thi...</description><pubDate>Wed, 25 Jan 2023 08:45:43 GMT</pubDate><content:encoded>&lt;p&gt;Author(s): &lt;a href=&quot;/about/robinheringa/&quot;&gt;Robin Heringa&lt;/a&gt; and &lt;a href=&quot;/about/fletcherkelly/&quot;&gt;Fletcher Kelly&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&quot;implementing-ldaps-identity-integration-with-azure-vmware-solution-series---3-of-4&quot;&gt;Implementing LDAPS identity integration with Azure VMware Solution series - 3 of 4&lt;/h1&gt;
&lt;p&gt;This is the third part of the blog series on how to implement LDAPS identity integration with Azure VMware Solution. Other parts of this series can be found here:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;../avs-ldaps-configure-part1/&quot;&gt;LDAPS integration - part 1 of 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../avs-ldaps-configure-part2/&quot;&gt;LDAPS integration - part 2 of 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../avs-ldaps-configure-part4/&quot;&gt;LDAPS integration - part 4 of 4&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&quot;implement-ldaps-integration&quot;&gt;Implement LDAPS integration&lt;/h1&gt;
&lt;p&gt;The following sections will guide you through the required process step-by-step&lt;/p&gt;
&lt;h2 id=&quot;check-domain-controller-certificates-and-ldaps&quot;&gt;Check domain controller certificates and LDAPS&lt;/h2&gt;
&lt;p&gt;It is important to validate that the identity provider (in most cases Active Directory) is configured to support LDAPS based authentication requests before continuing with the LDAPS integration setup.&lt;/p&gt;
&lt;p&gt;For each domain controller that is designated for use with Azure VMware Solution, check if the required certificate(s) with the “server authentication” intended purpose are present in the computer certificate store. The “Certificates” snap-in for the Microsoft Management Console (mmc.exe) offers a simple way to do this.&lt;/p&gt;
&lt;p&gt;After locally or remotely opening the computer certificate store:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Expand the “Personal” certificate store and click “Certificates”;&lt;/li&gt;
&lt;li&gt;Check if the store contains certificates with the “Server Authentication” intended purpose.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Available certificates for &lt;strong&gt;avs-gwc-dc001.avsemea.com&lt;/strong&gt;:
&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/1-avs-gwc-dc001-certificates.jpg&quot; alt=&quot;avs-gwc-dc001-certificates mmc&quot;&gt;&lt;/p&gt;
&lt;p&gt;Available certificates for &lt;strong&gt;avs-gwc-dc002.avsemea.com&lt;/strong&gt;:
&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/2-avs-gwc-dc002-certificates.jpg&quot; alt=&quot;avs-gwc-dc002-certificates mmc&quot;&gt;&lt;/p&gt;
&lt;p&gt;Next we need to verify whether the Active Directory domain controllers are configured to offer LDAPS services:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open a “Command prompt” windows;&lt;/li&gt;
&lt;li&gt;Run the command “Netstat -a”;&lt;/li&gt;
&lt;li&gt;Verify that there is an active listener for TCP port 636.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LDAPS listener for &lt;strong&gt;avs-gwc-dc001.avsemea.com&lt;/strong&gt;:
&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/3-avs-gwc-dc001-netstat.jpg&quot; alt=&quot;avs-gwc-dc001-netstat-results&quot;&gt;&lt;/p&gt;
&lt;p&gt;LDAPS listener for &lt;strong&gt;avs-gwc-dc002.avsemea.com&lt;/strong&gt;:
&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/4-avs-gwc-dc002-netstat.jpg&quot; alt=&quot;avs-gwc-dc002-netstat-results&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;extract-correct-domain-controller-certificates&quot;&gt;Extract (correct) domain controller certificates&lt;/h2&gt;
&lt;p&gt;As a next step the certificates used by the domain controllers for LDAPS services need to be extracted from the domain controllers. This step is always performed by executing the script shown in the image below. The reason for this is to ensure we extract the correct certificate which is “attached” to the LDAPS service. When multiple certificates are available with the “Server Authentication” intended purpose, the domain controller selects one of them to be used for LDAPS.&lt;/p&gt;
&lt;p&gt;With the following commands we will connect to the required domain controllers. In our scenario, these are &lt;strong&gt;avs-gwc-dc001.avsemea.com&lt;/strong&gt; and &lt;strong&gt;avs-gwc-dc002.avsemea.com&lt;/strong&gt; and we then use OpenSSL to extract the required certificates. You will need to specify the path of your openssl.exe, currently tested version is 3.0 and was installed with &lt;a href=&quot;https://community.chocolatey.org/packages/openssl&quot;&gt;Chocolatey&lt;/a&gt;. Our install path is &lt;strong&gt;C:\Program Files\OpenSSL-Win64\bin\openssl.exe&lt;/strong&gt;. You will need to update the export path to suit your needs, we chose to use &lt;strong&gt;c:\certTemp&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$openSSLFilePath&lt;/strong&gt;&lt;/em&gt; may need to be changed, was installed using &lt;a href=&quot;https://community.chocolatey.org/packages/openssl&quot;&gt;chocolatey&lt;/a&gt; in our example.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$remoteComputers&lt;/strong&gt;&lt;/em&gt; would need to be changed to suit your environment.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$exportFolder&lt;/strong&gt;&lt;/em&gt; can be changed to something more suitable for your environment.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Get certs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;openSSLFilePath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;C:\Program Files\OpenSSL-Win64\bin\openssl.exe&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;remoteComputers &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;avs-gwc-dc001.avsemea.com&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;avs-gwc-dc002.avsemea.com&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;port &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;636&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;exportFolder &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c:\temp\&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;computer &lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;remoteComputers&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;output &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;  echo &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &amp;#x26;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;openSSLFilePath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;s_client&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-connect&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;computer&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;`:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;port&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-showcerts&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; out-string&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Matches &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $null&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cn &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;output &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-match&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;0 s\:CN = (?&amp;#x3C;cn&gt;.*?)\r\n&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cn &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Matches.cn&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Matches &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $null&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;certs &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; select-string&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;inputobject &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;output &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;pattern &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;(?s)(?&amp;#x3C;cert&gt;-----BEGIN CERTIFICATE-----.*?-----END CERTIFICATE-----)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;allmatches&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cert &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;certs.matches&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;exportPath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;exportFolder&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;computer.split&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;])+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.cer&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cert.Value &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Out-File&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;exportPath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Encoding ascii&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/5-powershell-cert-extract.jpg&quot; alt=&quot;PowerShell-using-openssl-to-extract-certs&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;validate-domain-controller-certificate-requirements&quot;&gt;Validate domain controller certificate requirements&lt;/h2&gt;
&lt;p&gt;The next step is to ensure that the certificate extraction was performed successfully. This will always be a manual step in the process.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/6-certificate-properties.jpg&quot; alt=&quot;Exported-certificate-properties&quot;&gt;&lt;/p&gt;
&lt;p&gt;As displayed in the image above:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Windows Explorer (or use the one opened in the previous step if not closed already 😊) and browse to the location where the certificates were extracted to. In our scenario the folder is c:\certTemp;&lt;/li&gt;
&lt;li&gt;Open the certificates by right-clicking and selecting “Open”&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For each of the certificates:&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Select the “General” tab at the top;&lt;/li&gt;
&lt;li&gt;Verify that “Proves your identity to a remote computer” is available as an intended purpose;&lt;/li&gt;
&lt;li&gt;Verify that domain controller fully qualified domain name FQDN) is present in the “Issued to” field. In our scenario: &lt;strong&gt;avs-gwc-dc001.avsemea.com&lt;/strong&gt; and &lt;strong&gt;avs-gwc-dc002.avsemea.com&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Verify that the certificate is still valid by checking the “Valid from” field.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/7-certificate-certification-path.jpg&quot; alt=&quot;Certification-path-of-the-certificate&quot;&gt;&lt;/p&gt;
&lt;p&gt;To complete the certificate verification process, for each certificate:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the “Certification Path” tab at the top;&lt;/li&gt;
&lt;li&gt;Verify that the full certificate authority chain is available in the “Certification path” field.
In our scenario the field contains the name of the root certification authority &lt;strong&gt;avsemea-avs-gwc-rootca&lt;/strong&gt; and the full certificate name for the respective domain controller the certificate is issued to. In our scenario &lt;strong&gt;avs-gwc-dc001.avsemea.com&lt;/strong&gt; and &lt;strong&gt;avs-gwc-dc002.avsemea.com&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;create-azure-storage-account&quot;&gt;Create Azure Storage account&lt;/h2&gt;
&lt;p&gt;The following content is divided into two sub-sections. One section will describe how the required procedure is performed manually through the Azure Portal and the other section describes a way to perform the required steps through automation.&lt;/p&gt;
&lt;h3 id=&quot;manual-deployment&quot;&gt;Manual deployment&lt;/h3&gt;
&lt;p&gt;As part of this manual process a storage account will be created that is used to store the domain controller certificates for later use by the “New-LDAPSIdentitySource” run-command.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/8-manual-storage-account-create.jpg&quot; alt=&quot;create-storage-account-from-portal&quot;&gt;&lt;/p&gt;
&lt;p&gt;In the Azure Portal:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click on “Storage accounts” in the left navigation panel;&lt;/li&gt;
&lt;li&gt;Click ”+ Create” at the top to create a new storage account. The “Create a storage account” blade will now be displayed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/9-manual-storage-account-create-2.jpg&quot; alt=&quot;create-storage-account-from-portal-storage-account-information&quot;&gt;&lt;/p&gt;
&lt;p&gt;On the “basics” tab:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the “Subscription” drop-down menu make sure you select the subscription where Azure VMware Solution has been deployed into. In our scenario this is the &lt;strong&gt;Azure CXP FTA Internal – AZFTA subscription&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;Select the resource group you want to create the storage account into. In our case &lt;strong&gt;avs-germanywestcentral-operational_rg&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the “Storage account name” box, enter a globally unique name for the storage account. We recommend to use a descriptive name postfixed with a GUID. In our scenario we used &lt;strong&gt;avsgwcsa14a2c2db&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;In the “Region” drop-down menu be sure to select the same region as where Azure VMware Solution is deployed. In our scenario &lt;strong&gt;Germany West Central&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;As this storage account has no need for changing any of the default settings, click “Review” at the bottom of the screen.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/10-manual-storage-account-review.jpg&quot; alt=&quot;create-storage-account-from-portal-storage-account-review&quot;&gt;&lt;/p&gt;
&lt;p&gt;On the review screen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Double-check the values for “Subscription”, “Resource Group”, “Location” and “Storage account name”;&lt;/li&gt;
&lt;li&gt;Click “Create”.
After a few minutes the creation of the storage account should be completed:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/11-manual-storage-account-review-2.jpg&quot; alt=&quot;create-storage-account-from-portal-storage-account-review-complete&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;automated-deployment&quot;&gt;Automated deployment&lt;/h3&gt;
&lt;p&gt;With these commands, we will check for the Azure Module, install them if missing and then continue the script. We will create the required storage account, or use an existing storage account. The &lt;strong&gt;$storageAccountName&lt;/strong&gt;  and &lt;strong&gt;$resourceGroupLocation&lt;/strong&gt; variables can be updated or replaced as needed to meet your needs. These scripts are designed to be run in sections one after each other to ensure the variable names are correctly referenced.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$resourceGroupLocation&lt;/strong&gt;&lt;/em&gt; will need to be updated to your desired location.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$storageRgName&lt;/strong&gt;&lt;/em&gt; will need to be updated.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$storageAccountName&lt;/strong&gt;&lt;/em&gt; will need to be updated.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Do you have the Azure Module installed?&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Get-Module&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ListAvailable &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name Az.Storage&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    {&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Module exists&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; }&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;        &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Module does not exist&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;installing Module&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Install-Module&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;name Az.Storage &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Scope CurrentUser &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Force &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;AllowClobber&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## create storage account&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupLocation &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;germanywestcentral&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;avs-&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupLocation&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-operational_rg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Storage account variables&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;guid &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; New-Guid&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;avsgwcsa&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountNameSuffix &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;guid.ToString&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.Split&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; (($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName.replace&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;))+$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountNameSuffix &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Define tags to be used if needed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## tags can be modified to suit your needs, another example below.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;#$tags = @{&quot;Environment&quot;=&quot;Development&quot;;&quot;Owner&quot;=&quot;FTA&quot;;&quot;CostCenter&quot;=&quot;123456&quot;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;tags &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;deploymentMethod&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;PowerShell&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Technology&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;AVS&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## create storage account&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;saCheck &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzStorageAccount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ErrorAction SilentlyContinue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($null&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -eq&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;saCheck&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    New-AzStorageAccount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Location &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupLocation &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;SkuName Standard_LRS &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Kind StorageV2 &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;EnableHttpsTrafficOnly &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$true&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Tags &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;tags&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Storage account created: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt; else&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Storage Account already exists&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/12-automated-create-storage-account.jpg&quot; alt=&quot;scripted-creation-of-storage-account&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;create-storage-blob-container&quot;&gt;Create Storage Blob container&lt;/h2&gt;
&lt;p&gt;The next step is to create a blob container to help structure/organize the resources required for the LDAPS identity integration.
The following content is divided into two sub-sections. One section will describe how the required procedure is performed manually through the Azure Portal and the other section describes a way to perform the required steps through automation.&lt;/p&gt;
&lt;h3 id=&quot;manual-deployment-1&quot;&gt;Manual deployment&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/13-manual-create-container.jpg&quot; alt=&quot;create-storage-container&quot;&gt;&lt;/p&gt;
&lt;p&gt;In the Azure Portal:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the left navigation pane, click “Storage accounts”;&lt;/li&gt;
&lt;li&gt;In the list of storage accounts, select the storage account created in the previous step. In our scenario &lt;strong&gt;avsgwcsa14a2c2db&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;Select “Containers” under the “Data storage” category;&lt;/li&gt;
&lt;li&gt;Click ”+ Container” to create a new container in the storage account.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2023/avs-ldaps-configure-part3/14-manual-create-container-2.jpg&quot; alt=&quot;create-storage-container-final&quot;&gt;&lt;/p&gt;
&lt;p&gt;In the “New container” dialog:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the “Name” field, type a descriptive name for the new container. In our scenario &lt;strong&gt;ldaps-blog-post&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click “Create”
The new container should now be created and displayed in the “Containers” view for the storage account:&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;automated-deployment-1&quot;&gt;Automated deployment&lt;/h3&gt;
&lt;p&gt;With these commands, we will create the container to upload the earlier exported certificates to, this will be important for the creation of the SAS Tokens for the AVS LDAPS Run Command.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$containerName&lt;/strong&gt;&lt;/em&gt; will need to be updated&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## create container&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;ldaps-blog-post&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerCheck &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzStorageContainer&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Context &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Get-AzStorageAccount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.Context &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ErrorAction SilentlyContinue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($null&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -eq&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerCheck&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    New-AzStorageContainer&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Context &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Get-AzStorageAccount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.Context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Storage container created: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt; else&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Container already exists&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/15-automated-create-storage-container.jpg&quot; alt=&quot;create-storage-container&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;upload-domain-controller-certificates&quot;&gt;Upload domain controller certificates&lt;/h2&gt;
&lt;p&gt;The next step is to upload the domain controller certificates from the temporary folder where they were extracted to into the newly created &lt;strong&gt;ldaps-blog-post&lt;/strong&gt; container in the &lt;strong&gt;avsgwcsa14a2c2db&lt;/strong&gt; storage account we created.
The following content is also divided into two sub-sections. One section will describe how the required procedure is performed manually through the Azure Portal and the other section describes a way to perform the required steps through automation.&lt;/p&gt;
&lt;h3 id=&quot;manual-deployment-2&quot;&gt;Manual deployment&lt;/h3&gt;
&lt;p&gt;As the first step, it is needed to “enter” the &lt;strong&gt;ldaps-blog-post&lt;/strong&gt; container in the storage account:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/16-manual-upload-certs-1.jpg&quot; alt=&quot;start-of-cert-upload-process&quot;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the Azure Portal, navigate to the &lt;strong&gt;avsgwcsa14a2c2db&lt;/strong&gt; storage account created earlier and select “Containers”;&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;ldaps-blog-post&lt;/strong&gt; container.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We will now upload the certificates into the container:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/17-manual-upload-certs-2.jpg&quot; alt=&quot;start-of-cert-upload-process-1&quot;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;strong&gt;ldaps-blog-post&lt;/strong&gt; container, select “Overview”;&lt;/li&gt;
&lt;li&gt;In the top navigation, click “⬆️ Upload”;&lt;/li&gt;
&lt;li&gt;In the “Upload blob” panel, click the folder icon to select the certificates from your local hard drive.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/18-manual-upload-certs-3.jpg&quot; alt=&quot;start-of-cert-upload-process-3&quot;&gt;&lt;/p&gt;
&lt;p&gt;Navigate to the folder where the certificates have been extracted to (in our scenario c:\certTemp) and:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select all the certificates;&lt;/li&gt;
&lt;li&gt;Click “Open”.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The “Open” screen will close and return to the Azure Portal “Upload blob” panel again, click “Upload” at the bottom of the screen:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2023/avs-ldaps-configure-part3/19-manual-upload-certs-4.jpg&quot; alt=&quot;upload-certs-4&quot;&gt;&lt;/p&gt;
&lt;p&gt;The certificates will now be uploaded into the blob container. The process is complete when green checkmarks are shown for each certificate uploaded:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2023/avs-ldaps-configure-part3/20-manual-upload-certs-complete.jpg&quot; alt=&quot;upload-certs-complete&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;automated-deployment-2&quot;&gt;Automated deployment&lt;/h3&gt;
&lt;p&gt;With these commands, we will upload the actual certificates into the previously created container. In this example we are using “&lt;strong&gt;ldaps-blog-post&lt;/strong&gt;”&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## upload certs to container&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;certs &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-ChildItem&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;exportFolder &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Filter &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.cer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageContext &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Get-AzStorageAccount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageRgName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.Context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;item &lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;certs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;localFilePath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;item.FullName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;azureFileName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;localFilePath.Split&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;\&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)[$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;localFilePath.Split&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;\&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;count&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Get-AzStorageAccount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzStorageContainer&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Set-AzStorageBlobContent&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;File &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;localFilePath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Blob &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;azureFileName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/21-automated-upload-certs-1.jpg&quot; alt=&quot;scripted-cert-upload-1&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/22-automated-upload-certs-2.jpg&quot; alt=&quot;scripted-cert-upload-2&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;generate-sas-tokens-for-domain-controller-certificates&quot;&gt;Generate SAS tokens for domain controller certificates&lt;/h2&gt;
&lt;p&gt;As part of this step we will generate “shared access tokens” for all the certificates uploaded into the blob container so they can be accessed through the run-command for implementing the LDAPS integration for vCenter.
One section describes how the required procedure is performed manually through the Azure Portal and the other section describes a way to perform the required steps through automation.&lt;/p&gt;
&lt;h3 id=&quot;manual-deployment-3&quot;&gt;Manual deployment&lt;/h3&gt;
&lt;p&gt;The manual deployment continues within the same blade in the Azure Portal where the previous step left off.
For each of the uploaded certificates, generate a “&lt;strong&gt;SAS token&lt;/strong&gt;”:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2023/avs-ldaps-configure-part3/23-manual-generate-sas-1.jpg&quot; alt=&quot;sas-process-1&quot;&gt;&lt;/p&gt;
&lt;p&gt;For each certificate separately:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select the checkbox in front of the container;&lt;/li&gt;
&lt;li&gt;Click the ellipsis at the end of the line;&lt;/li&gt;
&lt;li&gt;Select “Generate SAS”.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In the following screen:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2023/avs-ldaps-configure-part3/24-manual-generate-sas-2.jpg&quot; alt=&quot;sas-process-2&quot;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Make sure to select a proper validity period for the SAS token. By default the SAS token will be valid for 8 hours which should be sufficient when performing the configuration in a continuous effort;&lt;/li&gt;
&lt;li&gt;Click “Generate SAS token and URL”.
After clicking “Generate SAS token and URL” an additional section will be displayed at the bottom of the screen:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2023/avs-ldaps-configure-part3/25-manual-generate-sas-complete.jpg&quot; alt=&quot;sas-process-complete&quot;&gt;&lt;/p&gt;
&lt;p&gt;Be sure to copy the “Blob SAS URL” generated for each separate certificate into a text-file temporarily as they will need to be concatenated into a single string &lt;strong&gt;separated by a comma&lt;/strong&gt; for use during the execution of the run-command as explained in step “Execute Run-Command”.&lt;/p&gt;
&lt;h3 id=&quot;automated-deployment-3&quot;&gt;Automated deployment&lt;/h3&gt;
&lt;p&gt;With these commands, we will generate the SAS Token needed for the next steps, please note down &lt;strong&gt;BOTH&lt;/strong&gt; tokens. In this script, the tokens are valid for &lt;strong&gt;24 hours&lt;/strong&gt; and can be modified to suit your needs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$containerName&lt;/strong&gt;&lt;/em&gt; will need to be updated&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## create SAS token&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;ldaps-blog-post&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;blobs &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzStorageBlob&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Container &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Context &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageContext &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Where-Object&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-match&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.cer&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;blob &lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;blobs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;StartTime &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-Date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;EndTime &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;startTime.AddHours&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;24.0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;sasToken &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; New-AzStorageBlobSASToken&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Container &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Blob &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;blob.name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Permission rwd &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;StartTime &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;StartTime &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ExpiryTime &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;EndTime &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Context &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageContext &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;FullUri&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;    #$sasToken&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    write-host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;SASToken created: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;sasToken&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure-part3/26-automated-sas-token-creation.jpg&quot; alt=&quot;scripted=sas-token-creation&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/fskelly/flkelly-cloudblog/blob/main/content/post/2023/avs-ldaps-configure-part1/snippets.ps1&quot;&gt;snippets.ps1 file (all code commands)&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;../avs-ldaps-configure-part2/&quot;&gt;&amp;#x3C; Previous&lt;/a&gt; &lt;a href=&quot;../avs-ldaps-configure-part4/&quot;&gt;Next&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><updated/></item><item><title>How to configure LDAPS with AVS</title><link>https://fskelly.github.io/post/avs-ldaps-configure/</link><guid isPermaLink="true">https://fskelly.github.io/post/avs-ldaps-configure/</guid><description>In this post, we are going to be configuring LDAPS (LDAP Over SSL) for Azure Vmware Solution (AVS). Pre requisites 1. Jump Box 1. RSAT Tools...</description><pubDate>Mon, 09 Jan 2023 08:39:32 GMT</pubDate><content:encoded>&lt;p&gt;In this post, we are going to be configuring LDAPS (LDAP Over SSL) for Azure Vmware Solution (AVS).&lt;/p&gt;
&lt;p&gt;Pre-requisites&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Jump Box&lt;/li&gt;
&lt;li&gt;RSAT Tools&lt;/li&gt;
&lt;li&gt;PowerShell installed&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The expected outcome&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#variables-we-used-and-information-you-need&quot;&gt;Variables we used and information you need&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#1-log-into-azure&quot;&gt;1. Log into Azure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-export-required-certificates&quot;&gt;2. Export required certificates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#3-create-a-storage-account&quot;&gt;3. Create a storage account&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#4-create-a-container&quot;&gt;4. Create a container&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#5-upload-certificates-to-container&quot;&gt;5. Upload certificates to container&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#6-create-the-sas-tokens&quot;&gt;6. Create the SAS Tokens&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#execute-the-avs-run-command&quot;&gt;Execute the AVS Run Command&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The plan is to automate as much of this process as possible. We will use PowerShell to complete steps 1-6 as above. For now, step 7 needs to be manual, we are working on automating this as well.&lt;/p&gt;
&lt;h2 id=&quot;variables-we-used-and-information-you-need&quot;&gt;Variables we used and information you need&lt;/h2&gt;
&lt;p&gt;We use the following.&lt;br&gt;
DNS Name = avsemea.com&lt;br&gt;
Netbios Name = AVSEMEA&lt;br&gt;
You will see that we use the Fully Qualified domain names later with the computer names we reference later. We use FQDN as much as possible and try to hard code as little making these snippets more portable into your environment(s).&lt;/p&gt;
&lt;p&gt;We are using a jump-box, which is domain joined, deployed into Azure and protected with &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/bastion/bastion-overview&quot;&gt;Azure Bastion&lt;/a&gt;. THe snippets below are run on this jump-box, which has &lt;a href=&quot;https://learn.microsoft.com/en-us/troubleshoot/windows-server/system-management-components/remote-server-administration-tools&quot;&gt;RSAT&lt;/a&gt; installed.&lt;/p&gt;
&lt;h2 id=&quot;1-log-into-azure&quot;&gt;1. Log into Azure&lt;/h2&gt;
&lt;p&gt;Update the variables as needed, in this case, &lt;em&gt;&lt;strong&gt;$azSubscriptionID&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$azSubscriptionID&lt;/strong&gt;&lt;/em&gt; would need to be updated with your Subscription ID.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;azSubscriptionID &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Login&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;AzAccount&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Set-AzContext&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Subscription &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;azSubscriptionID&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;2-export-required-certificates&quot;&gt;2. Export required certificates&lt;/h2&gt;
&lt;p&gt;You will need to have OpenSSL installed. You can do this manually, or use a package manager like &lt;a href=&quot;https://winget.run/pkg/ShiningLight/OpenSSL&quot;&gt;winget&lt;/a&gt; or
&lt;a href=&quot;https://community.chocolatey.org/packages/openssl&quot;&gt;chocolatey&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$openSSLFilePath&lt;/strong&gt;&lt;/em&gt; may need to be changed, was installed using &lt;a href=&quot;https://community.chocolatey.org/packages/openssl&quot;&gt;chocolatey&lt;/a&gt; in our example.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$remoteComputers&lt;/strong&gt;&lt;/em&gt; would need to be changed to suit your environment.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$exportFolder&lt;/strong&gt;&lt;/em&gt; can be changed to something more suitable for your environment.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Get certs&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;openSSLFilePath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;C:\Program Files\OpenSSL-Win64\bin\openssl.exe&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;remoteComputers &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;avs-gwc-dc001.avsemea.com&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;avs-gwc-dc002.avsemea.com&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;port &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;636&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;exportFolder &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c:\temp\&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;computer &lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;remoteComputers&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;output &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;  echo &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &amp;#x26;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;openSSLFilePath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;s_client&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-connect&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;computer&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;`:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;port&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-showcerts&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; out-string&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Matches &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $null&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cn &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;output &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-match&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;0 s\:CN = (?&amp;#x3C;cn&gt;.*?)\r\n&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cn &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Matches.cn&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Matches &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $null&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;certs &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; select-string&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;inputobject &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;output &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;pattern &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;(?s)(?&amp;#x3C;cert&gt;-----BEGIN CERTIFICATE-----.*?-----END CERTIFICATE-----)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;allmatches&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cert &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;certs.matches&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;exportPath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;exportFolder&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;computer.split&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;])+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.cer&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;cert.Value &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Out-File&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;exportPath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Encoding ascii&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can see the exported files in the picture below.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure/snippet1.jpg&quot; alt=&quot;code-snippet-1&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;3-create-a-storage-account&quot;&gt;3. Create a storage account&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$resourceGroupLocation&lt;/strong&gt;&lt;/em&gt; will need to be updated to your desired location.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$storageRgName&lt;/strong&gt;&lt;/em&gt; will need to be updated.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$storageAccountName&lt;/strong&gt;&lt;/em&gt; will need to be updated.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## create storage account&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupLocation &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;germanywestcentral&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;avs-&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupLocation&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-operational_rg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Storage account variables&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;guid &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; New-Guid&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;avsgwcsa&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountNameSuffix &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;guid.ToString&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.Split&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; (($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName.replace&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;))+$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountNameSuffix &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Define tags to be used if needed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## tags can be modified to suit your needs, another example below.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;#$tags = @{&quot;Environment&quot;=&quot;Development&quot;;&quot;Owner&quot;=&quot;FTA&quot;;&quot;CostCenter&quot;=&quot;123456&quot;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;tags &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;deploymentMethod&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;PowerShell&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Technology&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;AVS&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## create storage account&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;saCheck &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzStorageAccount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ErrorAction SilentlyContinue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($null&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -eq&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;saCheck&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    New-AzStorageAccount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Location &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupLocation &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;SkuName Standard_LRS &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Kind StorageV2 &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;EnableHttpsTrafficOnly &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$true&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Tags &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;tags&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Storage account created: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt; else&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Storage Account already exists&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure/snippet2.jpg&quot; alt=&quot;code-snippet-2&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;4-create-a-container&quot;&gt;4. Create a container&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$containerName&lt;/strong&gt;&lt;/em&gt; will need to be updated&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## create container&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;ldaps&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerCheck &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzStorageContainer&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Context &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Get-AzStorageAccount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.Context &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ErrorAction SilentlyContinue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($null&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -eq&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerCheck&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    New-AzStorageContainer&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Context &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Get-AzStorageAccount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.Context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Storage container created: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt; else&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    write-output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Container already exists&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure/snippet3.jpg&quot; alt=&quot;code-snippet-3&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;5-upload-certificates-to-container&quot;&gt;5. Upload certificates to container&lt;/h2&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## upload certs to container&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;certs &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-ChildItem&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;exportFolder &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Filter &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.cer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageContext &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Get-AzStorageAccount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageRgName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.Context&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;item &lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;certs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;localFilePath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;item.FullName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;azureFileName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;localFilePath.Split&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;\&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)[$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;localFilePath.Split&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;\&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;count&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Get-AzStorageAccount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageAccountName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageRgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzStorageContainer&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Set-AzStorageBlobContent&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;File &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;localFilePath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Blob &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;azureFileName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure/snippet5.jpg&quot; alt=&quot;code-snippet-5&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;6-create-the-sas-tokens&quot;&gt;6. Create the SAS Tokens&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;$containerName&lt;/strong&gt;&lt;/em&gt; will need to be updated&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## create SAS token&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;ldaps&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;blobs &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzStorageBlob&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Container &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Context &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageContext &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Where-Object&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-match&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.cer&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;blob &lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;blobs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;StartTime &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-Date&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;EndTime &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;startTime.AddHours&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;24.0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;sasToken &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; New-AzStorageBlobSASToken&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Container &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;containerName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Blob &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;blob.name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Permission rwd &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;StartTime &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;StartTime &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ExpiryTime &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;EndTime &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Context &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;storageContext &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;FullUri&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;    #$sasToken&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    write-host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;SASToken created: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;sasToken&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure/snippet5.jpg&quot; alt=&quot;code-snippet-5&quot;&gt;&lt;/p&gt;
&lt;p&gt;SASToken created: &lt;a href=&quot;https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc001.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;%5BRemoved&quot;&gt;https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc001.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;[Removed&lt;/a&gt;]&lt;br&gt;
SASToken created: &lt;a href=&quot;https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc002.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;%5BRemoved&quot;&gt;https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc002.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;[Removed&lt;/a&gt;]&lt;/p&gt;
&lt;h2 id=&quot;execute-the-avs-run-command&quot;&gt;Execute the AVS Run Command&lt;/h2&gt;
&lt;p&gt;These steps, for now, are run manually from the &lt;a href=&quot;https://portal.azure.com&quot;&gt;Azure Portal&lt;/a&gt;. This will be found “Azure VMware Solution” and under Operations, &lt;strong&gt;Run command&lt;/strong&gt;. Then select &lt;strong&gt;“New-LDAPSIdentitySource”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure/snippet7.jpg&quot; alt=&quot;code-snippet-7&quot;&gt;&lt;/p&gt;
&lt;p&gt;Populate the information as needed.&lt;br&gt;
&lt;strong&gt;Note: the SSLCertificateSasUrl is a single string consisting of the SASTokens separated with a “,”. For example, &lt;a href=&quot;https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc001.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;%5BRemoved&quot;&gt;https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc001.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;[Removed&lt;/a&gt;], &lt;a href=&quot;https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc002.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;%5BRemoved&quot;&gt;https://avsgwcsa14a2c2da.blob.core.windows.net/ldaps-blog-post/avs-gwc-dc002.cer?sv=2021-10-04&amp;#x26;st=2023-01-12T13%3A46%3A45Z&amp;#x26;se=2023-01-13T13%3A46%3A45Z&amp;#x26;sr=b&amp;#x26;sp=rwd&amp;#x26;[Removed&lt;/a&gt;] and pasted as a single long string.&lt;/strong&gt;
The other values would need to be updated as per your environment.&lt;br&gt;
&lt;strong&gt;Note: With the BaseDNGroups and BaseDNUsers, watch the values used as these should be under the same tree, in this example, “OU=Corp,DC=avsemea,DC=com”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure/snippet8.jpg&quot; alt=&quot;code-snippet-8&quot;&gt;&lt;/p&gt;
&lt;p&gt;Once all information is entered, Run the command.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure/snippet9.jpg&quot; alt=&quot;code-snippet-9&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can check the status of the &lt;strong&gt;Run command&lt;/strong&gt; within the portal, under Operations, &lt;strong&gt;Run command&lt;/strong&gt;, then select &lt;strong&gt;Run execution status&lt;/strong&gt; and then select the correct job.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure/snippet10.jpg&quot; alt=&quot;code-snippet-10&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can check the status of the job now and you are waiting for all the tasks to be completed and show that your selected group was added to &lt;strong&gt;CloudAdmins&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure/snippet11.jpg&quot; alt=&quot;code-snippet-11&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can also check the output and ensure that the correct name was added.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure/snippet12.jpg&quot; alt=&quot;code-snippet-12&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can logon with LDAP based credentials.
&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure/snippet13.jpg&quot; alt=&quot;code-snippet-13&quot;&gt;
&lt;img src=&quot;/blog/assets/cloud/2023/avs-ldaps-configure/snippet14.jpg&quot; alt=&quot;code-snippet-14&quot;&gt;&lt;/p&gt;</content:encoded><updated/></item><item><title>Home Assistant Routing</title><link>https://fskelly.github.io/post/home-assistant-routing/</link><guid isPermaLink="true">https://fskelly.github.io/post/home-assistant-routing/</guid><description>## Why do I need to change my routing? I am a tinkerer by nature and I often need to move my Home Assistant instances around and by this, I...</description><pubDate>Mon, 17 Oct 2022 10:44:14 GMT</pubDate><content:encoded>&lt;h2 id=&quot;why-do-i-need-to-change-my-routing&quot;&gt;Why do I need to change my routing?&lt;/h2&gt;
&lt;p&gt;I am a tinkerer by nature and I often need to move my Home Assistant instances around and by this, I mean create new instances and DEV versions. As complication of this, sometimes my UNIFI controller in not available and as such the following components are not available to me.&lt;/p&gt;
&lt;!--more--&gt;
&lt;ol&gt;
&lt;li&gt;DHCP&lt;/li&gt;
&lt;li&gt;VLans&lt;/li&gt;
&lt;li&gt;Full DNS&lt;/li&gt;
&lt;li&gt;Routing between Vlans&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As a geek, I do not allow this to deter me.&lt;/p&gt;
&lt;h2 id=&quot;the-fix&quot;&gt;The fix&lt;/h2&gt;
&lt;p&gt;The fix is quite easy if you understand your networking and you have access to the &lt;a href=&quot;https://github.com/hassio-addons/addon-ssh&quot;&gt;Home Assistant Terminal&lt;/a&gt;. This can also be achieved with a physical connection (keyboard and mouse) or an SSH session to the Home assistant Instance.I have a few vlans and ranges in my network and I need access to the following ranges. I have subnetted for smaller ranges.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;192.168.37.0/25 (CIDR 1)&lt;/li&gt;
&lt;li&gt;192.168.32.0/26 (CIDR 2)&lt;/li&gt;
&lt;li&gt;192.168.1.254 (Router)&lt;/li&gt;
&lt;li&gt;Network card name (Supervisor enp0s25)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You will need to know the IP address of your router&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;nmcli&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; connection&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; show&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; nmcli&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; connection&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; modify&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Supervisor enp0s25&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; +ipv4.routes&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;192.168.37.0/25 192.168.1.254&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; nmcli&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; connection&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; modify&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Supervisor enp0s25&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; +ipv4.routes&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;192.168.32.0/26 192.168.1.254&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will take care of the Linux piece from Home Assistant. I have a Windows machine and my machine needs access to the same resources. I chose not to add these as persistent routes as usually the outage is limited and my Unifi and full functionality is usually restored quite quickly.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;route&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; ADD&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 192.168.37.0&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; mask&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 255.255.255.128&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 192.168.1.254&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; route&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; ADD&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 192.168.32.0&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; mask&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 255.255.55.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Until next time.&lt;/p&gt;</content:encoded><updated/></item><item><title>Using Azure Resource Graph and Tags to lock items in Azure</title><link>https://fskelly.github.io/post/using-arg-tolock-resources/</link><guid isPermaLink="true">https://fskelly.github.io/post/using-arg-tolock-resources/</guid><description>What are we doing? We are going to use Azure Resource Graph to find items with a specific tag, in this case {&quot;toBeLocked&quot;=&quot;Yes&quot;} and then pl...</description><pubDate>Mon, 03 Oct 2022 12:59:06 GMT</pubDate><content:encoded>&lt;h2 id=&quot;what-are-we-doing&quot;&gt;What are we doing?&lt;/h2&gt;
&lt;p&gt;We are going to use Azure Resource Graph to find items with a specific tag, in this case &lt;em&gt;{“toBeLocked”=“Yes”}&lt;/em&gt; and then place a resource lock on them.&lt;/p&gt;
&lt;h2 id=&quot;constraints--limitations&quot;&gt;Constraints / limitations&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Use Azure Resource Graph to perform the search. Very fast and gives you a new way to interface with Azure Resources.&lt;/li&gt;
&lt;li&gt;As part of this post, I am giving samples below to create items, you could use these for testing. Please test and make sure with production environment.&lt;/li&gt;
&lt;li&gt;You are using an account that can create locks and potentially remove if needed during the testing.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;lets-build-this&quot;&gt;Lets build this&lt;/h2&gt;
&lt;h3 id=&quot;steps&quot;&gt;Steps&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Create sample items&lt;/li&gt;
&lt;li&gt;Build Azure Resource Graph Queries&lt;/li&gt;
&lt;li&gt;Getting items from the query programmatically&lt;/li&gt;
&lt;li&gt;Adding locks&lt;/li&gt;
&lt;li&gt;Result&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;create-sample-items-to-lock&quot;&gt;Create sample items to lock&lt;/h3&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## create resource group&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;toberesourcelocked&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgLocation &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;northeurope&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rg &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; new-azresourcegroup&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgname &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;location &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgLocation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## create items&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;guid &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; New-Guid&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;saName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;sa&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;saSuffix &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;guid.ToString&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.Split&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]+$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;guid.ToString&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.Split&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;saName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; (($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;saName.replace&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;))+$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;saSuffix&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;New-AzStorageAccount&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;saName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Location &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgLocation &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;AccountType Standard_LRS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## create tag(s)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;tags &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;toBeLocked&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Yes&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## get items in Resource Group and tag them&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;items &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzResource&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;item &lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Update-AzTag&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceId &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;item.ResourceId &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Tag &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;tags &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Operation Replace&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## update resource group with tag(s)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Update-AzTag&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceId &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rg.ResourceId &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Tag &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;tags &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Operation Replace&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;build-azure-resource-graph-queries&quot;&gt;Build Azure Resource Graph Queries&lt;/h3&gt;
&lt;h4 id=&quot;including-resource-groups&quot;&gt;Including Resource Groups&lt;/h4&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;resourcecontainers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| where type == &quot;microsoft.resources/subscriptions/resourcegroups&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| mv-expand bagexpansion=array tags&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| where isnotempty(tags)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| where tags[0] =~ &apos;toBeLocked&apos; and tags[1] =~ &apos;Yes&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| project  name,type,location,subscriptionId,tags&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| union (resources &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| mv-expand bagexpansion=array tags&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| where isnotempty(tags)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| where tags[0] =~ &apos;toBeLocked&apos; and tags[1] =~ &apos;Yes&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| project name,type,location,subscriptionId,tags,id)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;excluding-resource-groups&quot;&gt;Excluding Resource Groups&lt;/h4&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Resources&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| mv-expand bagexpansion=array tags&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| where isnotempty(tags)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| where tags[0] =~ &apos;toBeLocked&apos; and tags[1] =~ &apos;Yes&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&quot;resource-groups-only&quot;&gt;Resource Groups Only&lt;/h4&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;ResourceContainers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| where type =~ &apos;microsoft.resources/subscriptions/resourcegroups&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| where tags[&apos;toBeLocked&apos;] =~ &apos;Yes&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;getting-items-from-the-query-programmatically&quot;&gt;Getting items from the query programmatically&lt;/h3&gt;
&lt;p&gt;We now have the required queries and you can pick whichever one above suits your needs, I am going to be using &lt;a href=&quot;#including-resource-groups&quot;&gt;Including Resource Groups&lt;/a&gt;. Now we need a way to act against these resources. I am personally quite a fan of &lt;a href=&quot;https://learn.microsoft.com/en-us/powershell/&quot;&gt;PowerShell&lt;/a&gt; so I will provide this sample. You can use &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/governance/resource-graph/first-query-powershell#add-the-resource-graph-module&quot;&gt;this&lt;/a&gt; as a base for my example below. When running the query in &lt;a href=&quot;https://learn.microsoft.com/en-us/powershell/&quot;&gt;PowerShell&lt;/a&gt;, I find &lt;a href=&quot;https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_splatting?view=powershell-7.2&quot;&gt;splatting&lt;/a&gt; is easiest for &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/governance/resource-graph/&quot;&gt;Azure Resource Graph&lt;/a&gt; queries&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;# Install the Resource Graph module from PowerShell Gallery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Install-Module&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name Az.ResourceGraph&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;# Get a list of commands for the imported Az.ResourceGraph module&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Get-Command&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Module &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Az.ResourceGraph&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;CommandType &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Cmdlet&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;# Run Azure Resource Graph query&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;query &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; @&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;resourcecontainers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;| where type == &quot;microsoft.resources/subscriptions/resourcegroups&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;| mv-expand bagexpansion=array tags&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;| where isnotempty(tags)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;| where tags[0] =~ &apos;toBeLocked&apos; and tags[1] =~ &apos;Yes&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;| project  name,type,location,subscriptionId,tags&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;| union (resources &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;| mv-expand bagexpansion=array tags&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;| where isnotempty(tags)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;| where tags[0] =~ &apos;toBeLocked&apos; and tags[1] =~ &apos;Yes&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;| project name,type,location,subscriptionId,tags,id)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;@&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;queryItems &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Search-AzGraph&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Query &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;query&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;adding-locks&quot;&gt;Adding locks&lt;/h3&gt;
&lt;p&gt;So now we have the items that have been tagged, now we can go through the process of adding a &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/lock-resources?tabs=json&quot;&gt;Resource Lock&lt;/a&gt;. The &lt;a href=&quot;https://learn.microsoft.com/en-us/powershell/module/az.resources/new-azresourcelock?view=azps-8.3.0&quot;&gt;New-AzResourceLock&lt;/a&gt; will be used for this task.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;lockLevel &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;CanNotDelete&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt; ## can be changed to &quot;ReadOnly&quot; as well&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;lockNotes &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Lock for demo blog purposes&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;lockName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Demo Lock&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;queryItem &lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;queryItems&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;queryItem.Name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;type &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;queryItem.Type&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    write-host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Locking &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;type &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;microsoft.resources/subscriptions/resourcegroups&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;){&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;        New-AzResourceLock&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;LockName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;lockName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;LockLevel &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;lockLevel &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;LockNotes &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;lockNotes &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    }&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt; else&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;queryItem.id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.split&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;        New-AzResourceLock&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;LockLevel &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;lockLevel &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;LockNotes &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;lockNotes &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;LockName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;lockName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;queryItem.Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceType &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;queryItem.Type &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;results&quot;&gt;Results&lt;/h3&gt;
&lt;p&gt;Results can be seen below. Our Locks are now in place. Since my account is an &lt;strong&gt;owner&lt;/strong&gt;, I can delete the lock(s), &lt;em&gt;non-owner(s)&lt;/em&gt; would &lt;strong&gt;NOT&lt;/strong&gt; be able to delete locks.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2022/using-arg-tolock-resources/resulting-locks.jpg&quot; alt=&quot;resulting locks in azure&quot;&gt;&lt;/p&gt;
&lt;p&gt;This code and concept can be easily updated or modified to meet different your specific requirements.&lt;/p&gt;</content:encoded><updated/></item><item><title>Using Arc to SSH into Linux and Windows</title><link>https://fskelly.github.io/post/arc-ssh-windows-linux/</link><guid isPermaLink="true">https://fskelly.github.io/post/arc-ssh-windows-linux/</guid><description>Using Arc to SSH into Linux and Windows</description><pubDate>Tue, 27 Sep 2022 07:03:53 GMT</pubDate><content:encoded>&lt;h2 id=&quot;what-are-we-doing&quot;&gt;What are we doing?&lt;/h2&gt;
&lt;p&gt;We are going to use Azure Arc to SSH into a Linux (ubuntu 20.04) and a Windows Server (Server 2019) machine and run commands.&lt;/p&gt;
&lt;h2 id=&quot;constraints--limitations&quot;&gt;Constraints / limitations&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Use only Azure ARC.&lt;/li&gt;
&lt;li&gt;Use only public endpoints (I have not yet tested this with Private Endpoints) and my VPN is not currently connected to Azure.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;considerations&quot;&gt;Considerations&lt;/h2&gt;
&lt;p&gt;As of the time of this blog post (27-Sep-2022), the &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-arc/servers/ssh-arc-overview&quot;&gt;Azure Arc SSH&lt;/a&gt; functionality is in preview.&lt;/p&gt;
&lt;h2 id=&quot;lets-build-this&quot;&gt;Lets build this&lt;/h2&gt;
&lt;p&gt;So, we are going to use SSH to connect to both Linux and Windows. Yes, you can connect to Windows via SSH and yes it works, we will get this working in this post.&lt;/p&gt;
&lt;h3 id=&quot;steps&quot;&gt;Steps&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Install Azure Arc Agent on VMs&lt;/li&gt;
&lt;li&gt;Ensure that it is connected to Azure Correctly&lt;/li&gt;
&lt;li&gt;Configurations changes for SSH to work&lt;/li&gt;
&lt;li&gt;Connect via SSH&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I am going to assume that steps 1 and 2 are completed already, if not. See &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-arc/servers/deployment-options&quot;&gt;here&lt;/a&gt;. The focus on this post is to connect to your environment using the &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-arc/servers/ssh-arc-overview&quot;&gt;azcmagent&lt;/a&gt; and then connecting to the virtual machine via the portal.&lt;/p&gt;
&lt;h3 id=&quot;linux-vm&quot;&gt;Linux VM&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2022/arc-ssh-windows-linux/connect-button-portal-linux-vm.png&quot; alt=&quot;Connect via portal to linux Azure Arc machine&quot;&gt;&lt;/p&gt;
&lt;p&gt;You will see that this is a linux vm and SSH working here is no surprise. For this post, I am using password authentication type. &lt;strong&gt;This is not ideal for production&lt;/strong&gt;.
&lt;img src=&quot;/images/blogImages/2022/arc-ssh-windows-linux/connect-button-portal-linux-vm-connectoptions.png&quot; alt=&quot;Connect via portal to linux Azure Arc machine options&quot;&gt;
Now you can click, “Connect in browser”. This will launch an &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/cloud-shell/overview&quot;&gt;Azure Cloud Shell&lt;/a&gt;
&lt;img src=&quot;/images/blogImages/2022/arc-ssh-windows-linux/connect-button-portal-linux-vm-connect-in-browser.png&quot; alt=&quot;Connect via portal to linux Azure Arc machine button - connect in browser&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;gotcha&quot;&gt;GOTCHA&lt;/h2&gt;
&lt;p&gt;You may hit your first error here.
&lt;img src=&quot;/blog/assets/cloud/2022/arc-ssh-windows-linux/connect-button-portal-linux-vm-error-1.png&quot; alt=&quot;Connect via portal to linux Azure Arc machine button - connection error&quot;&gt;&lt;/p&gt;
&lt;p&gt;The error may seem a little strange, it seems it is using port 66535 to dp a port lookup - like a proxy lookup - see &lt;a href=&quot;https://serverfault.com/questions/915724/connection-closed-by-unknown-port-65535-when-ssh-using-ad-creds-on-rhel-machine&quot;&gt;here&lt;/a&gt; as an example of this. It is still wanting to connect to port 22, the normal ssh port. &lt;em&gt;So how do we fix this?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Configuring the &lt;strong&gt;Az&lt;/strong&gt;ure &lt;strong&gt;c&lt;/strong&gt;onnected &lt;strong&gt;ma&lt;/strong&gt;chine &lt;strong&gt;agent&lt;/strong&gt; is documented &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/azure-arc/servers/ssh-arc-overview&quot;&gt;here&lt;/a&gt; and the command we need is this.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;azcmagent&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; config&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; set&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; incomingconnections.ports&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 22&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Run this command on your linux machine (sudo will be needed)
&lt;img src=&quot;/blog/assets/cloud/2022/arc-ssh-windows-linux/connect-button-portal-linux-vm-fix1.png&quot; alt=&quot;Update port number from azcmagent&quot;&gt;
and then we can connect&lt;br&gt;
&lt;img src=&quot;/blog/assets/cloud/2022/arc-ssh-windows-linux/connect-button-portal-linux-vm-connect-1.png&quot; alt=&quot;Connect via portal to linux Azure Arc machine is successful&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;windows-vm&quot;&gt;Windows VM&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2022/arc-ssh-windows-linux/connect-button-portal-windows-vm.png&quot; alt=&quot;Connect via portal to Windows Azure Arc machine&quot;&gt;&lt;/p&gt;
&lt;p&gt;The steps for connection from the portal and the required &lt;strong&gt;Az&lt;/strong&gt;ure &lt;strong&gt;c&lt;/strong&gt;onnected &lt;strong&gt;ma&lt;/strong&gt;chine &lt;strong&gt;agent&lt;/strong&gt; commands are the same. However we do need to get SSH working on the Windows Server, this is actually quite easy and simply needs some copy and paste, see &lt;a href=&quot;https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse?tabs=powershell&quot;&gt;here&lt;/a&gt;. Once you have done that, your connection will work.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2022/arc-ssh-windows-linux/connect-button-portal-windows-vm-connect-1.png&quot; alt=&quot;Connect via portal to Windows Azure Arc machine is successful&quot;&gt;&lt;/p&gt;
&lt;p&gt;So there you have it, an SSH connection from the Azure portal to a Windows AND Linux Arc-enabled machine.&lt;/p&gt;</content:encoded><updated/></item><item><title>Check Powershell Console Type</title><link>https://fskelly.github.io/post/check-powershell-type/</link><guid isPermaLink="true">https://fskelly.github.io/post/check-powershell-type/</guid><description>I have been working with some Microsoft Hybrid technologies. My specific example here is around Azure Arc enabled VMware vSphere aspects. Wh...</description><pubDate>Wed, 14 Sep 2022 10:14:30 GMT</pubDate><content:encoded>&lt;p&gt;I have been working with some Microsoft Hybrid technologies. My specific example here is around &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-arc/vmware-vsphere/overview&quot;&gt;Azure Arc-enabled VMware vSphere&lt;/a&gt; aspects. When running the scripts provided here there is a key aspect.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do NOT run this in the PowerShell ISE.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Even with this strong recommendation, it is often accidentally used as it is really easy to perform this action with a right click option and this got me to thinking about how can I check this via code?&lt;/p&gt;
&lt;p&gt;So I did some thinking and found a way to check which console type you are running. Below is sample code but will exit the script if the Console Type is ISE.&lt;/p&gt;
&lt;h2 id=&quot;how-do-we-check-this-and-prevent-this&quot;&gt;How do we check this and prevent this?&lt;/h2&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;consoleType &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; get-host&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;consoleType.Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-match&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;ise&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;message &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;You should NOT use the ISE window, please reload in PowerShell window&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;message&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;message &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;This process will terminate shortly&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;message&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Start-Sleep&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Seconds &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;10&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;    break&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt; else&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;message &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;good to go&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-Output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;message&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Very simple fix but can save hours of troubleshooting.&lt;/p&gt;
&lt;p&gt;You may even notice the change to &lt;strong&gt;write-output&lt;/strong&gt; from &lt;strong&gt;write-host&lt;/strong&gt; as part of &lt;a href=&quot;https://devblogs.microsoft.com/powershell/using-psscriptanalyzer-to-check-powershell-version-compatibility/&quot;&gt;Cross platform support&lt;/a&gt;&lt;/p&gt;</content:encoded><updated/></item><item><title>Using SSH Keys with Bicep based Linux VM templates</title><link>https://fskelly.github.io/post/bicep-linux-vm-ssh-keys/</link><guid isPermaLink="true">https://fskelly.github.io/post/bicep-linux-vm-ssh-keys/</guid><description>I this post, I use bicep files for the deployment of Linux VMs AND I add some magic with PowerSehll to allow for the creation or using of ex...</description><pubDate>Mon, 20 Jun 2022 07:54:21 GMT</pubDate><content:encoded>&lt;p&gt;I this post, I use bicep files for the deployment of Linux VMs AND I add some magic with PowerSehll to allow for the creation or using of existing SSH keys with these VMs.&lt;/p&gt;
&lt;p&gt;I am a HUGE fan of SSH keys with Linux VMs for obvious reasons. I could just not find a script or scenario that covered this topic in a way that I actually like. I like to show more details and explain.&lt;/p&gt;
&lt;p&gt;In this scenario, we use PowerShell to create the SSH keys and then use the value to the SSH key to deploy the Linux VM or use an existing SSH key adn then use that kay as part of the deployment. All automated, you just need to update some variables and let the script run. Who does not love automated examples ? :smile:&lt;/p&gt;
&lt;p&gt;SSH Keys give us a secure and reliable way to connect to Linux VMs without the use of usernames and passwords. Naturally the keys would need to be protected. Maybe in another post I will create a keyVault to show this process.&lt;/p&gt;
&lt;p&gt;Note: Please use 1A OR 1B&lt;br&gt;
A. Create new keys&lt;br&gt;
b. Use existing Keys&lt;/p&gt;
&lt;h2 id=&quot;1a-create-the-ssh-keys-if-using-the-option-to-create-keys-file&quot;&gt;1A. Create the SSH Keys (if using the option to create keys) &lt;a href=&quot;https://github.com/fskelly/flkelly-AzureCode-bicep/blob/main/examples/vm/linuxVM/deployWithNewKey.ps1&quot;&gt;file&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Please remember to update the variables as needed.&lt;br&gt;
Variables to update&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;$vmName&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If&lt;/strong&gt; you want to change the path of the created keys - $keyLocation&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Pre-req&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Create required ssh-keys&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Requires ssh-keygen to be installed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;vmName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;keyLocation  &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;env:USERPROFILE &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;\.ssh\&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateKeyName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;vmName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-key&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;publicKeyName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;vmName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-key.pub&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateKeyPath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;keyLocation &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateKeyName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;publicKeyPath  &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;keyLocation &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;publicKeyName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ssh&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;keygen &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;m PEM &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;t rsa &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;b &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;2048&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;C &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;vmName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-f&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateKeyPath&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;##Deploy&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;sshKey &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-Content&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;publicKeyPath&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;secureSSHKey &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; ConvertTo-SecureString&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;sshKey &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;AsPlainText &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Force&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;1b-us-existing-ssh-keys-if-using-the-option-to-create-keys-file&quot;&gt;1B. Us existing SSH Keys (if using the option to create keys) &lt;a href=&quot;https://github.com/fskelly/flkelly-AzureCode-bicep/blob/main/examples/vm/linuxVM/deployWithExistingKey.ps1&quot;&gt;file&lt;/a&gt;&lt;/h2&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Get key data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;publicKeyPath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;sshKey &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-Content&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;publicKeyPath&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;secureSSHKey &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; ConvertTo-SecureString&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;sshKey &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;AsPlainText &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Force&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateKeyPath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;2-deploy-the-bicep-template-file&quot;&gt;2. Deploy the Bicep Template &lt;a href=&quot;https://github.com/fskelly/flkelly-AzureCode-bicep/blob/main/examples/vm/linuxVM/main.bicep&quot;&gt;file&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Please remember to update the variables as needed.&lt;br&gt;
Variables to update&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;$resourceGroupName&lt;/li&gt;
&lt;li&gt;$resourceGroupLocation&lt;/li&gt;
&lt;li&gt;$userName&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Deploy to Azure&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupLocation &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;userName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;New-AzResourceGroup&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Location &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupLocation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;New-AzResourceGroupDeployment&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;TemplateFile .&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;main.bicep &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;adminUsername &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;userName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;adminPasswordOrKey &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;secureSSHKey&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;hostName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Get-AzResourceGroupDeployment&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.outputs.hostname.value&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Adding slight delay&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Start-Sleep&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 5&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Connect to the vm&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ssh &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;i &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;privateKeyPath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;userName@&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;hostName&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now you can automatically connect to your newly deployed VM with an SSH Key. How great is that?&lt;/p&gt;</content:encoded><updated/></item><item><title>Using Openssh and creating SSH Keys with Powershell</title><link>https://fskelly.github.io/post/openssh-powershell/</link><guid isPermaLink="true">https://fskelly.github.io/post/openssh-powershell/</guid><description>In this post I show you my process for creating SSH Keys for Linux Machines. I use a fair amount of Linux in my work career (creating VMs an...</description><pubDate>Mon, 25 Apr 2022 13:27:03 GMT</pubDate><content:encoded>&lt;p&gt;In this post I show you my process for creating SSH Keys for Linux Machines.&lt;/p&gt;
&lt;p&gt;I use a fair amount of Linux in my work career (creating VMs and the like within Azure). Linux VMs are great for testing with, they use SSH and are configured and ready for testing VERY quickly in Azure. I also use a fair amount of Linux in personal life, with &lt;a href=&quot;https://home-assisant.io&quot;&gt;Home assistant&lt;/a&gt; and &lt;a href=&quot;https://plex.tv&quot;&gt;Plex&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I know many people use username and password with Linux environments and there is nothing wrong with this, I simply think that keys are better :smile: . I believe this for a few reasons.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Allows for better control over access to a machine - no key, no access.&lt;/li&gt;
&lt;li&gt;Allows for a better logon experience, seems more “seamless”&lt;/li&gt;
&lt;li&gt;Key information can be stored in a secure location for repeated use
&lt;ol&gt;
&lt;li&gt;For personal use, I store the key information in &lt;a href=&quot;https://1password.com/&quot;&gt;1Password&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;For work use, I store the key information in Azure Kayvault&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Can be easily scripted to create new keys as needed&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With the last point, I am a big &lt;a href=&quot;https://docs.microsoft.com/en-us/powershell/scripting/overview?view=powershell-7.2&quot;&gt;PowerShell&lt;/a&gt; user and I have created a simple script that work in &lt;a href=&quot;https://docs.microsoft.com/en-us/powershell/scripting/windows-powershell/install/installing-windows-powershell?view=powershell-7.2&quot;&gt;PowerShell&lt;/a&gt; and &lt;a href=&quot;https://github.com/powershell/powershell&quot;&gt;PowerShell Core&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You will need openssh for this to work. The command below will help with this 👍.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;choco install openssh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now for the PowerShell code, update the variables as needed. This creates the keys for us.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;username &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;keyLocation &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;keyName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;username&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;keyPath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;keyLocation &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;keyName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ssh&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;keygen &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;m PEM &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;t rsa &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;b &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;4096&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -f&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;keyPath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;C &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;username&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now to get the content of the public key, for use with Azure VMs or any type of IaC, I use &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-resource-manager/bicep/overview?tabs=bicep&quot;&gt;Bicep&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can read the content out to something simple like NotePad (Honestly a tool I use &lt;strong&gt;DAILY&lt;/strong&gt;).&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;pubKeyPath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;keyPath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.pub&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;pubKey &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; get-content&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;pubKeyPath&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;pubKey&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Example output from $pubkey below, this is what you need to copy and paste within the Azure Portal when creating a Linux VM.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2022/openssh-powershell/ssh-key-example.jpg&quot; alt=&quot;ssh-key-example&quot;&gt;&lt;/p&gt;
&lt;p&gt;If you want to use this key with an existing, you can. :smile: . We can perform a task similar to ssh-copy-id. Update the &lt;em&gt;&lt;strong&gt;$destinationIp&lt;/strong&gt;&lt;/em&gt; as needed.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;destinationIp &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;type &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;pubKeyPath &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; ssh &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;username@&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;destinationIp &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;cat &gt;&gt; .ssh/authorized_keys&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content:encoded><updated/></item><item><title>Using Azure Virtual WAN to connect to Azure VMware Solution</title><link>https://fskelly.github.io/post/poc-vwan-avs/</link><guid isPermaLink="true">https://fskelly.github.io/post/poc-vwan-avs/</guid><description>How do I connect my on premises environment to AVS in a quick and simple way? There are a few patterns available for connecting [Azure VMwar...</description><pubDate>Mon, 28 Mar 2022 06:27:16 GMT</pubDate><content:encoded>&lt;h2 id=&quot;how-do-i-connect-my-on-premises-environment-to-avs-in-a-quick-and-simple-way&quot;&gt;How do I connect my on-premises environment to AVS in a quick and simple way?&lt;/h2&gt;
&lt;p&gt;There are a few patterns available for connecting &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-vmware/introduction&quot;&gt;Azure VMware Solution&lt;/a&gt; to your on-premises network. There is specific guidance for PRODUCTION deployments here &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-network-topology-connectivity&quot;&gt;here&lt;/a&gt;. The option we are talking about here is for a different use case.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Specific use case:&lt;/strong&gt; A &lt;em&gt;&lt;strong&gt;PoC (Proof of Concept)&lt;/strong&gt;&lt;/em&gt; type environment or smaller environments for testing with a plan to grow after the fact.&lt;/p&gt;
&lt;p&gt;Azure Virtual WAN is one of the easy ways to get this accomplished. Below, we are going to work through an example.&lt;/p&gt;
&lt;h2 id=&quot;what-are-we-going-to-deploy&quot;&gt;What are we going to deploy?&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2022/vwan-avs-poc/topology.jpg&quot; alt=&quot;deployed vwan topology&quot;&gt;&lt;/p&gt;
&lt;p&gt;We are going to use &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/virtual-wan/virtual-wan-about&quot;&gt;Azure Virtual WAN&lt;/a&gt; to allow for a connection from on-premises to &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-vmware/introduction&quot;&gt;Azure VMware Solution&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have this as modular as possible with &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-resource-manager/bicep/bicep-functions-logical#bool&quot;&gt;booleans&lt;/a&gt; in &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-resource-manager/bicep/overview?tabs=bicep&quot;&gt;Bicep&lt;/a&gt; to make this is as customizable as possible for you.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A VPN Gateway will be deployed.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bicep&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;&apos;Specifies whether or not to deploy the site to site connection.&apos;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;param&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; deployS2SConnection bool = &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;An ExpressRoute Gateway will be deployed.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bicep&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;@&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;description&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;&apos;Specifies whether or not to deploy ExR connection.&apos;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;param&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; deployExRConnection bool = &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;💪 Bicep code can be found &lt;a href=&quot;https://github.com/fskelly/flkelly-AzureCode-bicep/tree/main/examples/virtualWan/AVS/module-example&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What to expect when deploying?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You will get an ExpressRoute gateway. I set this as a “true” boolean value to cater for this.&lt;/li&gt;
&lt;li&gt;The deployment will happen over 2 resource groups - if deploying the “vnetconnection” option.  &lt;img src=&quot;/blog/assets/cloud/2022/poc-vwan-avs/2resourcegoups.jpg&quot; alt=&quot;deployment screenshot showing the 2 deployed resource groups&quot;&gt;&lt;/li&gt;
&lt;li&gt;It will look like nothing is happening in the Virtual WAN resource group. Show hidden items here.  &lt;img src=&quot;/blog/assets/cloud/2022/poc-vwan-avs/showHiddenTypes.jpg&quot; alt=&quot;deployment screenshot showing hidden items checked&quot;&gt;&lt;/li&gt;
&lt;li&gt;The deployment, if choosing anything Gateway related (VPN Gateway or ExpressRoute gateway) will take some time - up to 35 minutes.  &lt;img src=&quot;/blog/assets/cloud/2022/poc-vwan-avs/vHubDeploy.jpg&quot; alt=&quot;deployment screenshot showing times&quot;&gt;&lt;/li&gt;
&lt;li&gt;The deployment will deploy a VPN Gateway (on-premises to Azure)&lt;/li&gt;
&lt;li&gt;The deployment will deploy a ExR Gateway (Azure to AVS)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This deployment is based upon this &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-vmware/configure-site-to-site-vpn-gateway&quot;&gt;Configure a site-to-site VPN in vWAN for Azure VMware Solution&lt;/a&gt;. Whilst I like this article, it is not 100% complete. For the &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-vmware/introduction&quot;&gt;Azure VMware Solution&lt;/a&gt; (AVS) to work fully, an &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/virtual-wan/virtual-wan-expressroute-portal&quot;&gt;ExpressRoute Gateway for Azure Virtual WAN&lt;/a&gt; is needed. I prefer an IaC approach as the &lt;a href=&quot;https://portal.azure.com&quot;&gt;Azure Portal&lt;/a&gt; UI can change and I like repeatable processes.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/blogImages/2022/vwan-avs-poc/topology.jpg&quot; alt=&quot;deployed vwan topology&quot;&gt;&lt;/p&gt;
&lt;p&gt;This solution then allow you connect your on-premises environment to connect to &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-vmware/introduction&quot;&gt;Azure VMware Solution&lt;/a&gt;. This is probably one of the easiest ways to connect to &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-vmware/introduction&quot;&gt;Azure VMware Solution&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/azure/virtual-wan/virtual-wan-about&quot;&gt;Azure Virtual WAN&lt;/a&gt; can be further extended to ALSO include Point-to-Site connections - &lt;a href=&quot;https://mecdata.it/en/2020/06/configure-a-point-to-site-vpn-connection-via-openvpn/&quot;&gt;This&lt;/a&gt; is a good starting point for building the certificates (self-signed) for the Point-To-Site connections, if you choose to deploy this.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;DISCLAIMER:&lt;/strong&gt;&lt;/em&gt;
&lt;strong&gt;These files are NOT production ready, they used to explain concepts and better prepare you for production.&lt;/strong&gt;&lt;/p&gt;</content:encoded><updated/></item><item><title>Azure VMware Solution: To &apos;Internet Enabled&apos; or not?</title><link>https://fskelly.github.io/post/avs-to-internet-able-or-not/</link><guid isPermaLink="true">https://fskelly.github.io/post/avs-to-internet-able-or-not/</guid><description>Guest Post Author: Robin Heringa What else do I need to know when using Azure VMware Solution (AVS)? As you all (probably) know by now Azure...</description><pubDate>Thu, 17 Mar 2022 16:06:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Guest Post&lt;/strong&gt;
Author: &lt;a href=&quot;/about/robinheringa/&quot;&gt;Robin Heringa&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What else do I need to know when using Azure VMware Solution (AVS)?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As you all (probably) know by now Azure VMware Solution is a managed service offered by Microsoft providing a managed VMware vSphere environment to customers. With this offering customers no longer need to worry about hardware maintenance, hardware refresh and software maintenance for the core VMware components (ESXi, vCenter and NSX-T).&lt;/p&gt;
&lt;p&gt;By default, after initial deployment of Azure VMware Solution, virtual machines do not have the ability to egress to the Internet. One of the options to enable Internet access is to “flip” the “Internet Enabled” toggle in the connectivity pane of the management blades in the Azure Portal:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2022/avs-to-internet-able-or-not/AVS-Connectivity-Settings-InternetEnabled.jpg&quot; alt=&quot;internet enabled switch&quot;&gt;&lt;/p&gt;
&lt;p&gt;Looks easy, but what does it do?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Internet Enabled option in Azure VMware Solution.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Microsoft runs an Internet break-out capability for Azure VMware Solution which is shared across the customers using Azure VMware Solution. When enabling this capability, a default networking route (0.0.0.0/0) is injected into to Azure VMware Solution Private Cloud which points “unknown destinations” to the shared break-out infrastructure.&lt;/p&gt;
&lt;p&gt;While this capability offers a secure connectivity option to the Internet, it does not offer capabilities for traffic inspection and filtering and thus doesn’t allow for monitoring what traffic is leaving the environment.&lt;/p&gt;
&lt;p&gt;While “Internet Enabled” offers a great way to quickly enable virtual machines on Azure VMware Solution to connect to the Internet, it is maybe not the best option to use for production deployments.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What should I do for production workloads?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For (large) production deployments, it is recommended to use Border Gateway Protocol (BGP) to inject a default route (0.0.0.0/0) which defines a customer controlled internet egress point (aka. firewall) as the next hop address. This approach will allow for inspection and filtering to be performed on traffic leaving and entering Azure VMware Solution hosted workloads.&lt;/p&gt;
&lt;p&gt;There are various options to implement such an infrastructure.
For more information on using Azure Virtual WAN for this scenario, see &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-vmware/enable-public-internet-access&quot;&gt;Enable public internet for Azure VMware Solution workloads&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Next to this, it is of course also possible to either “inject” the default route from the customer on-premises infrastructure (in which case on-premises and Azure will probably share the same Internet break-out point) or it is possible to implement network virtual appliances (NVA) from our networking partners (Fortigate, Palo Alto, Baracuda and many others) to inject an Azure specific default route and attract the traffic destined for the internet. We will go deeper into using third party solutions in later articles.&lt;/p&gt;</content:encoded><updated/></item><item><title>I want to use Azure VMware Solution, what should I know about networking?</title><link>https://fskelly.github.io/post/new-to-avs-nomon-networking-1/</link><guid isPermaLink="true">https://fskelly.github.io/post/new-to-avs-nomon-networking-1/</guid><description>What else do I need to know when using Azure VMware Solution (AVS)? Networking Edition I have been working with many customers over the last...</description><pubDate>Wed, 09 Mar 2022 16:06:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;What else do I need to know when using Azure VMware Solution (AVS)?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Networking Edition&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I have been working with many customers over the last little while that are looking at Azure VMware Solution (AVS).&lt;/p&gt;
&lt;p&gt;Often the idea and use case for the customer is correct. There are a few great reasons to use AVS. If you fit within the use cases, you are in for a real treat.&lt;/p&gt;
&lt;p&gt;Deciding whether or not you are a fit is part of the equation, there is more to this scenario. Let’s dive in a bit more.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You are using the Azure platform but on dedicated hardware.&lt;/li&gt;
&lt;li&gt;You will probably want to extend the connection from AVS to your existing data centre. This will introduce &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-vmware/tutorial-expressroute-global-reach-private-cloud&quot;&gt;Global Reach&lt;/a&gt; if connecting back to on-premises with an ExpressRoute.&lt;/li&gt;
&lt;li&gt;You will most likely use &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-vmware/configure-vmware-hcx&quot;&gt;HCX&lt;/a&gt; as part of your migration.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;So what does all of the above mean?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Networking can start to get a little interesting as there would now be many routing paths over a combination of Layer 2 and Layer 3 connections.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Asymmetric routing can become a real issue.&lt;/li&gt;
&lt;li&gt;“Accidental” latency can be very easily introduced.&lt;/li&gt;
&lt;li&gt;Traffic flow may not flow as expected.&lt;/li&gt;
&lt;li&gt;A PoC (proof of concept) is very important with this technology.&lt;/li&gt;
&lt;li&gt;Migration planning with network segments in mind is key.&lt;/li&gt;
&lt;li&gt;Migration should be as “short-term” as possible, the longer the migration takes, the more networking challenges and complexities will arise.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Guidance for networking can be found &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-network-topology-connectivity&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</content:encoded><updated/></item><item><title>Smarter Washing Machine Notifications</title><link>https://fskelly.github.io/post/smarter-washing-machine-notifications/</link><guid isPermaLink="true">https://fskelly.github.io/post/smarter-washing-machine-notifications/</guid><description>In this post, I show you how I use a Z-Wave Plug (Fibaro) to get more monitoring around power consumption and then use this to drive notific...</description><pubDate>Thu, 03 Mar 2022 10:50:03 GMT</pubDate><content:encoded>&lt;p&gt;In this post, I show you how I use a Z-Wave Plug (Fibaro) to get more monitoring around power consumption and then use this to drive notifications.&lt;/p&gt;
&lt;!--more--&gt;
&lt;p&gt;Where we live now, our washing machine is a “utility room” and we keep the door closed from a noise point of view. With this setup it is possible to miss when the washing is complete and the washing makes no noise to indicate that the washing is compete and this can lead to issues. Have you ever smelled washing that was forgotten? 😖&lt;/p&gt;
&lt;p&gt;So how did I do this?&lt;/p&gt;
&lt;h2 id=&quot;ingredients&quot;&gt;Ingredients&lt;/h2&gt;
&lt;p&gt;In my case, I used z-wave as this is what I had, other technology can be used.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Z-Wave or other Power Monitoring Capable plug&lt;/li&gt;
&lt;li&gt;Z-Wave Stick (Z‐Stick Gen5 USB Controller), if you are using a Sonoff device that connects to WiFi, a similar result can be achieved.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://nodered.org/&quot;&gt;Node-RED&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://home-assisatnt.io/&quot;&gt;Home Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Home Assistant companion app&lt;/li&gt;
&lt;li&gt;Washing Machine use counter (optional)&lt;/li&gt;
&lt;li&gt;Washing Machine running time (optional)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;process&quot;&gt;Process&lt;/h2&gt;
&lt;p&gt;I setup the Z-Wave Plug and started to plot the power usage over a few cycles to get a better understanding of how i could monitoring this. The challenge with the current washing machine is that there are “quiet periods” in the usage whether the usage drops really low. I originally tried to use &lt;a href=&quot;https://flows.nodered.org/node/node-red-contrib-power-monitor&quot;&gt;node-red-contrib-power-monitor&lt;/a&gt; which I have used successfully in the past, however I could find the correct “on” and “off” count value. This emphasizes the importance of &lt;strong&gt;TESTING&lt;/strong&gt;. Make no error, I will use &lt;a href=&quot;https://flows.nodered.org/node/node-red-contrib-power-monitor&quot;&gt;node-red-contrib-power-monitor&lt;/a&gt; for other projects.&lt;/p&gt;
&lt;h2 id=&quot;so-how-did-i-solve-this&quot;&gt;So how did I solve this?&lt;/h2&gt;
&lt;p&gt;I noticed that there was a distinct power usage of “0.4W” when the cycle was complete so I decided to use 2 &lt;a href=&quot;https://zachowj.github.io/node-red-contrib-home-assistant-websocket/node/trigger-state.html#configuration&quot;&gt;Trigger State&lt;/a&gt; nodes in &lt;a href=&quot;https://nodered.org/&quot;&gt;Node-RED&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;For when the usage goes above 2.1W, based upon my earlier testing this was a guaranteed start point to start the washing cycle.&lt;/li&gt;
&lt;li&gt;For when the usage drops to 0.4w, this signals that the load is complete and notifications can be fired.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So, we have a way to determine when the wash cycle started and take the appropriate actions. I get the current washing state in home assistant and change it to running.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;tab&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Flow 5&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;disabled&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;info&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;env&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; []&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;fcb212f752a272ef&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;trigger-state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Washing started&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;exposeToHomeAssistant&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;haConfig&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;icon&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entityid&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;sensor.fibaro_wall_plug_electric_consumption_w&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entityidfiltertype&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;exact&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;debugenabled&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;constraints&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;targetType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;this_entity&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;targetValue&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;current_state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyValue&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;new_state.state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;comparatorType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;comparatorValueDatatype&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;num&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;comparatorValue&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;2.1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;inputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;customoutputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputinitially&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;state_type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;enableInput&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 120&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 260&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;cefc03e9cf83886c&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; []]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;cefc03e9cf83886c&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;api-current-state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Washing machine status dropdown state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 3&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;halt_if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Completed&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;halt_if_type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;halt_if_compare&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entity_id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;input_select.washing_machine_status&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;state_type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;blockInputOverrides&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputProperties&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;payload&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;valueType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;entityState&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;valueType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;entity&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;forType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;num&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;forUnits&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;minutes&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;override_topic&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;state_location&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;payload&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;override_payload&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entity_location&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;override_data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 420&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 260&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;681510ab0e10afd0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; []]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;681510ab0e10afd0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;api-call-service&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Washing input to &lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;in progress&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;debugenabled&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;input_select&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;service&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;select_option&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;areaId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;deviceId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entityId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;input_select.washing_machine_status&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;option&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Running&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;dataType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;mergeContext&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;mustacheAltTags&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputProperties&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;payload&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;valueType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;queue&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 770&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 260&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Home Assistant - Node-red User&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;addon&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;rejectUnauthorizedCerts&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;ha_boolean&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;y|yes|true|on|home|open&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;connectionDelay&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;cacheJson&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;heartbeat&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;heartbeatInterval&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So, we also have a way to determine when the wash cycle completes and take the appropriate actions. I get the current washing state in home assistant and change it to completed, I increment a washing counter and send notifications.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;tab&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Flow 5&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;disabled&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;info&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;env&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; []&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;5511b05f64f5f5b1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;trigger-state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Washing Complete&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;exposeToHomeAssistant&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;haConfig&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;icon&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entityid&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;sensor.fibaro_wall_plug_electric_consumption_w&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entityidfiltertype&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;exact&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;debugenabled&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;constraints&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;targetType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;this_entity&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;targetValue&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;current_state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyValue&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;new_state.state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;comparatorType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;&amp;#x3C;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;comparatorValueDatatype&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;num&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;comparatorValue&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;2.0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;targetType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;this_entity&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;targetValue&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;current_state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyValue&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;new_state.state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;comparatorType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;comparatorValueDatatype&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;num&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;comparatorValue&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;1.6&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;inputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;customoutputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputinitially&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;state_type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;enableInput&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 110&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 220&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;f313351b2dce9a05&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;125dfa81092d0b75&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;d2f6fdb914f820b7&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; []]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;f313351b2dce9a05&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;api-current-state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Washing Machine status dropdown state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 3&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;halt_if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Running&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;halt_if_type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;halt_if_compare&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entity_id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;input_select.washing_machine_status&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;state_type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;blockInputOverrides&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputProperties&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;payload&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;valueType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;entityState&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;valueType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;entity&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;forType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;num&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;forUnits&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;minutes&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;override_topic&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;state_location&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;payload&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;override_payload&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entity_location&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;override_data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 440&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 220&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c68cb6e8d6955af9&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; []]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;125dfa81092d0b75&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;api-call-service&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;+1 to washing count for the day&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;debugenabled&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;counter&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;service&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;increment&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;areaId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;deviceId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entityId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;counter.washing_machine_use_count&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;dataType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;jsonata&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;mergeContext&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;mustacheAltTags&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputProperties&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;queue&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 410&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 280&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;d2f6fdb914f820b7&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;link out&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Notification&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;mode&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;links&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;5bef9c598f188374&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;fc3b25d4ede64aa2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 350&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 340&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;icon&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;node-red/bridge.svg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c68cb6e8d6955af9&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;api-call-service&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Washing input to &lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Completed&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;debugenabled&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;input_select&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;service&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;select_option&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;areaId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;deviceId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entityId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;input_select.washing_machine_status&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;option&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Completed&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;dataType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;mergeContext&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;mustacheAltTags&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputProperties&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;payload&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;valueType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;queue&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 790&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 220&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Home Assistant - Node-red User&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;addon&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;rejectUnauthorizedCerts&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;ha_boolean&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;y|yes|true|on|home|open&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;connectionDelay&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;cacheJson&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;heartbeat&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;heartbeatInterval&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I also keep a track of the running time and the washing machine status (Running or Completed) in Home Assistant.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;tab&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Flow 5&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;disabled&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;info&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;env&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; []&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;e0bdee88550c7508&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;switch&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Running or completed&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;payload&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;rules&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;t&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;eq&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;v&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Running&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;vt&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;t&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;eq&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;v&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Completed&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;vt&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;checkall&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;repair&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 500&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 260&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;47ac4140392aca83&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;1d8755cc067d138e&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;3bfc582ffa71c935&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;8a46dbae7a037860&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;api-current-state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Washing machine stauts dropdown state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 3&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;halt_if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;halt_if_type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;halt_if_compare&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entity_id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;input_select.washing_machine_status&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;state_type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;blockInputOverrides&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputProperties&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;payload&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;valueType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;entityState&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;valueType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;entity&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;forType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;num&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;forUnits&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;minutes&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 380&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 380&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;e0bdee88550c7508&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;14b07d39cf05c174&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;server-state-changed&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Washing machine status changed?&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 4&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;exposeToHomeAssistant&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;haConfig&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;icon&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entityidfilter&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;input_select.washing_machine_status&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entityidfiltertype&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;exact&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputinitially&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;state_type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;haltifstate&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;halt_if_type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;halt_if_compare&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;output_only_on_state_change&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;forType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;num&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;forUnits&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;minutes&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;ignorePrevStateNull&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;ignorePrevStateUnknown&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;ignorePrevStateUnavailable&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;ignoreCurrentStateUnknown&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;ignoreCurrentStateUnavailable&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputProperties&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;payload&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;valueType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;entityState&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;valueType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;eventData&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;topic&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;valueType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;triggerId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 180&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 200&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;e0bdee88550c7508&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;5402cfbb2fbac174&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;poll-state&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Washing machine status&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;exposeToHomeAssistant&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;haConfig&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;icon&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;updateinterval&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;60&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;updateIntervalType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;num&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;updateIntervalUnits&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;seconds&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputinitially&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputonchanged&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entity_id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;input_select.washing_machine_status&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;state_type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;halt_if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;halt_if_type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;halt_if_compare&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 150&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 260&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;e0bdee88550c7508&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;47ac4140392aca83&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Milliseconds to Minutes&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;func&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;time = msg.data.timeSinceChangedMs;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;runningTime = (time / 1000 / 60);&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg.runningTime = parseFloat(runningTime).toFixed(1);&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;remainingtime = 110 - runningTime;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg.remainingTime = parseFloat(remainingtime).toFixed(1);&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;return msg;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;noerr&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;initialize&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;finalize&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;libs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 770&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 180&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;7f3b7cbded7ce6be&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c693594518abd80a&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;1d8755cc067d138e&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;change&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Not running number&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;rules&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;t&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;runningTime&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;pt&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;NaN&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;tot&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;action&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;reg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 760&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 300&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;7f3b7cbded7ce6be&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;3bfc582ffa71c935&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Milliseconds to Minutes&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;func&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg.runningTime = 0;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;return msg;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;noerr&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;initialize&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;finalize&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;libs&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 770&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 360&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c693594518abd80a&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;3ecffe436de5790c&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;inject&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;props&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;payload&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; },&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;topic&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;vt&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; }],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;repeat&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;crontab&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;once&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;onceDelay&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 0.1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;topic&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;payload&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;payloadType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;date&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 120&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 380&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;8a46dbae7a037860&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;7f3b7cbded7ce6be&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;ui_gauge&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Washing Machine Running Time: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;group&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;7e2e840297e6ff32&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;order&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 4&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;gtype&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;wave&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Running Time: &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;min&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;format&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{{msg.runningTime}}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;min&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;max&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;colors&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;#00b500&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;#e6e600&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;#ca3838&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;seg1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;seg2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;className&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 1140&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 300&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; []&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c693594518abd80a&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;api-call-service&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Update running time&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;debugenabled&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;input_number&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;service&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;set_value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;areaId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;deviceId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entityId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;input_number.washing_machine_running_time&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{{runningTime}}&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;dataType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;mergeContext&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;mustacheAltTags&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputProperties&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;queue&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 1100&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 240&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;b51f0aee106afbd0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;comment&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Multiple triggers&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;info&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Multiple triggers to ensure as much accuracy as possible.&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 120&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 160&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; []&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;7e26df45e8227dfe&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;comment&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;c7ac9c26b4b3750d&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Manual trigger&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;info&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 110&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 340&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; []&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Home Assistant - Node-red User&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;addon&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;rejectUnauthorizedCerts&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;ha_boolean&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;y|yes|true|on|home|open&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;connectionDelay&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;cacheJson&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;heartbeat&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;heartbeatInterval&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;7e2e840297e6ff32&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;ui_group&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Utility Room&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;tab&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;e35fd0e6d6776633&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;order&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;disp&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;collapse&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;className&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;e35fd0e6d6776633&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;ui_tab&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;House&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;icon&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;home&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;order&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 34&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;disabled&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;hidden&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For the notifications, I also use &lt;a href=&quot;https://nodered.org/&quot;&gt;Node-RED&lt;/a&gt; and the “notify service” that is from &lt;a href=&quot;https://home-assisatnt.io/&quot;&gt;Home Assistant&lt;/a&gt;. I have tried to make the flow as modular as possible and I use changes nodes to control the message and which device is notified.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;json&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;[&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;1a53b6dd316fd626&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;tab&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Flow 8&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;disabled&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;info&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;env&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; []&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;b3e4a5624ac9d518&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;link in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;1a53b6dd316fd626&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Washing Machine Notifications&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;links&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;ca506a1b0dfe8ba1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;e63c199b1210c601&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;2acc791d40d9f113&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;b713589b6fc1fa2a&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;5daafecdbf09105b&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;d2f6fdb914f820b7&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 85&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 180&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;142cfc8c024d98d0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;142cfc8c024d98d0&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;change&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;1a53b6dd316fd626&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Washing Machine Notification&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;rules&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;t&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;pt&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;notify&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;tot&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;t&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;service&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;pt&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;mobile_app_fkapp&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;tot&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;t&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;message&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;pt&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;ACTION - Time to take out washing&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;tot&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;action&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;to&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;reg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 310&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 240&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;7e2b772ba33565d7&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;7e2b772ba33565d7&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;api-call-service&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;z&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;1a53b6dd316fd626&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Washing out - Action And Text&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 5&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;debugenabled&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;domain&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{{domain}}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;service&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{{service}}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;areaId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;deviceId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;entityId&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;message&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{{message}}&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;:{&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;actions&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;:[{&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;action&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{{action1Action}}&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;{{action1Title}}&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;}]}}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;dataType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;mergeContext&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;mustacheAltTags&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;outputProperties&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;property&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;payload&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;propertyType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        &quot;&lt;/span&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;valueType&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;queue&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;none&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 630&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;y&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 240&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;wires&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; [[]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;770b1d5b.f27204&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Home Assistant - Node-red User&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;addon&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; false,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;rejectUnauthorizedCerts&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;ha_boolean&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;y|yes|true|on|home|open&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;connectionDelay&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;cacheJson&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;heartbeat&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; true,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    &quot;&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt;heartbeatInterval&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Until next time, have fun automating your home. 🏡&lt;/p&gt;</content:encoded><updated/></item><item><title>Sonoff 4ch Pro R2 with ESPHome</title><link>https://fskelly.github.io/post/sonoff-4ch-pro-esphome/</link><guid isPermaLink="true">https://fskelly.github.io/post/sonoff-4ch-pro-esphome/</guid><description>How to flash ESPHome on a Sonoff 4ch Pro R2</description><pubDate>Mon, 17 Jan 2022 12:26:36 GMT</pubDate><content:encoded>&lt;p&gt;In this post, I am going to talk about the process of converting the Sonoff 4CH Pro R2 to &lt;a href=&quot;https://esphome.io&quot;&gt;ESPHome&lt;/a&gt; and how to now connect it to Home Assistant&lt;/p&gt;
&lt;!--more--&gt;
&lt;h2 id=&quot;tools-needed&quot;&gt;Tools needed&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;FTDI Converter &lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2022/sonoffProFlashESPHome/ftdiProgrammer.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2022/sonoffProFlashESPHome/ftdiProgrammer.jpg&quot; alt=&quot;ftdiProgrammer&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dupont cables &lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2022/sonoffProFlashESPHome/dupontCables.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2022/sonoffProFlashESPHome/dupontCables.jpg&quot; alt=&quot;dupontCables&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;USB Cable &lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2022/sonoffProFlashESPHome/usbCable.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2022/sonoffProFlashESPHome/usbCable.jpg&quot; alt=&quot;dupontCables&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sonoff 4ch Pro R2 &lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2022/sonoffProFlashESPHome/sonoff4chOpen.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2022/sonoffProFlashESPHome/sonoff4chOpen.jpg&quot; alt=&quot;dupontCables&quot;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/content/posts/2022/sonoff-4ch-pro-esphome/sonoff-pro-4ch-test.yaml&quot;&gt;ESPHome YAML code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/esphome/esphome-flasher&quot;&gt;ESPHome Flasher&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://home-assistant.io&quot;&gt;Home Assistant&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;ftdi-converter&quot;&gt;FTDI Converter&lt;/h3&gt;
&lt;p&gt;Needed to transfer the compiled .bin to the Sonoff 4Ch Pro, only needed with initial flash from factory firmware to 3rd party firmware.&lt;/p&gt;
&lt;h3 id=&quot;dupoint-cables&quot;&gt;Dupoint cables&lt;/h3&gt;
&lt;p&gt;Creates the connection from the FTDI converter to the actual device.&lt;/p&gt;
&lt;h3 id=&quot;usb-cable&quot;&gt;USB Cable&lt;/h3&gt;
&lt;p&gt;Connects the FTDI converter to the computer&lt;/p&gt;
&lt;h4 id=&quot;cable-connections&quot;&gt;Cable connections&lt;/h4&gt;
&lt;p&gt;Computer → USB Cable → FTDI Converter → Dupont cables → Sonoff 4ch Pro R2
&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2022/sonoffProFlashESPHome//sonoffHeaderPlug.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2022/sonoffProFlashESPHome//sonoffHeaderPlug.jpg&quot; alt=&quot;sonoffHeaderPlug&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;sonoff-4ch-pro-r2&quot;&gt;Sonoff 4Ch Pro R2&lt;/h3&gt;
&lt;p&gt;This is the device we are going to convert to ESPHome firmware&lt;/p&gt;
&lt;h3 id=&quot;esphome-yaml&quot;&gt;ESPHome Yaml&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Remember to use secrets (! secret)&lt;/strong&gt;&lt;br&gt;
You can find the file &lt;a href=&quot;https://github.com/fskelly/fskelly.me/blob/main/content/posts/2022/sonoff-4ch-pro-esphome/sonoff-pro-4ch-test.yaml&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;yml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;# Basic Config&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;esphome&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;  name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; sonoff_4chpror2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;  platform&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; ESP8266&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;  board&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; esp01_1m&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;wifi&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;  ssid&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt; !secret&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; wifi_ssid&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;  password&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C792EA&quot;&gt; !secret&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; wifi_password&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;api&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;# Example configuration entry&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;web_server&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;  port&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 80&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;logger&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;ota&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;binary_sensor&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; platform&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; gpio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    on_press&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      then&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; switch.toggle&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; button_1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    pin&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      number&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; GPIO0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      mode&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; INPUT_PULLUP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      inverted&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#FF9CAC&quot;&gt; True&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Sonoff 4CH Button 1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; platform&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; gpio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    on_press&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      then&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; switch.toggle&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; button_2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    pin&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      number&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; GPIO9&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      mode&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; INPUT_PULLUP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      inverted&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#FF9CAC&quot;&gt; True&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Sonoff 4CH Button 2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; platform&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; gpio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    on_press&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      then&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; switch.toggle&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; button_3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    pin&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      number&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; GPIO10&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      mode&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; INPUT_PULLUP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      inverted&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#FF9CAC&quot;&gt; True&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Sonoff 4CH Button 3&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; platform&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; gpio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    on_press&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      then&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; switch.toggle&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; button_4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    pin&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      number&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; GPIO14&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      mode&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; INPUT_PULLUP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;      inverted&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#FF9CAC&quot;&gt; True&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Sonoff 4CH Button 4&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; platform&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; status&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Sonoff 4CH Status&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;switch&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; platform&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; gpio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; button_1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Sonoff 4CH Relay 1&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    pin&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; GPIO12&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; platform&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; gpio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; button_2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Sonoff 4CH Relay 2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    pin&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; GPIO5&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; platform&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; gpio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; button_3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Sonoff 4CH Relay 3&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    pin&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; GPIO4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; platform&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; gpio&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; button_4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Sonoff 4CH Relay 4&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    pin&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; GPIO15&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; platform&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; esp8266_pwm&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; blue_led&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    pin&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; GPIO13&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    inverted&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#FF9CAC&quot;&gt; True&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;light&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  -&lt;/span&gt;&lt;span style=&quot;color:#F07178&quot;&gt; platform&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; monochromatic&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    id&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; status_led&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    name&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Sonoff 4CH Blue LED&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F07178&quot;&gt;    output&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; blue_led&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;esphome-flasher&quot;&gt;ESPHome Flasher&lt;/h3&gt;
&lt;p&gt;Currently found &lt;a href=&quot;https://github.com/esphome/ESPHome-Flasher&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;home-asisstant&quot;&gt;Home Asisstant&lt;/h3&gt;
&lt;p&gt;Great guide &lt;a href=&quot;https://esphome.io/guides/getting_started_hassio.html&quot;&gt;here&lt;/a&gt; to install the integration.&lt;/p&gt;
&lt;p&gt;Added the flashed ESPHome device to Home Assistant using the ESPHome integration&lt;/p&gt;</content:encoded><updated/></item><item><title>Azure Resource Graph - More queries for Networking and Management Groups</title><link>https://fskelly.github.io/post/2021-arg-networking-mgmt-more/</link><guid isPermaLink="true">https://fskelly.github.io/post/2021-arg-networking-mgmt-more/</guid><description>More queries for Kusto and Enterprise Scale Landing Zone checks.</description><pubDate>Thu, 09 Dec 2021 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Just some more queries I have developed.&lt;/p&gt;
&lt;h2 id=&quot;networking&quot;&gt;Networking&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Don’t create unnecessarily large virtual networks (for example, /16) to ensure that IP address space isn’t wasted.&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;resources&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| where type == &quot;microsoft.network/virtualnetworks&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| extend addressSpace = todynamic(properties.addressSpace)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| mvexpand addressSpace&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| mvexpand addressPrefix&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| extend addressMask = split(addressPrefix,&apos;/&apos;)[1]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;| where addressMask &amp;#x3C;= 16&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Smallest recommended size for a GatewaySubnet is /27&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When you are planning your gateway subnet size, refer to the documentation for the configuration that you are planning to create. For example, the ExpressRoute/VPN Gateway coexist configuration requires a larger gateway subnet than most other configurations. Additionally, you may want to make sure your gateway subnet contains enough IP addresses to accommodate possible future additional configurations. While you can create a gateway subnet as small as /29, we recommend that you create a gateway subnet of /27 or larger (/27, /26 etc.) if you have the available address space to do so. This will accommodate most configurations.&lt;/strong&gt; &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub&quot;&gt;Microsoft Docs&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;kusto&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resources&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;| &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; type == &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;microsoft.network/virtualnetworks&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;| &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; subnets = todynamic(properties.subnets)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;| mvexpand subnets&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;| &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;project&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; VNetname=name,SubnetName=subnets.name, resourceGroup, location, CIDR=subnets.properties.addressPrefix, id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;| &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; SubnetName == &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;GatewaySubnet&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;| &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; subnetMask = &lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;split&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;(CIDR,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;| &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; subnetMask &gt;= &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;27&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Use IP addresses from the address allocation for private internets (RFC 1918).&lt;/strong&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing&quot;&gt;Plan for IP addressing&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;kusto&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resources | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; type == &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;microsoft.network/virtualnetworks&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; addressSpace = todynamic(properties.addressSpace) | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;project&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; cidr &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; regex&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; @&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;^(?:10|127|172&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\\&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.(?:1[6-9]|2[0-9]|3[01])|192&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\\&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.168)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\\&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;..*&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;kusto&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resources | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; type == &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;microsoft.network/virtualnetworks&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; addressSpace = todynamic(properties.addressSpace) | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;project&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; not&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; (cidr &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;matches&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; regex&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; @&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;^(?:10|127|172&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\\&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.(?:1[6-9]|2[0-9]|3[01])|192&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\\&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.168)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;\\&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;..*&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Don’t create unnecessarily large virtual networks (for example, /16) to ensure that IP address space isn’t wasted. &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing&quot;&gt;Plan for IP addressing&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;kusto&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resources | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; type == &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;microsoft.network/virtualnetworks&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; addressSpace = todynamic(properties.addressSpace) | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; addressMask = &lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;split&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;(addressPrefix,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;] | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; addressMask &gt; &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;project&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; name, id, subscriptionId, resourceGroup, addressPrefix&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;kusto&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resources | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; type == &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;microsoft.network/virtualnetworks&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; addressSpace = todynamic(properties.addressSpace) | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; addressMask = &lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;split&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;(addressPrefix,&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&apos;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;] | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; addressMask &amp;#x3C;= &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; | &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;project&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; name, id, subscriptionId, resourceGroup, addressPrefix&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;management-groups&quot;&gt;Management Groups&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Keep the management group hierarchy reasonably flat, with no more than three to four levels ideally. This restriction reduces management overhead and complexity.&lt;/strong&gt;
&lt;a href=&quot;https://docs.microsoft.com/en-us/azure/cloud-adoption-framework/ready/enterprise-scale/management-group-and-subscription-organization&quot;&gt;Define a management group hierarchy&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;kusto&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourcecontainers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;| &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; type == &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;microsoft.resources/subscriptions&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;| &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; ManagementGroup = &lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;tostring&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;(tags),mgmtChain = properties.managementGroupAncestorsChain&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;| &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; array_length&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;(mgmtChain) ==&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;|mvexpand mgmt=mgmtChain&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;project&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; id, subName = name, subscriptionId, managedBy, managementGroupName = mgmt.displayName&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;kusto&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourcecontainers&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;| &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; type == &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;microsoft.resources/subscriptions&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;| &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; ManagementGroup = &lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;tostring&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;(tags),mgmtChain = properties.managementGroupAncestorsChain&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;| &lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; array_length&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;(mgmtChain) &gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;|mvexpand mgmt=mgmtChain&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Follow me for more.&lt;br&gt;
&lt;a href=&quot;https://twitter.com/fskelly&quot;&gt;Twitter&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;https://www.linkedin.com/in/fletcherkelly/&quot;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;</content:encoded><updated/></item><item><title>Azure Resource Group Enterprise Scale Landing Zone queries</title><link>https://fskelly.github.io/post/arg-mg-query-quick-post/</link><guid isPermaLink="true">https://fskelly.github.io/post/arg-mg-query-quick-post/</guid><description>Some starter Azure Resource Graph queries.</description><pubDate>Wed, 25 Aug 2021 03:58:18 GMT</pubDate><content:encoded>&lt;h1 id=&quot;azure-resource-graph-examples&quot;&gt;Azure Resource Graph Examples&lt;/h1&gt;
&lt;p&gt;This is just a quick post. I am slowly working on building a collection of Resource Graph Queries - they can be found &lt;a href=&quot;https://github.com/fskelly/azure-resource-graph/tree/main/enterpriseScale&quot;&gt;here&lt;/a&gt; and will grow over time. It just takes some time to build these.&lt;/p&gt;
&lt;p&gt;They will be broken down into a folder structure based upon the &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/cloud-adoption-framework/ready/enterprise-scale/design-guidelines&quot;&gt;Critical Design Areas of Enterprise Scale Landing Zone&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2021/arg-mg-query-quick-post/folderStructure.png&quot; alt=&quot;folderStructure&quot;&gt;&lt;/p&gt;
&lt;p&gt;Hope this helps and keep an eye out for more.&lt;/p&gt;
&lt;p&gt;Follow me for more.&lt;br&gt;
&lt;a href=&quot;https://twitter.com/fskelly&quot;&gt;Twitter&lt;/a&gt;
&lt;a href=&quot;https://www.linkedin.com/in/fletcherkelly/&quot;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;</content:encoded><updated/></item><item><title>Bicep Troubleshooting</title><link>https://fskelly.github.io/post/bicep-troubleshooting/</link><guid isPermaLink="true">https://fskelly.github.io/post/bicep-troubleshooting/</guid><description>A quick post to help with a common &apos;error&apos; I run into now and then.</description><pubDate>Fri, 02 Jul 2021 03:40:16 GMT</pubDate><content:encoded>&lt;h1 id=&quot;some-basic-troubleshooting-with-azure-bicep&quot;&gt;Some basic “troubleshooting” with &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-resource-manager/bicep/overview&quot;&gt;Azure Bicep&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;So, let me start with this. The team and the community behind Azure Bicep are amazing. There are some great examples &lt;a href=&quot;https://github.com/Azure/bicep&quot;&gt;here&lt;/a&gt;. I often use these as a base and the rip apart or add to meet my needs, you do &lt;strong&gt;NOT&lt;/strong&gt; need to start from ground zero. :smile:&lt;/p&gt;
&lt;p&gt;When you are deploying bicep templates you command will look something like this.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;bicepFile &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.\main.bicep&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;New-AzResourceGroupDeployment&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;resourceGroupName&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;TemplateFile &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;bicepFilePath&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;deploymentname&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I love to use repeatable code, so mine has more variables and would look like this.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Place Resource Group Name here&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;testingRG&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## add tags if you want to add metadata&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;tags &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;deploymentMethod&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;bicep&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Can Be Deleted&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;yes&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## location to be deployed into&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgLocation &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;westeurope&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;#use this command when you need to create a new resource group for your deployment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rg &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; New-AzResourceGroup&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Location &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgLocation &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;New-AzTag&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceId &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rg.ResourceId &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Tag &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;tags&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## bicep Deployment&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#545454;font-style:italic&quot;&gt;## Bicep File name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;bicepFile &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;.\main.bicep&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;deploymentName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;bicepFile&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.Substring&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +(&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;get-date&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;Format ddMMyyyy&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;hhmmss&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-deployment&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;New-AzResourceGroupDeployment&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;rgName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;TemplateFile &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;bicepFile &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;deploymentName&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When trying to deploy you might get an error like this.
&lt;img src=&quot;/blog/assets/cloud/2021/bicep-troubleshooting/bicepError.png&quot; alt=&quot;deployment errors&quot;&gt;&lt;/p&gt;
&lt;p&gt;And that is very cryptic and &lt;strong&gt;NOT&lt;/strong&gt; easy to understand. The easiest fix here is to go back to basics. :smile:&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;az bicep build &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;--&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;file .\main.bicep&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will then throw the actual bicep error, and then you can fix your file and deploy again.&lt;/p&gt;
&lt;p&gt;Hope this helps you.&lt;/p&gt;</content:encoded><updated/></item><item><title>Cli List Locations and Peers</title><link>https://fskelly.github.io/post/cli-list-locations-and-peers/</link><guid isPermaLink="true">https://fskelly.github.io/post/cli-list-locations-and-peers/</guid><description>How to use the Azure CLI to list Azure Locations and their peers So this will be a &quot;quick post&quot; that shows some great functionality within t...</description><pubDate>Wed, 05 May 2021 05:03:02 GMT</pubDate><content:encoded>&lt;h1 id=&quot;how-to-use-the-azure-cli-to-list-azure-locations-and-their-peers&quot;&gt;How to use the Azure CLI to list Azure Locations and their peers&lt;/h1&gt;
&lt;p&gt;So this will be a “quick post” that shows some great functionality within the &lt;a href=&quot;https://docs.microsoft.com/en-us/cli/azure/install-azure-cli&quot;&gt;Azure CLI&lt;/a&gt; with &lt;code&gt;az account list-locations&lt;/code&gt;. With this command you can expect some output like below, you actually get a lot of content back.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;    &quot;displayName&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Brazil Southeast&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;    &quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;/subscriptions/949ef534-07f5-4138-8b79-aae16a71310c/locations/brazilsoutheast&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;    &quot;metadata&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;      &quot;geographyGroup&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;South America&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;      &quot;latitude&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-22.90278&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;      &quot;longitude&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;-43.2075&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;      &quot;pairedRegion&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt; [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;          &quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;/subscriptions/949ef534-07f5-4138-8b79-aae16a71310c/locations/brazilsouth&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;          &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;brazilsouth&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;          &quot;subscriptionId&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; null&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;      ],&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;      &quot;physicalLocation&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Rio&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;      &quot;regionCategory&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Other&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;      &quot;regionType&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Physical&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    }&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;    &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;brazilsoutheast&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;    &quot;regionalDisplayName&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;(South America) Brazil Southeast&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;    &quot;subscriptionId&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; null&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you look at some of the examples, you will also see some &lt;em&gt;“logical”&lt;/em&gt; locations, example below, there is a way of adding a query to remove these to display only &lt;strong&gt;“physical”&lt;/strong&gt; locations.&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;  &quot;displayName&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;United States&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;  &quot;id&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;/subscriptions/949ef534-07f5-4138-8b79-aae16a71310c/cations/unitedstates&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;  &quot;metadata&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;    &quot;geographyGroup&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; null,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;    &quot;latitude&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; null,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;    &quot;longitude&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; null,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;    &quot;pairedRegion&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; null,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;    &quot;physicalLocation&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; null,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;    &quot;regionCategory&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Other&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;    &quot;regionType&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;Logical&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;  }&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;  &quot;name&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;unitedstates&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;  &quot;regionalDisplayName&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;United States&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;  &quot;subscriptionId&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; null&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I use a simple query to remove all locations without latitide and in my case simply return the &lt;strong&gt;Region Name&lt;/strong&gt; 😄&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;az&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; account&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; list-locations&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; --query&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;[?not_null(metadata.latitude)] .{RegionName:name}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; --output&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;  &quot;RegionName&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;brazilsoutheast&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So, now to get the paired region, again if we look at the JSON output, there is ALWAYS only 1 result within the array for Paired Region; as per this only 1 paired region 😄. We will use this to our advantage&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;az&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; account&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; list-locations&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; --query&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;[?not_null(metadata.latitude)] .{RegionName:name, PairedRegion:metadata.pairedRegion[0].name}&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; --output&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; json&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;  &quot;PairedRegion&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;brazilsouth&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;  &quot;RegionName&quot;&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;brazilsoutheast&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content:encoded><updated/></item><item><title>Azure Rest Api Postman Basics</title><link>https://fskelly.github.io/post/azure-rest-api-postman-basics/</link><guid isPermaLink="true">https://fskelly.github.io/post/azure-rest-api-postman-basics/</guid><description>Using Postman with the Azure REST API</description><pubDate>Wed, 14 Apr 2021 07:02:18 GMT</pubDate><content:encoded>&lt;h1 id=&quot;absolute-basics-with-azure-and-postman&quot;&gt;Absolute basics with Azure and &lt;a href=&quot;www.postman.com&quot;&gt;PostMan&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;getting-started&quot;&gt;Getting started&lt;/h2&gt;
&lt;p&gt;Many of the articles I have found online with regards to the &lt;a href=&quot;https://docs.microsoft.com/en-us/rest/api/azure/&quot;&gt;Azure REST API&lt;/a&gt; assume a fair level of familiarity with &lt;a href=&quot;https://azure.microsoft.com/en-us/&quot;&gt;Azure&lt;/a&gt; which can be a good and bad thing. You see the &lt;a href=&quot;https://portal.azure.com&quot;&gt;Azure Portal&lt;/a&gt; makes interacting with the Azure REST API very easy as a lot of the “prerequisite” work is done in the portal as part of the process. For this blog post we will work on something quite basic, “&lt;a href=&quot;https://portal.azure.com/#create/Microsoft.VirtualMachine&quot;&gt;Create a Virtual Machine&lt;/a&gt;”.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://twitter.com/jongallant&quot;&gt;Jon Gallant&lt;/a&gt; has some great content around this and I did use some content from &lt;a href=&quot;https://blog.jongallant.com/2021/02/azure-rest-apis-postman-2021/&quot;&gt;here&lt;/a&gt;, thank you &lt;a href=&quot;https://twitter.com/jongallant&quot;&gt;Jon Gallant&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Within the Azure Portal this is very easy and only requires a few clicks, however under the hood, in order for the Azure REST API to work, there is a lot more going on. Lets dive in :smile:&lt;/p&gt;
&lt;h3 id=&quot;api-order&quot;&gt;API Order&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Have a &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-portal&quot;&gt;Resource Group&lt;/a&gt; available or create one.&lt;/li&gt;
&lt;li&gt;Have a &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-overview&quot;&gt;Virtual Network (VNET)&lt;/a&gt; available or create one.&lt;/li&gt;
&lt;li&gt;Create a &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-network-interface&quot;&gt;Virtual Network Interface Card (NIC)&lt;/a&gt; or create one.&lt;/li&gt;
&lt;li&gt;Create a &lt;a href=&quot;https://azure.microsoft.com/en-us/services/virtual-machines/&quot;&gt;Virtual Machine&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There is a lot of association and the like that goes on in the background.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Resource Group created.&lt;/li&gt;
&lt;li&gt;NIC associated to VNET.&lt;/li&gt;
&lt;li&gt;NIC associated to VM.&lt;/li&gt;
&lt;li&gt;VM created in Resource Group.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;using-the-api&quot;&gt;Using the API&lt;/h3&gt;
&lt;p&gt;So, what I have done, is simply create a collection within &lt;a href=&quot;www.postman.com&quot;&gt;Postman&lt;/a&gt; that uses both collection variables and “Pre-request” scripts to make this collection “portable”.&lt;/p&gt;
&lt;h3 id=&quot;postman-collection&quot;&gt;Postman Collection&lt;/h3&gt;
&lt;p&gt;I use a set of collection variables to help with the initial API Call.
&lt;img src=&quot;/blog/assets/cloud/2021/azure-rest-api-postman-basics/postmanApiCollection.png&quot; alt=&quot;Postman Api Collection&quot;&gt;
With each of the call you will the variables enclosed with ”&lt;strong&gt;{}&lt;/strong&gt;” and path variables prefixed with ”&lt;strong&gt;:&lt;/strong&gt;”
&lt;img src=&quot;/blog/assets/cloud/2021/azure-rest-api-postman-basics/postmanVariables.png&quot; alt=&quot;Postman with Variables&quot;&gt;
With most of the Postman queries, the “&lt;strong&gt;Pre-request Script&lt;/strong&gt;” is also used, this is used to set “extra” pieces of information, for example, specifying a location for the Resource Group.
&lt;img src=&quot;/blog/assets/cloud/2021/azure-rest-api-postman-basics/postmanApiPreRequestScript.png&quot; alt=&quot;Postman with pre-request script&quot;&gt;&lt;/p&gt;
&lt;p&gt;So, go forth and play. My Postman Collection can be found &lt;a href=&quot;https://github.com/fskelly/flkelly-cloudblog/blob/main/blogFiles/azureApiPostman/Azure%20REST%20-%20repo%20ready.postman_collection.json&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</content:encoded><updated/></item><item><title>Expiring Keys and Secrets within Azure Key Vault</title><link>https://fskelly.github.io/post/expiring-keys-azure-key-vault/</link><guid isPermaLink="true">https://fskelly.github.io/post/expiring-keys-azure-key-vault/</guid><description>Find Azure Keyvault expiring keys with PowerShell</description><pubDate>Mon, 18 Jan 2021 05:06:03 GMT</pubDate><content:encoded>&lt;p&gt;I was working with a customer the other day and a fairly simple ask came up, I however could not find an immediate answer within the portal.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How do I check for expiring keys within the Azure KeyVault?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now being a PowerShell person, I never gave this much thought as for most tasks or actions I perform on the Azure Platform is done through PowerShell, AP, or CLI. So easy enough, however, not everyone knows how to do this in PowerShell. So, I created a simple script.&lt;/p&gt;
&lt;p&gt;My requirements&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You can specify the days to check as your expiry window.&lt;/li&gt;
&lt;li&gt;You can also check for non-expiring keys.&lt;/li&gt;
&lt;li&gt;Can be run within the &lt;a href=&quot;https://shell.azure.com&quot;&gt;Cloud Shell&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For me, it is equally important to check for expiring keys, for key rotation there is a &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/key-vault/secrets/tutorial-rotation-dual&quot;&gt;process&lt;/a&gt; to do this. Just as important, if not &lt;strong&gt;&lt;strong&gt;MORE IMPORTANT&lt;/strong&gt;&lt;/strong&gt; is non-expiring keys (think “password never expires on a Domain Admin account”).&lt;/p&gt;
&lt;p&gt;I was simply after a quick and easy click and run script. THe script is hosted on my &lt;a href=&quot;https://github.com/fskelly/flkelly-AzureCode-powershell&quot;&gt;repo&lt;/a&gt; and the specific script can be found &lt;a href=&quot;https://github.com/fskelly/flkelly-AzureCode-powershell/blob/main/keyVault/az/az_checkForExpiringAndNonExpiringSecrets.ps1&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;vaultName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;kvRG &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;kv &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzKeyVault&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;ResourceGroupName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;kvRG &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;VaultName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;vaultName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;secrets &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Get-AzKeyVaultSecret&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;VaultName &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;kv.VaultName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;nonExpiringSecrets &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;secrets &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Where-Object&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.Expires &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $null}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;expiringSecrets &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;secrets &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt; Where-Object&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; {$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;_.Expires &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $null}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;daysToCheck &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F78C6C&quot;&gt; 90&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;expireDate &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Get-Date&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.AddDays&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;daysToCheck&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;expiringSecret &lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;expiringSecrets&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;expiringSecret.Expires &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;-lt&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;expireDate&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;        Write-Host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;expiringSecret&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt;is in the expiry window of &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;daysToCheck&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; days&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;nonExpiringSecret &lt;/span&gt;&lt;span style=&quot;color:#89DDFF;font-style:italic&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; $&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;nonExpiringSecrets&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;    Write-host&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt; ($&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;nonExpiringSecret&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#EEFFFF&quot;&gt;.name &lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; is set to NEVER expire&lt;/span&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#89DDFF&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can see simply replace the variables that you need to, namely &lt;em&gt;&lt;code&gt;$vaultName&lt;/code&gt;&lt;/em&gt; (&lt;strong&gt;name of the Azure Keyvault&lt;/strong&gt;) and &lt;em&gt;&lt;code&gt;$kvRG&lt;/code&gt;&lt;/em&gt; (&lt;strong&gt;name of the Resource Group housing the Azure Keyvault&lt;/strong&gt;)&lt;/p&gt;</content:encoded><updated/></item><item><title>Azure Ghost Cms and Cdn</title><link>https://fskelly.github.io/post/azure-ghost-cms-and-cdn/</link><guid isPermaLink="true">https://fskelly.github.io/post/azure-ghost-cms-and-cdn/</guid><description>I moved my blog onto HUGO. Not everyone would want to do this necessarily, there is a bit of a learning curve, part of the reason I DID IT :...</description><pubDate>Mon, 11 Jan 2021 05:00:18 GMT</pubDate><content:encoded>&lt;p&gt;I moved my blog onto HUGO. Not everyone would want to do this necessarily, there is a bit of a learning curve, part of the reason &lt;strong&gt;I DID IT&lt;/strong&gt; :). However there are other platforms you can use and still add more functionality if you want.&lt;/p&gt;
&lt;p&gt;You can use &lt;a href=&quot;https://ghost.org/&quot;&gt;Ghost&lt;/a&gt; and add an &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/cdn/cdn-overview&quot;&gt;Azure CDN&lt;/a&gt;. This is what this blog post will cover.&lt;/p&gt;
&lt;p&gt;There are some very clever people out there that have made this very easy for you. From my research you have 2 main options.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A “simple Web App”&lt;/li&gt;
&lt;li&gt;More complex deployment with Containers and a CDN - now this sounds interesting.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For this post I naturally focused on &lt;strong&gt;option 2&lt;/strong&gt; :). A &lt;strong&gt;BIG&lt;/strong&gt; shoutout goes to &lt;a href=&quot;https://andrewmatveychuk.com/about/&quot;&gt;Andrew Matveychuk&lt;/a&gt;. I am all about &lt;strong&gt;&lt;strong&gt;“Standing on the shoulders of giants&lt;/strong&gt;”&lt;/strong&gt;. I used his &lt;a href=&quot;https://github.com/andrewmatveychuk/azure.ghost-web-app-for-containers&quot;&gt;repo&lt;/a&gt; and then forked it into mine. He has a nice &lt;a href=&quot;https://andrewmatveychuk.com/a-one-click-ghost-deployment-on-azure-web-app-for-containers/&quot;&gt;blogpost&lt;/a&gt; on his journey. I simply unpacked this a little further and went into some more details and highlight some of the potential gotchas and setting up things in more detail with specific focus on the &lt;a href=&quot;https://portal.azure.com&quot;&gt;Azure Portal&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;deployment&quot;&gt;Deployment&lt;/h3&gt;
&lt;p&gt;The deployment is nice and easy thanks to a one-click deploy - thanks again &lt;a href=&quot;https://andrewmatveychuk.com/about/&quot;&gt;Andrew Matveychuk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2021/azure-ghost-cms-and-cdn/deploymentsample.png&quot; alt=&quot;Deployment Start&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2021/azure-ghost-cms-and-cdn/deploymentSequence.png&quot; alt=&quot;Deployment In Progress&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2021/azure-ghost-cms-and-cdn/deplolymentComplete.png&quot; alt=&quot;Deployment Complete&quot;&gt;&lt;/p&gt;
&lt;p&gt;It &lt;strong&gt;“deploys”&lt;/strong&gt; pretty quickly but, of course, this is just the start of the work.&lt;/p&gt;
&lt;h3 id=&quot;during-deployment&quot;&gt;During deployment&lt;/h3&gt;
&lt;p&gt;During the deployment of the application you will see the Web App change.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2021/azure-ghost-cms-and-cdn/initialWebApp.png&quot; alt=&quot;Initial Web App&quot;&gt;&lt;/p&gt;
&lt;p&gt;Almost
&lt;img src=&quot;/blog/assets/cloud/2021/azure-ghost-cms-and-cdn/ghostBeingConfigured.png&quot; alt=&quot;New App being deployed&quot;&gt;&lt;/p&gt;
&lt;p&gt;Success!!!&lt;br&gt;
You will see something &lt;strong&gt;SIMILAR&lt;/strong&gt; to this.
&lt;img src=&quot;/blog/assets/cloud/2021/azure-ghost-cms-and-cdn/ghostConfigured.png&quot; alt=&quot;New App deployed&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;gotcha-with-container-deployment&quot;&gt;Gotcha with Container Deployment&lt;/h3&gt;
&lt;p&gt;The solution takes a while to deploy - this seems to be due to some changes made recently by Docker. Do &lt;strong&gt;NOT&lt;/strong&gt; be hasty like I was, this can cause issues and create the need for a re-deploy. Instead lets use the logs to see what is going on :)&lt;br&gt;
Now let’s find the log I was talking about.
&lt;img src=&quot;/blog/assets/cloud/2021/azure-ghost-cms-and-cdn/containerLogs.png&quot; alt=&quot;Docker Logs&quot;&gt;
We are waiting for &lt;strong&gt;this&lt;/strong&gt; entry
&lt;img src=&quot;/blog/assets/cloud/2021/azure-ghost-cms-and-cdn/magicMoment-PATIENCE.png&quot; alt=&quot;Magic Moment&quot;&gt;&lt;/p&gt;
&lt;p&gt;So, now to add move value, we can add an &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/cdn/cdn-overview&quot;&gt;Azure CDN&lt;/a&gt; (in this case, this has already been done) and look at configuring your own custom name for this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A content delivery network (CDN) is a distributed network of servers that can efficiently deliver web content to users. CDNs’ store cached content on edge servers in point-of-presence (POP) locations that are close to end users, to minimize latency.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So we can add a custom domain to a CDN to make this more pretty and give your site a more more friendly name - you can move away from the &lt;a href=&quot;https://xyz.azurewebsites.net&quot;&gt;https://xyz.azurewebsites.net&lt;/a&gt;, I definitely think a custom domain is far cleaner and “more professional”. So let’s dive in and get this done. :)&lt;/p&gt;
&lt;p&gt;So, there a few steps to get this done. This is well documented &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/cdn/cdn-map-content-to-custom-domain?tabs=azure-dns&quot;&gt;here&lt;/a&gt;, however I will provide more context and give some sample screenshots.&lt;/p&gt;
&lt;p&gt;We have some DNS Settings to configure as per the above article. Below, I have added some sample for the &lt;a href=&quot;https://demoghost.fskelly.com/&quot;&gt;CDN demo&lt;/a&gt; I configure for this blog.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create the required verification entries in your DNS Zone. I use &lt;a href=&quot;https://www.cloudns.net/&quot;&gt;ClouDNS&lt;/a&gt; but the process is the same, just how you create the required entries will vary with each provider.
&lt;img src=&quot;/blog/assets/cloud/2021/azure-ghost-cms-and-cdn/cdnVerification.png&quot; alt=&quot;Required Verification Entries&quot;&gt;
This process should not take too long, but now we want a &lt;strong&gt;certificate&lt;/strong&gt; and the joys of TLS&lt;/li&gt;
&lt;li&gt;Start the verification process &lt;img src=&quot;/blog/assets/cloud/2021/azure-ghost-cms-and-cdn/cdnCert1.png&quot; alt=&quot;Start of Process&quot;&gt;&lt;/li&gt;
&lt;li&gt;Domain Verification &lt;img src=&quot;/blog/assets/cloud/2021/azure-ghost-cms-and-cdn/cdnCert2.png&quot; alt=&quot;Domain Validation&quot;&gt;&lt;/li&gt;
&lt;li&gt;Create a certificate &lt;img src=&quot;/blog/assets/cloud/2021/azure-ghost-cms-and-cdn/cdnCert3.png&quot; alt=&quot;certificate provisioning&quot;&gt;&lt;/li&gt;
&lt;li&gt;And completed &lt;img src=&quot;/blog/assets/cloud/2021/azure-ghost-cms-and-cdn/cdnCert4.png&quot; alt=&quot;process complete&quot;&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now here is the &lt;a href=&quot;https://demoghost.fskelly.com&quot;&gt;end result&lt;/a&gt; - note the HTTPS 👍 &lt;img src=&quot;/blog/assets/cloud/2021/azure-ghost-cms-and-cdn/cdnDemoPost.png&quot; alt=&quot;site with HTTPS Cert&quot;&gt;&lt;/p&gt;</content:encoded><updated/></item><item><title>My New Blog Home with Azure Static Web App</title><link>https://fskelly.github.io/post/my-new-blog-home/</link><guid isPermaLink="true">https://fskelly.github.io/post/my-new-blog-home/</guid><description>Looking for a new home for my blog posts</description><pubDate>Tue, 05 Jan 2021 13:57:04 GMT</pubDate><content:encoded>&lt;p&gt;So, I have spent the last few days / weeks deciding the best way to host a blog. Now I have a decidedly “split personality”. By this I mean I like to segregate my work and personal hobbies. This can be quite beneficial as this allows me to test a few things.&lt;/p&gt;
&lt;h3 id=&quot;a-few-key-decisions&quot;&gt;A few key decisions&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Must be version controlled - good practice and forces me to get more familiar with &lt;a href=&quot;https://git-scm.com/&quot;&gt;git&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Must be reliable and redundant, or at least enough to re-deploy if needed - see point 1 :) .&lt;/li&gt;
&lt;li&gt;Must be as cheap as possible to run and be fairly quick.&lt;/li&gt;
&lt;li&gt;Must be a learning experience.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Points &lt;strong&gt;1&lt;/strong&gt; and &lt;strong&gt;2&lt;/strong&gt; makes &lt;a href=&quot;https://git-scm.com/&quot;&gt;git&lt;/a&gt; a natural choice. Point &lt;strong&gt;3&lt;/strong&gt; makes &lt;a href=&quot;https://azure.microsoft.com/en-us/&quot;&gt;Azure&lt;/a&gt; or &lt;a href=&quot;https://pages.github.com/&quot;&gt;GitHub Pages&lt;/a&gt; a natural choice. For point &lt;strong&gt;4&lt;/strong&gt;, With this being my &lt;em&gt;“work persona”&lt;/em&gt; I chose Azure Static Web App. I have used GitHub Pages for my &lt;em&gt;“personal persona”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;So now with the basics out of the way,  I needed to chose a static content generator. Based on discussions with a few people and again wanting to learn something, &lt;a href=&quot;https://gohugo.io/getting-started/installing/&quot;&gt;hugo&lt;/a&gt; was chosen and then there is a great guide &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/static-web-apps/publish-hugo&quot;&gt;here&lt;/a&gt; as a starting point.&lt;/p&gt;
&lt;p&gt;The blog you are reading now is hosted with the above criteria and of course a custom domain name.&lt;/p&gt;
&lt;p&gt;More to come soon.&lt;/p&gt;</content:encoded><updated/></item><item><title>Shelly Lamps</title><link>https://fskelly.github.io/post/shelly-lamps/</link><guid isPermaLink="true">https://fskelly.github.io/post/shelly-lamps/</guid><description>Adding Shelly1 to lamps</description><pubDate>Tue, 05 Jan 2021 11:35:15 GMT</pubDate><content:encoded>&lt;h2 id=&quot;use-case&quot;&gt;Use Case&lt;/h2&gt;
&lt;p&gt;I had been using a WiFi bulb with the lamps to control the lighting, this was working very well. The lights would come at set times and this was great. I even have automation around presence detection and the lights would NOT come on if the house was NOT oocupied. However, them it comes to actual sleep, my wife was unable to switch off the lamp with causing the WiFi bulb to be dropped from the network and then breaking the automation. This was NO good.&lt;/p&gt;
&lt;h3 id=&quot;solution-1&quot;&gt;Solution 1&lt;/h3&gt;
&lt;p&gt;I also use ZWave around the house and decided to use a WallMote with Node-Red to map buttons to control the above lights, this solution was better but still lacked the local control. My wife was happier but not yet happy.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2021/shelly1Lamps/wallmote.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2021/shelly1Lamps/wallmote.jpg&quot; alt=&quot;Wallmote&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;solution-2&quot;&gt;Solution 2&lt;/h3&gt;
&lt;p&gt;So I just recently finished building my Shelly1 based lamps. I simply added the Shelly into the wiring of the lamp. I use the term “simply” loosely. This was an actually a bit of a process as the lamp needed to modified in order for this to work. I added an electrical junction box to the bottom of the lamp and then added the required wiring into the box and added a nice simple external switch.&lt;/p&gt;
&lt;p&gt;I followed this video - &lt;a href=&quot;https://www.youtube.com/watch?v=CtHo1lIo4_Q&quot;&gt;shelly 1 how to wire it&lt;/a&gt;
&lt;a href=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2021/shelly1Lamps/shellyLamp.jpg&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/fskelly/fskelly.me/main/static/2021/shelly1Lamps/shellyLamp.jpg&quot; alt=&quot;Shelly in Lamp&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;takeaway&quot;&gt;Takeaway&lt;/h2&gt;
&lt;p&gt;Always be focused on what you are trying to achieve, home automation should enhance your life, not add challenges.&lt;/p&gt;</content:encoded><updated/></item><item><title>Importance of Networking Azure</title><link>https://fskelly.github.io/post/importance-of-networking-azure/</link><guid isPermaLink="true">https://fskelly.github.io/post/importance-of-networking-azure/</guid><description>As a start to this blog post, I think it is important to understand how I see my role as a CSA (Cloud Solution Architect) with my customer....</description><pubDate>Wed, 07 Aug 2019 14:33:36 GMT</pubDate><content:encoded>&lt;p&gt;As a start to this blog post, I think it is important to understand how I see my role as a CSA (Cloud Solution Architect) with my customer. I am primarily a trusted advisor and my customers respect what I have to say, I question and challenge my customers in a constructive way to approach the challenge or problem statement in a different way. I have an amazing role of using Azure as my LEGO playpen and then building a custom solution (LEGO model) to help my customers.&lt;/p&gt;
&lt;p&gt;So, of late I have been having a lot of networking discussions with my customers. Now these discussions have been ranging from a new customer to a very advanced customer that has been using Azure for quite some time. These have also ranged from new connection options to extend their on-premises connectivity into Azure, which we call “Hybrid Connectivity”, as well as networking considerations once in the cloud with Azure Native connectivity such AKS (Azure Kubernetes Service) and ACI (Azure Container Instances) to simply name the current most top of mind topics.&lt;/p&gt;
&lt;p&gt;So, having these discussions is not an uncommon practice and these are the types of discussions that should be happening, there is nothing wrong with this. All that is happening more and more often is that these discussions are happening in isolation as opposed to the customer working on having a holistic approach to this discussion and working on a full cloud networking solution.&lt;/p&gt;
&lt;p&gt;You cannot necessarily think of networking in silos anymore. Yes, networking can be silo’ed and many people do this. However with the “new world” of cloud and the networking associated to this concept, networking is now a critical point on your cloud journey. There are multiple options available here as a start. THe main role of a Cloud SOlutions Architect or more importantly a trusted advisor, is to understand the requirements of your customer and work with the required teams, usually networking, InfoSec, business owner and Application owner to determine the correct networking option for the cusotmer. This would be a mix of solutions and architectures.&lt;/p&gt;
&lt;p&gt;This is a great start to understanding which technologies can or could be used to serve a particular need and then this can be built up to a solution that is extendable and usable by your customer.&lt;/p&gt;</content:encoded><updated/></item><item><title>Csa Tools of the Trade</title><link>https://fskelly.github.io/post/csa-tools-of-the-trade/</link><guid isPermaLink="true">https://fskelly.github.io/post/csa-tools-of-the-trade/</guid><description>So a question I often get asked is &quot;what tools or products do you use?&quot;. So I decided to do a post around the tools and technologies that I...</description><pubDate>Tue, 09 Jul 2019 14:46:43 GMT</pubDate><content:encoded>&lt;p&gt;So a question I often get asked is “what tools or products do you use?”. So I decided to do a post around the tools and technologies that I personally use on a daily basis. So to start this is what people see on my screen on a daily basis.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/blog/assets/cloud/2019/csa-tools-of-the-trade/vscodeScreenShot.png&quot; alt=&quot;VSCode&quot;&gt;&lt;/p&gt;
&lt;p&gt;This is my most common tool, Visual Studio Code, the version shown above is actually the Insiders Build. The primary reason for this tool is that is a “container” for other tools and functionality. The extra functionality is enabled with extensions, my most used extensions are as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Docker, love my containers.&lt;/li&gt;
&lt;li&gt;GitLens, used for my source control, all my code is located here for my Azure related code&lt;/li&gt;
&lt;li&gt;Azure Account (VSCode Extension) , this allows me to run the Azure Cloud Shell from within VSCode, this includes both &lt;strong&gt;PowerShell&lt;/strong&gt; and &lt;strong&gt;BASH&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Kubernetes, can’t really have Docker without this nowadays :)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now, aside from Visual Studio Code, I also use the following:&lt;br&gt;
&lt;img src=&quot;/blog/assets/cloud/2019/csa-tools-of-the-trade/terminalScreenShot.png&quot; alt=&quot;WSL&quot;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Windows Terminal (Preview), I use this extensively for testing of code and running Docker&lt;/li&gt;
&lt;li&gt;WSL2 (Windows Subsystem for Linux 2), I am running the Preview version of this as it is not yet GA, but so far so good.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I use many other applications, however this is my collection of “go-to” tools. This should be in your “cloud arsenal”&lt;/p&gt;</content:encoded><updated/></item><item><title>Network Security Group Change Alerting</title><link>https://fskelly.github.io/post/network-security-group-change-alerting/</link><guid isPermaLink="true">https://fskelly.github.io/post/network-security-group-change-alerting/</guid><description>So, I was with a customer and they are asking for a fairly standard alert. &quot;Please alert me when an NSG is added or modified&quot; . Seems simply...</description><pubDate>Wed, 20 Feb 2019 06:21:49 GMT</pubDate><content:encoded>&lt;p&gt;So, I was with a customer and they are asking for a fairly standard alert.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“Please alert me when an NSG is added or modified”&lt;/strong&gt;. Seems simply enough, however this is not as simply as you think. So I used my favourite search and found the following, “How to receive an email on Azure Network Security Group Rule changes“, this is great content and after testing, it works exactly as expected. I just found one little concern with this approach; this is simply finding the required ID for the action group. I have now investigated and found some code to make this a little easier.&lt;/p&gt;
&lt;p&gt;AZ CLI&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#FFCB6B&quot;&gt;az&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; monitor&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; action-group&lt;/span&gt;&lt;span style=&quot;color:#C3E88D&quot;&gt; list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;PowerShell&lt;/p&gt;
&lt;pre class=&quot;astro-code material-theme-darker&quot; style=&quot;background-color:#212121;color:#EEFFFF; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#82AAFF&quot;&gt;Get-AzActionGroup&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hope this helps people in the field to find the Resource Group ID more easily.&lt;/p&gt;</content:encoded><updated/></item></channel></rss>