node-red-contrib-power-saver 3.4.2 → 3.4.3

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 (36) hide show
  1. package/docs/.vuepress/config.js +8 -2
  2. package/docs/.vuepress/dist/.nojekyll +0 -0
  3. package/docs/.vuepress/dist/404.html +4 -4
  4. package/docs/.vuepress/dist/Ukraine-heart-shape-flag.png +0 -0
  5. package/docs/.vuepress/dist/assets/js/app.6c6c1409.js +1 -0
  6. package/docs/.vuepress/dist/changelog/index.html +4 -4
  7. package/docs/.vuepress/dist/contribute/index.html +4 -4
  8. package/docs/.vuepress/dist/examples/example-cascade-temperature-control.html +4 -4
  9. package/docs/.vuepress/dist/examples/example-heat-capacitor.html +4 -4
  10. package/docs/.vuepress/dist/examples/example-next-schedule-entity.html +4 -4
  11. package/docs/.vuepress/dist/examples/example-nordpool-current-state.html +4 -4
  12. package/docs/.vuepress/dist/examples/example-nordpool-events-state.html +4 -4
  13. package/docs/.vuepress/dist/examples/example-tibber-mqtt.html +4 -4
  14. package/docs/.vuepress/dist/examples/index.html +4 -4
  15. package/docs/.vuepress/dist/faq/best-save-viewer.html +4 -4
  16. package/docs/.vuepress/dist/faq/index.html +4 -4
  17. package/docs/.vuepress/dist/guide/index.html +4 -4
  18. package/docs/.vuepress/dist/index.html +4 -4
  19. package/docs/.vuepress/dist/nodes/index.html +4 -4
  20. package/docs/.vuepress/dist/nodes/old-power-saver-doc.html +4 -4
  21. package/docs/.vuepress/dist/nodes/power-saver.html +4 -4
  22. package/docs/.vuepress/dist/nodes/ps-elvia-add-tariff.html +4 -4
  23. package/docs/.vuepress/dist/nodes/ps-general-add-tariff.html +4 -4
  24. package/docs/.vuepress/dist/nodes/ps-receive-price.html +4 -4
  25. package/docs/.vuepress/dist/nodes/ps-strategy-best-save.html +4 -4
  26. package/docs/.vuepress/dist/nodes/ps-strategy-heat-capacitor.html +4 -4
  27. package/docs/.vuepress/dist/nodes/ps-strategy-lowest-price.html +4 -4
  28. package/docs/.vuepress/dist/nodes/strategy-input.html +4 -4
  29. package/docs/.vuepress/public/Ukraine-heart-shape-flag.png +0 -0
  30. package/docs/changelog/README.md +4 -0
  31. package/package.json +1 -1
  32. package/src/elvia/elvia-add-tariff.html +7 -1
  33. package/src/elvia/elvia-config.js +7 -0
  34. package/src/elvia/elvia-tariff-types.js +0 -6
  35. package/.firebase/hosting.ZG9jcy8udnVlcHJlc3MvZGlzdA.cache +0 -94
  36. package/docs/.vuepress/dist/assets/js/app.dfdee6f9.js +0 -1
@@ -22,12 +22,12 @@
22
22
  document.documentElement.classList.toggle('dark', true);
23
23
  }
24
24
  </script>
25
- <link rel="shortcut icon" type="image/x-icon" href="euro.png"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9857859182772006" crossorigin="anonymous"></script><title>ps-strategy-lowest-price | Power Saver</title><meta name="description" content="A Node-RED note to save money on hourly changing power prices">
26
- <link rel="preload" href="/assets/js/runtime~app.f6ac32d7.js" as="script"><link rel="preload" href="/assets/css/styles.1c48cbd0.css" as="style"><link rel="preload" href="/assets/js/405.f4edd94d.js" as="script"><link rel="preload" href="/assets/js/app.dfdee6f9.js" as="script">
25
+ <link rel="shortcut icon" type="image/x-icon" href="euro.png"><script async src="https://www.googletagmanager.com/gtag/js?id=G-Z2QNNCDQZG"></script><script src="window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-Z2QNNCDQZG');"></script><title>ps-strategy-lowest-price | Power Saver</title><meta name="description" content="A Node-RED note to save money on hourly changing power prices">
26
+ <link rel="preload" href="/assets/js/runtime~app.f6ac32d7.js" as="script"><link rel="preload" href="/assets/css/styles.1c48cbd0.css" as="style"><link rel="preload" href="/assets/js/405.f4edd94d.js" as="script"><link rel="preload" href="/assets/js/app.6c6c1409.js" as="script">
27
27
  <link rel="stylesheet" href="/assets/css/styles.1c48cbd0.css">
28
28
  </head>
29
29
  <body>
30
- <div id="app"><!--[--><div class="theme-container"><!--[--><header ref_key="navbar" class="navbar"><div class="toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/" class=""><!----><span class="site-name">Power Saver</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="router-link-active" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-dark-button" title="toggle dark mode"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="router-link-active" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-items"><!--[--><li><p tabindex="0" class="sidebar-item sidebar-heading active">Nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/power-saver.md" class="sidebar-item" aria-label="Power Saver"><!--[--><!--]--> Power Saver <!--[--><!--]--></a><!----></li><li><p tabindex="0" class="sidebar-item active">Strategy nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-strategy-best-save.html" class="sidebar-item" aria-label="ps-strategy-best-save"><!--[--><!--]--> ps-strategy-best-save <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html" class="router-link-active router-link-exact-active router-link-active sidebar-item active" aria-label="ps-strategy-lowest-price"><!--[--><!--]--> ps-strategy-lowest-price <!--[--><!--]--></a><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#description" class="router-link-active router-link-exact-active sidebar-item" aria-label="Description"><!--[--><!--]--> Description <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#configuration" class="router-link-active router-link-exact-active sidebar-item" aria-label="Configuration"><!--[--><!--]--> Configuration <!--[--><!--]--></a><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#dynamic-config" class="router-link-active router-link-exact-active sidebar-item" aria-label="Dynamic config"><!--[--><!--]--> Dynamic config <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#dynamic-commands" class="router-link-active router-link-exact-active sidebar-item" aria-label="Dynamic commands"><!--[--><!--]--> Dynamic commands <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#input" class="router-link-active router-link-exact-active sidebar-item" aria-label="Input"><!--[--><!--]--> Input <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#output" class="router-link-active router-link-exact-active sidebar-item" aria-label="Output"><!--[--><!--]--> Output <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#tips-tricks" class="router-link-active router-link-exact-active sidebar-item" aria-label="Tips &amp; tricks"><!--[--><!--]--> Tips &amp; tricks <!--[--><!--]--></a><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#multiple-nodes-works-together" class="router-link-active router-link-exact-active sidebar-item" aria-label="Multiple nodes works together"><!--[--><!--]--> Multiple nodes works together <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#highest-price" class="router-link-active router-link-exact-active sidebar-item" aria-label="Highest price"><!--[--><!--]--> Highest price <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--]--></li><li><a href="/nodes/ps-strategy-heat-capacitor.md" class="sidebar-item" aria-label="ps-strategy-heat-capacitor"><!--[--><!--]--> ps-strategy-heat-capacitor <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item">Utility nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-receive-price.html" class="sidebar-item" aria-label="ps-receive-price"><!--[--><!--]--> ps-receive-price <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item">Grid tariff nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-general-add-tariff.html" class="sidebar-item" aria-label="ps-general-add-tariff"><!--[--><!--]--> ps-general-add-tariff <!--[--><!--]--></a><!----></li><li><a href="/nodes/ps-elvia-add-tariff.html" class="sidebar-item" aria-label="ps-elvia-add-tariff"><!--[--><!--]--> ps-elvia-add-tariff <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item sidebar-heading">Data format <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/strategy-input.html" class="sidebar-item" aria-label="Strategy input format"><!--[--><!--]--> Strategy input format <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="page"><!--[--><!--]--><div class="theme-default-content"><!--[--><h1 id="ps-strategy-lowest-price" tabindex="-1"><a class="header-anchor" href="#ps-strategy-lowest-price" aria-hidden="true">#</a> ps-strategy-lowest-price</h1><p><img src="/assets/img/node-ps-strategy-lowest-price.3a4ad347.png" alt="ps-strategy-lowest-price"></p><p>Strategy node to turn on power the hours when the price is lowest during a given period, and turn off the other hours.</p><h2 id="description" tabindex="-1"><a class="header-anchor" href="#description" aria-hidden="true">#</a> Description</h2><p>The node can work on a specific period from 1 to 24 hours during a 24 hour period. Inside this period, you can decide how many hours that shall be on. The rest of the period will be off. Outside the period, you can select that the output shall be either on or off. You can also decide that the hours on shall be consecutive (one continuous period) or spread around in multiple on-periods.</p><h2 id="configuration" tabindex="-1"><a class="header-anchor" href="#configuration" aria-hidden="true">#</a> Configuration</h2><p><img src="/assets/img/lowest-price-config.6d66a8c2.png" alt="Node Configuration"></p><table><thead><tr><th>Value</th><th>Description</th></tr></thead><tbody><tr><td>From Time</td><td>The start time of the selected period.</td></tr><tr><td>To Time</td><td>The end time of the selected period.</td></tr><tr><td>Hours On</td><td>The number of hours that shall be turned on.</td></tr><tr><td>Consecutive On-Period</td><td>Check this if you need the on-period to be consecutive.</td></tr><tr><td>Send When Rescheduling</td><td>Check this to make sure on or off output is sent immediately after rescheduling.</td></tr><tr><td>If No Schedule, Send</td><td>What to do if there is no valid schedule any more (turn on or off).</td></tr><tr><td>Outside Period, Send</td><td>Select the value to send outside the selected period.</td></tr></tbody></table><p>If you want to use a period of 24 hours, set the From Time and To Time to the same value. The time you select is significant in the way that it decides which 24 hours that are considered when finding the hours with lowest price.</p><div class="custom-container tip"><p class="custom-container-title">Example with Consecutive On-Period</p><p>One example to need a consecutive on-period can be if you want to control the washing machine. Let&#39;s say it needs 3 hours, and you want it to run between 22:00 and 06:00. Set <code>From Time = 22:00</code>, <code>To Time = 06:00</code> and check the <code>Consecutive On-Period</code> flag. This will turn on the cheapest 3-hour period from 22:00 to 06:00.</p><p>NB! It is not recommended to run the washing machine when you are sleeping or away.</p></div><div class="custom-container tip"><p class="custom-container-title">Example with non-consecutive on-period</p><p>If you have heating cables in the driveway, you may need them to be on only for a few hours every day, for example 4 hours, but it may not be important when this is. Then set <code>From Time = 00:00</code>, <code>To Time = 00:00</code> and <strong>un-check</strong> the <code>Consecutive On-Period</code> flag. This will turn on the 4 cheapest hours during the whole day, and off the rest.</p><p>You can use any time for start and end, but it is a good idea to use <code>00:00</code>, since the prices normally comes for this period.</p></div><div class="custom-container warning"><p class="custom-container-title">Outside Period, Send</p><p>Unless the period you select is 24 hours (<code>From Time</code> and <code>To Time</code> are the same), it is important what value you choose for <code>Outside Period, Send</code>. This decides whether the output is on or off during the period that is outside the selected period.</p></div><div class="custom-container danger"><p class="custom-container-title">Schedule not calculated</p><p>If you select a period for example from 10:00 to 02:00, it may not be possible to calculate before the period starts. This is because electricity prices for the next day (in the Nord Pool area) normally are received around 13:00. The node cannot calculate the period until it has price data for the whole period.</p></div><h3 id="dynamic-config" tabindex="-1"><a class="header-anchor" href="#dynamic-config" aria-hidden="true">#</a> Dynamic config</h3><p>It is possible to change config dynamically by sending a config message to the node. The config messages has a payload with a config object like this example:</p><div class="language-json ext-json line-numbers-mode"><pre class="language-json"><code><span class="token property">&quot;payload&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
30
+ <div id="app"><!--[--><div class="theme-container"><!--[--><header ref_key="navbar" class="navbar"><div class="toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/" class=""><img class="logo" src="/Ukraine-heart-shape-flag.png" alt="Power Saver"><span class="site-name can-hide">Power Saver</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="router-link-active" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-dark-button" title="toggle dark mode"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="router-link-active" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-items"><!--[--><li><p tabindex="0" class="sidebar-item sidebar-heading active">Nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/power-saver.md" class="sidebar-item" aria-label="Power Saver"><!--[--><!--]--> Power Saver <!--[--><!--]--></a><!----></li><li><p tabindex="0" class="sidebar-item active">Strategy nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-strategy-best-save.html" class="sidebar-item" aria-label="ps-strategy-best-save"><!--[--><!--]--> ps-strategy-best-save <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html" class="router-link-active router-link-exact-active router-link-active sidebar-item active" aria-label="ps-strategy-lowest-price"><!--[--><!--]--> ps-strategy-lowest-price <!--[--><!--]--></a><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#description" class="router-link-active router-link-exact-active sidebar-item" aria-label="Description"><!--[--><!--]--> Description <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#configuration" class="router-link-active router-link-exact-active sidebar-item" aria-label="Configuration"><!--[--><!--]--> Configuration <!--[--><!--]--></a><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#dynamic-config" class="router-link-active router-link-exact-active sidebar-item" aria-label="Dynamic config"><!--[--><!--]--> Dynamic config <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#dynamic-commands" class="router-link-active router-link-exact-active sidebar-item" aria-label="Dynamic commands"><!--[--><!--]--> Dynamic commands <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#input" class="router-link-active router-link-exact-active sidebar-item" aria-label="Input"><!--[--><!--]--> Input <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#output" class="router-link-active router-link-exact-active sidebar-item" aria-label="Output"><!--[--><!--]--> Output <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#tips-tricks" class="router-link-active router-link-exact-active sidebar-item" aria-label="Tips &amp; tricks"><!--[--><!--]--> Tips &amp; tricks <!--[--><!--]--></a><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#multiple-nodes-works-together" class="router-link-active router-link-exact-active sidebar-item" aria-label="Multiple nodes works together"><!--[--><!--]--> Multiple nodes works together <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/nodes/ps-strategy-lowest-price.html#highest-price" class="router-link-active router-link-exact-active sidebar-item" aria-label="Highest price"><!--[--><!--]--> Highest price <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--]--></li><li><a href="/nodes/ps-strategy-heat-capacitor.md" class="sidebar-item" aria-label="ps-strategy-heat-capacitor"><!--[--><!--]--> ps-strategy-heat-capacitor <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item">Utility nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-receive-price.html" class="sidebar-item" aria-label="ps-receive-price"><!--[--><!--]--> ps-receive-price <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item">Grid tariff nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-general-add-tariff.html" class="sidebar-item" aria-label="ps-general-add-tariff"><!--[--><!--]--> ps-general-add-tariff <!--[--><!--]--></a><!----></li><li><a href="/nodes/ps-elvia-add-tariff.html" class="sidebar-item" aria-label="ps-elvia-add-tariff"><!--[--><!--]--> ps-elvia-add-tariff <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item sidebar-heading">Data format <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/strategy-input.html" class="sidebar-item" aria-label="Strategy input format"><!--[--><!--]--> Strategy input format <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="page"><!--[--><!--]--><div class="theme-default-content"><!--[--><h1 id="ps-strategy-lowest-price" tabindex="-1"><a class="header-anchor" href="#ps-strategy-lowest-price" aria-hidden="true">#</a> ps-strategy-lowest-price</h1><p><img src="/assets/img/node-ps-strategy-lowest-price.3a4ad347.png" alt="ps-strategy-lowest-price"></p><p>Strategy node to turn on power the hours when the price is lowest during a given period, and turn off the other hours.</p><h2 id="description" tabindex="-1"><a class="header-anchor" href="#description" aria-hidden="true">#</a> Description</h2><p>The node can work on a specific period from 1 to 24 hours during a 24 hour period. Inside this period, you can decide how many hours that shall be on. The rest of the period will be off. Outside the period, you can select that the output shall be either on or off. You can also decide that the hours on shall be consecutive (one continuous period) or spread around in multiple on-periods.</p><h2 id="configuration" tabindex="-1"><a class="header-anchor" href="#configuration" aria-hidden="true">#</a> Configuration</h2><p><img src="/assets/img/lowest-price-config.6d66a8c2.png" alt="Node Configuration"></p><table><thead><tr><th>Value</th><th>Description</th></tr></thead><tbody><tr><td>From Time</td><td>The start time of the selected period.</td></tr><tr><td>To Time</td><td>The end time of the selected period.</td></tr><tr><td>Hours On</td><td>The number of hours that shall be turned on.</td></tr><tr><td>Consecutive On-Period</td><td>Check this if you need the on-period to be consecutive.</td></tr><tr><td>Send When Rescheduling</td><td>Check this to make sure on or off output is sent immediately after rescheduling.</td></tr><tr><td>If No Schedule, Send</td><td>What to do if there is no valid schedule any more (turn on or off).</td></tr><tr><td>Outside Period, Send</td><td>Select the value to send outside the selected period.</td></tr></tbody></table><p>If you want to use a period of 24 hours, set the From Time and To Time to the same value. The time you select is significant in the way that it decides which 24 hours that are considered when finding the hours with lowest price.</p><div class="custom-container tip"><p class="custom-container-title">Example with Consecutive On-Period</p><p>One example to need a consecutive on-period can be if you want to control the washing machine. Let&#39;s say it needs 3 hours, and you want it to run between 22:00 and 06:00. Set <code>From Time = 22:00</code>, <code>To Time = 06:00</code> and check the <code>Consecutive On-Period</code> flag. This will turn on the cheapest 3-hour period from 22:00 to 06:00.</p><p>NB! It is not recommended to run the washing machine when you are sleeping or away.</p></div><div class="custom-container tip"><p class="custom-container-title">Example with non-consecutive on-period</p><p>If you have heating cables in the driveway, you may need them to be on only for a few hours every day, for example 4 hours, but it may not be important when this is. Then set <code>From Time = 00:00</code>, <code>To Time = 00:00</code> and <strong>un-check</strong> the <code>Consecutive On-Period</code> flag. This will turn on the 4 cheapest hours during the whole day, and off the rest.</p><p>You can use any time for start and end, but it is a good idea to use <code>00:00</code>, since the prices normally comes for this period.</p></div><div class="custom-container warning"><p class="custom-container-title">Outside Period, Send</p><p>Unless the period you select is 24 hours (<code>From Time</code> and <code>To Time</code> are the same), it is important what value you choose for <code>Outside Period, Send</code>. This decides whether the output is on or off during the period that is outside the selected period.</p></div><div class="custom-container danger"><p class="custom-container-title">Schedule not calculated</p><p>If you select a period for example from 10:00 to 02:00, it may not be possible to calculate before the period starts. This is because electricity prices for the next day (in the Nord Pool area) normally are received around 13:00. The node cannot calculate the period until it has price data for the whole period.</p></div><h3 id="dynamic-config" tabindex="-1"><a class="header-anchor" href="#dynamic-config" aria-hidden="true">#</a> Dynamic config</h3><p>It is possible to change config dynamically by sending a config message to the node. The config messages has a payload with a config object like this example:</p><div class="language-json ext-json line-numbers-mode"><pre class="language-json"><code><span class="token property">&quot;payload&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
31
31
  <span class="token property">&quot;config&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
32
32
  <span class="token property">&quot;fromTime&quot;</span> <span class="token operator">:</span> <span class="token number">10</span><span class="token punctuation">,</span>
33
33
  <span class="token property">&quot;toTime&quot;</span> <span class="token operator">:</span> <span class="token number">16</span><span class="token punctuation">,</span>
@@ -119,6 +119,6 @@
119
119
  <span class="token property">&quot;version&quot;</span><span class="token operator">:</span> <span class="token string">&quot;3.1.2&quot;</span>
120
120
  <span class="token punctuation">}</span>
121
121
  </code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br><span class="line-number">42</span><br><span class="line-number">43</span><br><span class="line-number">44</span><br><span class="line-number">45</span><br><span class="line-number">46</span><br><span class="line-number">47</span><br><span class="line-number">48</span><br><span class="line-number">49</span><br><span class="line-number">50</span><br><span class="line-number">51</span><br><span class="line-number">52</span><br><span class="line-number">53</span><br><span class="line-number">54</span><br><span class="line-number">55</span><br><span class="line-number">56</span><br><span class="line-number">57</span><br><span class="line-number">58</span><br><span class="line-number">59</span><br><span class="line-number">60</span><br><span class="line-number">61</span><br><span class="line-number">62</span><br><span class="line-number">63</span><br><span class="line-number">64</span><br><span class="line-number">65</span><br></div></div><p>The <code>schedule</code> array shows every time the switch is turned on or off. The <code>hours</code> array shows values per hour containing the price (received as input), whether that hour is on or off, the start time of the hour and the amount per kWh that is saved on hours that are turned off, compared to the next hour that is on.</p><h2 id="tips-tricks" tabindex="-1"><a class="header-anchor" href="#tips-tricks" aria-hidden="true">#</a> Tips &amp; tricks</h2><h3 id="multiple-nodes-works-together" tabindex="-1"><a class="header-anchor" href="#multiple-nodes-works-together" aria-hidden="true">#</a> Multiple nodes works together</h3><p>You can use multiple nodes simultanously, for different periods, if you want more hours on one part of the day than another part, or to make sure there are at least some hours on during each period.</p><h3 id="highest-price" tabindex="-1"><a class="header-anchor" href="#highest-price" aria-hidden="true">#</a> Highest price</h3><p>If you want to find the <code>x</code> hours with the highest prices, do as follows:</p><ol><li>Calculate <code>y</code> as the total number of hours in the period. For example, if the period is from <code>08:00</code> to <code>20:00</code>, then <code>y = 12</code>.</li><li>Configure <code>Hours On = y - x</code>, so if <code>x = 4</code>, then <code>Hours On = 12 - 4 = 8</code>.</li><li>Use <strong>Output 2</strong> to get a signal when you have the hours with the highest prices. Just remember that the value sent to output 2 is <code>false</code>, not <code>true</code> as it is on output 1.</li></ol><!--]--></div><footer class="page-meta"><!----><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><!----></footer><nav class="page-nav"><p class="inner"><span class="prev"><a href="/nodes/ps-strategy-best-save.html" class="" aria-label="ps-strategy-best-save"><!--[--><!--]--> ps-strategy-best-save <!--[--><!--]--></a></span><span class="next"><a href="/nodes/ps-receive-price.html" class="" aria-label="ps-receive-price"><!--[--><!--]--> ps-receive-price <!--[--><!--]--></a></span></p></nav><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
122
- <script src="/assets/js/runtime~app.f6ac32d7.js" defer></script><script src="/assets/js/405.f4edd94d.js" defer></script><script src="/assets/js/app.dfdee6f9.js" defer></script>
122
+ <script src="/assets/js/runtime~app.f6ac32d7.js" defer></script><script src="/assets/js/405.f4edd94d.js" defer></script><script src="/assets/js/app.6c6c1409.js" defer></script>
123
123
  </body>
124
124
  </html>
@@ -22,12 +22,12 @@
22
22
  document.documentElement.classList.toggle('dark', true);
23
23
  }
24
24
  </script>
25
- <link rel="shortcut icon" type="image/x-icon" href="euro.png"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9857859182772006" crossorigin="anonymous"></script><title>Strategy input format | Power Saver</title><meta name="description" content="A Node-RED note to save money on hourly changing power prices">
26
- <link rel="preload" href="/assets/js/runtime~app.f6ac32d7.js" as="script"><link rel="preload" href="/assets/css/styles.1c48cbd0.css" as="style"><link rel="preload" href="/assets/js/405.f4edd94d.js" as="script"><link rel="preload" href="/assets/js/app.dfdee6f9.js" as="script">
25
+ <link rel="shortcut icon" type="image/x-icon" href="euro.png"><script async src="https://www.googletagmanager.com/gtag/js?id=G-Z2QNNCDQZG"></script><script src="window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-Z2QNNCDQZG');"></script><title>Strategy input format | Power Saver</title><meta name="description" content="A Node-RED note to save money on hourly changing power prices">
26
+ <link rel="preload" href="/assets/js/runtime~app.f6ac32d7.js" as="script"><link rel="preload" href="/assets/css/styles.1c48cbd0.css" as="style"><link rel="preload" href="/assets/js/405.f4edd94d.js" as="script"><link rel="preload" href="/assets/js/app.6c6c1409.js" as="script">
27
27
  <link rel="stylesheet" href="/assets/css/styles.1c48cbd0.css">
28
28
  </head>
29
29
  <body>
30
- <div id="app"><!--[--><div class="theme-container"><!--[--><header ref_key="navbar" class="navbar"><div class="toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/" class=""><!----><span class="site-name">Power Saver</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="router-link-active" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-dark-button" title="toggle dark mode"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="router-link-active" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-items"><!--[--><li><p tabindex="0" class="sidebar-item sidebar-heading">Nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/power-saver.md" class="sidebar-item" aria-label="Power Saver"><!--[--><!--]--> Power Saver <!--[--><!--]--></a><!----></li><li><p tabindex="0" class="sidebar-item">Strategy nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-strategy-best-save.html" class="sidebar-item" aria-label="ps-strategy-best-save"><!--[--><!--]--> ps-strategy-best-save <!--[--><!--]--></a><!----></li><li><a href="/nodes/ps-strategy-lowest-price.html" class="sidebar-item" aria-label="ps-strategy-lowest-price"><!--[--><!--]--> ps-strategy-lowest-price <!--[--><!--]--></a><!----></li><li><a href="/nodes/ps-strategy-heat-capacitor.md" class="sidebar-item" aria-label="ps-strategy-heat-capacitor"><!--[--><!--]--> ps-strategy-heat-capacitor <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item">Utility nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-receive-price.html" class="sidebar-item" aria-label="ps-receive-price"><!--[--><!--]--> ps-receive-price <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item">Grid tariff nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-general-add-tariff.html" class="sidebar-item" aria-label="ps-general-add-tariff"><!--[--><!--]--> ps-general-add-tariff <!--[--><!--]--></a><!----></li><li><a href="/nodes/ps-elvia-add-tariff.html" class="sidebar-item" aria-label="ps-elvia-add-tariff"><!--[--><!--]--> ps-elvia-add-tariff <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item sidebar-heading active">Data format <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/nodes/strategy-input.html" class="router-link-active router-link-exact-active router-link-active sidebar-item active" aria-label="Strategy input format"><!--[--><!--]--> Strategy input format <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="page"><!--[--><!--]--><div class="theme-default-content"><!--[--><h1 id="strategy-input-format" tabindex="-1"><a class="header-anchor" href="#strategy-input-format" aria-hidden="true">#</a> Strategy input format</h1><p>The common input for strategy nodes is a payload with a <code>priceData</code> array containing an object for each hour. Each object has a <code>value</code> which is the price, and a <code>start</code> which is the start time for the hour.</p><p>Example:</p><div class="language-json ext-json line-numbers-mode"><pre class="language-json"><code><span class="token punctuation">{</span>
30
+ <div id="app"><!--[--><div class="theme-container"><!--[--><header ref_key="navbar" class="navbar"><div class="toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/" class=""><img class="logo" src="/Ukraine-heart-shape-flag.png" alt="Power Saver"><span class="site-name can-hide">Power Saver</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="router-link-active" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-dark-button" title="toggle dark mode"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="router-link-active" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-items"><!--[--><li><p tabindex="0" class="sidebar-item sidebar-heading">Nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/power-saver.md" class="sidebar-item" aria-label="Power Saver"><!--[--><!--]--> Power Saver <!--[--><!--]--></a><!----></li><li><p tabindex="0" class="sidebar-item">Strategy nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-strategy-best-save.html" class="sidebar-item" aria-label="ps-strategy-best-save"><!--[--><!--]--> ps-strategy-best-save <!--[--><!--]--></a><!----></li><li><a href="/nodes/ps-strategy-lowest-price.html" class="sidebar-item" aria-label="ps-strategy-lowest-price"><!--[--><!--]--> ps-strategy-lowest-price <!--[--><!--]--></a><!----></li><li><a href="/nodes/ps-strategy-heat-capacitor.md" class="sidebar-item" aria-label="ps-strategy-heat-capacitor"><!--[--><!--]--> ps-strategy-heat-capacitor <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item">Utility nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-receive-price.html" class="sidebar-item" aria-label="ps-receive-price"><!--[--><!--]--> ps-receive-price <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item">Grid tariff nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-general-add-tariff.html" class="sidebar-item" aria-label="ps-general-add-tariff"><!--[--><!--]--> ps-general-add-tariff <!--[--><!--]--></a><!----></li><li><a href="/nodes/ps-elvia-add-tariff.html" class="sidebar-item" aria-label="ps-elvia-add-tariff"><!--[--><!--]--> ps-elvia-add-tariff <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item sidebar-heading active">Data format <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/nodes/strategy-input.html" class="router-link-active router-link-exact-active router-link-active sidebar-item active" aria-label="Strategy input format"><!--[--><!--]--> Strategy input format <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="page"><!--[--><!--]--><div class="theme-default-content"><!--[--><h1 id="strategy-input-format" tabindex="-1"><a class="header-anchor" href="#strategy-input-format" aria-hidden="true">#</a> Strategy input format</h1><p>The common input for strategy nodes is a payload with a <code>priceData</code> array containing an object for each hour. Each object has a <code>value</code> which is the price, and a <code>start</code> which is the start time for the hour.</p><p>Example:</p><div class="language-json ext-json line-numbers-mode"><pre class="language-json"><code><span class="token punctuation">{</span>
31
31
  <span class="token property">&quot;priceData&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span>
32
32
  <span class="token punctuation">{</span>
33
33
  <span class="token property">&quot;value&quot;</span><span class="token operator">:</span> <span class="token number">0.9544</span><span class="token punctuation">,</span>
@@ -53,6 +53,6 @@
53
53
  <span class="token punctuation">]</span>
54
54
  <span class="token punctuation">}</span>
55
55
  </code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br></div></div><p>This format is used for:</p><ul><li>Output of the <code>ps-receive-price</code> node</li><li>Input and output of the <code>ps-xxx-add-tariff</code> nodes</li><li>Input for the strategy nodes (<code>ps-strategy-xxx-xxx</code>)</li></ul><!--]--></div><footer class="page-meta"><!----><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><!----></footer><!----><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
56
- <script src="/assets/js/runtime~app.f6ac32d7.js" defer></script><script src="/assets/js/405.f4edd94d.js" defer></script><script src="/assets/js/app.dfdee6f9.js" defer></script>
56
+ <script src="/assets/js/runtime~app.f6ac32d7.js" defer></script><script src="/assets/js/405.f4edd94d.js" defer></script><script src="/assets/js/app.6c6c1409.js" defer></script>
57
57
  </body>
58
58
  </html>
@@ -6,6 +6,10 @@ sidebar: "auto"
6
6
 
7
7
  List the most significant changes, starting in version 1.0.9.
8
8
 
9
+ ## 3.4.3
10
+
11
+ - Fix Elvia config so it can be used independently on any node.
12
+
9
13
  ## 3.4.2
10
14
 
11
15
  - Fix bug in reset command. It did not reset daily data properly.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-red-contrib-power-saver",
3
- "version": "3.4.2",
3
+ "version": "3.4.3",
4
4
  "description": "A module for Node-RED that you can use to turn on and off a switch based on power prices",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -18,13 +18,15 @@
18
18
  oneditprepare: function () {
19
19
  const readTariffTypes = function () {
20
20
  const configId = $("#node-input-elviaConfig").val();
21
- if (!configId) {
21
+ if (configId === "_ADD_") {
22
+ $("#keyMessage").hide();
22
23
  return;
23
24
  }
24
25
  $.getJSON("elvia-tariff-types?configId=" + configId, function (data) {
25
26
  if (!data.tariffTypes) {
26
27
  return;
27
28
  }
29
+ $("#keyMessage").hide();
28
30
  $("#node-input-tariffKey").typedInput({
29
31
  types: [
30
32
  {
@@ -38,6 +40,7 @@
38
40
  });
39
41
  };
40
42
  $("#node-input-elviaConfig").on("change", function () {
43
+ $("#keyMessage").show();
41
44
  readTariffTypes();
42
45
  });
43
46
  readTariffTypes();
@@ -58,6 +61,9 @@
58
61
  <label for="node-input-tariffKey"><i class="fa fa-tag"></i> Tariff key</label>
59
62
  <input type="text" id="node-input-tariffKey" placeholder="Tariff" style="width: 300px" />
60
63
  </div>
64
+ <div id="keyMessage" class="form-row">
65
+ <p>When Subscription key is set in the Elvia config,<br />you must deploy once to get the list of tariff keys.</p>
66
+ </div>
61
67
  </script>
62
68
 
63
69
  <script type="text/markdown" data-help-name="ps-elvia-add-tariff">
@@ -10,6 +10,13 @@ module.exports = function (RED) {
10
10
  const configList = this.context().global.get("elviaConfigList") || [];
11
11
  configList.push(config);
12
12
  this.context().global.set("elviaConfigList", configList);
13
+
14
+ const key = this.credentials.elviaSubscriptionKey;
15
+ RED.httpAdmin.get("/elvia-tariff-types", RED.auth.needsPermission("ps-elvia-config.read"), function (req, res) {
16
+ getTariffTypes(null, key).then((json) => {
17
+ res.json(json);
18
+ });
19
+ });
13
20
  }
14
21
  RED.nodes.registerType("ps-elvia-config", ElviaConfigNode, {
15
22
  credentials: {
@@ -13,12 +13,6 @@ module.exports = function (RED) {
13
13
  node.send([{ payload: json }]);
14
14
  });
15
15
  });
16
-
17
- RED.httpAdmin.get("/elvia-tariff-types", RED.auth.needsPermission("ps-elvia-config.read"), function (req, res) {
18
- getTariffTypes(null, key).then((json) => {
19
- res.json(json);
20
- });
21
- });
22
16
  }
23
17
 
24
18
  RED.nodes.registerType("ps-elvia-tariff-types", PsElviaTariffTypesNode);
@@ -1,94 +0,0 @@
1
- 404.html,1645811434412,addf965cf1261688558a31883296f39b2f4f4deef29686ea625d7dbc60b24aab
2
- euro.png,1645811429838,e6a1d246a05e447333de6e1099b1c3a5ae8ad050b2389e51ff53289e4dc1b8e4
3
- index.html,1645811433976,06fa65afbcca0c52835a4f44f0e194f510d10896bc967048ad113d27c16e32c7
4
- assets/img/back-to-top.8b37f773.svg,1645811429403,c6af5f9d1f495b4bb193a957cf5cbddd69b3df8346fb0ad8421ff29e872e660b
5
- assets/css/835.styles.c5afb22b.css,1645811429836,54c8fc773468d5ab5cacbd55f0535bf1cacbd57cb0ab43cde2a6bc4ea405b80e
6
- assets/css/styles.1c48cbd0.css,1645811429835,d38c8f7fb1e27516179de03c640af9e818968bc17ae1de343bbad594c8f070e7
7
- assets/img/next-schedule-flow.413ad62b.png,1645811429478,dc39e108b2e1c231df8172b375f73bbdce6dba5e7b19b16524c81a15a1ce1036
8
- assets/img/next-schedule-sensor.eb896bdd.png,1645811429478,3017cdc42afaeeccd07240a18729b59264175c8ef7f17d4bf89ecc12dcfd1723
9
- assets/img/node-power-saver.51ff2e5d.png,1645811429572,bc03e13706d001771796195e67e237873c2f2b3fd014e7f8003d80e3c5e09ea9
10
- assets/img/node-ps-strategy-best-save.392292d5.png,1645811429572,d9e48500b4df8cdcb2696faeaea1c5e9f462299a07b0231c1a2e4e8d4d88f7bb
11
- assets/img/node-ps-elvia-add-tariff.94ea2b09.png,1645811429572,82f83794ebee8920524f2c8fb0123014cf8ef0182600c34ca2c170b2adefd970
12
- assets/img/node-ps-strategy-heat-capacitor-simple-flow-example.29d9bf59.png,1645811429404,31d4e2481f50bf3d26b77e1f53899bb10ee214a8c9675114738a4f8fa2c361d2
13
- assets/img/node-ps-receive-price.76eaa418.png,1645811429572,9d8f62d2b5bee458952cd895a143a2c757ba5ae6cd7e13afd3103b7872619571
14
- assets/img/node-ps-general-add-tariff.a3cf6f06.png,1645811429572,0e6ef51de245944acad043cbf6b4c1a9f3762cb0d59c721afd67b8a9fa93dc90
15
- assets/js/229.5c5378fa.js,1645811429830,a649744039e357eab133a3e44074efc5665b3a4383c379fb0cc55f1df088fec2
16
- assets/img/node-ps-strategy-lowest-price.3a4ad347.png,1645811429573,dd4e368f5c81e87f64770a5d80b4c026d92fc89a72589f2d8b163e6a251c3662
17
- assets/js/331.872104cd.js,1645811429830,ac8099e339f2179b45098df3f3501bf9c9cbecc49d93e89c17fa1b607db590a9
18
- assets/js/491.bd938119.js,1645811429830,539cd56bfe8011f139c577cd90fc6673eb8e50822b8d9a807525f7a334249cbe
19
- assets/js/555.d8963d84.js,1645811429830,a354ff7311608a93d08a80fe8e7aff411f4686e294327513d4452d17ee3a0245
20
- assets/js/app.dfdee6f9.js,1645811429403,ccaf87278783d889e683b34df5ddf58f79140e6c8af3f199c5faf86ae7bbabe9
21
- assets/js/v-0607240a.0193a377.js,1645811429404,e9df5a61d68a4d048016061b2e91795ab26b42e07076b5a8fbba6a96691316a5
22
- assets/js/runtime~app.f6ac32d7.js,1645811429403,3c96eeef778202b135996b788cc7ec43a5b81d3771351c9240d68b7bb80019e9
23
- assets/js/811.5f659592.js,1645811429830,4f6777db824062a896831c035032022dcd45d93f634d5afb37e610442f146eef
24
- assets/css/896.styles.21a80cb6.css,1645811429836,bf775e319685fb2df3ca08ddfecb2a6c0670886b5e9829fa0df3b7723b1d9610
25
- logo.png,1645811429838,b0d240bb816f26ca3207f1c99f0db945e48b75928ce80b4b3500035a2627583c
26
- assets/img/elvia-config-no-config.b4bb972c.png,1645811429765,b6d893cf4f56713f3004aff49f28339645ec68e885ec30503740ff071050b643
27
- assets/img/elvia-config-no-tariff.3f89aba8.png,1645811429765,00eee1c51ab3b19e3db8b139071d7596f61601b4295edcc69ad503bcea026d2f
28
- assets/img/elvia-config-subscription-key.8be8ab8a.png,1645811429766,1e8f457772d4941c9f4a245e84e0cd89f8d0387b11464a3eab3533ed50780e9b
29
- assets/img/next-schedule-entity.4406856a.png,1645811429404,d6f36c55bef22fdb27e7a793144016b9b5688fdb7c0f358f446bec4871cb59f1
30
- assets/js/405.f4edd94d.js.LICENSE.txt,1645811429852,adc4d946db037aab89d8d540dc5ba92ec41212a9777b284c2189f3e90729031c
31
- assets/img/node-ps-strategy-heat-capacitor-cascade-control.2e75ed9e.png,1645811429404,277fec95ceb1f4a608c512a361778e21da49cfa48f630f43ced60abf7b586c00
32
- assets/js/v-08683c60.52e94cb6.js,1645811429765,8fd25e78ba78bf62dd075a073b9086ea02abcc6dc868432651192b73d76ef356
33
- assets/img/oven-setpoint-calculation.5bda0eec.png,1645811429404,d59c196f156dbb561106368065b08b9fa16b0555e0683d3d9c6ef2a123b6b787
34
- assets/img/add-tariff-flow.eb700d4f.png,1645811429766,a27790951f13dec75da0da079edeb58378aaa6f74c1d708a0c1b5aea846ae808
35
- assets/img/lowest-price-config.6d66a8c2.png,1645811429817,2e8328c5ccb07158c1c2edb5a5a1b4746f7a773b3a380d88fff2f9da279ffed2
36
- assets/img/heat-capacitor-temperatureVsPrice.6e74905b.png,1645811429404,4ec0ee90f5f8c110e17a07f1c6572c1d6ef31a318e3cc58125680aae6ac39a30
37
- assets/js/490.1e639e05.js,1645811429830,006ac095ab16f790b2c0dd877e05da95dfe6781a5fe3b97f0aa20ba1cec548a4
38
- assets/img/overshoot-time.b3b5d70e.png,1645811429404,c855af9a434f7d56928446dba5466f7fbf62958acf6f53d1230db16d0c40712f
39
- assets/img/best-save-config.79a2f39a.png,1645811429817,0e854e0ad8521268786a86789707053d08f60f7810bf9bbb1c6cbfc9485c657d
40
- assets/img/power-saver-nordpool-events-state.8c392507.png,1645811429479,d8cb79a6ded596050e5ba9a81c21d2277a76ac6c43f388d664aae9559f420780
41
- assets/img/elvia-flow.bae2a4d5.png,1645811429766,a3bbae90b0a528c8975ed92cad0d3cf354aaf6b2df8a8ec8c2f92d55d21e97df
42
- assets/img/elvia-config-select-tariff.0f73fd56.png,1645811429766,db2bce470db8a714b87e3d07b915d225395b49ae2bc99a271f37844d3356e22f
43
- assets/img/migrate-power-saver.aae13f9d.png,1645811429765,0f2c1fd39fcea757d41d48b07d2d02832c14d289ee63ed7175d5fddc8f62bcf6
44
- assets/img/example-flow-2.b653b58d.png,1645811429572,44970df39fb4d1a30778770f91211ef95f13cf14a2137324b955aadff47ab17e
45
- assets/img/power-saver-nordpool-current-state.bf14afde.png,1645811429478,51824f9b48565e1f6f1f1ab8472bce7a2f5045f4bb9312989a10819c1502945c
46
- assets/js/v-0aca7ba6.cac5d4b9.js,1645811429404,fd917a61330af443c75121fe1b5e75c4ceaa301b41aa1d3f9b732433d6a51f08
47
- assets/js/v-1ad821fa.6697a349.js,1645811429648,5e234e0b6d24a8d5916ad639ba74e8eeed633189cecd2d94378d5a2ad1a44afe
48
- assets/js/v-0b5e3c8c.18561f6e.js,1645811429766,0524b7021c8108c02443e57036de24a8a5813b411680cb8e87bc58b61f51ad9a
49
- assets/js/v-1e2b191e.07b8ab21.js,1645811429766,f5a6522cd598f7cb571516449564ae6a9b7b462631c8418a010a28b4a2c3f629
50
- assets/js/v-1b3a0ab8.c6c4e19b.js,1645811429404,529c684f973444575730eeec02703784e32c2904cf74674211a5c163b2fe1e10
51
- assets/js/v-29504124.00be7399.js,1645811429479,c0373166d28da75d579079f694caa8698c63db39ab793bd653aa2b5266c93546
52
- assets/js/v-3706649a.c76d575b.js,1645811429830,c1af291965ecc14041d9aa38724848f00d33561d315b43b2bf6e48d200b0e2ff
53
- assets/js/v-30acb564.28af12af.js,1645811429478,969bd26194d7167ee1d2cd806bc661b57de72b78c20556ef627a182b5b06a6b7
54
- assets/img/migrate-best-save.f73420f6.png,1645811429572,7dbcde0717bc45d78d3d1e77282f9750aba2a49f3364604a7e29911fbfc490eb
55
- assets/js/v-510ed0d4.c04bc2e4.js,1645811429403,01aa6cacf6019a9a13c26aab563249af4af8d624cf20637509d124e0432da722
56
- assets/js/v-5954bcb2.dff3fc67.js,1645811429830,5adc728d7d199c2c278d9849b9d854eccd6153f9fbbc0215038b1ca39ca4ba74
57
- assets/js/v-4637f9e4.d334c29a.js,1645811429817,66b8a40eefc05a5fdf776b56cdc57ef82764007fc3e56274109ab268e26f2ae2
58
- assets/js/v-677dfaed.c159b0f4.js,1645811429766,986de6433a55b6b829ab497b789b3990bec8be3d1eeb65a1ec07015729204fd9
59
- assets/js/v-5db8da3a.e5e6d7a6.js,1645811429479,2584b0b9bb3cdd4567c6d4f9d98caa717f832f12b9060f44b248038dd9280429
60
- assets/js/v-7c87f26e.8ed52391.js,1645811429479,0fba319bf35d8c3c07bf9b0c31a75a6b304af1e732ef08aab71a759af099c3d0
61
- assets/js/v-61f728ca.81968036.js,1645811429478,79e92e6e9b476275dd1472045777f9326be5f3c97850fe3a9be6bddc808da23e
62
- assets/js/v-8daa1a0e.ed84ca09.js,1645811429403,84a5a30cb2e59ada56691b1df6fe69be6d786cec8b75e14801825519af70dcb1
63
- assets/js/v-7446a652.8fc2c591.js,1645811429479,d1615da751dd371cb5bed434cbef5b6fbff6d7a8cf6d4c00c6dff6409a85d8b8
64
- assets/js/v-b4a42144.9a2a0c9f.js,1645811429573,d3142bccc90c0404147ea31a45103ced4b2eda0117492868a433cd9b408493c0
65
- assets/js/v-84304104.f3f07ed3.js,1645811429404,7439928b4c8e094cb03a4c2a58c72391981867578fd39665604d91d76c8699ef
66
- assets/js/v-e8c55052.b7d52fc6.js,1645811429572,fc09eb3b7463332fc69dd5ab437216f91948ae8f91f6c62b0f47e3f3d82da9cc
67
- assets/js/v-fffb8e28.d09ab959.js,1645811429568,979fe0e5f53f986da5ef18761193d3a0be919dcc5378c5df4fd68ee6883f126a
68
- changelog/index.html,1645811434019,f94505f81d65a9359ad42b61d6a8967430655f72af37b1fea126f08f249ad968
69
- contribute/index.html,1645811434125,369de0bd83f5df6d05ffef6063228093570480c1ba7b375658235cc1c4c530dd
70
- examples/example-next-schedule-entity.html,1645811434083,5a0924250f7a0558e6faf85a37226e6dc999d882b0e141b2227a90618cdbfb65
71
- assets/img/copy-payload-best-save.b9192985.png,1645811429480,7b12f6464e3fc8a83222e1e55d0ecdc81c9fdf5356eadd173c98313a45f44f75
72
- examples/example-heat-capacitor.html,1645811434072,8fd6265569df05dd7ec38a2a20a011e0f2afd6e9b2adb6a219901a0f62a7d0c8
73
- examples/example-nordpool-current-state.html,1645811434092,271c108f7953fff08d601564d028721e49f9164ba8414b2d19c7a91ef383e1d0
74
- examples/example-nordpool-events-state.html,1645811434102,a4735ce22fa2a7300366027b1aeb9e9fc670ff92bbc0bd7181b93927e6395360
75
- examples/example-tibber-mqtt.html,1645811434115,195ccc9339fd616fe3e0f279cf45e40477686b3358ccde46df4fd6fc7356167f
76
- examples/index.html,1645811434044,e220d9feb2d2bb3cf8efcb2875cd5b51d47c7a26487ce99faf3c9bcf375e3166
77
- faq/best-save-viewer.html,1645811434172,fb7bbed04ccbfeb1e22ba05e3e2fbdcfc3d68532fb6823ccbcfe2d1ce9027c7a
78
- assets/img/power-saver-tibber-mqtt.16891dd2.png,1645811429479,24f2cad039c83c9031aa7f9d3decadc107b7cc257676e0e466078b2089632fcf
79
- assets/img/example-flow-1.3ff3e23f.png,1645811429572,9602bdee071fd442bc5c466600970ad5b639a8e15c09206c8f824840979b6122
80
- assets/js/405.f4edd94d.js,1645811429836,b1ab4766249e1c371d6fad1120f70a29eddafedbec8fcd4ced179e1e3e1ea3bb
81
- guide/index.html,1645811434203,344d07b979e6f673cb2c58ceb468fe90be6709d341080278b046da2ee7040f9d
82
- faq/index.html,1645811434142,5048881bfe07b5c4e4a5bc42d7d789c15885ef323384eedba512d4acda810dfc
83
- examples/example-cascade-temperature-control.html,1645811434059,006d0d0c6c62c571fe425e6b0345ba6d5df26680cbb12375847c20a67d51c7ef
84
- nodes/index.html,1645811434238,7fef763cdef1ac91215dd691b71f95bbd2baaacdba99d245dd54db71c241873b
85
- nodes/old-power-saver-doc.html,1645811434257,277ff09f7750f9a5089d6d3a034f6b9532271b9458ef5f83c17e9ffe00450b29
86
- nodes/power-saver.html,1645811434272,00e7695c6d5ac103b48037e07164b9e74064b4dc64dfef916ffd23eecdb68dde
87
- nodes/ps-elvia-add-tariff.html,1645811434283,d43458926d9a30fdb9d6e5bbf8cf4034a4832a987c66e7b4c3b5a09ea94f1a20
88
- nodes/ps-receive-price.html,1645811434318,41fbfd1b9daba9c39a32f19f7ca22c273231332629bf56b6e924a70449867951
89
- assets/js/v-4c28314d.8cbb0f9d.js,1645811429817,b24bc2e669f9e2a79198b8a7680c65d63f2e3db962e8b6719ea13a38ec5975e1
90
- nodes/ps-general-add-tariff.html,1645811434304,d83d9995fe8154bc04d618a6239510754cbf862920c2f8edbb29280bb2668635
91
- nodes/ps-strategy-lowest-price.html,1645811434400,d3064b70fa5d28d14e282a893544f586c63dd88b606c89f0391d004f81d06b52
92
- nodes/ps-strategy-best-save.html,1645811434338,d9fa9da54318ed33671177b04f4416a23e329e1d3306ea68a71cc9647999d54c
93
- nodes/strategy-input.html,1645811434408,a62cb80a8a2ddf419b8a778f25e77ce8c982337de0405341f561848aac76def1
94
- nodes/ps-strategy-heat-capacitor.html,1645811434379,e92a1e16315898e798bd84cd54ef9221bb39cfcb6c35c37f25ad3d1c379f47d9
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunknode_red_contrib_power_saver=self.webpackChunknode_red_contrib_power_saver||[]).push([[143],{7453:(e,t,a)=>{a.d(t,{g:()=>l});var n=a(7478),d=a(6971),s=a(1598),o=a(7406),i=a(6252),r=a(7444);const l=[n.Z,d.Z,s.Z,o.Z,({app:e})=>{e.component("BestSaveVerificator",(0,i.RC)((()=>Promise.all([a.e(896),a.e(331)]).then(a.bind(a,6331))))),e.component("DonateButtons",(0,i.RC)((()=>Promise.all([a.e(835),a.e(811)]).then(a.bind(a,6811)))))},({app:e,router:t,siteData:a})=>{e.use(r.ZP)}]},9947:(e,t,a)=>{a.d(t,{p:()=>n});const n=[a(3051).Z]},4611:(e,t,a)=>{a.d(t,{l:()=>o});var n=a(1263),d=a(6243),s=a(8866);const o=[n.Z,d.Z,s.Z]},4150:(e,t,a)=>{a.d(t,{Z:()=>d});var n=a(6252);const d={404:(0,n.RC)((()=>a.e(491).then(a.bind(a,8491)))),Layout:(0,n.RC)((()=>a.e(229).then(a.bind(a,4229))))}},6056:(e,t,a)=>{a.d(t,{b:()=>d});var n=a(6252);const d={"v-8daa1a0e":(0,n.RC)((()=>a.e(509).then(a.bind(a,425)))),"v-510ed0d4":(0,n.RC)((()=>a.e(495).then(a.bind(a,7203)))),"v-0aca7ba6":(0,n.RC)((()=>a.e(27).then(a.bind(a,9637)))),"v-84304104":(0,n.RC)((()=>a.e(254).then(a.bind(a,7994)))),"v-1b3a0ab8":(0,n.RC)((()=>a.e(545).then(a.bind(a,4657)))),"v-0607240a":(0,n.RC)((()=>a.e(35).then(a.bind(a,3328)))),"v-61f728ca":(0,n.RC)((()=>a.e(283).then(a.bind(a,6546)))),"v-30acb564":(0,n.RC)((()=>a.e(901).then(a.bind(a,2870)))),"v-5db8da3a":(0,n.RC)((()=>a.e(625).then(a.bind(a,9426)))),"v-7c87f26e":(0,n.RC)((()=>a.e(889).then(a.bind(a,7883)))),"v-7446a652":(0,n.RC)((()=>a.e(969).then(a.bind(a,1773)))),"v-29504124":(0,n.RC)((()=>a.e(525).then(a.bind(a,3361)))),"v-fffb8e28":(0,n.RC)((()=>a.e(807).then(a.bind(a,8253)))),"v-e8c55052":(0,n.RC)((()=>a.e(651).then(a.bind(a,5262)))),"v-b4a42144":(0,n.RC)((()=>a.e(407).then(a.bind(a,1206)))),"v-1ad821fa":(0,n.RC)((()=>a.e(22).then(a.bind(a,8718)))),"v-08683c60":(0,n.RC)((()=>a.e(332).then(a.bind(a,7143)))),"v-1e2b191e":(0,n.RC)((()=>a.e(737).then(a.bind(a,2733)))),"v-677dfaed":(0,n.RC)((()=>a.e(745).then(a.bind(a,3645)))),"v-0b5e3c8c":(0,n.RC)((()=>a.e(363).then(a.bind(a,2435)))),"v-4c28314d":(0,n.RC)((()=>a.e(684).then(a.bind(a,5294)))),"v-4637f9e4":(0,n.RC)((()=>a.e(418).then(a.bind(a,7951)))),"v-5954bcb2":(0,n.RC)((()=>a.e(317).then(a.bind(a,886)))),"v-3706649a":(0,n.RC)((()=>a.e(88).then(a.bind(a,8109))))}},9706:(e,t,a)=>{a.d(t,{T:()=>n});const n={"v-8daa1a0e":()=>a.e(509).then(a.bind(a,6464)).then((({data:e})=>e)),"v-510ed0d4":()=>a.e(495).then(a.bind(a,3707)).then((({data:e})=>e)),"v-0aca7ba6":()=>a.e(27).then(a.bind(a,7726)).then((({data:e})=>e)),"v-84304104":()=>a.e(254).then(a.bind(a,8800)).then((({data:e})=>e)),"v-1b3a0ab8":()=>a.e(545).then(a.bind(a,6739)).then((({data:e})=>e)),"v-0607240a":()=>a.e(35).then(a.bind(a,3811)).then((({data:e})=>e)),"v-61f728ca":()=>a.e(283).then(a.bind(a,4773)).then((({data:e})=>e)),"v-30acb564":()=>a.e(901).then(a.bind(a,8835)).then((({data:e})=>e)),"v-5db8da3a":()=>a.e(625).then(a.bind(a,8682)).then((({data:e})=>e)),"v-7c87f26e":()=>a.e(889).then(a.bind(a,9459)).then((({data:e})=>e)),"v-7446a652":()=>a.e(969).then(a.bind(a,4129)).then((({data:e})=>e)),"v-29504124":()=>a.e(525).then(a.bind(a,5682)).then((({data:e})=>e)),"v-fffb8e28":()=>a.e(807).then(a.bind(a,9570)).then((({data:e})=>e)),"v-e8c55052":()=>a.e(651).then(a.bind(a,3029)).then((({data:e})=>e)),"v-b4a42144":()=>a.e(407).then(a.bind(a,7952)).then((({data:e})=>e)),"v-1ad821fa":()=>a.e(22).then(a.bind(a,2336)).then((({data:e})=>e)),"v-08683c60":()=>a.e(332).then(a.bind(a,5845)).then((({data:e})=>e)),"v-1e2b191e":()=>a.e(737).then(a.bind(a,1510)).then((({data:e})=>e)),"v-677dfaed":()=>a.e(745).then(a.bind(a,192)).then((({data:e})=>e)),"v-0b5e3c8c":()=>a.e(363).then(a.bind(a,3594)).then((({data:e})=>e)),"v-4c28314d":()=>a.e(684).then(a.bind(a,4907)).then((({data:e})=>e)),"v-4637f9e4":()=>a.e(418).then(a.bind(a,3959)).then((({data:e})=>e)),"v-5954bcb2":()=>a.e(317).then(a.bind(a,1535)).then((({data:e})=>e)),"v-3706649a":()=>a.e(88).then(a.bind(a,1801)).then((({data:e})=>e))}},4634:(e,t,a)=>{a.d(t,{g:()=>d});var n=a(4802);const d=[["v-8daa1a0e","/",{title:""},["/index.html","/README.md"]],["v-510ed0d4","/changelog/",{title:"Change Log"},["/changelog/index.html","/changelog/README.md"]],["v-0aca7ba6","/examples/",{title:"Examples"},["/examples/index.html","/examples/README.md"]],["v-84304104","/examples/example-cascade-temperature-control.html",{title:"Cascade temperature control"},["/examples/example-cascade-temperature-control","/examples/example-cascade-temperature-control.md"]],["v-1b3a0ab8","/examples/example-heat-capacitor.html",{title:"Simple heat capacitor strategy flow"},["/examples/example-heat-capacitor","/examples/example-heat-capacitor.md"]],["v-0607240a","/examples/example-next-schedule-entity.html",{title:"Output schedule to a sensor entity"},["/examples/example-next-schedule-entity","/examples/example-next-schedule-entity.md"]],["v-61f728ca","/examples/example-nordpool-current-state.html",{title:"Nord Pool and current state node"},["/examples/example-nordpool-current-state","/examples/example-nordpool-current-state.md"]],["v-30acb564","/examples/example-nordpool-events-state.html",{title:"Nord Pool and events: state node"},["/examples/example-nordpool-events-state","/examples/example-nordpool-events-state.md"]],["v-5db8da3a","/examples/example-tibber-mqtt.html",{title:"Tibber, a switch and MQTT"},["/examples/example-tibber-mqtt","/examples/example-tibber-mqtt.md"]],["v-7c87f26e","/contribute/",{title:"Contribute"},["/contribute/index.html","/contribute/README.md"]],["v-7446a652","/faq/",{title:"FAQ"},["/faq/index.html","/faq/README.md"]],["v-29504124","/faq/best-save-viewer.html",{title:"Best Save Viewer"},["/faq/best-save-viewer","/faq/best-save-viewer.md"]],["v-fffb8e28","/guide/",{title:"Guide"},["/guide/index.html","/guide/README.md"]],["v-e8c55052","/nodes/",{title:"Nodes"},["/nodes/index.html","/nodes/README.md"]],["v-b4a42144","/nodes/old-power-saver-doc.html",{title:"node-red-contrib-power-saver v2 (deprecated)"},["/nodes/old-power-saver-doc","/nodes/old-power-saver-doc.md"]],["v-1ad821fa","/nodes/power-saver.html",{title:"power-saver"},["/nodes/power-saver","/nodes/power-saver.md"]],["v-08683c60","/nodes/ps-elvia-add-tariff.html",{title:"ps-elvia-add-tariff"},["/nodes/ps-elvia-add-tariff","/nodes/ps-elvia-add-tariff.md"]],["v-1e2b191e","/nodes/ps-general-add-tariff.html",{title:"ps-general-add-tariff"},["/nodes/ps-general-add-tariff","/nodes/ps-general-add-tariff.md"]],["v-677dfaed","/nodes/ps-receive-price.html",{title:"ps-receive-price"},["/nodes/ps-receive-price","/nodes/ps-receive-price.md"]],["v-0b5e3c8c","/nodes/ps-strategy-best-save.html",{title:"ps-strategy-best-save"},["/nodes/ps-strategy-best-save","/nodes/ps-strategy-best-save.md"]],["v-4c28314d","/nodes/ps-strategy-heat-capacitor.html",{title:"ps-strategy-heat-capacitor Experimental"},["/nodes/ps-strategy-heat-capacitor","/nodes/ps-strategy-heat-capacitor.md"]],["v-4637f9e4","/nodes/ps-strategy-lowest-price.html",{title:"ps-strategy-lowest-price"},["/nodes/ps-strategy-lowest-price","/nodes/ps-strategy-lowest-price.md"]],["v-5954bcb2","/nodes/strategy-input.html",{title:"Strategy input format"},["/nodes/strategy-input","/nodes/strategy-input.md"]],["v-3706649a","/404.html",{title:""},["/404"]]].reduce(((e,[t,a,d,s])=>(e.push({name:t,path:a,component:n.Y,meta:d},...s.map((e=>({path:e,redirect:a})))),e)),[{name:"404",path:"/:catchAll(.*)",component:n.Y}])},5220:(e,t,a)=>{a.d(t,{H:()=>n});const n={base:"/",lang:"en-US",title:"Power Saver",description:"A Node-RED note to save money on hourly changing power prices",head:[["link",{rel:"shortcut icon",type:"image/x-icon",href:"euro.png"}],["script",{async:!0,src:"https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9857859182772006",crossorigin:"anonymous"}]],locales:{}}},2232:(e,t,a)=>{a.d(t,{f:()=>n});const n={contributors:!1,navbar:[{text:"Guide",link:"/guide/"},{text:"Nodes",link:"/nodes/"},{text:"Examples",link:"/examples/"},{text:"FAQ",link:"/faq/"},{text:"Contribute",link:"/contribute/"},{text:"Changes",link:"/changelog/"},{text:"GitHub",link:"https://github.com/ottopaulsen/node-red-contrib-power-saver"}],sidebar:{"/guide/":[{text:"Guide",children:["/guide/README.md"]}],"/nodes/":[{text:"Nodes",children:[{text:"Power Saver",link:"/nodes/power-saver.md"},{text:"Strategy nodes",children:["/nodes/ps-strategy-best-save.md","/nodes/ps-strategy-lowest-price.md",{text:"ps-strategy-heat-capacitor",link:"/nodes/ps-strategy-heat-capacitor.md"}]},{text:"Utility nodes",children:["/nodes/ps-receive-price.md"]},{text:"Grid tariff nodes",children:["/nodes/ps-general-add-tariff.md","/nodes/ps-elvia-add-tariff.md"]}]},{text:"Data format",children:["/nodes/strategy-input.md"]}],"/examples/":[{text:"Examples",children:["/examples/example-nordpool-current-state.md","/examples/example-nordpool-events-state.md","/examples/example-tibber-mqtt.md","/examples/example-heat-capacitor.md","/examples/example-cascade-temperature-control.md"]}],"/faq/":[{text:"FAQ",children:["/faq/README.md"]}],"/contribute/":[{text:"Contribute",children:["/contribute/README.md"]}],"/changelog/":[{text:"Changelog",children:["/changelog/README.md"]}]},locales:{"/":{selectLanguageName:"English"}},logo:null,darkMode:!0,repo:null,selectLanguageText:"Languages",selectLanguageAriaLabel:"Select language",sidebarDepth:2,editLink:!0,editLinkText:"Edit this page",lastUpdated:!0,lastUpdatedText:"Last Updated",contributorsText:"Contributors",notFound:["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],backToHome:"Take me home",openInNewWindow:"open in new window",toggleDarkMode:"toggle dark mode",toggleSidebar:"toggle sidebar"}}},e=>{e.O(0,[979,405],(()=>(8336,e(e.s=8336)))),e.O()}]);