node-red-contrib-power-saver 3.3.2 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/docs/.vuepress/config.js +7 -1
  2. package/docs/.vuepress/dist/404.html +3 -3
  3. package/docs/.vuepress/dist/assets/img/heat-capacitor-temperatureVsPrice.6e74905b.png +0 -0
  4. package/docs/.vuepress/dist/assets/img/node-ps-strategy-heat-capacitor-cascade-control.2e75ed9e.png +0 -0
  5. package/docs/.vuepress/dist/assets/img/node-ps-strategy-heat-capacitor-simple-flow-example.29d9bf59.png +0 -0
  6. package/docs/.vuepress/dist/assets/img/oven-setpoint-calculation.5bda0eec.png +0 -0
  7. package/docs/.vuepress/dist/assets/img/overshoot-time.b3b5d70e.png +0 -0
  8. package/docs/.vuepress/dist/assets/js/app.e881e9b6.js +1 -0
  9. package/docs/.vuepress/dist/assets/js/runtime~app.8bebaa00.js +1 -0
  10. package/docs/.vuepress/dist/assets/js/v-0aca7ba6.4f3573a3.js +1 -0
  11. package/docs/.vuepress/dist/assets/js/v-0b5e3c8c.76407435.js +1 -0
  12. package/docs/.vuepress/dist/assets/js/v-1b3a0ab8.def099e9.js +1 -0
  13. package/docs/.vuepress/dist/assets/js/{v-4637f9e4.703b1d96.js → v-4637f9e4.5cc542f6.js} +1 -1
  14. package/docs/.vuepress/dist/assets/js/v-4c28314d.48fc6e75.js +1 -0
  15. package/docs/.vuepress/dist/assets/js/v-510ed0d4.b58000bf.js +1 -0
  16. package/docs/.vuepress/dist/assets/js/v-677dfaed.1ad4c776.js +1 -0
  17. package/docs/.vuepress/dist/assets/js/v-7c87f26e.5e3553b0.js +1 -0
  18. package/docs/.vuepress/dist/assets/js/v-84304104.f66996c5.js +1 -0
  19. package/docs/.vuepress/dist/assets/js/{v-8daa1a0e.c63afc2b.js → v-8daa1a0e.c06c5c76.js} +1 -1
  20. package/docs/.vuepress/dist/assets/js/v-e8c55052.9664f731.js +1 -0
  21. package/docs/.vuepress/dist/changelog/index.html +3 -3
  22. package/docs/.vuepress/dist/contribute/index.html +3 -3
  23. package/docs/.vuepress/dist/examples/example-cascade-temperature-control.html +286 -0
  24. package/docs/.vuepress/dist/examples/example-heat-capacitor.html +229 -0
  25. package/docs/.vuepress/dist/examples/example-next-schedule-entity.html +3 -3
  26. package/docs/.vuepress/dist/examples/example-nordpool-current-state.html +3 -3
  27. package/docs/.vuepress/dist/examples/example-nordpool-events-state.html +3 -3
  28. package/docs/.vuepress/dist/examples/example-tibber-mqtt.html +4 -4
  29. package/docs/.vuepress/dist/examples/index.html +3 -3
  30. package/docs/.vuepress/dist/faq/best-save-viewer.html +2 -2
  31. package/docs/.vuepress/dist/faq/index.html +2 -2
  32. package/docs/.vuepress/dist/guide/index.html +2 -2
  33. package/docs/.vuepress/dist/index.html +3 -3
  34. package/docs/.vuepress/dist/nodes/index.html +3 -3
  35. package/docs/.vuepress/dist/nodes/old-power-saver-doc.html +3 -3
  36. package/docs/.vuepress/dist/nodes/power-saver.html +3 -3
  37. package/docs/.vuepress/dist/nodes/ps-elvia-add-tariff.html +3 -3
  38. package/docs/.vuepress/dist/nodes/ps-general-add-tariff.html +3 -3
  39. package/docs/.vuepress/dist/nodes/ps-receive-price.html +3 -3
  40. package/docs/.vuepress/dist/nodes/ps-strategy-best-save.html +10 -5
  41. package/docs/.vuepress/dist/nodes/ps-strategy-heat-capacitor.html +242 -0
  42. package/docs/.vuepress/dist/nodes/ps-strategy-lowest-price.html +10 -5
  43. package/docs/.vuepress/dist/nodes/strategy-input.html +3 -3
  44. package/docs/README.md +1 -1
  45. package/docs/changelog/README.md +4 -0
  46. package/docs/contribute/README.md +8 -0
  47. package/docs/examples/README.md +8 -2
  48. package/docs/examples/example-cascade-temperature-control.md +345 -0
  49. package/docs/examples/example-heat-capacitor.md +271 -0
  50. package/docs/images/heat-capacitor-temperatureVsPrice.png +0 -0
  51. package/docs/images/node-ps-strategy-heat-capacitor-cascade-control.png +0 -0
  52. package/docs/images/node-ps-strategy-heat-capacitor-simple-flow-example.png +0 -0
  53. package/docs/images/node-ps-strategy-heat-capacitor.png +0 -0
  54. package/docs/images/oven-setpoint-calculation.png +0 -0
  55. package/docs/images/overshoot-time.png +0 -0
  56. package/docs/images/temperature-manipulation-config.png +0 -0
  57. package/docs/nodes/README.md +7 -1
  58. package/docs/nodes/ps-strategy-heat-capacitor.md +346 -0
  59. package/package.json +2 -1
  60. package/src/handle-input.js +1 -1
  61. package/src/strategy-heat-capacitor-functions.js +246 -0
  62. package/src/strategy-heat-capacitor.html +85 -0
  63. package/src/strategy-heat-capacitor.js +125 -0
  64. package/test/data/converted-prices.json +1 -1
  65. package/test/data/multiple-trades.json +53 -0
  66. package/test/data/tibber-decreasing-24h.json +101 -0
  67. package/test/data/tibber-decreasing2-24h.json +101 -0
  68. package/test/strategy-heat-capacitor-node.test.js +183 -0
  69. package/test/strategy-heat-capacitor.test.js +105 -0
  70. package/docs/.vuepress/dist/assets/js/app.b705176c.js +0 -1
  71. package/docs/.vuepress/dist/assets/js/runtime~app.47f4f812.js +0 -1
  72. package/docs/.vuepress/dist/assets/js/v-0aca7ba6.25903946.js +0 -1
  73. package/docs/.vuepress/dist/assets/js/v-0b5e3c8c.a6a015b4.js +0 -1
  74. package/docs/.vuepress/dist/assets/js/v-510ed0d4.7b142a81.js +0 -1
  75. package/docs/.vuepress/dist/assets/js/v-677dfaed.44a653b9.js +0 -1
  76. package/docs/.vuepress/dist/assets/js/v-7c87f26e.ee5be992.js +0 -1
  77. package/docs/.vuepress/dist/assets/js/v-e8c55052.ab0a79ec.js +0 -1
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunknode_red_contrib_power_saver=self.webpackChunknode_red_contrib_power_saver||[]).push([[495],{3707:(e,i,l)=>{l.r(i),l.d(i,{data:()=>a});const a={key:"v-510ed0d4",path:"/changelog/",title:"Change Log",lang:"en-US",frontmatter:{sidebar:"auto"},excerpt:"",headers:[{level:2,title:"3.4.0",slug:"_3-4-0",children:[]},{level:2,title:"3.3.2",slug:"_3-3-2",children:[]},{level:2,title:"3.3.1",slug:"_3-3-1",children:[]},{level:2,title:"3.3.0",slug:"_3-3-0",children:[]},{level:2,title:"3.2.3",slug:"_3-2-3",children:[]},{level:2,title:"3.2.2",slug:"_3-2-2",children:[]},{level:2,title:"3.2.1",slug:"_3-2-1",children:[]},{level:2,title:"3.2.0",slug:"_3-2-0",children:[]},{level:2,title:"3.1.2",slug:"_3-1-2",children:[]},{level:2,title:"3.1.1",slug:"_3-1-1",children:[]},{level:2,title:"3.1.0",slug:"_3-1-0",children:[]},{level:2,title:"3.0.10",slug:"_3-0-10",children:[]},{level:2,title:"3.0.9",slug:"_3-0-9",children:[]},{level:2,title:"3.0.8",slug:"_3-0-8",children:[]},{level:2,title:"3.0.7",slug:"_3-0-7",children:[]},{level:2,title:"3.0.6",slug:"_3-0-6",children:[]},{level:2,title:"3.0.5",slug:"_3-0-5",children:[]},{level:2,title:"3.0.4",slug:"_3-0-4",children:[]},{level:2,title:"3.0.3",slug:"_3-0-3",children:[]},{level:2,title:"3.0.2",slug:"_3-0-2",children:[]},{level:2,title:"3.0.1",slug:"_3-0-1",children:[]},{level:2,title:"3.0.0",slug:"_3-0-0",children:[]},{level:2,title:"2.1.0",slug:"_2-1-0",children:[]},{level:2,title:"2.0.5",slug:"_2-0-5",children:[]},{level:2,title:"2.0.4",slug:"_2-0-4",children:[]},{level:2,title:"2.0.3",slug:"_2-0-3",children:[]},{level:2,title:"2.0.2",slug:"_2-0-2",children:[]},{level:2,title:"2.0.1",slug:"_2-0-1",children:[]},{level:2,title:"2.0.0",slug:"_2-0-0",children:[]},{level:2,title:"1.0.9",slug:"_1-0-9",children:[]}],filePathRelative:"changelog/README.md",git:{updatedTime:164452306e4}}},2108:(e,i,l)=>{l.r(i),l.d(i,{default:()=>s});var a=l(6252);const t=(0,a.uE)('<h1 id="change-log" tabindex="-1"><a class="header-anchor" href="#change-log" aria-hidden="true">#</a> Change Log</h1><p>List the most significant changes, starting in version 1.0.9.</p><h2 id="_3-4-0" tabindex="-1"><a class="header-anchor" href="#_3-4-0" aria-hidden="true">#</a> 3.4.0</h2><ul><li>Added new strategy node Heat Capacitor</li></ul><h2 id="_3-3-2" tabindex="-1"><a class="header-anchor" href="#_3-3-2" aria-hidden="true">#</a> 3.3.2</h2><ul><li>Add command sendOutput.</li></ul><h2 id="_3-3-1" tabindex="-1"><a class="header-anchor" href="#_3-3-1" aria-hidden="true">#</a> 3.3.1</h2>',7),d=(0,a._)("li",null,[(0,a.Uk)("Move doc to "),(0,a._)("a",{href:"power-saver.smoky.no"},"power-saver.smoky.no")],-1),r=(0,a.Uk)("Make tool to test the result of the best save node: "),n=(0,a.Uk)("Best Save Viewer"),o=(0,a.uE)('<h2 id="_3-3-0" tabindex="-1"><a class="header-anchor" href="#_3-3-0" aria-hidden="true">#</a> 3.3.0</h2><ul><li>Remove the config option to schedule from the current hour. The feature did not work, and it was not clear how it should work.</li><li>Added a dynamic command feature to make it possible to dynamically <ol><li>Tell the node to send the schedule to output 3.</li><li>Reset saved data making the next schedule to start without historical data.</li></ol></li><li>Fix node status so it says &quot;No price data&quot; when there is no price data available.</li><li>Added an FAQ section to the doc.</li></ul><h2 id="_3-2-3" tabindex="-1"><a class="header-anchor" href="#_3-2-3" aria-hidden="true">#</a> 3.2.3</h2><ul><li>Remove unused imports</li><li>Fix doc deployment issue</li></ul><h2 id="_3-2-2" tabindex="-1"><a class="header-anchor" href="#_3-2-2" aria-hidden="true">#</a> 3.2.2</h2><ul><li>New attempt to solve the problem with multiple outputs at the same time.</li></ul><h2 id="_3-2-1" tabindex="-1"><a class="header-anchor" href="#_3-2-1" aria-hidden="true">#</a> 3.2.1</h2><ul><li>Fix that may solve the problem with multiple outputs at the same time.</li></ul><h2 id="_3-2-0" tabindex="-1"><a class="header-anchor" href="#_3-2-0" aria-hidden="true">#</a> 3.2.0</h2><ul><li>Config can be sent on input to strategy nodes together with price data, in the same message.</li><li>The ps-receive-price and ps-xxx-add-tariff nodes pass config through from input to output.</li><li>Status on strategy nodes shows the time for the next change.</li></ul><h2 id="_3-1-2" tabindex="-1"><a class="header-anchor" href="#_3-1-2" aria-hidden="true">#</a> 3.1.2</h2><ul><li>Add time, version and current value to output from strategy nodes.</li></ul><h2 id="_3-1-1" tabindex="-1"><a class="header-anchor" href="#_3-1-1" aria-hidden="true">#</a> 3.1.1</h2><ul><li>Fix schedule for Lowest Price node so it uses data from previous day correctly. It sometimes failed when the selected period went over midnight.</li><li>Fix so old data in the Lowest Price node context is deleted.</li></ul><h2 id="_3-1-0" tabindex="-1"><a class="header-anchor" href="#_3-1-0" aria-hidden="true">#</a> 3.1.0</h2><ul><li>New node <code>ps-general-add-tariff</code> to add values that varies af fixed times during the day.</li></ul><h2 id="_3-0-10" tabindex="-1"><a class="header-anchor" href="#_3-0-10" aria-hidden="true">#</a> 3.0.10</h2><ul><li>Fix bug in ps-elvia-add-tariff so it connects to API.</li></ul><h2 id="_3-0-9" tabindex="-1"><a class="header-anchor" href="#_3-0-9" aria-hidden="true">#</a> 3.0.9</h2><ul><li>Fix Nord Pool input for current state node, to read data when payload is set to entity.</li></ul><h2 id="_3-0-8" tabindex="-1"><a class="header-anchor" href="#_3-0-8" aria-hidden="true">#</a> 3.0.8</h2><ul><li>Fix bug in Lowest Price node when period goes over midnight.</li><li>Fix documentation - lots of pages were failing.</li></ul><h2 id="_3-0-7" tabindex="-1"><a class="header-anchor" href="#_3-0-7" aria-hidden="true">#</a> 3.0.7</h2><ul><li>Fix Nord Pool current state node input.</li></ul><h2 id="_3-0-6" tabindex="-1"><a class="header-anchor" href="#_3-0-6" aria-hidden="true">#</a> 3.0.6</h2><ul><li>Remove non-existent node from package.json.</li></ul><h2 id="_3-0-5" tabindex="-1"><a class="header-anchor" href="#_3-0-5" aria-hidden="true">#</a> 3.0.5</h2><ul><li>Move dependencies to correct section (node_fetch and lodash.cloneDeep).</li></ul><h2 id="_3-0-4" tabindex="-1"><a class="header-anchor" href="#_3-0-4" aria-hidden="true">#</a> 3.0.4</h2><ul><li>Remove <code>null</code>-values from Nord Pool data for <code>tomorrow</code>.</li></ul><h2 id="_3-0-3" tabindex="-1"><a class="header-anchor" href="#_3-0-3" aria-hidden="true">#</a> 3.0.3</h2><ul><li>Fix bug in lowest price strategy, when period ends at midnight.</li><li>Fix labels for hours on, so they do not have leading zero.</li><li>Fix so source should be visible in output 3.</li></ul><h2 id="_3-0-2" tabindex="-1"><a class="header-anchor" href="#_3-0-2" aria-hidden="true">#</a> 3.0.2</h2><ul><li>Bugfix in Lowest Price node (not successful)</li></ul><h2 id="_3-0-1" tabindex="-1"><a class="header-anchor" href="#_3-0-1" aria-hidden="true">#</a> 3.0.1</h2><ul><li>Fix so elvia subscription key is stored as credential</li><li>Fix bug on config for strategy nodes. Config was not saved properly.</li><li>Remove double output bug, and better handling when hoursOn &gt; period</li></ul><h2 id="_3-0-0" tabindex="-1"><a class="header-anchor" href="#_3-0-0" aria-hidden="true">#</a> 3.0.0</h2><ul><li>Deprecating old Power Saver node, adding multiple new nodes.</li><li>New node <code>ps-strategy-best-save</code> is replacing old node <code>Power Saver</code> together with the new <code>ps-receive-price</code> node.</li><li>Add new strategy node: <code>ps-strategy-lowest-price</code>.</li><li>Add new node: <code>ps-receive-price</code>.</li><li>Add grid tariff for Elvia customers, using the <code>ps-elvia-add-tariff</code> node.</li><li>New documentation.</li><li>Change node category to Power Saver.</li></ul><h2 id="_2-1-0" tabindex="-1"><a class="header-anchor" href="#_2-1-0" aria-hidden="true">#</a> 2.1.0</h2><ul><li>Accept config as input, making it possible to dynamically change config</li><li>Fix dropdown for config value for selecting output when there is no schedule</li><li>Improve config screen and documentation</li></ul><h2 id="_2-0-5" tabindex="-1"><a class="header-anchor" href="#_2-0-5" aria-hidden="true">#</a> 2.0.5</h2><ul><li>Update links to examples</li></ul><h2 id="_2-0-4" tabindex="-1"><a class="header-anchor" href="#_2-0-4" aria-hidden="true">#</a> 2.0.4</h2><ul><li>Update doc and add examples</li></ul><h2 id="_2-0-3" tabindex="-1"><a class="header-anchor" href="#_2-0-3" aria-hidden="true">#</a> 2.0.3</h2><ul><li>Bugfix</li></ul><h2 id="_2-0-2" tabindex="-1"><a class="header-anchor" href="#_2-0-2" aria-hidden="true">#</a> 2.0.2</h2><ul><li>Fix so Nord Pool data can be read directly from the current state node</li></ul><h2 id="_2-0-1" tabindex="-1"><a class="header-anchor" href="#_2-0-1" aria-hidden="true">#</a> 2.0.1</h2><ul><li>Fix bug that caused no schedule</li><li>Add config to output</li></ul><h2 id="_2-0-0" tabindex="-1"><a class="header-anchor" href="#_2-0-0" aria-hidden="true">#</a> 2.0.0</h2><ul><li>New and better algorithm to calculate savings, resulting in a better schedule.</li><li>Removed possibility to configure maximum hours to save per day, as this does not really make much sense.</li><li>Round savings to 4 decimals.</li><li>Set last savings hour to null when 0.</li></ul><h2 id="_1-0-9" tabindex="-1"><a class="header-anchor" href="#_1-0-9" aria-hidden="true">#</a> 1.0.9</h2><ul><li>Fix bug in saving last hour of the day.</li></ul>',54),h={},s=(0,l(3744).Z)(h,[["render",function(e,i){const l=(0,a.up)("RouterLink");return(0,a.wg)(),(0,a.iD)(a.HY,null,[t,(0,a._)("ul",null,[d,(0,a._)("li",null,[r,(0,a.Wm)(l,{to:"/changelog/power-saver.smoky.no/faq/best-save-viewer.html"},{default:(0,a.w5)((()=>[n])),_:1})])]),o],64)}]])},3744:(e,i)=>{i.Z=(e,i)=>{const l=e.__vccOpts||e;for(const[e,a]of i)l[e]=a;return l}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunknode_red_contrib_power_saver=self.webpackChunknode_red_contrib_power_saver||[]).push([[745],{192:(e,n,s)=>{s.r(n),s.d(n,{data:()=>r});const r={key:"v-677dfaed",path:"/nodes/ps-receive-price.html",title:"ps-receive-price",lang:"en-US",frontmatter:{prev:"./ps-strategy-lowest-price.md"},excerpt:"",headers:[{level:2,title:"Description",slug:"description",children:[]},{level:2,title:"Configuration",slug:"configuration",children:[]},{level:2,title:"Input",slug:"input",children:[{level:3,title:"Tibber input",slug:"tibber-input",children:[]},{level:3,title:"Nord Pool input",slug:"nord-pool-input",children:[]},{level:3,title:"Other input",slug:"other-input",children:[]}]},{level:2,title:"Output",slug:"output",children:[]}],filePathRelative:"nodes/ps-receive-price.md",git:{updatedTime:1640034618e3}}},546:(e,n,s)=>{s.r(n),s.d(n,{default:()=>de});var r=s(6252),t=s(3301);const a=(0,r._)("h1",{id:"ps-receive-price",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#ps-receive-price","aria-hidden":"true"},"#"),(0,r.Uk)(" ps-receive-price")],-1),l=(0,r._)("p",null,[(0,r._)("img",{src:t,alt:"ps-receive-price"})],-1),o=(0,r._)("h2",{id:"description",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#description","aria-hidden":"true"},"#"),(0,r.Uk)(" Description")],-1),i=(0,r._)("p",null,[(0,r.Uk)("The "),(0,r._)("code",null,"ps-receive-price"),(0,r.Uk)(" node is used to convert prices from Tibber or Nord Pool to the format used by the strategy nodes. It takes its input directly from the output of the following nodes (see details below):")],-1),u=(0,r._)("ul",null,[(0,r._)("li",null,[(0,r._)("code",null,"tibber-query"),(0,r.Uk)(" node from Tibber ("),(0,r._)("code",null,"node-red-contrib-tibber-api"),(0,r.Uk)(")")]),(0,r._)("li",null,[(0,r._)("code",null,"current state"),(0,r.Uk)(" node in Home Assistant")]),(0,r._)("li",null,[(0,r._)("code",null,"events: state"),(0,r.Uk)(" node in Home Assistant")])],-1),p=(0,r._)("p",null,[(0,r.Uk)("Output can be sent directly to the strategy nodes (for example "),(0,r._)("code",null,"strategy-best-save"),(0,r.Uk)(" or "),(0,r._)("code",null,"strategy-lowest-price"),(0,r.Uk)("), or it can be sent via another node to add grid tariff or other additional costs before the calculation is done.")],-1),c=(0,r._)("div",{class:"custom-container warning"},[(0,r._)("p",{class:"custom-container-title"},"Note"),(0,r._)("p",null,[(0,r.Uk)("In version 2 of "),(0,r._)("code",null,"node-red-contrib-power-saver"),(0,r.Uk)(", prices were received directly by the Power Saver node. This made it hard to add grid tariff before the calculation was done. That is why this is now a separate node.")])],-1),_=(0,r._)("h2",{id:"configuration",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#configuration","aria-hidden":"true"},"#"),(0,r.Uk)(" Configuration")],-1),b=(0,r._)("p",null,"There is no configuration except from node name.",-1),d=(0,r._)("h2",{id:"input",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#input","aria-hidden":"true"},"#"),(0,r.Uk)(" Input")],-1),h=(0,r._)("h3",{id:"tibber-input",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#tibber-input","aria-hidden":"true"},"#"),(0,r.Uk)(" Tibber input")],-1),m=(0,r.Uk)("If you are a Tibber customer, you can use the "),k=(0,r._)("code",null,"tibber-query",-1),g=(0,r.Uk)(" node from the "),f={href:"https://flows.nodered.org/node/node-red-contrib-tibber-api",target:"_blank",rel:"noopener noreferrer"},U=(0,r._)("code",null,"node-red-contrib-tibber-api",-1),y=(0,r.Uk)(". Set it up with the following query:"),v=(0,r._)("div",{class:"language-gql ext-gql line-numbers-mode"},[(0,r._)("pre",{class:"language-gql"},[(0,r._)("code",null,"{\n viewer {\n homes {\n currentSubscription {\n priceInfo {\n today {\n total\n startsAt\n }\n tomorrow {\n total\n startsAt\n }\n }\n }\n }\n }\n}\n")]),(0,r._)("div",{class:"line-numbers"},[(0,r._)("span",{class:"line-number"},"1"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"2"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"3"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"4"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"5"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"6"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"7"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"8"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"9"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"10"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"11"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"12"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"13"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"14"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"15"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"16"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"17"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"18"),(0,r._)("br")])],-1),w=(0,r._)("p",null,[(0,r.Uk)("Send the result from the "),(0,r._)("code",null,"tibber-query"),(0,r.Uk)(" node with the query above directly to the "),(0,r._)("code",null,"ps-receive-price"),(0,r.Uk)(" node. Make sure it is refreshed when new prices are ready. Prices for the next day are normally ready at 13:00, but refreshing every hour can be a good idea.")],-1),x=(0,r.Uk)("See example with Tibber, a switch and MQTT"),T=(0,r._)("div",{class:"custom-container danger"},[(0,r._)("p",{class:"custom-container-title"},"Warning"),(0,r._)("p",null,"The query above returns an array with all houses you have in your Tibber account. It will work only if the house you want is the first house in the array, for example if you have only one house. If that is not the case, you must use the query below.")],-1),q=(0,r._)("p",null,[(0,r._)("strong",null,"Tibber query for a specific house")],-1),I=(0,r._)("p",null,"If the above query does not give you the house you want as the first in the result array, you can use the following method. In this method you need run one query in order to find the id of the house you want the prices for first, and then use the id in the real query.",-1),P=(0,r.Uk)("Go to the "),N={href:"https://developer.tibber.com/",target:"_blank",rel:"noopener noreferrer"},S=(0,r.Uk)("Tibber Developer pages"),W=(0,r.Uk)(", sign in, and go to the "),A={href:"https://developer.tibber.com/explorer",target:"_blank",rel:"noopener noreferrer"},O=(0,r.Uk)("API Explorer"),C=(0,r.Uk)(". Load your personal token, then run the following query:"),D=(0,r._)("div",{class:"language-gql ext-gql line-numbers-mode"},[(0,r._)("pre",{class:"language-gql"},[(0,r._)("code",null,"{\n viewer {\n homes {\n id\n address {\n address1\n address2\n address3\n postalCode\n city\n country\n }\n }\n }\n}\n")]),(0,r._)("div",{class:"line-numbers"},[(0,r._)("span",{class:"line-number"},"1"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"2"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"3"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"4"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"5"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"6"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"7"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"8"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"9"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"10"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"11"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"12"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"13"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"14"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"15"),(0,r._)("br")])],-1),H=(0,r._)("p",null,[(0,r.Uk)("Then copy the "),(0,r._)("code",null,"id"),(0,r.Uk)(" of the house you want to use prices for. It may look like this:")],-1),j=(0,r._)("div",{class:"language-text ext-text line-numbers-mode"},[(0,r._)("pre",{class:"language-text"},[(0,r._)("code",null,"NB! This is just an example:\n142c1670-ab43-2ab3-ba6d-723703a551e2\n")]),(0,r._)("div",{class:"line-numbers"},[(0,r._)("span",{class:"line-number"},"1"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"2"),(0,r._)("br")])],-1),L=(0,r._)("p",null,"Then use the id in the following query, replacing the id with the one you found in the previous query:",-1),M=(0,r._)("div",{class:"language-gql ext-gql line-numbers-mode"},[(0,r._)("pre",{class:"language-gql"},[(0,r._)("code",null,'{\n viewer {\n home(id: "142c1670-ab43-2ab3-ba6d-723703a551e2") {\n currentSubscription{\n priceInfo{\n today {\n total\n startsAt\n }\n tomorrow {\n total\n startsAt\n }\n }\n }\n }\n }\n}\n')]),(0,r._)("div",{class:"highlight-lines"},[(0,r._)("br"),(0,r._)("br"),(0,r._)("div",{class:"highlight-line"}," "),(0,r._)("br"),(0,r._)("br"),(0,r._)("br"),(0,r._)("br"),(0,r._)("br"),(0,r._)("br"),(0,r._)("br"),(0,r._)("br"),(0,r._)("br"),(0,r._)("br"),(0,r._)("br"),(0,r._)("br"),(0,r._)("br"),(0,r._)("br"),(0,r._)("br")]),(0,r._)("div",{class:"line-numbers"},[(0,r._)("span",{class:"line-number"},"1"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"2"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"3"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"4"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"5"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"6"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"7"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"8"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"9"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"10"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"11"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"12"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"13"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"14"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"15"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"16"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"17"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"18"),(0,r._)("br")])],-1),R=(0,r._)("p",null,[(0,r.Uk)("This is the query you shall put in the "),(0,r._)("code",null,"tibber-query"),(0,r.Uk)(" node.")],-1),Z=(0,r._)("h3",{id:"nord-pool-input",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#nord-pool-input","aria-hidden":"true"},"#"),(0,r.Uk)(" Nord Pool input")],-1),B=(0,r.Uk)("This is especially designed to work for Home Assistant (HA), and the "),E={href:"https://github.com/custom-components/nordpool",target:"_blank",rel:"noopener noreferrer"},G=(0,r.Uk)("Nord Pool custom component"),J=(0,r.Uk)(". The Nord Pool component provides a "),Q=(0,r._)("em",null,"sensor",-1),Y=(0,r.Uk)(" that gives price per hour for today and tomorrow (after 13:00). Send the output from this sensor directly to the "),z=(0,r._)("code",null,"ps-receive-price",-1),F=(0,r.Uk)(" node. Make sure this is done whenever the node is updated, as well as when the system starts up."),K=(0,r._)("p",null,[(0,r.Uk)("Data can be sent from both the "),(0,r._)("code",null,"current state"),(0,r.Uk)(" node or the "),(0,r._)("code",null,"events: state"),(0,r.Uk)(" node.")],-1),V=(0,r._)("div",{class:"custom-container tip"},[(0,r._)("p",{class:"custom-container-title"},"Output properties"),(0,r._)("p",null,[(0,r.Uk)("When using the "),(0,r._)("code",null,"current state"),(0,r.Uk)(" node, configure the output properties to set "),(0,r._)("code",null,"msg.payload"),(0,r.Uk)(" to "),(0,r._)("code",null,"entity"),(0,r.Uk)(".")])],-1),X=(0,r.Uk)("See example with Nord Pool and "),$=(0,r._)("code",null,"current state",-1),ee=(0,r.Uk)(" node"),ne=(0,r.Uk)("See example with Nord Pool and "),se=(0,r._)("code",null,"events: state",-1),re=(0,r.Uk)(" node"),te=(0,r._)("h3",{id:"other-input",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#other-input","aria-hidden":"true"},"#"),(0,r.Uk)(" Other input")],-1),ae=(0,r._)("p",null,"If you cannot use any of the two above (Tibber or Nord Pool), create the input to the node with the payload containing JSON like this:",-1),le=(0,r._)("div",{class:"language-json ext-json line-numbers-mode"},[(0,r._)("pre",{class:"language-json"},[(0,r._)("code",null,[(0,r._)("span",{class:"token punctuation"},"{"),(0,r.Uk)("\n "),(0,r._)("span",{class:"token property"},'"today"'),(0,r._)("span",{class:"token operator"},":"),(0,r.Uk)(),(0,r._)("span",{class:"token punctuation"},"["),(0,r.Uk)("\n "),(0,r._)("span",{class:"token punctuation"},"{"),(0,r.Uk)(),(0,r._)("span",{class:"token property"},'"value"'),(0,r._)("span",{class:"token operator"},":"),(0,r.Uk)(),(0,r._)("span",{class:"token number"},"1"),(0,r._)("span",{class:"token punctuation"},","),(0,r.Uk)(),(0,r._)("span",{class:"token property"},'"start"'),(0,r._)("span",{class:"token operator"},":"),(0,r.Uk)(),(0,r._)("span",{class:"token string"},'"2021-06-21T00:00:00+02:00"'),(0,r.Uk)(),(0,r._)("span",{class:"token punctuation"},"}"),(0,r._)("span",{class:"token punctuation"},","),(0,r.Uk)("\n "),(0,r._)("span",{class:"token punctuation"},"{"),(0,r.Uk)(),(0,r._)("span",{class:"token property"},'"value"'),(0,r._)("span",{class:"token operator"},":"),(0,r.Uk)(),(0,r._)("span",{class:"token number"},"2"),(0,r._)("span",{class:"token punctuation"},","),(0,r.Uk)(),(0,r._)("span",{class:"token property"},'"start"'),(0,r._)("span",{class:"token operator"},":"),(0,r.Uk)(),(0,r._)("span",{class:"token string"},'"2021-06-21T01:00:00+02:00"'),(0,r.Uk)(),(0,r._)("span",{class:"token punctuation"},"}"),(0,r.Uk)("\n "),(0,r._)("span",{class:"token comment"},"//..."),(0,r.Uk)("\n "),(0,r._)("span",{class:"token punctuation"},"]"),(0,r._)("span",{class:"token punctuation"},","),(0,r.Uk)("\n "),(0,r._)("span",{class:"token property"},'"tomorrow"'),(0,r._)("span",{class:"token operator"},":"),(0,r.Uk)(),(0,r._)("span",{class:"token punctuation"},"["),(0,r.Uk)("\n "),(0,r._)("span",{class:"token punctuation"},"{"),(0,r.Uk)(),(0,r._)("span",{class:"token property"},'"value"'),(0,r._)("span",{class:"token operator"},":"),(0,r.Uk)(),(0,r._)("span",{class:"token number"},"3"),(0,r._)("span",{class:"token punctuation"},","),(0,r.Uk)(),(0,r._)("span",{class:"token property"},'"start"'),(0,r._)("span",{class:"token operator"},":"),(0,r.Uk)(),(0,r._)("span",{class:"token string"},'"2021-06-22T00:00:00+02:00"'),(0,r.Uk)(),(0,r._)("span",{class:"token punctuation"},"}"),(0,r._)("span",{class:"token punctuation"},","),(0,r.Uk)("\n "),(0,r._)("span",{class:"token punctuation"},"{"),(0,r.Uk)(),(0,r._)("span",{class:"token property"},'"value"'),(0,r._)("span",{class:"token operator"},":"),(0,r.Uk)(),(0,r._)("span",{class:"token number"},"4"),(0,r._)("span",{class:"token punctuation"},","),(0,r.Uk)(),(0,r._)("span",{class:"token property"},'"start"'),(0,r._)("span",{class:"token operator"},":"),(0,r.Uk)(),(0,r._)("span",{class:"token string"},'"2021-06-22T01:00:00+02:00"'),(0,r.Uk)(),(0,r._)("span",{class:"token punctuation"},"}"),(0,r.Uk)("\n "),(0,r._)("span",{class:"token comment"},"//..."),(0,r.Uk)("\n "),(0,r._)("span",{class:"token punctuation"},"]"),(0,r.Uk)("\n"),(0,r._)("span",{class:"token punctuation"},"}"),(0,r.Uk)("\n")])]),(0,r._)("div",{class:"line-numbers"},[(0,r._)("span",{class:"line-number"},"1"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"2"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"3"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"4"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"5"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"6"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"7"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"8"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"9"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"10"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"11"),(0,r._)("br"),(0,r._)("span",{class:"line-number"},"12"),(0,r._)("br")])],-1),oe=(0,r._)("h2",{id:"output",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#output","aria-hidden":"true"},"#"),(0,r.Uk)(" Output")],-1),ie=(0,r.Uk)("The output is the "),ue=(0,r.Uk)("common strategy input format"),pe=(0,r.Uk)(", so it can be sent directly to the strategy nodes, or via any "),ce=(0,r._)("code",null,"ps-xxx-add-tariff",-1),_e=(0,r.Uk)(" node."),be={},de=(0,s(3744).Z)(be,[["render",function(e,n){const s=(0,r.up)("OutboundLink"),t=(0,r.up)("RouterLink");return(0,r.wg)(),(0,r.iD)(r.HY,null,[a,l,o,i,u,p,c,_,b,d,h,(0,r._)("p",null,[m,k,g,(0,r._)("a",f,[U,(0,r.Wm)(s)]),y]),v,w,(0,r._)("p",null,[(0,r.Wm)(t,{to:"/examples/example-tibber-mqtt.html"},{default:(0,r.w5)((()=>[x])),_:1})]),T,q,I,(0,r._)("p",null,[P,(0,r._)("a",N,[S,(0,r.Wm)(s)]),W,(0,r._)("a",A,[O,(0,r.Wm)(s)]),C]),D,H,j,L,M,R,Z,(0,r._)("p",null,[B,(0,r._)("a",E,[G,(0,r.Wm)(s)]),J,Q,Y,z,F]),K,V,(0,r._)("p",null,[(0,r.Wm)(t,{to:"/examples/example-nordpool-current-state.html"},{default:(0,r.w5)((()=>[X,$,ee])),_:1})]),(0,r._)("p",null,[(0,r.Wm)(t,{to:"/examples/example-nordpool-events-state.html"},{default:(0,r.w5)((()=>[ne,se,re])),_:1})]),te,ae,le,oe,(0,r._)("p",null,[ie,(0,r.Wm)(t,{to:"/nodes/strategy-input.html"},{default:(0,r.w5)((()=>[ue])),_:1}),pe,ce,_e])],64)}]])},3744:(e,n)=>{n.Z=(e,n)=>{const s=e.__vccOpts||e;for(const[e,r]of n)s[e]=r;return s}},3301:(e,n,s)=>{e.exports=s.p+"assets/img/node-ps-receive-price.76eaa418.png"}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunknode_red_contrib_power_saver=self.webpackChunknode_red_contrib_power_saver||[]).push([[889],{9459:(e,t,r)=>{r.r(t),r.d(t,{data:()=>o});const o={key:"v-7c87f26e",path:"/contribute/",title:"Contribute",lang:"en-US",frontmatter:{sidebar:"auto"},excerpt:"",headers:[{level:2,title:"Donate",slug:"donate",children:[]},{level:2,title:"Code",slug:"code",children:[]},{level:2,title:"Examples",slug:"examples",children:[]},{level:2,title:"Bug reports",slug:"bug-reports",children:[]},{level:2,title:"Ideas",slug:"ideas",children:[]},{level:2,title:"Contributors",slug:"contributors",children:[]}],filePathRelative:"contribute/README.md",git:{updatedTime:164452306e4}}},1166:(e,t,r)=>{r.r(t),r.d(t,{default:()=>S});var o=r(6252);const a=(0,o._)("h1",{id:"contribute",tabindex:"-1"},[(0,o._)("a",{class:"header-anchor",href:"#contribute","aria-hidden":"true"},"#"),(0,o.Uk)(" Contribute")],-1),n=(0,o._)("h2",{id:"donate",tabindex:"-1"},[(0,o._)("a",{class:"header-anchor",href:"#donate","aria-hidden":"true"},"#"),(0,o.Uk)(" Donate")],-1),i=(0,o._)("p",null,"Developing software is time consuming. This solution has taken the better part of all my free time for about 3 quarters of a year. Getting something back would make it easier to also spend future time on this.",-1),s=(0,o._)("p",null,'I am trying out Patreon and PayPals "Donate" to see if it is possible to get something back for the work I do. The software is open source, and you can use it for free, but if you feel it has value, you can support the development by donating or becoming a patron, paying a fee of your choice.',-1),l=(0,o.uE)('<h2 id="code" tabindex="-1"><a class="header-anchor" href="#code" aria-hidden="true">#</a> Code</h2><p>It would be very nice to get more developers on board, and become a team. If you satisfy the following criteria, I would be happy to get help on developing this further:</p><ul><li>Professional or experienced developer</li><li>Know JavaScript</li><li>Write automated tests for your code</li><li>Use <code>node-red-contrib-power-saver</code></li><li>Want to collaborate on further development</li></ul><p>Please contact me, for example by making a [GitHub issue(https://github.com/ottopaulsen/node-red-contrib-power-saver/issues)] explaining what you would like to do.</p><p>The first and most important task now, is to make support for getting grid tariff from all suppliers.</p><h2 id="examples" tabindex="-1"><a class="header-anchor" href="#examples" aria-hidden="true">#</a> Examples</h2>',6),u=(0,o.Uk)("It would be very nice to get more examples into the documentation. If you have made something smart, please describe in a markdown-file and either send me, or preferably make a pull request on "),d={href:"https://github.com/ottopaulsen/node-red-contrib-power-saver/pulls",target:"_blank",rel:"noopener noreferrer"},h=(0,o.Uk)("GitHub"),p=(0,o.Uk)("."),c=(0,o._)("h2",{id:"bug-reports",tabindex:"-1"},[(0,o._)("a",{class:"header-anchor",href:"#bug-reports","aria-hidden":"true"},"#"),(0,o.Uk)(" Bug reports")],-1),b=(0,o.Uk)("If you find a bug, please describe it thoroughly and make a "),f={href:"https://github.com/ottopaulsen/node-red-contrib-power-saver/issues",target:"_blank",rel:"noopener noreferrer"},m=(0,o.Uk)("GitHub issue"),g=(0,o.Uk)(". If the bug is related to the scheduling, "),k=(0,o._)("strong",null,"please provide the full output from output 3",-1),_=(0,o.Uk)(" on the strategy node."),v=(0,o._)("h2",{id:"ideas",tabindex:"-1"},[(0,o._)("a",{class:"header-anchor",href:"#ideas","aria-hidden":"true"},"#"),(0,o.Uk)(" Ideas")],-1),w=(0,o.Uk)("If you have ideas for new features, please make a "),y={href:"https://github.com/ottopaulsen/node-red-contrib-power-saver/issues",target:"_blank",rel:"noopener noreferrer"},U=(0,o.Uk)("GitHub issue"),x=(0,o.Uk)(" and describe it as detailed as possible."),I=(0,o._)("h2",{id:"contributors",tabindex:"-1"},[(0,o._)("a",{class:"header-anchor",href:"#contributors","aria-hidden":"true"},"#"),(0,o.Uk)(" Contributors")],-1),C=(0,o.Uk)("Main developer: "),W={href:"https://github.com/ottopaulsen",target:"_blank",rel:"noopener noreferrer"},D=(0,o.Uk)("Otto Paulsen"),P=(0,o.Uk)("Heat Capacitor developer: "),E={href:"https://github.com/TomTorger",target:"_blank",rel:"noopener noreferrer"},H=(0,o.Uk)("Arne Klaveness"),T=(0,o.Uk)("Example contributors: "),G={href:"https://github.com/oakhill87/node-red-contrib-power-saver",target:"_blank",rel:"noopener noreferrer"},B=(0,o.Uk)("Stefan"),O={},S=(0,r(3744).Z)(O,[["render",function(e,t){const r=(0,o.up)("DonateButtons"),O=(0,o.up)("OutboundLink");return(0,o.wg)(),(0,o.iD)(o.HY,null,[a,n,i,s,(0,o.Wm)(r),l,(0,o._)("p",null,[u,(0,o._)("a",d,[h,(0,o.Wm)(O)]),p]),c,(0,o._)("p",null,[b,(0,o._)("a",f,[m,(0,o.Wm)(O)]),g,k,_]),v,(0,o._)("p",null,[w,(0,o._)("a",y,[U,(0,o.Wm)(O)]),x]),I,(0,o._)("p",null,[C,(0,o._)("a",W,[D,(0,o.Wm)(O)])]),(0,o._)("p",null,[P,(0,o._)("a",E,[H,(0,o.Wm)(O)])]),(0,o._)("p",null,[T,(0,o._)("a",G,[B,(0,o.Wm)(O)])])],64)}]])},3744:(e,t)=>{t.Z=(e,t)=>{const r=e.__vccOpts||e;for(const[e,o]of t)r[e]=o;return r}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunknode_red_contrib_power_saver=self.webpackChunknode_red_contrib_power_saver||[]).push([[254],{8800:(n,s,a)=>{a.r(s),a.d(s,{data:()=>t});const t={key:"v-84304104",path:"/examples/example-cascade-temperature-control.html",title:"Cascade temperature control",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Description",slug:"description",children:[{level:3,title:"An example",slug:"an-example",children:[]}]},{level:2,title:"Requirements",slug:"requirements",children:[]},{level:2,title:"Instructions",slug:"instructions",children:[]},{level:2,title:"Flow",slug:"flow",children:[]}],filePathRelative:"examples/example-cascade-temperature-control.md",git:{updatedTime:1644520774e3}}},2055:(n,s,a)=>{a.r(s),a.d(s,{default:()=>M});var t=a(6252),o=a(6953),e=a(3450),p=a(3007);const k=(0,t._)("h1",{id:"cascade-temperature-control",tabindex:"-1"},[(0,t._)("a",{class:"header-anchor",href:"#cascade-temperature-control","aria-hidden":"true"},"#"),(0,t.Uk)(" Cascade temperature control")],-1),c=(0,t._)("h2",{id:"description",tabindex:"-1"},[(0,t._)("a",{class:"header-anchor",href:"#description","aria-hidden":"true"},"#"),(0,t.Uk)(" Description")],-1),r=(0,t._)("p",null,"The controller changes the setpoint of climate entities to regulate the temperature of room with increased responsiveness, accuracy, and stability.",-1),l=(0,t._)("h3",{id:"an-example",tabindex:"-1"},[(0,t._)("a",{class:"header-anchor",href:"#an-example","aria-hidden":"true"},"#"),(0,t.Uk)(" An example")],-1),_=(0,t._)("p",null,"A room has a temperature sensor and en electric heater. Given a setpoint temperature, the controller can make the sensor match the given value by adjusting the temperature settings of the electric heater. This type of control usually reacts faster and is more accurate then the alternative of simply changing the temperature settings of the heater. The flow requires that node-red, home assistant, and the connection to the climate entity are stable.",-1),u=(0,t._)("p",null,[(0,t._)("img",{src:o,alt:"cascade_flow"})],-1),i=(0,t._)("p",null,[(0,t._)("img",{src:"https://deltamotion.com/support/webhelp/rmctools/Controller_Features/Control_Modes/Advanced_Control/CascadeLoop.png",alt:"cascade_example"})],-1),U=(0,t._)("p",null,"The example utilizes a PID controller to provide a number between 0 and 1 to indicate a load on the heater",-1),y=(0,t._)("p",null,"A cascade temperature controller is a controller which utilizes the input/setpoints of other controllers/climate entities to regulate to its own setpoint",-1),g=(0,t._)("hr",null,null,-1),d=(0,t._)("h2",{id:"requirements",tabindex:"-1"},[(0,t._)("a",{class:"header-anchor",href:"#requirements","aria-hidden":"true"},"#"),(0,t.Uk)(" Requirements")],-1),m=(0,t._)("blockquote",null,[(0,t._)("p",null,"Home assistant integrated with Node-RED")],-1),b=(0,t._)("blockquote",null,[(0,t._)("p",null,"The PID node installed - https://flows.nodered.org/node/node-red-contrib-pid")],-1),h=(0,t._)("blockquote",null,[(0,t._)("p",null,"A climate entity")],-1),f=(0,t._)("h2",{id:"instructions",tabindex:"-1"},[(0,t._)("a",{class:"header-anchor",href:"#instructions","aria-hidden":"true"},"#"),(0,t.Uk)(" Instructions")],-1),v=(0,t._)("blockquote",null,[(0,t._)("p",null,[(0,t.Uk)("Create an "),(0,t._)("code",null,"input_number"),(0,t.Uk)(' entity in Home Assistant and name it "cascade_setpoint"')])],-1),w=(0,t._)("blockquote",null,[(0,t._)("p",null,[(0,t.Uk)("Create an "),(0,t._)("code",null,"input_boolean"),(0,t.Uk)(" entity in Home Assistant and name it "),(0,t._)("code",null,"cascade_enabled")])],-1),T=(0,t._)("ul",null,[(0,t._)("li",null,"When set to false, this will disengage the controller")],-1),x=(0,t._)("blockquote",null,[(0,t._)("p",null,"Import the flow into Node-RED")],-1),C=(0,t._)("blockquote",null,[(0,t._)("p",null,[(0,t.Uk)("Enter the correct sensor tempertaure entity in the "),(0,t._)("code",null,"Temp sensor"),(0,t.Uk)(" node")])],-1),S=(0,t._)("blockquote",null,[(0,t._)("p",null,"Change the climate entity name in three places")],-1),z=(0,t._)("ul",null,[(0,t._)("li",null,"Current climate settings - node"),(0,t._)("li",null,[(0,t.Uk)("Set Temperature node - two places "),(0,t._)("ul",null,[(0,t._)("li",null,[(0,t._)("code",null,"Entity ID")]),(0,t._)("li",null,[(0,t._)("code",null,"Data")])])])],-1),q=(0,t._)("blockquote",null,[(0,t._)("p",null,"(optional) Change the oven setpoint range - see figure below.")],-1),P=(0,t._)("ul",null,[(0,t._)("li",null,"This regulates what values the controller sends to the oven. As a default, the value sent is oven_setpoint = setpoint +- 5 degrees. That is, for a setoint of 10C, the controller will be sending setpoints between 5 and 15 C to the oven. This is further limited to whole numbers, a minimum value of 5, and a maximum value of 30.")],-1),D=(0,t._)("blockquote",null,[(0,t._)("p",null,"(reccomended) Tune the PID controller - Detailed instructions can be found here: http://blog.clanlaw.org.uk/pid-loop-tuning.html")],-1),I=(0,t._)("ul",null,[(0,t._)("li",null,[(0,t.Uk)("Measure the system and find the overshoot time "),(0,t._)("ul",null,[(0,t._)("li",null,[(0,t.Uk)("Set the proportional band to "),(0,t._)("strong",null,"zero"),(0,t.Uk)(" and place the setpoint a bit above the current measured value (se figure).")]),(0,t._)("li",null,"Wait for the system to overshoot the target temperature and measure the time it takes for the system to return to the setpoint.")])]),(0,t._)("li",null,"Set the proportional band. This is the value indicates how much the measured temperature is allowed to deviate from the setpoint before max load is applied."),(0,t._)("li",null,"Spesify the integral time. A good value is two times the overshoot time."),(0,t._)("li",null,"Insert the derivative time. A good value here is half of the overshoot time.")],-1),A=(0,t._)("p",null,[(0,t._)("img",{src:e,alt:"oven_setoint"}),(0,t._)("img",{src:p,alt:"overshoot_time"})],-1),j=(0,t._)("hr",null,null,-1),H=(0,t._)("h2",{id:"flow",tabindex:"-1"},[(0,t._)("a",{class:"header-anchor",href:"#flow","aria-hidden":"true"},"#"),(0,t.Uk)(" Flow")],-1),R=(0,t._)("hr",null,null,-1),E=(0,t._)("details",{class:"custom-container details"},[(0,t._)("summary",null,"Flow code"),(0,t._)("div",{class:"language-json ext-json"},[(0,t._)("pre",{class:"language-json"},[(0,t._)("code",null,[(0,t._)("span",{class:"token punctuation"},"["),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"29fde6c61057362b"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"tab"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"label"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"PID Controller - cascade"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"disabled"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"info"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"env"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"]"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"61ae0bee1a382102"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"server-state-changed"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"z"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"29fde6c61057362b"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"name"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"Setpoint"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"server"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"e2dd69fb.8f70a8"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"version"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"3"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"exposeToHomeAssistant"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"haConfig"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"name"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"value"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"icon"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"value"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"entityidfilter"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"input_number.cascade_setpoint"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"entityidfiltertype"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"exact"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputinitially"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"true"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"state_type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"num"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"haltifstate"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"halt_if_type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"str"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"halt_if_compare"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"is"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputs"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"1"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"output_only_on_state_change"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"for"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"0"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"forType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"num"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"forUnits"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"minutes"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"ignorePrevStateNull"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"ignorePrevStateUnknown"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"ignorePrevStateUnavailable"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"ignoreCurrentStateUnknown"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"true"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"ignoreCurrentStateUnavailable"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"true"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputProperties"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"payload"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"propertyType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"msg"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"value"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"valueType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"entityState"'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"data"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"propertyType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"msg"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"value"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"valueType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"eventData"'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"topic"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"propertyType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"msg"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"value"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"valueType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"triggerId"'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"x"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"120"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"y"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"100"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"wires"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token string"},'"f8958d382348c254"'),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},"]"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"ef1c6050d6de41c7"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"server-state-changed"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"z"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"29fde6c61057362b"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"name"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"Temp. sensor"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"server"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"e2dd69fb.8f70a8"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"version"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"3"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"exposeToHomeAssistant"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"haConfig"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"name"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"value"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"icon"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"value"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"entityidfilter"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"sensor.kjokken_temp"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"entityidfiltertype"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"exact"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputinitially"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"true"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"state_type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"num"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"haltifstate"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"halt_if_type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"str"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"halt_if_compare"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"is"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputs"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"1"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"output_only_on_state_change"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"for"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"0"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"forType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"num"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"forUnits"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"seconds"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"ignorePrevStateNull"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"ignorePrevStateUnknown"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"ignorePrevStateUnavailable"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"ignoreCurrentStateUnknown"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"true"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"ignoreCurrentStateUnavailable"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"true"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputProperties"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"payload"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"propertyType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"msg"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"value"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"valueType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"entityState"'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"data"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"propertyType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"msg"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"value"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"valueType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"eventData"'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"topic"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"propertyType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"msg"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"value"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"valueType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"triggerId"'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"x"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"130"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"y"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"160"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"wires"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token string"},'"ee1904546f36bdcb"'),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},"]"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"f8958d382348c254"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"function"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"z"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"29fde6c61057362b"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"name"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"Specify topic"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"func"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"msg.topic = \\"setpoint\\"\\nflow.set(\'setpoint\',msg.payload)\\nreturn msg"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputs"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"1"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"noerr"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"0"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"initialize"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"finalize"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"libs"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"x"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"270"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"y"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"100"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"wires"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token string"},'"6f77dd60c21180e1"'),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},"]"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"6f77dd60c21180e1"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"PID"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"z"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"29fde6c61057362b"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"name"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"setpoint"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"7"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"pb"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"0.6"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"ti"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"3600"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"td"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"900"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"integral_default"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"0.5"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"smooth_factor"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"2"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"max_interval"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"600"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"enable"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"1"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"disabled_op"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"0"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"x"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"430"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"y"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"140"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"wires"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token string"},'"ea6adedb7e2fc14e"'),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},"]"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"ea6adedb7e2fc14e"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"function"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"z"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"29fde6c61057362b"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"name"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"Calc oven setpoint"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"func"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},"\"msg.load = msg.payload\\n//Max adjustment is +-5 degrees\\ntemp = flow.get('setpoint')+ 5 * 2 * (msg.load-0.5)\\n//Some ovens have max and min temperature settings\\nif(temp<5) {temp=5.0;}\\nif(temp>30) {temp=30.0;}\\n//Many ovens cannot deal with decimals.\\ntemp = Math.round(temp)\\nmsg.heater_setpoint=temp\\nreturn msg\""),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputs"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"1"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"noerr"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"0"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"initialize"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"finalize"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"libs"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"x"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"590"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"y"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"140"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"wires"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token string"},'"45925567a1177d5b"'),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},"]"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"5fa07ec0c1842823"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"api-current-state"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"z"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"29fde6c61057362b"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"name"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"Current climate settings"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"server"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"e2dd69fb.8f70a8"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"version"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"3"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputs"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"1"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"halt_if"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"halt_if_type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"str"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"halt_if_compare"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"is"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"entity_id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"climate.my_climate"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"state_type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"str"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"blockInputOverrides"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputProperties"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"payload"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"propertyType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"msg"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"value"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"valueType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"entityState"'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"data"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"propertyType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"msg"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"value"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"valueType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"entity"'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"for"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"0"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"forType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"num"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"forUnits"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"minutes"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"x"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"950"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"y"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"140"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"wires"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token string"},'"ba7e48582e04c14c"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"0a7c09c92a01178e"'),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},"]"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"ba7e48582e04c14c"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"switch"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"z"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"29fde6c61057362b"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"name"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"Not same?"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"data.attributes.temperature"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"propertyType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"msg"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"rules"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"t"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"neq"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"v"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"heater_setpoint"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"vt"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"msg"'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"checkall"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"true"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"repair"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputs"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"1"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"x"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"1150"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"y"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"140"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"wires"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token string"},'"1114bb7e63d16e98"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"0a7c09c92a01178e"'),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},"]"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"1114bb7e63d16e98"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"api-call-service"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"z"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"29fde6c61057362b"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"name"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"Sett temperatur"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"server"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"e2dd69fb.8f70a8"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"version"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"3"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"debugenabled"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"service_domain"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"climate"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"service"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"set_temperature"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"entityId"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"climate.my_climate"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"data"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"{\\"entity_id\\":\\"climate.my_climate\\",\\"temperature\\":\\"{{heater_setpoint}}\\"}"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"dataType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"json"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"mergecontext"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"mustacheAltTags"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputProperties"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"queue"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"none"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"x"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"1320"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"y"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"140"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"wires"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},"]"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"45925567a1177d5b"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"api-current-state"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"z"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"29fde6c61057362b"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"name"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"Enabled?"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"server"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"e2dd69fb.8f70a8"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"version"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"3"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputs"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"2"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"halt_if"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"true"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"halt_if_type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"bool"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"halt_if_compare"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"is"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"entity_id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"input_boolean.cascade_enabled"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"state_type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"habool"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"blockInputOverrides"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputProperties"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"enabled"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"propertyType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"msg"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"value"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"valueType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"entityState"'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"property"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"data"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"propertyType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"msg"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"value"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token property"},'"valueType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"entity"'),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"}"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"for"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"0"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"forType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"num"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"forUnits"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"minutes"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"x"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"760"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"y"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"140"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"wires"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token string"},'"5fa07ec0c1842823"'),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},"]"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"0a7c09c92a01178e"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"debug"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"z"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"29fde6c61057362b"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"name"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"active"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"tosidebar"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"true"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"console"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"tostatus"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"complete"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"true"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"targetType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"full"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"statusVal"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"statusType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"auto"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"x"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"1330"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"y"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"240"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"wires"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"]"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"ee1904546f36bdcb"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"delay"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"z"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"29fde6c61057362b"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"name"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'""'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"pauseType"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"delay"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"timeout"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"100"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"timeoutUnits"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"milliseconds"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"rate"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"1"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"nbRateUnits"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"1"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"rateUnits"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"second"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"randomFirst"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"1"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"randomLast"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"5"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"randomUnits"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"seconds"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"drop"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"allowrate"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"outputs"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"1"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"x"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"290"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"y"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"160"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"wires"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token punctuation"},"["),(0,t._)("span",{class:"token string"},'"6f77dd60c21180e1"'),(0,t._)("span",{class:"token punctuation"},"]"),(0,t._)("span",{class:"token punctuation"},"]"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"}"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"{"),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"id"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"e2dd69fb.8f70a8"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"type"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"server"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"name"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"Home Assistant"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"version"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token number"},"2"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"addon"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"true"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"rejectUnauthorizedCerts"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"true"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"ha_boolean"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"y|yes|true|on|home|open"'),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"connectionDelay"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"false"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"cacheJson"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"true"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"heartbeat"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token boolean"},"true"),(0,t._)("span",{class:"token punctuation"},","),(0,t.Uk)("\n "),(0,t._)("span",{class:"token property"},'"heartbeatInterval"'),(0,t._)("span",{class:"token operator"},":"),(0,t.Uk)(),(0,t._)("span",{class:"token string"},'"30"'),(0,t.Uk)("\n "),(0,t._)("span",{class:"token punctuation"},"}"),(0,t.Uk)("\n"),(0,t._)("span",{class:"token punctuation"},"]"),(0,t.Uk)("\n")])])])],-1),F={},M=(0,a(3744).Z)(F,[["render",function(n,s){return(0,t.wg)(),(0,t.iD)(t.HY,null,[k,c,r,l,_,u,i,U,y,g,d,m,b,h,f,v,w,T,x,C,S,z,q,P,D,I,A,j,H,R,E],64)}]])},3744:(n,s)=>{s.Z=(n,s)=>{const a=n.__vccOpts||n;for(const[n,t]of s)a[n]=t;return a}},6953:(n,s,a)=>{n.exports=a.p+"assets/img/node-ps-strategy-heat-capacitor-cascade-control.2e75ed9e.png"},3450:(n,s,a)=>{n.exports=a.p+"assets/img/oven-setpoint-calculation.5bda0eec.png"},3007:(n,s,a)=>{n.exports=a.p+"assets/img/overshoot-time.b3b5d70e.png"}}]);
@@ -1 +1 @@
1
- "use strict";(self.webpackChunknode_red_contrib_power_saver=self.webpackChunknode_red_contrib_power_saver||[]).push([[509],{6464:(e,t,o)=>{o.r(t),o.d(t,{data:()=>r});const r={key:"v-8daa1a0e",path:"/",title:"",lang:"en-US",frontmatter:{home:!0,heroImage:"/logo.png",heroAlt:"Power Saver",heroText:"node-red-contrib-power-saver",tagline:"A collection of nodes to Node-RED that automates saving money on variable electricity prices",actions:[{text:"Guide",link:"/guide",type:"primary"},{text:"Nodes",link:"/nodes/",type:"primary"},{text:"Examples",link:"/examples/",type:"primary"}],features:[{title:"Automatic scheduling",details:"Automatically calculate best plan and send signal to turn on and off."},{title:"Best Save Strategy",details:"Postpone power consumption when there is most to save, perfect for the water heater."},{title:"Lowest Price Strategy",details:"Turn on power when the prices are the lowest, perfect for smart charging or heating."},{title:"Add variable grid tariff",details:"Automatically add values that varies on fixed hours, or use API to get grid tariff from Elvia."},{title:"Perfect with Home Assistant",details:"Use Home Assistant with Node-RED and control switches via service calls."},{title:"Tibber and Nord Pool",details:"Painlessly use prices received from Tibber or Nord Pool."}],footer:"Created by Otto Paulsen",footerHtml:!0},excerpt:"",headers:[],filePathRelative:"README.md",git:{updatedTime:1642535555e3}}},5760:(e,t,o)=>{o.r(t),o.d(t,{default:()=>d});var r=o(6252);const a=(0,r.Uk)("This is a collection of nodes for the popular "),i={href:"https://nodered.org/",target:"_blank",rel:"noopener noreferrer"},s=(0,r.Uk)("Node-RED"),n=(0,r.Uk)(" that you can use to save money on variable electricity prices. Node-RED is a widely used low-code programming tool that can be used together with many smart home solutions to create automations."),l={},d=(0,o(3744).Z)(l,[["render",function(e,t){const o=(0,r.up)("OutboundLink"),l=(0,r.up)("DonateButtons");return(0,r.wg)(),(0,r.iD)(r.HY,null,[(0,r._)("p",null,[a,(0,r._)("a",i,[s,(0,r.Wm)(o)]),n]),(0,r.Wm)(l)],64)}]])},3744:(e,t)=>{t.Z=(e,t)=>{const o=e.__vccOpts||e;for(const[e,r]of t)o[e]=r;return o}}}]);
1
+ "use strict";(self.webpackChunknode_red_contrib_power_saver=self.webpackChunknode_red_contrib_power_saver||[]).push([[509],{6464:(e,t,o)=>{o.r(t),o.d(t,{data:()=>r});const r={key:"v-8daa1a0e",path:"/",title:"",lang:"en-US",frontmatter:{home:!0,heroImage:"/logo.png",heroAlt:"Power Saver",heroText:"node-red-contrib-power-saver",tagline:"A collection of nodes to Node-RED that automates saving money on variable electricity prices",actions:[{text:"Guide",link:"/guide",type:"primary"},{text:"Nodes",link:"/nodes/",type:"primary"},{text:"Examples",link:"/examples/",type:"primary"}],features:[{title:"Automatic scheduling",details:"Automatically calculate best plan and send signal to turn on and off."},{title:"Best Save Strategy",details:"Postpone power consumption when there is most to save, perfect for the water heater."},{title:"Lowest Price Strategy",details:"Turn on power when the prices are the lowest, perfect for smart charging or heating."},{title:"Add variable grid tariff",details:"Automatically add values that varies on fixed hours, or use API to get grid tariff from Elvia."},{title:"Perfect with Home Assistant",details:"Use Home Assistant with Node-RED and control switches via service calls."},{title:"Tibber and Nord Pool",details:"Painlessly use prices received from Tibber or Nord Pool."}],footer:"Created by Otto Paulsen and contributors",footerHtml:!0},excerpt:"",headers:[],filePathRelative:"README.md",git:{updatedTime:164452306e4}}},5760:(e,t,o)=>{o.r(t),o.d(t,{default:()=>d});var r=o(6252);const a=(0,r.Uk)("This is a collection of nodes for the popular "),i={href:"https://nodered.org/",target:"_blank",rel:"noopener noreferrer"},n=(0,r.Uk)("Node-RED"),s=(0,r.Uk)(" that you can use to save money on variable electricity prices. Node-RED is a widely used low-code programming tool that can be used together with many smart home solutions to create automations."),l={},d=(0,o(3744).Z)(l,[["render",function(e,t){const o=(0,r.up)("OutboundLink"),l=(0,r.up)("DonateButtons");return(0,r.wg)(),(0,r.iD)(r.HY,null,[(0,r._)("p",null,[a,(0,r._)("a",i,[n,(0,r.Wm)(o)]),s]),(0,r.Wm)(l)],64)}]])},3744:(e,t)=>{t.Z=(e,t)=>{const o=e.__vccOpts||e;for(const[e,r]of t)o[e]=r;return o}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunknode_red_contrib_power_saver=self.webpackChunknode_red_contrib_power_saver||[]).push([[651],{3029:(e,a,t)=>{t.r(a),t.d(a,{data:()=>r});const r={key:"v-e8c55052",path:"/nodes/",title:"Nodes",lang:"en-US",frontmatter:{},excerpt:"",headers:[{level:2,title:"Power Saver",slug:"power-saver",children:[]},{level:2,title:"Strategy nodes",slug:"strategy-nodes",children:[{level:3,title:"ps-strategy-best-save",slug:"ps-strategy-best-save",children:[]},{level:3,title:"ps-strategy-lowest-price",slug:"ps-strategy-lowest-price",children:[]},{level:3,title:"ps-strategy-heat-capacitor Experimental",slug:"ps-strategy-heat-capacitor-experimental",children:[]}]},{level:2,title:"Utility nodes",slug:"utility-nodes",children:[{level:3,title:"ps-receive-price",slug:"ps-receive-price",children:[]}]},{level:2,title:"Grid tariff nodes",slug:"grid-tariff-nodes",children:[{level:3,title:"ps-general-add-tariff",slug:"ps-general-add-tariff",children:[]},{level:3,title:"ps-elvia-add-tariff",slug:"ps-elvia-add-tariff",children:[]}]},{level:2,title:"Other nodes",slug:"other-nodes",children:[{level:3,title:"ps-elvia-tariff-types",slug:"ps-elvia-tariff-types",children:[]},{level:3,title:"ps-elvia-tariff",slug:"ps-elvia-tariff",children:[]}]}],filePathRelative:"nodes/README.md",git:{updatedTime:164452306e4}}},5262:(e,a,t)=>{t.r(a),t.d(a,{default:()=>ee});var r=t(6252),s=t(7656),i=t(7188),d=t(6110),l=t(7652),n=t(3301),o=t(4693),p=t(5824);const h=(0,r._)("h1",{id:"nodes",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#nodes","aria-hidden":"true"},"#"),(0,r.Uk)(" Nodes")],-1),f=(0,r._)("p",null,"Here is an overview of the nodes, and links to detailed descriptions for eah of them.",-1),g={id:"power-saver",tabindex:"-1"},c=(0,r._)("a",{class:"header-anchor",href:"#power-saver","aria-hidden":"true"},"#",-1),v=(0,r.Uk)(),u=(0,r._)("a",{href:"./power-saver"},"Power Saver",-1),A=(0,r.Uk)(),y=(0,r._)("p",null,[(0,r._)("img",{src:s,alt:"Power Saver node"})],-1),m=(0,r._)("p",null,"The old node from version 2 is still working, but should be replaced.",-1),k=(0,r._)("h2",{id:"strategy-nodes",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#strategy-nodes","aria-hidden":"true"},"#"),(0,r.Uk)(" Strategy nodes")],-1),_=(0,r._)("p",null,"These are the nodes used to calculate and control saving.",-1),w=(0,r._)("h3",{id:"ps-strategy-best-save",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#ps-strategy-best-save","aria-hidden":"true"},"#"),(0,r.Uk)(),(0,r._)("a",{href:"./ps-strategy-best-save"},"ps-strategy-best-save")],-1),E=(0,r._)("p",null,[(0,r._)("img",{src:i,alt:"ps-strategy-best-save"})],-1),b=(0,r._)("p",null,"Strategy to find the best hours to postpone power consumption to achieve the most saving.",-1),U=(0,r._)("h3",{id:"ps-strategy-lowest-price",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#ps-strategy-lowest-price","aria-hidden":"true"},"#"),(0,r.Uk)(),(0,r._)("a",{href:"./ps-strategy-lowest-price"},"ps-strategy-lowest-price")],-1),B=(0,r._)("p",null,[(0,r._)("img",{src:d,alt:"ps-strategy-lowest-price"})],-1),I=(0,r._)("p",null,"Strategy to find the x hours with lowest price in a given period each day.",-1),x={id:"ps-strategy-heat-capacitor-experimental",tabindex:"-1"},C=(0,r._)("a",{class:"header-anchor",href:"#ps-strategy-heat-capacitor-experimental","aria-hidden":"true"},"#",-1),J=(0,r.Uk)(),P=(0,r._)("a",{href:"./ps-strategy-heat-capacitor"},"ps-strategy-heat-capacitor",-1),S=(0,r.Uk)(),Q=(0,r.Uk)("Experimental"),L=(0,r._)("p",null,[(0,r._)("img",{src:l,alt:"ps-strategy-heat-capacitor"})],-1),R=(0,r._)("p",null,"A strategy for moving consumption from expensive to cheap periods utilizing climate entities and trading principles.",-1),G=(0,r._)("h2",{id:"utility-nodes",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#utility-nodes","aria-hidden":"true"},"#"),(0,r.Uk)(" Utility nodes")],-1),H=(0,r._)("h3",{id:"ps-receive-price",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#ps-receive-price","aria-hidden":"true"},"#"),(0,r.Uk)(),(0,r._)("a",{href:"./ps-receive-price"},"ps-receive-price")],-1),N=(0,r._)("p",null,[(0,r._)("img",{src:n,alt:"ps-receive-price"})],-1),K=(0,r._)("p",null,"Node to convert different types of input data to the format used by the strategy nodes.",-1),O=(0,r._)("h2",{id:"grid-tariff-nodes",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#grid-tariff-nodes","aria-hidden":"true"},"#"),(0,r.Uk)(" Grid tariff nodes")],-1),T=(0,r._)("h3",{id:"ps-general-add-tariff",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#ps-general-add-tariff","aria-hidden":"true"},"#"),(0,r.Uk)(),(0,r._)("a",{href:"./ps-general-add-tariff"},"ps-general-add-tariff")],-1),M=(0,r._)("p",null,[(0,r._)("img",{src:o,alt:"ps-general-add-tariff"})],-1),D=(0,r._)("p",null,"Node to add a variable grid tariff (or any value) to the prices before sending them to the strategy nodes.",-1),V=(0,r._)("h3",{id:"ps-elvia-add-tariff",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#ps-elvia-add-tariff","aria-hidden":"true"},"#"),(0,r.Uk)(),(0,r._)("a",{href:"./ps-elvia-add-tariff"},"ps-elvia-add-tariff")],-1),q=(0,r._)("p",null,[(0,r._)("img",{src:p,alt:"ps-elvia-add-tariff"})],-1),z=(0,r._)("p",null,"Node to add Elvia grid tariff to the prices before sending them to the strategy nodes.",-1),Y=(0,r._)("h2",{id:"other-nodes",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#other-nodes","aria-hidden":"true"},"#"),(0,r.Uk)(" Other nodes")],-1),Z=(0,r._)("p",null,"These are a couple of other nodes for using the Elvia API, but these are not important to the Power Saver, so they are not given any further documentation here.",-1),X=(0,r._)("h3",{id:"ps-elvia-tariff-types",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#ps-elvia-tariff-types","aria-hidden":"true"},"#"),(0,r.Uk)(" ps-elvia-tariff-types")],-1),j=(0,r._)("p",null,"Use this to get a list of the tariff types available in the Elvia API.",-1),F=(0,r._)("h3",{id:"ps-elvia-tariff",tabindex:"-1"},[(0,r._)("a",{class:"header-anchor",href:"#ps-elvia-tariff","aria-hidden":"true"},"#"),(0,r.Uk)(" ps-elvia-tariff")],-1),W=(0,r._)("p",null,"Use this to get the Elvia grid tariff for a selected tariff type.",-1),$={},ee=(0,t(3744).Z)($,[["render",function(e,a){const t=(0,r.up)("Badge");return(0,r.wg)(),(0,r.iD)(r.HY,null,[h,f,(0,r._)("h2",g,[c,v,u,A,(0,r.Wm)(t,{type:"warning",text:"deprecated",vertical:"middle"})]),y,m,k,_,w,E,b,U,B,I,(0,r._)("h3",x,[C,J,P,S,(0,r.Wm)(t,{type:"warning"},{default:(0,r.w5)((()=>[Q])),_:1})]),L,R,G,H,N,K,O,T,M,D,V,q,z,Y,Z,X,j,F,W],64)}]])},3744:(e,a)=>{a.Z=(e,a)=>{const t=e.__vccOpts||e;for(const[e,r]of a)t[e]=r;return t}},7656:(e,a,t)=>{e.exports=t.p+"assets/img/node-power-saver.51ff2e5d.png"},5824:(e,a,t)=>{e.exports=t.p+"assets/img/node-ps-elvia-add-tariff.94ea2b09.png"},4693:(e,a,t)=>{e.exports=t.p+"assets/img/node-ps-general-add-tariff.a3cf6f06.png"},3301:(e,a,t)=>{e.exports=t.p+"assets/img/node-ps-receive-price.76eaa418.png"},7188:(e,a,t)=>{e.exports=t.p+"assets/img/node-ps-strategy-best-save.392292d5.png"},7652:e=>{e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIgAAABNCAYAAAB9nyxVAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMjHxIGmVAAAGXklEQVR4Xu2dz2vcRhTH8z/tf5Cjj7mmYEyg5GRyCviUa+nFwadsE+cUwh5q7KwpFJKUsJdC6MXFCTE0JadAwaSkbZriH3mdN9JIb0ZPs9pdSZa1X8EHrBnNzFrvozdajeJcISIASlELAXCohQA41EIAHGqhxnh3RA/uf0fD4RBcYjiGHMswvmWohSGPHt6lV+Nb9OHFDfprstYK73/8iuiXr0HNnL68Se+e3aadx/dMaPV4S9RCCcvRphgOCNIsLEoVSdRCB6cizhxaAJsGgjQPZ5Jp041a6OD56iKyBwNBmoezCMc4jLtELXTwTY0WvDaAIO3AMQ7jLlELHRCk/0AQEAWCgCgQBESBIDVzvHWVBqvX6Fipm8rTa7Q+uEp7T5W6CwKC1AwEEXRSkNEKDQYrtMeBGgwsm6O8/mAjKbPMG0iD2o8dW5at0d6qGX8jLd+4XmybCXGdNgtlwbFpe+0zJGOs0IEbU/zOVtqgbVV6Kog4mXY/PeH8s5CCT/D61prfvgqRfvwMkgRLHqu1zT5rkEG0vrLPa38vFiKvc/u+EEVhZqGngsg0LU6srZv/ZGVE+okGtUAaWFUQJbBCLk8sV+eEsf0oP89BTwXxT4iXKdLgOkqDnB1TcnJL+pkqiA2Ya3eV1ksFkVOOhD+P0q/3ewu5uFyKJKjyey5XBgmOTU5QiQAzIPuZJkh45ZdPMSLI6bGSaAYx2M9h6vm4sj6q0FNBwoyRnHQ/eGmd3K9IrJ9Kgrh6l01UQYrjeG09IZJxPNmzTCUvltnpqSAr5q6eT06CvILsSU7LFzl5pf1kgeFgKdkrqzeYYB8oQnGd+8z+OEIAr86MvyWFEX0Jweaht4LIE7kUKNmQBdKm1lmAIJcUd4+R7KfZQt6T2JvcxaYXBoJcWoJvOTJ72HOwePZg+icIqBUIAqJAEBAFgoAo9Qry9jV9oU909laUNQQEaYeOCTKkk4/v6fwfw8cJfVaPSYAg7dCyIHfo3zdD+swc3lHqR3R2anrm7fQ1/Veoz4Eg7dCyIBM6Nw3t9mmi1HdckGCtZBmYS5Dt7W3bULJ9f0jPfxhDkDkoLP5dMJPdb2j7gR9fG2MTd7N5Lng7zP7+Ph0eHtLR0ZEHl42fPKHJ5KcZBNmhU77fyO45IIhW3yYsx/7e96Ux5vibLfPBk4MN0ho6uI6PqS6I2LdCXBJB7Mpp+oi7sP6RP/7238PIV2oT0uWA9LG4pQOScOaoEmOzFQXhNKM1kvAx/RbEBNJ7f8OJECztB9lGW1xzx3Ypg1SNsdlqEOS3Azo/OyFi/n5uynqSQbIpJskYVhBb5y8Sli+3J+0giP1Wk26hEH0TRE4VEpc1vPrkXdQqgngvDLUgEQRZhBkzSE4w/fR1ipn5JnWZBClIIKeRpC7MJl0UZKGbVGamr7lLJUi+n00J8huOnGJMuZ06XL3tl+su/kWnhb7mOtggTjMS9UHZmwmdueccxzumTDz3CPftcxCsxXSBhR6USbiRF7ipj9rrA4K0A8c4jLtELXTogtS/fflz5I9jgCDtUK8gv47o5I+f6+f3b/1xDBCkHeoVpEUgSDtAEBAFgoAoEAREgSAgCgQBUSBI17CP5Lvzb4shSNeQghTWftoHgnQZCDI/TQjivZxTthJryJb006u97G+y5qu0KbJPgzpelkHkynAuSdln5PL1jZVkvBpfHYAgKf47GfLdDg6UuIrlFODE8YLrjk36yIQJskHpeLL/aBv5vokTp/57FwhiCV/2KccGyRNEyBPrR5Gn/DhNkGIbKYwVJMhQdQBBLOGLP5IkMC6tr6+GgvhXrU313lWdYtrlwY6MVypIsQ0EidBaBgklkPv255IMEkwP07JBRqkgyCAz0ew9iDjhngQum0hBRNDksTa4+RWfZJNcmPh4miBhG+UeBILk1C0IkwQxJQuEk4IxwRqJoKXBrPI3WTdHxSlCHU8KIsb2RUsRQkCQgCYEmRkvmP0EgiwCBIEgUSAIBFl2IAiIAkFAlIUE4f/4/8OLG2oAmwaCNM/py5vEMQ7jLlELHePdEb0a31ID2DQQpHnePbtNHOMw7hK1UPLo4d0LySIQpFk4e+w8vmdCrMfdoRaGsCScSdoUBYI0A4vBmaOKHIxaqMGpiOcrvqkBlxeO4bRpRaIWAuBQCwFwqIUAJNCV/wHqxZ2/2166bwAAAABJRU5ErkJggg=="},6110:(e,a,t)=>{e.exports=t.p+"assets/img/node-ps-strategy-lowest-price.3a4ad347.png"}}]);