node-red-contrib-power-saver 2.0.4 → 3.0.1

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 (176) hide show
  1. package/CHANGELOG.md +1 -33
  2. package/README.md +3 -191
  3. package/docs/.vuepress/config.js +67 -0
  4. package/docs/.vuepress/dist/404.html +15 -0
  5. package/docs/.vuepress/dist/assets/css/styles.e835bef6.css +8 -0
  6. package/docs/.vuepress/dist/assets/img/back-to-top.8b37f773.svg +1 -0
  7. package/docs/.vuepress/dist/assets/img/elvia-config-no-config.b4bb972c.png +0 -0
  8. package/docs/.vuepress/dist/assets/img/elvia-config-no-tariff.3f89aba8.png +0 -0
  9. package/docs/.vuepress/dist/assets/img/elvia-config-select-tariff.0f73fd56.png +0 -0
  10. package/docs/.vuepress/dist/assets/img/elvia-config-subscription-key.8be8ab8a.png +0 -0
  11. package/docs/.vuepress/dist/assets/img/elvia-flow.bae2a4d5.png +0 -0
  12. package/docs/.vuepress/dist/assets/img/example-flow-1.3ff3e23f.png +0 -0
  13. package/docs/.vuepress/dist/assets/img/example-flow-2.b653b58d.png +0 -0
  14. package/docs/.vuepress/dist/assets/img/migrate-best-save.f73420f6.png +0 -0
  15. package/docs/.vuepress/dist/assets/img/migrate-power-saver.aae13f9d.png +0 -0
  16. package/docs/.vuepress/dist/assets/img/node-power-saver.51ff2e5d.png +0 -0
  17. package/docs/.vuepress/dist/assets/img/node-ps-elvia-add-tariff.94ea2b09.png +0 -0
  18. package/docs/.vuepress/dist/assets/img/node-ps-receive-price.76eaa418.png +0 -0
  19. package/docs/.vuepress/dist/assets/img/node-ps-strategy-best-save.392292d5.png +0 -0
  20. package/docs/.vuepress/dist/assets/img/node-ps-strategy-lowest-price.3a4ad347.png +0 -0
  21. package/docs/.vuepress/dist/assets/img/power-saver-nordpool-current-state.bf14afde.png +0 -0
  22. package/docs/.vuepress/dist/assets/img/power-saver-nordpool-events-state.8c392507.png +0 -0
  23. package/docs/.vuepress/dist/assets/img/power-saver-tibber-mqtt.16891dd2.png +0 -0
  24. package/docs/.vuepress/dist/assets/js/293.5e967839.js +1 -0
  25. package/docs/.vuepress/dist/assets/js/491.c183eba3.js +1 -0
  26. package/docs/.vuepress/dist/assets/js/812.79dad458.js +2 -0
  27. package/docs/.vuepress/dist/assets/js/812.79dad458.js.LICENSE.txt +8 -0
  28. package/docs/.vuepress/dist/assets/js/app.80d4373d.js +1 -0
  29. package/docs/.vuepress/dist/assets/js/runtime~app.665b411c.js +1 -0
  30. package/docs/.vuepress/dist/assets/js/v-08683c60.9edcaa60.js +1 -0
  31. package/docs/.vuepress/dist/assets/js/v-0aca7ba6.5eca5160.js +1 -0
  32. package/docs/.vuepress/dist/assets/js/v-0b5e3c8c.c02472fb.js +1 -0
  33. package/docs/.vuepress/dist/assets/js/v-1ad821fa.a628e907.js +1 -0
  34. package/docs/.vuepress/dist/assets/js/v-30acb564.80b4190d.js +1 -0
  35. package/docs/.vuepress/dist/assets/js/v-3706649a.d7f73384.js +1 -0
  36. package/docs/.vuepress/dist/assets/js/v-4637f9e4.df94c6ea.js +1 -0
  37. package/docs/.vuepress/dist/assets/js/v-510ed0d4.a78d8542.js +1 -0
  38. package/docs/.vuepress/dist/assets/js/v-5954bcb2.4f4712f3.js +1 -0
  39. package/docs/.vuepress/dist/assets/js/v-5db8da3a.2e49b81a.js +1 -0
  40. package/docs/.vuepress/dist/assets/js/v-61f728ca.7b545524.js +1 -0
  41. package/docs/.vuepress/dist/assets/js/v-677dfaed.756e0fb5.js +1 -0
  42. package/docs/.vuepress/dist/assets/js/v-7c87f26e.57507077.js +1 -0
  43. package/docs/.vuepress/dist/assets/js/v-8daa1a0e.1ea39527.js +1 -0
  44. package/docs/.vuepress/dist/assets/js/v-b4a42144.a812c440.js +1 -0
  45. package/docs/.vuepress/dist/assets/js/v-e8c55052.30f30acd.js +1 -0
  46. package/docs/.vuepress/dist/assets/js/v-fffb8e28.850019c1.js +1 -0
  47. package/docs/.vuepress/dist/changelog/index.html +15 -0
  48. package/docs/.vuepress/dist/contribute/index.html +15 -0
  49. package/docs/.vuepress/dist/euro.png +0 -0
  50. package/docs/.vuepress/dist/examples/example-nordpool-current-state.html +169 -0
  51. package/docs/.vuepress/dist/examples/example-nordpool-events-state.html +173 -0
  52. package/docs/.vuepress/dist/examples/example-tibber-mqtt.html +182 -0
  53. package/docs/.vuepress/dist/examples/index.html +15 -0
  54. package/docs/.vuepress/dist/guide/index.html +52 -0
  55. package/docs/.vuepress/dist/index.html +15 -0
  56. package/docs/.vuepress/dist/logo.png +0 -0
  57. package/docs/.vuepress/dist/nodes/index.html +15 -0
  58. package/docs/.vuepress/dist/nodes/old-power-saver-doc.html +97 -0
  59. package/docs/.vuepress/dist/nodes/power-saver.html +15 -0
  60. package/docs/.vuepress/dist/nodes/ps-elvia-add-tariff.html +15 -0
  61. package/docs/.vuepress/dist/nodes/ps-receive-price.html +80 -0
  62. package/docs/.vuepress/dist/nodes/ps-strategy-best-save.html +65 -0
  63. package/docs/.vuepress/dist/nodes/ps-strategy-lowest-price.html +89 -0
  64. package/docs/.vuepress/dist/nodes/strategy-input.html +40 -0
  65. package/docs/.vuepress/public/euro.png +0 -0
  66. package/docs/.vuepress/public/logo.png +0 -0
  67. package/docs/README.md +32 -0
  68. package/docs/changelog/README.md +61 -0
  69. package/docs/contribute/README.md +39 -0
  70. package/docs/examples/README.md +5 -0
  71. package/docs/examples/example-nordpool-current-state.md +166 -0
  72. package/docs/examples/example-nordpool-events-state.md +170 -0
  73. package/docs/examples/example-tibber-mqtt.md +179 -0
  74. package/docs/guide/README.md +202 -0
  75. package/docs/images/all-nodes.png +0 -0
  76. package/docs/images/best-save-config.png +0 -0
  77. package/docs/images/elvia-add-tariff-node-used.png +0 -0
  78. package/docs/images/elvia-config-no-config.png +0 -0
  79. package/docs/images/elvia-config-no-tariff.png +0 -0
  80. package/docs/images/elvia-config-select-tariff.png +0 -0
  81. package/docs/images/elvia-config-subscription-key.png +0 -0
  82. package/docs/images/elvia-flow.png +0 -0
  83. package/docs/images/elvia-tariff-config.png +0 -0
  84. package/docs/images/euro.png +0 -0
  85. package/docs/images/example-flow-1.png +0 -0
  86. package/docs/images/example-flow-2.png +0 -0
  87. package/docs/images/logo.png +0 -0
  88. package/docs/images/lowest-price-config.png +0 -0
  89. package/docs/images/migrate-best-save.png +0 -0
  90. package/docs/images/migrate-power-saver.png +0 -0
  91. package/docs/images/node-power-saver.png +0 -0
  92. package/docs/images/node-ps-elvia-add-tariff.png +0 -0
  93. package/docs/images/node-ps-elvia-tariff-types.png +0 -0
  94. package/docs/images/node-ps-elvia-tariff.png +0 -0
  95. package/docs/images/node-ps-receive-price.png +0 -0
  96. package/docs/images/node-ps-strategy-best-save.png +0 -0
  97. package/docs/images/node-ps-strategy-lowest-price.png +0 -0
  98. package/{doc → docs/images}/node-red-contrib-power-saver-flow.png +0 -0
  99. package/docs/images/power-saver-nordpool-current-state.png +0 -0
  100. package/docs/images/power-saver-nordpool-events-state.png +0 -0
  101. package/docs/images/power-saver-tibber-mqtt.png +0 -0
  102. package/docs/nodes/README.md +53 -0
  103. package/docs/nodes/old-power-saver-doc.md +231 -0
  104. package/docs/nodes/power-saver.md +23 -0
  105. package/docs/nodes/ps-elvia-add-tariff.md +52 -0
  106. package/docs/nodes/ps-receive-price.md +153 -0
  107. package/docs/nodes/ps-strategy-best-save.md +142 -0
  108. package/docs/nodes/ps-strategy-lowest-price.md +165 -0
  109. package/docs/nodes/strategy-input.md +39 -0
  110. package/package.json +19 -4
  111. package/src/elvia/elvia-add-tariff.html +70 -0
  112. package/src/elvia/elvia-add-tariff.js +47 -0
  113. package/src/elvia/elvia-api.js +61 -0
  114. package/src/elvia/elvia-config.html +46 -0
  115. package/src/elvia/elvia-config.js +19 -0
  116. package/src/elvia/elvia-tariff-types.html +34 -0
  117. package/src/elvia/elvia-tariff-types.js +25 -0
  118. package/src/elvia/elvia-tariff.html +89 -0
  119. package/src/elvia/elvia-tariff.js +22 -0
  120. package/src/elvia/icons/elvia_hvite.svg +4 -0
  121. package/src/elvia/icons/elvia_positive_4 copy.svg +4 -0
  122. package/src/handle-input.js +162 -0
  123. package/src/power-saver.html +116 -0
  124. package/{power-saver.js → src/power-saver.js} +90 -72
  125. package/src/receive-price-functions.js +99 -0
  126. package/src/receive-price.html +30 -0
  127. package/src/receive-price.js +21 -0
  128. package/src/strategy-best-save-functions.js +110 -0
  129. package/src/strategy-best-save.html +116 -0
  130. package/src/strategy-best-save.js +95 -0
  131. package/src/strategy-lowest-price-functions.js +35 -0
  132. package/src/strategy-lowest-price.html +168 -0
  133. package/src/strategy-lowest-price.js +125 -0
  134. package/{utils.js → src/utils.js} +59 -104
  135. package/test/data/adjustedResult.js +302 -0
  136. package/test/data/adjustedResult_old.js +154 -0
  137. package/test/data/best-save-result.json +357 -0
  138. package/test/data/converted-prices.json +196 -0
  139. package/test/data/elvia-input-grid-tariff.json +760 -0
  140. package/test/data/elvia-input-power-prices.json +194 -0
  141. package/test/data/elvia-output-add-tariff.json +290 -0
  142. package/test/data/lowest-price-result-cont.json +18 -0
  143. package/test/data/lowest-price-result-split-allday.json +21 -0
  144. package/test/data/lowest-price-result-split-allday10.json +20 -0
  145. package/test/data/lowest-price-result-split.json +20 -0
  146. package/test/data/nordpool-current-state-prices.json +283 -0
  147. package/test/data/nordpool-event-prices.json +574 -0
  148. package/test/data/reconfigResult.js +315 -0
  149. package/test/data/reconfigResult_old.js +141 -0
  150. package/test/data/result.js +1 -0
  151. package/test/data/tibber-prices-single-home.json +64 -0
  152. package/test/data/tibber-prices.json +124 -0
  153. package/test/data/{tibber_result.json → tibber-result.json} +2 -1
  154. package/test/elvia.test.js +26 -0
  155. package/test/mostSavedStrategy.test.js +22 -55
  156. package/test/power-saver.test.js +4 -38
  157. package/test/receive-price-functions.test.js +153 -0
  158. package/test/receive-price.test.js +122 -0
  159. package/test/send-config-input.test.js +121 -0
  160. package/test/strategy-best-save-test-utils.js +32 -0
  161. package/test/strategy-best-save.test.js +103 -0
  162. package/test/strategy-lowest-price-functions.test.js +40 -0
  163. package/test/strategy-lowest-price.test.js +472 -0
  164. package/test/test-utils.js +106 -0
  165. package/test/utils.test.js +53 -163
  166. package/doc/example-nordpool-current-state.md +0 -166
  167. package/doc/example-nordpool-events-state.md +0 -153
  168. package/doc/example-tibber-mqtt.md +0 -189
  169. package/doc/power-saver-nordpool-current-state.png +0 -0
  170. package/doc/power-saver-nordpool-events-state.png +0 -0
  171. package/doc/power-saver-tibber-mqtt.png +0 -0
  172. package/mostSavedStrategy.js +0 -84
  173. package/mostSavedStrategy_v2.js +0 -68
  174. package/power-saver.html +0 -259
  175. package/test/data/tibber_data.json +0 -412
  176. package/test/data/tibber_prices.json +0 -412
@@ -0,0 +1,182 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en-US">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <meta name="generator" content="VuePress 2.0.0-beta.27">
7
+ <script src="https://c6.patreon.com/becomePatronButton.bundle.js"></script><link rel="icon" href="/euro.png"><title>Tibber, a switch and MQTT | Power Saver</title><meta name="description" content="A Node-RED note to save money on hourly changing power prices">
8
+ <link rel="preload" href="/node-red-contrib-power-saver/assets/js/runtime~app.665b411c.js" as="script"><link rel="preload" href="/node-red-contrib-power-saver/assets/css/styles.e835bef6.css" as="style"><link rel="preload" href="/node-red-contrib-power-saver/assets/js/812.79dad458.js" as="script"><link rel="preload" href="/node-red-contrib-power-saver/assets/js/app.80d4373d.js" as="script">
9
+ <link rel="stylesheet" href="/node-red-contrib-power-saver/assets/css/styles.e835bef6.css">
10
+ </head>
11
+ <body>
12
+ <div id="app"><!--[--><div class="theme-container"><!--[--><header 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="/node-red-contrib-power-saver/" class=""><!----><span class="site-name">Power Saver</span></a></span><div class="navbar-links-wrapper" style=""><!--[--><!--]--><nav class="navbar-links can-hide"><!--[--><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/guide/" class="nav-link" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/nodes/" class="nav-link" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/examples/" class="nav-link router-link-active" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/contribute/" class="nav-link" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/changelog/" class="nav-link" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></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-links"><!--[--><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/guide/" class="nav-link" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/nodes/" class="nav-link" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/examples/" class="nav-link router-link-active" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/contribute/" class="nav-link" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/changelog/" class="nav-link" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-links"><!--[--><!--[--><p class="sidebar-heading sidebar-item active">Examples</p><ul class=""><li><!--[--><a href="/node-red-contrib-power-saver/examples/example-nordpool-current-state.html" class="nav-link sidebar-item" aria-label="Nord Pool and current state node"><!--[--><!--]--> Nord Pool and current state node <!--[--><!--]--></a><!----><!--]--></li><li><!--[--><a href="/node-red-contrib-power-saver/examples/example-nordpool-events-state.html" class="nav-link sidebar-item" aria-label="Nord Pool and events: state node"><!--[--><!--]--> Nord Pool and events: state node <!--[--><!--]--></a><!----><!--]--></li><li><!--[--><a aria-current="page" href="/node-red-contrib-power-saver/examples/example-tibber-mqtt.html" class="router-link-active router-link-exact-active nav-link router-link-active sidebar-item active" aria-label="Tibber, a switch and MQTT"><!--[--><!--]--> Tibber, a switch and MQTT <!--[--><!--]--></a><ul class="sidebar-sub-items"><li><!--[--><a aria-current="page" href="/node-red-contrib-power-saver/examples/example-tibber-mqtt.html#description" class="router-link-active router-link-exact-active nav-link sidebar-item" aria-label="Description"><!--[--><!--]--> Description <!--[--><!--]--></a><!----><!--]--></li><li><!--[--><a aria-current="page" href="/node-red-contrib-power-saver/examples/example-tibber-mqtt.html#flow" class="router-link-active router-link-exact-active nav-link sidebar-item" aria-label="Flow"><!--[--><!--]--> Flow <!--[--><!--]--></a><!----><!--]--></li></ul><!--]--></li></ul><!--]--><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="page"><!--[--><!--]--><div class="theme-default-content"><!--[--><h1 id="tibber-a-switch-and-mqtt" tabindex="-1"><a class="header-anchor" href="#tibber-a-switch-and-mqtt" aria-hidden="true">#</a> Tibber, a switch and MQTT</h1><h2 id="description" tabindex="-1"><a class="header-anchor" href="#description" aria-hidden="true">#</a> Description</h2><p>In this example, data is read from Tibber and used to turn on/off a switch, scheduled by the <code>ps-best-save</code> node to be off up to 5 hours in a row, but only if at least 5 cents/øre is saved per kWh. Data is also sent to MQTT, for example to be displayed on <a href="https://magicmirror.builders/" target="_blank" rel="noopener noreferrer">Magic Mirror<span><svg class="icon outbound" 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="sr-only">open in new window</span><!--]--></span></a>.</p><p><img src="/node-red-contrib-power-saver/assets/img/power-saver-tibber-mqtt.16891dd2.png" alt="Example with Tibber and MQTT"></p><h2 id="flow" tabindex="-1"><a class="header-anchor" href="#flow" aria-hidden="true">#</a> Flow</h2><div class="language-json ext-json"><pre class="language-json"><code><span class="token punctuation">[</span>
13
+ <span class="token punctuation">{</span>
14
+ <span class="token property">&quot;id&quot;</span><span class="token operator">:</span> <span class="token string">&quot;467a5fe.d0bbba&quot;</span><span class="token punctuation">,</span>
15
+ <span class="token property">&quot;type&quot;</span><span class="token operator">:</span> <span class="token string">&quot;mqtt out&quot;</span><span class="token punctuation">,</span>
16
+ <span class="token property">&quot;z&quot;</span><span class="token operator">:</span> <span class="token string">&quot;d938c47f.3398f8&quot;</span><span class="token punctuation">,</span>
17
+ <span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;Send switch to MM&quot;</span><span class="token punctuation">,</span>
18
+ <span class="token property">&quot;topic&quot;</span><span class="token operator">:</span> <span class="token string">&quot;powersaver/switch&quot;</span><span class="token punctuation">,</span>
19
+ <span class="token property">&quot;qos&quot;</span><span class="token operator">:</span> <span class="token string">&quot;0&quot;</span><span class="token punctuation">,</span>
20
+ <span class="token property">&quot;retain&quot;</span><span class="token operator">:</span> <span class="token string">&quot;false&quot;</span><span class="token punctuation">,</span>
21
+ <span class="token property">&quot;broker&quot;</span><span class="token operator">:</span> <span class="token string">&quot;24fbcfb5.569ea&quot;</span><span class="token punctuation">,</span>
22
+ <span class="token property">&quot;x&quot;</span><span class="token operator">:</span> <span class="token number">730</span><span class="token punctuation">,</span>
23
+ <span class="token property">&quot;y&quot;</span><span class="token operator">:</span> <span class="token number">120</span><span class="token punctuation">,</span>
24
+ <span class="token property">&quot;wires&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
25
+ <span class="token punctuation">}</span><span class="token punctuation">,</span>
26
+ <span class="token punctuation">{</span>
27
+ <span class="token property">&quot;id&quot;</span><span class="token operator">:</span> <span class="token string">&quot;ab2d599a.077738&quot;</span><span class="token punctuation">,</span>
28
+ <span class="token property">&quot;type&quot;</span><span class="token operator">:</span> <span class="token string">&quot;tibber-query&quot;</span><span class="token punctuation">,</span>
29
+ <span class="token property">&quot;z&quot;</span><span class="token operator">:</span> <span class="token string">&quot;d938c47f.3398f8&quot;</span><span class="token punctuation">,</span>
30
+ <span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;Get Tibber prices&quot;</span><span class="token punctuation">,</span>
31
+ <span class="token property">&quot;active&quot;</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
32
+ <span class="token property">&quot;apiEndpointRef&quot;</span><span class="token operator">:</span> <span class="token string">&quot;b70ec5d0.6f8f08&quot;</span><span class="token punctuation">,</span>
33
+ <span class="token property">&quot;x&quot;</span><span class="token operator">:</span> <span class="token number">470</span><span class="token punctuation">,</span>
34
+ <span class="token property">&quot;y&quot;</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>
35
+ <span class="token property">&quot;wires&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token string">&quot;0ef929fde193cf4d&quot;</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
36
+ <span class="token punctuation">}</span><span class="token punctuation">,</span>
37
+ <span class="token punctuation">{</span>
38
+ <span class="token property">&quot;id&quot;</span><span class="token operator">:</span> <span class="token string">&quot;4f11b5ae.4cc22c&quot;</span><span class="token punctuation">,</span>
39
+ <span class="token property">&quot;type&quot;</span><span class="token operator">:</span> <span class="token string">&quot;inject&quot;</span><span class="token punctuation">,</span>
40
+ <span class="token property">&quot;z&quot;</span><span class="token operator">:</span> <span class="token string">&quot;d938c47f.3398f8&quot;</span><span class="token punctuation">,</span>
41
+ <span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;Refresh&quot;</span><span class="token punctuation">,</span>
42
+ <span class="token property">&quot;props&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span>
43
+ <span class="token punctuation">{</span>
44
+ <span class="token property">&quot;p&quot;</span><span class="token operator">:</span> <span class="token string">&quot;payload&quot;</span>
45
+ <span class="token punctuation">}</span>
46
+ <span class="token punctuation">]</span><span class="token punctuation">,</span>
47
+ <span class="token property">&quot;repeat&quot;</span><span class="token operator">:</span> <span class="token string">&quot;3600&quot;</span><span class="token punctuation">,</span>
48
+ <span class="token property">&quot;crontab&quot;</span><span class="token operator">:</span> <span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
49
+ <span class="token property">&quot;once&quot;</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
50
+ <span class="token property">&quot;onceDelay&quot;</span><span class="token operator">:</span> <span class="token string">&quot;1&quot;</span><span class="token punctuation">,</span>
51
+ <span class="token property">&quot;topic&quot;</span><span class="token operator">:</span> <span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
52
+ <span class="token property">&quot;payload&quot;</span><span class="token operator">:</span> <span class="token string">&quot;{ viewer { homes { currentSubscription{ priceInfo{ today { total startsAt } tomorrow { total startsAt } } } } } }&quot;</span><span class="token punctuation">,</span>
53
+ <span class="token property">&quot;payloadType&quot;</span><span class="token operator">:</span> <span class="token string">&quot;str&quot;</span><span class="token punctuation">,</span>
54
+ <span class="token property">&quot;x&quot;</span><span class="token operator">:</span> <span class="token number">280</span><span class="token punctuation">,</span>
55
+ <span class="token property">&quot;y&quot;</span><span class="token operator">:</span> <span class="token number">100</span><span class="token punctuation">,</span>
56
+ <span class="token property">&quot;wires&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token string">&quot;ab2d599a.077738&quot;</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
57
+ <span class="token punctuation">}</span><span class="token punctuation">,</span>
58
+ <span class="token punctuation">{</span>
59
+ <span class="token property">&quot;id&quot;</span><span class="token operator">:</span> <span class="token string">&quot;42d8b632.402e38&quot;</span><span class="token punctuation">,</span>
60
+ <span class="token property">&quot;type&quot;</span><span class="token operator">:</span> <span class="token string">&quot;mqtt out&quot;</span><span class="token punctuation">,</span>
61
+ <span class="token property">&quot;z&quot;</span><span class="token operator">:</span> <span class="token string">&quot;d938c47f.3398f8&quot;</span><span class="token punctuation">,</span>
62
+ <span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;Send schedule to MM&quot;</span><span class="token punctuation">,</span>
63
+ <span class="token property">&quot;topic&quot;</span><span class="token operator">:</span> <span class="token string">&quot;powersaver/plan&quot;</span><span class="token punctuation">,</span>
64
+ <span class="token property">&quot;qos&quot;</span><span class="token operator">:</span> <span class="token string">&quot;0&quot;</span><span class="token punctuation">,</span>
65
+ <span class="token property">&quot;retain&quot;</span><span class="token operator">:</span> <span class="token string">&quot;true&quot;</span><span class="token punctuation">,</span>
66
+ <span class="token property">&quot;broker&quot;</span><span class="token operator">:</span> <span class="token string">&quot;24fbcfb5.569ea&quot;</span><span class="token punctuation">,</span>
67
+ <span class="token property">&quot;x&quot;</span><span class="token operator">:</span> <span class="token number">740</span><span class="token punctuation">,</span>
68
+ <span class="token property">&quot;y&quot;</span><span class="token operator">:</span> <span class="token number">240</span><span class="token punctuation">,</span>
69
+ <span class="token property">&quot;wires&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
70
+ <span class="token punctuation">}</span><span class="token punctuation">,</span>
71
+ <span class="token punctuation">{</span>
72
+ <span class="token property">&quot;id&quot;</span><span class="token operator">:</span> <span class="token string">&quot;5e485ff7.db156&quot;</span><span class="token punctuation">,</span>
73
+ <span class="token property">&quot;type&quot;</span><span class="token operator">:</span> <span class="token string">&quot;api-call-service&quot;</span><span class="token punctuation">,</span>
74
+ <span class="token property">&quot;z&quot;</span><span class="token operator">:</span> <span class="token string">&quot;d938c47f.3398f8&quot;</span><span class="token punctuation">,</span>
75
+ <span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;Turn on VVB&quot;</span><span class="token punctuation">,</span>
76
+ <span class="token property">&quot;server&quot;</span><span class="token operator">:</span> <span class="token string">&quot;ec4a12a1.b2be9&quot;</span><span class="token punctuation">,</span>
77
+ <span class="token property">&quot;version&quot;</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
78
+ <span class="token property">&quot;debugenabled&quot;</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
79
+ <span class="token property">&quot;service_domain&quot;</span><span class="token operator">:</span> <span class="token string">&quot;switch&quot;</span><span class="token punctuation">,</span>
80
+ <span class="token property">&quot;service&quot;</span><span class="token operator">:</span> <span class="token string">&quot;turn_on&quot;</span><span class="token punctuation">,</span>
81
+ <span class="token property">&quot;entityId&quot;</span><span class="token operator">:</span> <span class="token string">&quot;switch.varmtvannsbereder_switch&quot;</span><span class="token punctuation">,</span>
82
+ <span class="token property">&quot;data&quot;</span><span class="token operator">:</span> <span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
83
+ <span class="token property">&quot;dataType&quot;</span><span class="token operator">:</span> <span class="token string">&quot;jsonata&quot;</span><span class="token punctuation">,</span>
84
+ <span class="token property">&quot;mergecontext&quot;</span><span class="token operator">:</span> <span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
85
+ <span class="token property">&quot;mustacheAltTags&quot;</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
86
+ <span class="token property">&quot;outputProperties&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
87
+ <span class="token property">&quot;queue&quot;</span><span class="token operator">:</span> <span class="token string">&quot;none&quot;</span><span class="token punctuation">,</span>
88
+ <span class="token property">&quot;x&quot;</span><span class="token operator">:</span> <span class="token number">710</span><span class="token punctuation">,</span>
89
+ <span class="token property">&quot;y&quot;</span><span class="token operator">:</span> <span class="token number">60</span><span class="token punctuation">,</span>
90
+ <span class="token property">&quot;wires&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
91
+ <span class="token punctuation">}</span><span class="token punctuation">,</span>
92
+ <span class="token punctuation">{</span>
93
+ <span class="token property">&quot;id&quot;</span><span class="token operator">:</span> <span class="token string">&quot;9c978d1c.ee76&quot;</span><span class="token punctuation">,</span>
94
+ <span class="token property">&quot;type&quot;</span><span class="token operator">:</span> <span class="token string">&quot;api-call-service&quot;</span><span class="token punctuation">,</span>
95
+ <span class="token property">&quot;z&quot;</span><span class="token operator">:</span> <span class="token string">&quot;d938c47f.3398f8&quot;</span><span class="token punctuation">,</span>
96
+ <span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;Turn off VVB&quot;</span><span class="token punctuation">,</span>
97
+ <span class="token property">&quot;server&quot;</span><span class="token operator">:</span> <span class="token string">&quot;ec4a12a1.b2be9&quot;</span><span class="token punctuation">,</span>
98
+ <span class="token property">&quot;version&quot;</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
99
+ <span class="token property">&quot;debugenabled&quot;</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
100
+ <span class="token property">&quot;service_domain&quot;</span><span class="token operator">:</span> <span class="token string">&quot;switch&quot;</span><span class="token punctuation">,</span>
101
+ <span class="token property">&quot;service&quot;</span><span class="token operator">:</span> <span class="token string">&quot;turn_off&quot;</span><span class="token punctuation">,</span>
102
+ <span class="token property">&quot;entityId&quot;</span><span class="token operator">:</span> <span class="token string">&quot;switch.varmtvannsbereder_switch&quot;</span><span class="token punctuation">,</span>
103
+ <span class="token property">&quot;data&quot;</span><span class="token operator">:</span> <span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
104
+ <span class="token property">&quot;dataType&quot;</span><span class="token operator">:</span> <span class="token string">&quot;json&quot;</span><span class="token punctuation">,</span>
105
+ <span class="token property">&quot;mergecontext&quot;</span><span class="token operator">:</span> <span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
106
+ <span class="token property">&quot;mustacheAltTags&quot;</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
107
+ <span class="token property">&quot;outputProperties&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
108
+ <span class="token property">&quot;queue&quot;</span><span class="token operator">:</span> <span class="token string">&quot;none&quot;</span><span class="token punctuation">,</span>
109
+ <span class="token property">&quot;x&quot;</span><span class="token operator">:</span> <span class="token number">710</span><span class="token punctuation">,</span>
110
+ <span class="token property">&quot;y&quot;</span><span class="token operator">:</span> <span class="token number">180</span><span class="token punctuation">,</span>
111
+ <span class="token property">&quot;wires&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
112
+ <span class="token punctuation">}</span><span class="token punctuation">,</span>
113
+ <span class="token punctuation">{</span>
114
+ <span class="token property">&quot;id&quot;</span><span class="token operator">:</span> <span class="token string">&quot;5b6be1568744c6cf&quot;</span><span class="token punctuation">,</span>
115
+ <span class="token property">&quot;type&quot;</span><span class="token operator">:</span> <span class="token string">&quot;ps-strategy-best-save&quot;</span><span class="token punctuation">,</span>
116
+ <span class="token property">&quot;z&quot;</span><span class="token operator">:</span> <span class="token string">&quot;d938c47f.3398f8&quot;</span><span class="token punctuation">,</span>
117
+ <span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;Best Save&quot;</span><span class="token punctuation">,</span>
118
+ <span class="token property">&quot;maxHoursToSaveInSequence&quot;</span><span class="token operator">:</span> <span class="token string">&quot;5&quot;</span><span class="token punctuation">,</span>
119
+ <span class="token property">&quot;minHoursOnAfterMaxSequenceSaved&quot;</span><span class="token operator">:</span> <span class="token string">&quot;1&quot;</span><span class="token punctuation">,</span>
120
+ <span class="token property">&quot;minSaving&quot;</span><span class="token operator">:</span> <span class="token string">&quot;0.05&quot;</span><span class="token punctuation">,</span>
121
+ <span class="token property">&quot;sendCurrentValueWhenRescheduling&quot;</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
122
+ <span class="token property">&quot;outputIfNoSchedule&quot;</span><span class="token operator">:</span> <span class="token string">&quot;true&quot;</span><span class="token punctuation">,</span>
123
+ <span class="token property">&quot;scheduleOnlyFromCurrentTime&quot;</span><span class="token operator">:</span> <span class="token string">&quot;false&quot;</span><span class="token punctuation">,</span>
124
+ <span class="token property">&quot;x&quot;</span><span class="token operator">:</span> <span class="token number">490</span><span class="token punctuation">,</span>
125
+ <span class="token property">&quot;y&quot;</span><span class="token operator">:</span> <span class="token number">160</span><span class="token punctuation">,</span>
126
+ <span class="token property">&quot;wires&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token string">&quot;467a5fe.d0bbba&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;5e485ff7.db156&quot;</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">&quot;9c978d1c.ee76&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;467a5fe.d0bbba&quot;</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">&quot;42d8b632.402e38&quot;</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
127
+ <span class="token punctuation">}</span><span class="token punctuation">,</span>
128
+ <span class="token punctuation">{</span>
129
+ <span class="token property">&quot;id&quot;</span><span class="token operator">:</span> <span class="token string">&quot;0ef929fde193cf4d&quot;</span><span class="token punctuation">,</span>
130
+ <span class="token property">&quot;type&quot;</span><span class="token operator">:</span> <span class="token string">&quot;ps-receive-price&quot;</span><span class="token punctuation">,</span>
131
+ <span class="token property">&quot;z&quot;</span><span class="token operator">:</span> <span class="token string">&quot;d938c47f.3398f8&quot;</span><span class="token punctuation">,</span>
132
+ <span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;Price Receiver&quot;</span><span class="token punctuation">,</span>
133
+ <span class="token property">&quot;x&quot;</span><span class="token operator">:</span> <span class="token number">280</span><span class="token punctuation">,</span>
134
+ <span class="token property">&quot;y&quot;</span><span class="token operator">:</span> <span class="token number">160</span><span class="token punctuation">,</span>
135
+ <span class="token property">&quot;wires&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">[</span><span class="token string">&quot;5b6be1568744c6cf&quot;</span><span class="token punctuation">]</span><span class="token punctuation">]</span>
136
+ <span class="token punctuation">}</span><span class="token punctuation">,</span>
137
+ <span class="token punctuation">{</span>
138
+ <span class="token property">&quot;id&quot;</span><span class="token operator">:</span> <span class="token string">&quot;24fbcfb5.569ea&quot;</span><span class="token punctuation">,</span>
139
+ <span class="token property">&quot;type&quot;</span><span class="token operator">:</span> <span class="token string">&quot;mqtt-broker&quot;</span><span class="token punctuation">,</span>
140
+ <span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;MQTT&quot;</span><span class="token punctuation">,</span>
141
+ <span class="token property">&quot;broker&quot;</span><span class="token operator">:</span> <span class="token string">&quot;10.0.0.15&quot;</span><span class="token punctuation">,</span>
142
+ <span class="token property">&quot;port&quot;</span><span class="token operator">:</span> <span class="token string">&quot;1883&quot;</span><span class="token punctuation">,</span>
143
+ <span class="token property">&quot;clientid&quot;</span><span class="token operator">:</span> <span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
144
+ <span class="token property">&quot;usetls&quot;</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
145
+ <span class="token property">&quot;compatmode&quot;</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
146
+ <span class="token property">&quot;keepalive&quot;</span><span class="token operator">:</span> <span class="token string">&quot;60&quot;</span><span class="token punctuation">,</span>
147
+ <span class="token property">&quot;cleansession&quot;</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
148
+ <span class="token property">&quot;birthTopic&quot;</span><span class="token operator">:</span> <span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
149
+ <span class="token property">&quot;birthQos&quot;</span><span class="token operator">:</span> <span class="token string">&quot;0&quot;</span><span class="token punctuation">,</span>
150
+ <span class="token property">&quot;birthPayload&quot;</span><span class="token operator">:</span> <span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
151
+ <span class="token property">&quot;closeTopic&quot;</span><span class="token operator">:</span> <span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
152
+ <span class="token property">&quot;closeQos&quot;</span><span class="token operator">:</span> <span class="token string">&quot;0&quot;</span><span class="token punctuation">,</span>
153
+ <span class="token property">&quot;closePayload&quot;</span><span class="token operator">:</span> <span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
154
+ <span class="token property">&quot;willTopic&quot;</span><span class="token operator">:</span> <span class="token string">&quot;&quot;</span><span class="token punctuation">,</span>
155
+ <span class="token property">&quot;willQos&quot;</span><span class="token operator">:</span> <span class="token string">&quot;0&quot;</span><span class="token punctuation">,</span>
156
+ <span class="token property">&quot;willPayload&quot;</span><span class="token operator">:</span> <span class="token string">&quot;&quot;</span>
157
+ <span class="token punctuation">}</span><span class="token punctuation">,</span>
158
+ <span class="token punctuation">{</span>
159
+ <span class="token property">&quot;id&quot;</span><span class="token operator">:</span> <span class="token string">&quot;b70ec5d0.6f8f08&quot;</span><span class="token punctuation">,</span>
160
+ <span class="token property">&quot;type&quot;</span><span class="token operator">:</span> <span class="token string">&quot;tibber-api-endpoint&quot;</span><span class="token punctuation">,</span>
161
+ <span class="token property">&quot;feedUrl&quot;</span><span class="token operator">:</span> <span class="token string">&quot;wss://api.tibber.com/v1-beta/gql/subscriptions&quot;</span><span class="token punctuation">,</span>
162
+ <span class="token property">&quot;queryUrl&quot;</span><span class="token operator">:</span> <span class="token string">&quot;https://api.tibber.com/v1-beta/gql&quot;</span><span class="token punctuation">,</span>
163
+ <span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;Tibber API&quot;</span>
164
+ <span class="token punctuation">}</span><span class="token punctuation">,</span>
165
+ <span class="token punctuation">{</span>
166
+ <span class="token property">&quot;id&quot;</span><span class="token operator">:</span> <span class="token string">&quot;ec4a12a1.b2be9&quot;</span><span class="token punctuation">,</span>
167
+ <span class="token property">&quot;type&quot;</span><span class="token operator">:</span> <span class="token string">&quot;server&quot;</span><span class="token punctuation">,</span>
168
+ <span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;Home Assistant&quot;</span><span class="token punctuation">,</span>
169
+ <span class="token property">&quot;version&quot;</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
170
+ <span class="token property">&quot;addon&quot;</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
171
+ <span class="token property">&quot;rejectUnauthorizedCerts&quot;</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
172
+ <span class="token property">&quot;ha_boolean&quot;</span><span class="token operator">:</span> <span class="token string">&quot;y|yes|true|on|home|open&quot;</span><span class="token punctuation">,</span>
173
+ <span class="token property">&quot;connectionDelay&quot;</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
174
+ <span class="token property">&quot;cacheJson&quot;</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
175
+ <span class="token property">&quot;heartbeat&quot;</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
176
+ <span class="token property">&quot;heartbeatInterval&quot;</span><span class="token operator">:</span> <span class="token number">30</span>
177
+ <span class="token punctuation">}</span>
178
+ <span class="token punctuation">]</span>
179
+ </code></pre></div><!--]--></div><footer class="page-meta"><!----><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><span class="meta-item-info">12/11/2021, 10:59:40 AM</span></div><div class="meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: otto.paulsen@itema.no">Otto Paulsen</span><!----><!--]--><!--]--></span></div></footer><nav class="page-nav"><p class="inner"><span class="prev"> ← <a href="/node-red-contrib-power-saver/examples/example-nordpool-events-state.html" class="nav-link" aria-label="Nord Pool and events: state node"><!--[--><!--]--> Nord Pool and events: state node <!--[--><!--]--></a></span><!----></p></nav><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
180
+ <script src="/node-red-contrib-power-saver/assets/js/runtime~app.665b411c.js" defer></script><script src="/node-red-contrib-power-saver/assets/js/812.79dad458.js" defer></script><script src="/node-red-contrib-power-saver/assets/js/app.80d4373d.js" defer></script>
181
+ </body>
182
+ </html>
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en-US">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <meta name="generator" content="VuePress 2.0.0-beta.27">
7
+ <script src="https://c6.patreon.com/becomePatronButton.bundle.js"></script><link rel="icon" href="/euro.png"><title>Examples | Power Saver</title><meta name="description" content="A Node-RED note to save money on hourly changing power prices">
8
+ <link rel="preload" href="/node-red-contrib-power-saver/assets/js/runtime~app.665b411c.js" as="script"><link rel="preload" href="/node-red-contrib-power-saver/assets/css/styles.e835bef6.css" as="style"><link rel="preload" href="/node-red-contrib-power-saver/assets/js/812.79dad458.js" as="script"><link rel="preload" href="/node-red-contrib-power-saver/assets/js/app.80d4373d.js" as="script">
9
+ <link rel="stylesheet" href="/node-red-contrib-power-saver/assets/css/styles.e835bef6.css">
10
+ </head>
11
+ <body>
12
+ <div id="app"><!--[--><div class="theme-container"><!--[--><header 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="/node-red-contrib-power-saver/" class=""><!----><span class="site-name">Power Saver</span></a></span><div class="navbar-links-wrapper" style=""><!--[--><!--]--><nav class="navbar-links can-hide"><!--[--><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/guide/" class="nav-link" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/nodes/" class="nav-link" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-links-item"><a aria-current="page" href="/node-red-contrib-power-saver/examples/" class="router-link-active router-link-exact-active nav-link router-link-active" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/contribute/" class="nav-link" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/changelog/" class="nav-link" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></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-links"><!--[--><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/guide/" class="nav-link" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/nodes/" class="nav-link" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-links-item"><a aria-current="page" href="/node-red-contrib-power-saver/examples/" class="router-link-active router-link-exact-active nav-link router-link-active" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/contribute/" class="nav-link" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/changelog/" class="nav-link" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-links"><!--[--><!--[--><p class="sidebar-heading sidebar-item">Examples</p><ul class=""><li><!--[--><a href="/node-red-contrib-power-saver/examples/example-nordpool-current-state.html" class="nav-link sidebar-item" aria-label="Nord Pool and current state node"><!--[--><!--]--> Nord Pool and current state node <!--[--><!--]--></a><!----><!--]--></li><li><!--[--><a href="/node-red-contrib-power-saver/examples/example-nordpool-events-state.html" class="nav-link sidebar-item" aria-label="Nord Pool and events: state node"><!--[--><!--]--> Nord Pool and events: state node <!--[--><!--]--></a><!----><!--]--></li><li><!--[--><a href="/node-red-contrib-power-saver/examples/example-tibber-mqtt.html" class="nav-link sidebar-item" aria-label="Tibber, a switch and MQTT"><!--[--><!--]--> Tibber, a switch and MQTT <!--[--><!--]--></a><!----><!--]--></li></ul><!--]--><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="page"><!--[--><!--]--><div class="theme-default-content"><!--[--><h1 id="examples" tabindex="-1"><a class="header-anchor" href="#examples" aria-hidden="true">#</a> Examples</h1><p><a href="./example-nordpool-current-state">Nord Pool and <code>current state</code> node in HA</a><br><a href="./example-nordpool-events-state">Nord Pool and <code>events: state</code> node in HA</a><br><a href="./example-tibber-mqtt">Tibber and mqtt</a></p><!--]--></div><footer class="page-meta"><!----><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><span class="meta-item-info">12/11/2021, 10:59:40 AM</span></div><div class="meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: otto.paulsen@itema.no">Otto Paulsen</span><!----><!--]--><!--]--></span></div></footer><!----><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
13
+ <script src="/node-red-contrib-power-saver/assets/js/runtime~app.665b411c.js" defer></script><script src="/node-red-contrib-power-saver/assets/js/812.79dad458.js" defer></script><script src="/node-red-contrib-power-saver/assets/js/app.80d4373d.js" defer></script>
14
+ </body>
15
+ </html>
@@ -0,0 +1,52 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en-US">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <meta name="generator" content="VuePress 2.0.0-beta.27">
7
+ <script src="https://c6.patreon.com/becomePatronButton.bundle.js"></script><link rel="icon" href="/euro.png"><title>Guide | Power Saver</title><meta name="description" content="A Node-RED note to save money on hourly changing power prices">
8
+ <link rel="preload" href="/node-red-contrib-power-saver/assets/js/runtime~app.665b411c.js" as="script"><link rel="preload" href="/node-red-contrib-power-saver/assets/css/styles.e835bef6.css" as="style"><link rel="preload" href="/node-red-contrib-power-saver/assets/js/812.79dad458.js" as="script"><link rel="preload" href="/node-red-contrib-power-saver/assets/js/app.80d4373d.js" as="script">
9
+ <link rel="stylesheet" href="/node-red-contrib-power-saver/assets/css/styles.e835bef6.css">
10
+ </head>
11
+ <body>
12
+ <div id="app"><!--[--><div class="theme-container"><!--[--><header 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="/node-red-contrib-power-saver/" class=""><!----><span class="site-name">Power Saver</span></a></span><div class="navbar-links-wrapper" style=""><!--[--><!--]--><nav class="navbar-links can-hide"><!--[--><div class="navbar-links-item"><a aria-current="page" href="/node-red-contrib-power-saver/guide/" class="router-link-active router-link-exact-active nav-link router-link-active" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/nodes/" class="nav-link" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/examples/" class="nav-link" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/contribute/" class="nav-link" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/changelog/" class="nav-link" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></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-links"><!--[--><div class="navbar-links-item"><a aria-current="page" href="/node-red-contrib-power-saver/guide/" class="router-link-active router-link-exact-active nav-link router-link-active" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/nodes/" class="nav-link" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/examples/" class="nav-link" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/contribute/" class="nav-link" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/changelog/" class="nav-link" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-links"><!--[--><!--[--><p class="sidebar-heading sidebar-item">Guide</p><ul class=""><li><!--[--><a aria-current="page" href="/node-red-contrib-power-saver/guide/#introduction" class="router-link-active router-link-exact-active nav-link sidebar-item" aria-label="Introduction"><!--[--><!--]--> Introduction <!--[--><!--]--></a><!----><!--]--></li><li><!--[--><a aria-current="page" href="/node-red-contrib-power-saver/guide/#getting-started" class="router-link-active router-link-exact-active nav-link sidebar-item" aria-label="Getting started"><!--[--><!--]--> Getting started <!--[--><!--]--></a><ul class="sidebar-sub-items"><li><!--[--><a aria-current="page" href="/node-red-contrib-power-saver/guide/#installation" class="router-link-active router-link-exact-active nav-link sidebar-item" aria-label="Installation"><!--[--><!--]--> Installation <!--[--><!--]--></a><!----><!--]--></li><li><!--[--><a aria-current="page" href="/node-red-contrib-power-saver/guide/#get-price-data" class="router-link-active router-link-exact-active nav-link sidebar-item" aria-label="Get price data"><!--[--><!--]--> Get price data <!--[--><!--]--></a><!----><!--]--></li><li><!--[--><a aria-current="page" href="/node-red-contrib-power-saver/guide/#add-grid-tariff" class="router-link-active router-link-exact-active nav-link sidebar-item" aria-label="Add grid tariff"><!--[--><!--]--> Add grid tariff <!--[--><!--]--></a><!----><!--]--></li><li><!--[--><a aria-current="page" href="/node-red-contrib-power-saver/guide/#calculate-and-run-schedule" class="router-link-active router-link-exact-active nav-link sidebar-item" aria-label="Calculate and run schedule"><!--[--><!--]--> Calculate and run schedule <!--[--><!--]--></a><!----><!--]--></li><li><!--[--><a aria-current="page" href="/node-red-contrib-power-saver/guide/#use-schedule-signals" class="router-link-active router-link-exact-active nav-link sidebar-item" aria-label="Use schedule signals"><!--[--><!--]--> Use schedule signals <!--[--><!--]--></a><!----><!--]--></li><li><!--[--><a aria-current="page" href="/node-red-contrib-power-saver/guide/#display-schedule" class="router-link-active router-link-exact-active nav-link sidebar-item" aria-label="Display schedule"><!--[--><!--]--> Display schedule <!--[--><!--]--></a><!----><!--]--></li><li><!--[--><a aria-current="page" href="/node-red-contrib-power-saver/guide/#more-information" class="router-link-active router-link-exact-active nav-link sidebar-item" aria-label="More information"><!--[--><!--]--> More information <!--[--><!--]--></a><!----><!--]--></li></ul><!--]--></li><li><!--[--><a aria-current="page" href="/node-red-contrib-power-saver/guide/#migration-from-v2" class="router-link-active router-link-exact-active nav-link sidebar-item" aria-label="Migration from v2"><!--[--><!--]--> Migration from v2 <!--[--><!--]--></a><!----><!--]--></li></ul><!--]--><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="page"><!--[--><!--]--><div class="theme-default-content"><!--[--><h1 id="guide" tabindex="-1"><a class="header-anchor" href="#guide" aria-hidden="true">#</a> Guide</h1><h2 id="introduction" tabindex="-1"><a class="header-anchor" href="#introduction" aria-hidden="true">#</a> Introduction</h2><p>This is a collection of nodes you can use to save money on variable power prices. The solution can be used to control switches or other entities in a smart home system, and for example turn on when the price is low, and turn off when the price is high. There are different ways to calculate what hours to turn on and off, and these are impemented as <strong>strategies nodes</strong>. Each stragety node can be configured to fit different purposes.</p><p>The strategies need price data to work. These can be received from different sources, for example Tibber, Nord Pool or custom sources.</p><div class="custom-container warning"><p class="custom-container-title">Price sources</p><p>Tibber and Nord Pool are only available in the nordics, so if you live outside the nordics, you must find another source of price data, and make your own input.</p></div><p>Grid tariff is normally not part of the electricity price, so if this varies by the hour, it must be added before sent to the strategy nodes for calculation. This can be done by putting a <code>ps-xxx-add-tariff</code> node between the price receiver and the strategy.</p><p>The strategy nodes have 3 outputs. Output 1 is used to &quot;turn on&quot;, output 2 is used to &quot;turn off&quot;, and on output 3, the calculated schedule and some other information is sent. You can use this to make graphs, or just send it to a debug node to view it.</p><p>Example:</p><p><img src="/node-red-contrib-power-saver/assets/img/example-flow-1.3ff3e23f.png" alt="Example flow"></p><p>Here prices are received from Tibber, converted in the <code>ps-receive-price</code> node, then gridd tariff for Elvia is added before sent to the <code>ps-strategy-best-save</code> node. Output is sent to Home Assistant via two <code>call-service</code> nodes, and the schedule is sent to a debug node.</p><div class="custom-container tip"><p class="custom-container-title">Home Assistant</p><p>The node collection fits very well with Home Assistant (HA), as Node-RED is frequently used for automations, and there also is an integration with Nord Pool, but there is no direct dependency to HA, so all nodes can be used also without HA.</p></div><h2 id="getting-started" tabindex="-1"><a class="header-anchor" href="#getting-started" aria-hidden="true">#</a> Getting started</h2><h3 id="installation" tabindex="-1"><a class="header-anchor" href="#installation" aria-hidden="true">#</a> Installation</h3><p>Install in Node-RED via the Manage Palette menu.</p><p>May also be installed via npm:</p><p><code>npm install node-red-contrib-power-saver</code></p><p>Make sure that you upgrade now and then to get the latest version. See <a href="CHANGELOG">changelog</a> for changes.</p><h3 id="get-price-data" tabindex="-1"><a class="header-anchor" href="#get-price-data" aria-hidden="true">#</a> Get price data</h3><p>This solution is useless without price data. In the nordics, there are at least two very common places to get price data from:</p><ul><li>Tibber</li><li>Nord Pool</li></ul><p>The <code>ps-receive-price</code> node is designed to handle price input frome both these, and convert it to the format required by the strategy nodes.</p><p>If you are a Tibber customer, use the <code>tibber-query</code> node from the <a href="https://flows.nodered.org/node/node-red-contrib-tibber-api" target="_blank" rel="noopener noreferrer">Tibber API<span><svg class="icon outbound" 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="sr-only">open in new window</span><!--]--></span></a> to receive price, with one of the following queries:</p><div class="code-group"><div class="code-group__nav"><ul class="code-group__ul"><li class="code-group__li"><button class="code-group__nav-tab" ariapressed="false" ariaexpanded="false">All homes</button></li><li class="code-group__li"><button class="code-group__nav-tab code-group__nav-tab-active" ariapressed="true" ariaexpanded="true">Singel home</button></li></ul></div><!--[--><div class="code-group-item" aria-selected="false"><!--[--><div class="language-gql ext-gql line-numbers-mode"><pre class="language-gql"><code>{
13
+ viewer {
14
+ homes {
15
+ id
16
+ address {
17
+ address1
18
+ address2
19
+ address3
20
+ postalCode
21
+ city
22
+ country
23
+ }
24
+ }
25
+ }
26
+ }
27
+ </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></div></div><!--]--></div><div class="code-group-item code-group-item__active" aria-selected="true"><!--[--><div class="language-gql ext-gql line-numbers-mode"><pre class="language-gql"><code>{
28
+ viewer {
29
+ home(id: &quot;142c1670-ab43-2ab3-ba6d-723703a551e2&quot;) {
30
+ currentSubscription{
31
+ priceInfo{
32
+ today {
33
+ total
34
+ energy
35
+ tax
36
+ startsAt
37
+ }
38
+ tomorrow {
39
+ total
40
+ energy
41
+ tax
42
+ startsAt
43
+ }
44
+ }
45
+ }
46
+ }
47
+ }
48
+ }
49
+ </code></pre><div class="highlight-lines"><br><br><div class="highlight-line"> </div><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br></div><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></div></div><!--]--></div><!--]--></div><p>See more details in the <a href="../nodes/ps-receive-price#tibber-input">documentation</a> for the <code>ps-receive-price</code> node.</p><p>Se documentation for <a href="https://flows.nodered.org/node/node-red-contrib-tibber-api" target="_blank" rel="noopener noreferrer">node-red-contrib-tibber-api<span><svg class="icon outbound" 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="sr-only">open in new window</span><!--]--></span></a> for details about the Tibber query.</p><div class="custom-container tip"><p class="custom-container-title">Tibber query</p><p>You can use an <code>inject</code> node (standard Node-RED) to send the Tibber query as a text string int to the <code>tibber-query</code> node. This can be set to repeat the query for example every hour.</p></div><p><a href="/node-red-contrib-power-saver/examples/example-tibber-mqtt.html" class="">See example of Tibber flow and mqtt</a></p><p>If you use Home Assistant (HA), you can install the <a href="https://github.com/custom-components/nordpool" target="_blank" rel="noopener noreferrer">Nord Pool custom component<span><svg class="icon outbound" 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="sr-only">open in new window</span><!--]--></span></a>, that provides a <em>sensor</em> that gives price per hour for today and tomorrow. Data can be sent from both the <code>current state</code> node or the <code>events: state</code> node.</p><p><a href="/node-red-contrib-power-saver/images/example-nordpool-current-state.html" class="">See example with Nordpool and <code>current state</code> node</a></p><p><a href="/node-red-contrib-power-saver/images/example-nordpool-events-state.html" class="">See example with Nordpool and <code>events: state</code> node</a></p><h3 id="add-grid-tariff" tabindex="-1"><a class="header-anchor" href="#add-grid-tariff" aria-hidden="true">#</a> Add grid tariff</h3><p>When also the grid tariff changes per hour, it must be added to the electricity price in order to get the calculations right.</p><p>After the the <code>ps-receive-price</code> node, add a <code>ps-xxx-add-tariff</code> node to add grid tariff. What node to choose depends on what grid you get electricity through. The followinggrids are supported:</p><table><thead><tr><th>Grid supplier</th><th>Node</th></tr></thead><tbody><tr><td>Elvia</td><td><code>ps-elvia-add-tariff</code></td></tr></tbody></table><p>Oops. Only one grid is currently supported.</p><p>If your grid is not supported, you may code this yourself.</p><div class="custom-container tip"><p class="custom-container-title">Skip this step</p><p>If the grid tariff is the same the whole day, you can skip this step i the flow.</p></div><h3 id="calculate-and-run-schedule" tabindex="-1"><a class="header-anchor" href="#calculate-and-run-schedule" aria-hidden="true">#</a> Calculate and run schedule</h3><p>This is the step where the value is produced. Based on the prices received, the optimal schedule for you is calculated automatically, based on your configuration. You can choose between the following strategies:</p><table><thead><tr><th>Strategy</th><th>Node</th><th>Description</th></tr></thead><tbody><tr><td>Best save</td><td><code>ps-strategy-best-save</code></td><td>Postpone power consumption when there is most to save.</td></tr><tr><td>Lowest price</td><td><code>ps--strategy-lowest-price</code></td><td>Turn on power when the prices are the lowest in a given period.</td></tr></tbody></table><p>These nodes must be configured for your purpose. See configuration description and other details in the documentation for each node.</p><p>Send the result from the <code>ps-xxx-add-tariff</code> node (or the <code>ps-receive-price</code> node) as input to the strategy node you choose.</p><div class="custom-container tip"><p class="custom-container-title">Choose strategy</p><p>Choose the best save strategy if you can postpone power consumption, and expect the consumption to occur during the first hour after power is turned on again.</p><p>Choose the lowest price strategy if you need the power to be on for x hours, but it is not important when that is. Note that you can select to have all hours on in one consecutive period, or spread around on the cheapest hours.</p></div><h3 id="use-schedule-signals" tabindex="-1"><a class="header-anchor" href="#use-schedule-signals" aria-hidden="true">#</a> Use schedule signals</h3><p>Use the outputs to control switches, thermostats or other entities to control your power consumers.</p><p><strong>Output 1</strong> is used to turn on. A payload with value <code>true</code> is sent every time turning on is scheduled.</p><p><strong>Output 2</strong> is used to turn off. A payload with value <code>false</code> is sent every time turning off is scheduled.</p><p>Example using Home Assistant:</p><p><img src="/node-red-contrib-power-saver/assets/img/example-flow-2.b653b58d.png" alt="Example flow"></p><h3 id="display-schedule" tabindex="-1"><a class="header-anchor" href="#display-schedule" aria-hidden="true">#</a> Display schedule</h3><p><strong>Output 3</strong> can be used to print or dispay the calculated schedule. If you just want to see it, send it to a debug node. You can also use it to display the result as graphs in HA.</p><p>For users of Magic Mirror and Tibber, the <code>ps-best-save</code> node can send its schedule to the MMM-Tibber module. See more details in the <code>ps-best-save</code> node documentation.</p><h3 id="more-information" tabindex="-1"><a class="header-anchor" href="#more-information" aria-hidden="true">#</a> More information</h3><p>There are more details and more information in the documentation for each <a href="/nodes/" target="_blank" rel="noopener noreferrer">node<span><svg class="icon outbound" 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="sr-only">open in new window</span><!--]--></span></a> and in the <a href="/examples/" target="_blank" rel="noopener noreferrer">examples<span><svg class="icon outbound" 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="sr-only">open in new window</span><!--]--></span></a>.</p><h2 id="migration-from-v2" tabindex="-1"><a class="header-anchor" href="#migration-from-v2" aria-hidden="true">#</a> Migration from v2</h2><p>The <code>Power Saver</code> node from v2 is still here, and it is working exactly as before. However, it will not be further maintained, so you should replace it. You may directly replace the <code>Power Saver</code> node by two of the new nodes:</p><p><img src="/node-red-contrib-power-saver/assets/img/migrate-best-save.f73420f6.png" alt="Migrate Power Saver"></p><p>See more details in the <a href="/node-red-contrib-power-saver/nodes/power-saver.html" class="">documentation for the <code>Power Saver</code></a> node.</p><!--]--></div><footer class="page-meta"><!----><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><span class="meta-item-info">12/11/2021, 11:15:53 PM</span></div><div class="meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: otto.paulsen@itema.no">Otto Paulsen</span><!----><!--]--><!--]--></span></div></footer><!----><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
50
+ <script src="/node-red-contrib-power-saver/assets/js/runtime~app.665b411c.js" defer></script><script src="/node-red-contrib-power-saver/assets/js/812.79dad458.js" defer></script><script src="/node-red-contrib-power-saver/assets/js/app.80d4373d.js" defer></script>
51
+ </body>
52
+ </html>
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en-US">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <meta name="generator" content="VuePress 2.0.0-beta.27">
7
+ <script src="https://c6.patreon.com/becomePatronButton.bundle.js"></script><link rel="icon" href="/euro.png"><title>Power Saver</title><meta name="description" content="A Node-RED note to save money on hourly changing power prices">
8
+ <link rel="preload" href="/node-red-contrib-power-saver/assets/js/runtime~app.665b411c.js" as="script"><link rel="preload" href="/node-red-contrib-power-saver/assets/css/styles.e835bef6.css" as="style"><link rel="preload" href="/node-red-contrib-power-saver/assets/js/812.79dad458.js" as="script"><link rel="preload" href="/node-red-contrib-power-saver/assets/js/app.80d4373d.js" as="script">
9
+ <link rel="stylesheet" href="/node-red-contrib-power-saver/assets/css/styles.e835bef6.css">
10
+ </head>
11
+ <body>
12
+ <div id="app"><!--[--><div class="theme-container no-sidebar"><!--[--><header 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 aria-current="page" href="/node-red-contrib-power-saver/" class="router-link-active router-link-exact-active"><!----><span class="site-name">Power Saver</span></a></span><div class="navbar-links-wrapper" style=""><!--[--><!--]--><nav class="navbar-links can-hide"><!--[--><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/guide/" class="nav-link" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/nodes/" class="nav-link" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/examples/" class="nav-link" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/contribute/" class="nav-link" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/changelog/" class="nav-link" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></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-links"><!--[--><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/guide/" class="nav-link" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/nodes/" class="nav-link" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/examples/" class="nav-link" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/contribute/" class="nav-link" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/changelog/" class="nav-link" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-links"><!--[--><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="home" aria-labelledby="main-title"><header class="hero"><img src="/node-red-contrib-power-saver/logo.png" alt="Power Saver"><h1 id="main-title">node-red-contrib-power-saver</h1><p class="description">Save money when power prices are changing every hour</p><p class="actions"><!--[--><a href="/node-red-contrib-power-saver/guide" class="nav-link action-button primary" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a><a href="/node-red-contrib-power-saver/nodes/" class="nav-link action-button primary" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a><a href="/node-red-contrib-power-saver/examples/" class="nav-link action-button primary" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a><!--]--></p></header><div class="features"><!--[--><div class="feature"><h2>Automatic scheduling</h2><p>Automatically calculate best plan and send signal to turn on and off.</p></div><div class="feature"><h2>Best Save Strategy</h2><p>Postpone power consumption when there is most to save.</p></div><div class="feature"><h2>Lowest Price Strategy</h2><p>Turn on power when the prices are the lowest in a given period.</p></div><div class="feature"><h2>Integrate with grid tariff APIs</h2><p>Elvia grid tariff API already supported. Others are easy to add.</p></div><div class="feature"><h2>Perfect with Home Assistant</h2><p>Use Home Assistant with Node-RED and control switches via service calls.</p></div><div class="feature"><h2>Tibber and Nord Pool</h2><p>Painlessly use prices received from Tibber or Nord Pool.</p></div><!--]--></div><div class="theme-default-content custom"></div><!--[--><div class="footer">Created by Otto Paulsen<br/><br/><a href="https://www.patreon.com/bePatron?u=65948417" data-patreon-widget-type="become-patron-button">Become a Patron!</a></div><!--]--></main><!--]--></div><!----><!--]--></div>
13
+ <script src="/node-red-contrib-power-saver/assets/js/runtime~app.665b411c.js" defer></script><script src="/node-red-contrib-power-saver/assets/js/812.79dad458.js" defer></script><script src="/node-red-contrib-power-saver/assets/js/app.80d4373d.js" defer></script>
14
+ </body>
15
+ </html>
Binary file
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en-US">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <meta name="generator" content="VuePress 2.0.0-beta.27">
7
+ <script src="https://c6.patreon.com/becomePatronButton.bundle.js"></script><link rel="icon" href="/euro.png"><title>Nodes | Power Saver</title><meta name="description" content="A Node-RED note to save money on hourly changing power prices">
8
+ <link rel="preload" href="/node-red-contrib-power-saver/assets/js/runtime~app.665b411c.js" as="script"><link rel="preload" href="/node-red-contrib-power-saver/assets/css/styles.e835bef6.css" as="style"><link rel="preload" href="/node-red-contrib-power-saver/assets/js/812.79dad458.js" as="script"><link rel="preload" href="/node-red-contrib-power-saver/assets/js/app.80d4373d.js" as="script">
9
+ <link rel="stylesheet" href="/node-red-contrib-power-saver/assets/css/styles.e835bef6.css">
10
+ </head>
11
+ <body>
12
+ <div id="app"><!--[--><div class="theme-container"><!--[--><header 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="/node-red-contrib-power-saver/" class=""><!----><span class="site-name">Power Saver</span></a></span><div class="navbar-links-wrapper" style=""><!--[--><!--]--><nav class="navbar-links can-hide"><!--[--><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/guide/" class="nav-link" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-links-item"><a aria-current="page" href="/node-red-contrib-power-saver/nodes/" class="router-link-active router-link-exact-active nav-link router-link-active" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/examples/" class="nav-link" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/contribute/" class="nav-link" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/changelog/" class="nav-link" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></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-links"><!--[--><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/guide/" class="nav-link" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-links-item"><a aria-current="page" href="/node-red-contrib-power-saver/nodes/" class="router-link-active router-link-exact-active nav-link router-link-active" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/examples/" class="nav-link" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/contribute/" class="nav-link" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-links-item"><a href="/node-red-contrib-power-saver/changelog/" class="nav-link" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-links"><!--[--><!--[--><p class="sidebar-heading sidebar-item">Nodes</p><ul class=""><li><!--[--><a href="/node-red-contrib-power-saver/nodes/power-saver.md" class="nav-link sidebar-item" aria-label="Power Saver"><!--[--><!--]--> Power Saver <!--[--><!--]--></a><!----><!--]--></li><li><!--[--><p class="sidebar-item">Strategy nodes</p><ul class="sidebar-sub-items"><li><!--[--><a href="/node-red-contrib-power-saver/nodes/ps-strategy-best-save.html" class="nav-link sidebar-item" aria-label="ps-strategy-best-save"><!--[--><!--]--> ps-strategy-best-save <!--[--><!--]--></a><!----><!--]--></li><li><!--[--><a href="/node-red-contrib-power-saver/nodes/ps-strategy-lowest-price.html" class="nav-link sidebar-item" aria-label="ps-strategy-lowest-price"><!--[--><!--]--> ps-strategy-lowest-price <!--[--><!--]--></a><!----><!--]--></li></ul><!--]--></li><li><!--[--><p class="sidebar-item">Utility nodes</p><ul class="sidebar-sub-items"><li><!--[--><a href="/node-red-contrib-power-saver/nodes/ps-receive-price.html" class="nav-link sidebar-item" aria-label="ps-receive-price"><!--[--><!--]--> ps-receive-price <!--[--><!--]--></a><!----><!--]--></li></ul><!--]--></li><li><!--[--><p class="sidebar-item">Grid tariff nodes</p><ul class="sidebar-sub-items"><li><!--[--><a href="/node-red-contrib-power-saver/nodes/ps-elvia-add-tariff.html" class="nav-link sidebar-item" aria-label="ps-elvia-add-tariff"><!--[--><!--]--> ps-elvia-add-tariff <!--[--><!--]--></a><!----><!--]--></li></ul><!--]--></li></ul><!--]--><!--[--><p class="sidebar-heading sidebar-item">Data format</p><ul class=""><li><!--[--><a href="/node-red-contrib-power-saver/nodes/strategy-input.html" class="nav-link sidebar-item" aria-label="Strategy input format"><!--[--><!--]--> Strategy input format <!--[--><!--]--></a><!----><!--]--></li></ul><!--]--><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="page"><!--[--><!--]--><div class="theme-default-content"><!--[--><h1 id="nodes" tabindex="-1"><a class="header-anchor" href="#nodes" aria-hidden="true">#</a> Nodes</h1><p>Here is an overview of the nodes, and links to detailed descriptions for eah of them.</p><h2 id="power-saver" tabindex="-1"><a class="header-anchor" href="#power-saver" aria-hidden="true">#</a> <a href="./power-saver">Power Saver</a> <span class="badge warning" style="vertical-align:middle;"><!--[-->deprecated<!--]--></span></h2><p><img src="/node-red-contrib-power-saver/assets/img/node-power-saver.51ff2e5d.png" alt="Power Saver node"></p><p>The old node from version 2 is still working, but should be replaced.</p><h2 id="strategy-nodes" tabindex="-1"><a class="header-anchor" href="#strategy-nodes" aria-hidden="true">#</a> Strategy nodes</h2><p>These are the nodes used to calculate and control saving.</p><h3 id="ps-strategy-best-save" tabindex="-1"><a class="header-anchor" href="#ps-strategy-best-save" aria-hidden="true">#</a> <a href="./ps-strategy-best-save">ps-strategy-best-save</a></h3><p><img src="/node-red-contrib-power-saver/assets/img/node-ps-strategy-best-save.392292d5.png" alt="ps-strategy-best-save"></p><p>Strategy to find the best hours to turn off for most saving.</p><h3 id="ps-strategy-lowest-price" tabindex="-1"><a class="header-anchor" href="#ps-strategy-lowest-price" aria-hidden="true">#</a> <a href="./ps-strategy-lowest-price">ps-strategy-lowest-price</a></h3><p><img src="/node-red-contrib-power-saver/assets/img/node-ps-strategy-lowest-price.3a4ad347.png" alt="ps-strategy-lowest-price"></p><p>Strategy to find the x hours with lowest price in a given period each day.</p><h2 id="utility-nodes" tabindex="-1"><a class="header-anchor" href="#utility-nodes" aria-hidden="true">#</a> Utility nodes</h2><h3 id="ps-receive-price" tabindex="-1"><a class="header-anchor" href="#ps-receive-price" aria-hidden="true">#</a> <a href="./ps-receive-price">ps-receive-price</a></h3><p><img src="/node-red-contrib-power-saver/assets/img/node-ps-receive-price.76eaa418.png" alt="ps-receive-price"></p><p>Node to convert different types of input data to the format used by the strategy nodes.</p><h2 id="grid-tariff-nodes" tabindex="-1"><a class="header-anchor" href="#grid-tariff-nodes" aria-hidden="true">#</a> Grid tariff nodes</h2><h3 id="ps-elvia-add-tariff" tabindex="-1"><a class="header-anchor" href="#ps-elvia-add-tariff" aria-hidden="true">#</a> <a href="./ps-elvia-add-tariff">ps-elvia-add-tariff</a></h3><p><img src="/node-red-contrib-power-saver/assets/img/node-ps-elvia-add-tariff.94ea2b09.png" alt="ps-elvia-add-tariff"></p><p>Node to add Elvia grid tariff to the prices before sending them to the strategy nodes.</p><h2 id="other-nodes" tabindex="-1"><a class="header-anchor" href="#other-nodes" aria-hidden="true">#</a> Other nodes</h2><p>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.</p><h3 id="ps-elvia-tariff-types" tabindex="-1"><a class="header-anchor" href="#ps-elvia-tariff-types" aria-hidden="true">#</a> ps-elvia-tariff-types</h3><p>Use this to get a list of the tariff types available in the Elvia API.</p><h3 id="ps-elvia-tariff" tabindex="-1"><a class="header-anchor" href="#ps-elvia-tariff" aria-hidden="true">#</a> ps-elvia-tariff</h3><p>Use this to get the Elvia grid tariff for a selected tariff type.</p><!--]--></div><footer class="page-meta"><!----><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><span class="meta-item-info">12/11/2021, 11:15:53 PM</span></div><div class="meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: otto.paulsen@itema.no">Otto Paulsen</span><!----><!--]--><!--]--></span></div></footer><!----><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
13
+ <script src="/node-red-contrib-power-saver/assets/js/runtime~app.665b411c.js" defer></script><script src="/node-red-contrib-power-saver/assets/js/812.79dad458.js" defer></script><script src="/node-red-contrib-power-saver/assets/js/app.80d4373d.js" defer></script>
14
+ </body>
15
+ </html>