node-red-contrib-power-saver 3.4.1 → 3.4.4

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 (172) hide show
  1. package/README.md +1 -1
  2. package/docs/.vuepress/components/BestSaveVerificator.vue +17 -7
  3. package/docs/.vuepress/components/DonateButtons.vue +0 -1
  4. package/docs/.vuepress/config.js +16 -23
  5. package/docs/.vuepress/dist/404.html +6 -6
  6. package/docs/.vuepress/dist/Ukraine-heart-shape-flag.png +0 -0
  7. package/docs/.vuepress/dist/assets/404.32f46df8.js +1 -0
  8. package/docs/.vuepress/dist/assets/404.html.bee13de6.js +1 -0
  9. package/docs/.vuepress/dist/assets/404.html.f166316b.js +1 -0
  10. package/docs/.vuepress/dist/assets/BestSaveVerificator.574001b7.js +1 -0
  11. package/docs/.vuepress/dist/assets/DonateButtons.ab660315.js +1 -0
  12. package/docs/.vuepress/dist/assets/Layout.1b8eeaf1.js +1 -0
  13. package/docs/.vuepress/dist/assets/{img/add-tariff-flow.eb700d4f.png → add-tariff-flow.9e258f5b.png} +0 -0
  14. package/docs/.vuepress/dist/assets/app.b3d8926b.js +8 -0
  15. package/docs/.vuepress/dist/assets/{img/back-to-top.8b37f773.svg → back-to-top.8efcbe56.svg} +0 -0
  16. package/docs/.vuepress/dist/assets/{img/best-save-config.79a2f39a.png → best-save-config.70d29386.png} +0 -0
  17. package/docs/.vuepress/dist/assets/best-save-viewer.html.bb64949a.js +1 -0
  18. package/docs/.vuepress/dist/assets/best-save-viewer.html.e897b3ac.js +1 -0
  19. package/docs/.vuepress/dist/assets/{img/copy-payload-best-save.b9192985.png → copy-payload-best-save.8b51cdf4.png} +0 -0
  20. package/docs/.vuepress/dist/assets/{img/elvia-config-no-config.b4bb972c.png → elvia-config-no-config.7ea35c3b.png} +0 -0
  21. package/docs/.vuepress/dist/assets/{img/elvia-config-no-tariff.3f89aba8.png → elvia-config-no-tariff.a208a0f3.png} +0 -0
  22. package/docs/.vuepress/dist/assets/{img/elvia-config-select-tariff.0f73fd56.png → elvia-config-select-tariff.48562d43.png} +0 -0
  23. package/docs/.vuepress/dist/assets/{img/elvia-config-subscription-key.8be8ab8a.png → elvia-config-subscription-key.3368b931.png} +0 -0
  24. package/docs/.vuepress/dist/assets/{img/elvia-flow.bae2a4d5.png → elvia-flow.a8b126d6.png} +0 -0
  25. package/docs/.vuepress/dist/assets/example-cascade-temperature-control.html.3632cc6c.js +272 -0
  26. package/docs/.vuepress/dist/assets/example-cascade-temperature-control.html.5a363ecf.js +1 -0
  27. package/docs/.vuepress/dist/assets/{img/example-flow-1.3ff3e23f.png → example-flow-1.971bbb87.png} +0 -0
  28. package/docs/.vuepress/dist/assets/{img/example-flow-2.b653b58d.png → example-flow-2.a0c62ed7.png} +0 -0
  29. package/docs/.vuepress/dist/assets/example-heat-capacitor.html.89cdea26.js +1 -0
  30. package/docs/.vuepress/dist/assets/example-heat-capacitor.html.b87ab267.js +215 -0
  31. package/docs/.vuepress/dist/assets/example-next-schedule-entity.html.dd06a4d6.js +11 -0
  32. package/docs/.vuepress/dist/assets/example-next-schedule-entity.html.fc8e9124.js +1 -0
  33. package/docs/.vuepress/dist/assets/example-nordpool-current-state.html.278abccb.js +1 -0
  34. package/docs/.vuepress/dist/assets/example-nordpool-current-state.html.8eca9b26.js +174 -0
  35. package/docs/.vuepress/dist/assets/example-nordpool-events-state.html.05c3331c.js +159 -0
  36. package/docs/.vuepress/dist/assets/example-nordpool-events-state.html.47dbda83.js +1 -0
  37. package/docs/.vuepress/dist/assets/example-tibber-mqtt.html.bed6459b.js +1 -0
  38. package/docs/.vuepress/dist/assets/example-tibber-mqtt.html.ce7f09e2.js +167 -0
  39. package/docs/.vuepress/dist/assets/{img/heat-capacitor-temperatureVsPrice.6e74905b.png → heat-capacitor-temperatureVsPrice.19bc8932.png} +0 -0
  40. package/docs/.vuepress/dist/assets/index.html.21bfa52e.js +1 -0
  41. package/docs/.vuepress/dist/assets/index.html.350682d1.js +38 -0
  42. package/docs/.vuepress/dist/assets/index.html.3bbc4fe4.js +1 -0
  43. package/docs/.vuepress/dist/assets/index.html.485a4abc.js +1 -0
  44. package/docs/.vuepress/dist/assets/index.html.49024575.js +1 -0
  45. package/docs/.vuepress/dist/assets/index.html.4c0ec52b.js +1 -0
  46. package/docs/.vuepress/dist/assets/index.html.54f6072c.js +1 -0
  47. package/docs/.vuepress/dist/assets/index.html.75c4e015.js +1 -0
  48. package/docs/.vuepress/dist/assets/index.html.7857db23.js +1 -0
  49. package/docs/.vuepress/dist/assets/index.html.797b027e.js +1 -0
  50. package/docs/.vuepress/dist/assets/index.html.88f59477.js +1 -0
  51. package/docs/.vuepress/dist/assets/index.html.c4e8bf36.js +1 -0
  52. package/docs/.vuepress/dist/assets/index.html.c98d742c.js +1 -0
  53. package/docs/.vuepress/dist/assets/index.html.edb1389f.js +1 -0
  54. package/docs/.vuepress/dist/assets/{img/lowest-price-config.6d66a8c2.png → lowest-price-config.d7043621.png} +0 -0
  55. package/docs/.vuepress/dist/assets/migrate-best-save.dcc20d06.js +1 -0
  56. package/docs/.vuepress/dist/assets/{img/migrate-best-save.f73420f6.png → migrate-best-save.ec036b00.png} +0 -0
  57. package/docs/.vuepress/dist/assets/{img/migrate-power-saver.aae13f9d.png → migrate-power-saver.98ee9f2e.png} +0 -0
  58. package/docs/.vuepress/dist/assets/mysterious-plan.687d8b75.png +0 -0
  59. package/docs/.vuepress/dist/assets/{img/next-schedule-entity.4406856a.png → next-schedule-entity.418ab6ec.png} +0 -0
  60. package/docs/.vuepress/dist/assets/{img/next-schedule-flow.413ad62b.png → next-schedule-flow.862dea60.png} +0 -0
  61. package/docs/.vuepress/dist/assets/{img/next-schedule-sensor.eb896bdd.png → next-schedule-sensor.87198baf.png} +0 -0
  62. package/docs/.vuepress/dist/assets/node-power-saver.3a115c24.js +1 -0
  63. package/docs/.vuepress/dist/assets/{img/node-power-saver.51ff2e5d.png → node-power-saver.feb2d4fb.png} +0 -0
  64. package/docs/.vuepress/dist/assets/{img/node-ps-elvia-add-tariff.94ea2b09.png → node-ps-elvia-add-tariff.0bff05a9.png} +0 -0
  65. package/docs/.vuepress/dist/assets/node-ps-elvia-add-tariff.57baddc7.js +1 -0
  66. package/docs/.vuepress/dist/assets/node-ps-general-add-tariff.17755af1.js +1 -0
  67. package/docs/.vuepress/dist/assets/{img/node-ps-general-add-tariff.a3cf6f06.png → node-ps-general-add-tariff.5a5c98c6.png} +0 -0
  68. package/docs/.vuepress/dist/assets/{img/node-ps-receive-price.76eaa418.png → node-ps-receive-price.3587e62e.png} +0 -0
  69. package/docs/.vuepress/dist/assets/node-ps-receive-price.dbc5e137.js +1 -0
  70. package/docs/.vuepress/dist/assets/{img/node-ps-strategy-best-save.392292d5.png → node-ps-strategy-best-save.13861759.png} +0 -0
  71. package/docs/.vuepress/dist/assets/node-ps-strategy-best-save.516d9e66.js +1 -0
  72. package/docs/.vuepress/dist/assets/{img/node-ps-strategy-heat-capacitor-cascade-control.2e75ed9e.png → node-ps-strategy-heat-capacitor-cascade-control.f35cce75.png} +0 -0
  73. package/docs/.vuepress/dist/assets/node-ps-strategy-heat-capacitor-simple-flow-example.099aa155.js +1 -0
  74. package/docs/.vuepress/dist/assets/{img/node-ps-strategy-heat-capacitor-simple-flow-example.29d9bf59.png → node-ps-strategy-heat-capacitor-simple-flow-example.5b712b3b.png} +0 -0
  75. package/docs/.vuepress/dist/assets/node-ps-strategy-heat-capacitor.e7736c9e.js +1 -0
  76. package/docs/.vuepress/dist/assets/{img/node-ps-strategy-lowest-price.3a4ad347.png → node-ps-strategy-lowest-price.4e5c38ee.png} +0 -0
  77. package/docs/.vuepress/dist/assets/node-ps-strategy-lowest-price.83209fac.js +1 -0
  78. package/docs/.vuepress/dist/assets/old-power-saver-doc.html.c7324541.js +1 -0
  79. package/docs/.vuepress/dist/assets/old-power-saver-doc.html.f428e475.js +83 -0
  80. package/docs/.vuepress/dist/assets/{img/oven-setpoint-calculation.5bda0eec.png → oven-setpoint-calculation.47b65429.png} +0 -0
  81. package/docs/.vuepress/dist/assets/{img/overshoot-time.b3b5d70e.png → overshoot-time.2c4e3929.png} +0 -0
  82. package/docs/.vuepress/dist/assets/plugin-vue_export-helper.21dcd24c.js +1 -0
  83. package/docs/.vuepress/dist/assets/{img/power-saver-nordpool-current-state.bf14afde.png → power-saver-nordpool-current-state.cbe8e48a.png} +0 -0
  84. package/docs/.vuepress/dist/assets/{img/power-saver-nordpool-events-state.8c392507.png → power-saver-nordpool-events-state.a764b813.png} +0 -0
  85. package/docs/.vuepress/dist/assets/{img/power-saver-tibber-mqtt.16891dd2.png → power-saver-tibber-mqtt.c04fb150.png} +0 -0
  86. package/docs/.vuepress/dist/assets/power-saver.html.4baca6ba.js +1 -0
  87. package/docs/.vuepress/dist/assets/power-saver.html.875a1f0e.js +1 -0
  88. package/docs/.vuepress/dist/assets/ps-elvia-add-tariff.html.05d3ab1b.js +1 -0
  89. package/docs/.vuepress/dist/assets/ps-elvia-add-tariff.html.dce36de0.js +1 -0
  90. package/docs/.vuepress/dist/assets/ps-general-add-tariff.html.3056f433.js +1 -0
  91. package/docs/.vuepress/dist/assets/ps-general-add-tariff.html.3cce3e4d.js +1 -0
  92. package/docs/.vuepress/dist/assets/ps-receive-price.html.0d762910.js +66 -0
  93. package/docs/.vuepress/dist/assets/ps-receive-price.html.53dde398.js +1 -0
  94. package/docs/.vuepress/dist/assets/ps-strategy-best-save.html.503ecfbe.js +1 -0
  95. package/docs/.vuepress/dist/assets/ps-strategy-best-save.html.9b0747bf.js +72 -0
  96. package/docs/.vuepress/dist/assets/ps-strategy-heat-capacitor.html.53b3383d.js +228 -0
  97. package/docs/.vuepress/dist/assets/ps-strategy-heat-capacitor.html.b7849bf7.js +1 -0
  98. package/docs/.vuepress/dist/assets/ps-strategy-lowest-price.html.1e419f56.js +92 -0
  99. package/docs/.vuepress/dist/assets/ps-strategy-lowest-price.html.f006d811.js +1 -0
  100. package/docs/.vuepress/dist/assets/strategy-input.html.6d452f16.js +26 -0
  101. package/docs/.vuepress/dist/assets/strategy-input.html.8a16d321.js +1 -0
  102. package/docs/.vuepress/dist/assets/style.a8aae67b.css +1 -0
  103. package/docs/.vuepress/dist/assets/temperature-manipulation-config.a0e0439b.png +0 -0
  104. package/docs/.vuepress/dist/changelog/index.html +6 -6
  105. package/docs/.vuepress/dist/contribute/index.html +6 -6
  106. package/docs/.vuepress/dist/examples/example-cascade-temperature-control.html +6 -6
  107. package/docs/.vuepress/dist/examples/example-heat-capacitor.html +6 -6
  108. package/docs/.vuepress/dist/examples/example-next-schedule-entity.html +7 -7
  109. package/docs/.vuepress/dist/examples/example-nordpool-current-state.html +6 -6
  110. package/docs/.vuepress/dist/examples/example-nordpool-events-state.html +6 -6
  111. package/docs/.vuepress/dist/examples/example-tibber-mqtt.html +6 -6
  112. package/docs/.vuepress/dist/examples/index.html +6 -6
  113. package/docs/.vuepress/dist/faq/best-save-viewer.html +6 -6
  114. package/docs/.vuepress/dist/faq/index.html +6 -6
  115. package/docs/.vuepress/dist/guide/index.html +8 -8
  116. package/docs/.vuepress/dist/index.html +6 -6
  117. package/docs/.vuepress/dist/nodes/index.html +6 -6
  118. package/docs/.vuepress/dist/nodes/old-power-saver-doc.html +10 -10
  119. package/docs/.vuepress/dist/nodes/power-saver.html +6 -6
  120. package/docs/.vuepress/dist/nodes/ps-elvia-add-tariff.html +6 -6
  121. package/docs/.vuepress/dist/nodes/ps-general-add-tariff.html +6 -6
  122. package/docs/.vuepress/dist/nodes/ps-receive-price.html +11 -11
  123. package/docs/.vuepress/dist/nodes/ps-strategy-best-save.html +12 -12
  124. package/docs/.vuepress/dist/nodes/ps-strategy-heat-capacitor.html +11 -11
  125. package/docs/.vuepress/dist/nodes/ps-strategy-lowest-price.html +11 -11
  126. package/docs/.vuepress/dist/nodes/strategy-input.html +7 -7
  127. package/docs/.vuepress/public/Ukraine-heart-shape-flag.png +0 -0
  128. package/docs/changelog/README.md +12 -0
  129. package/docs/faq/best-save-viewer.md +1 -0
  130. package/package.json +10 -12
  131. package/src/elvia/elvia-add-tariff.html +7 -1
  132. package/src/elvia/elvia-config.js +7 -0
  133. package/src/elvia/elvia-tariff-types.js +0 -6
  134. package/src/handle-input.js +7 -4
  135. package/.firebase/hosting.ZG9jcy8udnVlcHJlc3MvZGlzdA.cache +0 -221
  136. package/docs/.vuepress/dist/assets/css/835.styles.c5afb22b.css +0 -1
  137. package/docs/.vuepress/dist/assets/css/896.styles.21a80cb6.css +0 -1
  138. package/docs/.vuepress/dist/assets/css/styles.1c48cbd0.css +0 -10
  139. package/docs/.vuepress/dist/assets/js/229.5c5378fa.js +0 -1
  140. package/docs/.vuepress/dist/assets/js/331.872104cd.js +0 -1
  141. package/docs/.vuepress/dist/assets/js/405.f4edd94d.js +0 -2
  142. package/docs/.vuepress/dist/assets/js/405.f4edd94d.js.LICENSE.txt +0 -8
  143. package/docs/.vuepress/dist/assets/js/490.1e639e05.js +0 -1
  144. package/docs/.vuepress/dist/assets/js/491.bd938119.js +0 -1
  145. package/docs/.vuepress/dist/assets/js/555.d8963d84.js +0 -1
  146. package/docs/.vuepress/dist/assets/js/811.5f659592.js +0 -1
  147. package/docs/.vuepress/dist/assets/js/app.999deae8.js +0 -1
  148. package/docs/.vuepress/dist/assets/js/runtime~app.1774b667.js +0 -1
  149. package/docs/.vuepress/dist/assets/js/v-0607240a.1304cbb6.js +0 -1
  150. package/docs/.vuepress/dist/assets/js/v-08683c60.52e94cb6.js +0 -1
  151. package/docs/.vuepress/dist/assets/js/v-0aca7ba6.cac5d4b9.js +0 -1
  152. package/docs/.vuepress/dist/assets/js/v-0b5e3c8c.18561f6e.js +0 -1
  153. package/docs/.vuepress/dist/assets/js/v-1ad821fa.6697a349.js +0 -1
  154. package/docs/.vuepress/dist/assets/js/v-1b3a0ab8.c6c4e19b.js +0 -1
  155. package/docs/.vuepress/dist/assets/js/v-1e2b191e.07b8ab21.js +0 -1
  156. package/docs/.vuepress/dist/assets/js/v-29504124.00be7399.js +0 -1
  157. package/docs/.vuepress/dist/assets/js/v-30acb564.28af12af.js +0 -1
  158. package/docs/.vuepress/dist/assets/js/v-3706649a.c76d575b.js +0 -1
  159. package/docs/.vuepress/dist/assets/js/v-4637f9e4.d334c29a.js +0 -1
  160. package/docs/.vuepress/dist/assets/js/v-4c28314d.8cbb0f9d.js +0 -1
  161. package/docs/.vuepress/dist/assets/js/v-510ed0d4.14f08cf3.js +0 -1
  162. package/docs/.vuepress/dist/assets/js/v-5954bcb2.dff3fc67.js +0 -1
  163. package/docs/.vuepress/dist/assets/js/v-5db8da3a.e5e6d7a6.js +0 -1
  164. package/docs/.vuepress/dist/assets/js/v-61f728ca.81968036.js +0 -1
  165. package/docs/.vuepress/dist/assets/js/v-677dfaed.c159b0f4.js +0 -1
  166. package/docs/.vuepress/dist/assets/js/v-7446a652.88afb5e4.js +0 -1
  167. package/docs/.vuepress/dist/assets/js/v-7c87f26e.8ed52391.js +0 -1
  168. package/docs/.vuepress/dist/assets/js/v-84304104.ad4da2d5.js +0 -1
  169. package/docs/.vuepress/dist/assets/js/v-8daa1a0e.ed84ca09.js +0 -1
  170. package/docs/.vuepress/dist/assets/js/v-b4a42144.9a2a0c9f.js +0 -1
  171. package/docs/.vuepress/dist/assets/js/v-e8c55052.b7d52fc6.js +0 -1
  172. package/docs/.vuepress/dist/assets/js/v-fffb8e28.d09ab959.js +0 -1
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width,initial-scale=1">
6
- <meta name="generator" content="VuePress 2.0.0-beta.35">
6
+ <meta name="generator" content="VuePress 2.0.0-beta.36">
7
7
  <style>
8
8
  :root {
9
9
  --c-bg: #fff;
@@ -22,12 +22,12 @@
22
22
  document.documentElement.classList.toggle('dark', true);
23
23
  }
24
24
  </script>
25
- <link rel="shortcut icon" type="image/x-icon" href="euro.png"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9857859182772006" crossorigin="anonymous"></script><title>Guide | Power Saver</title><meta name="description" content="A Node-RED note to save money on hourly changing power prices">
26
- <link rel="preload" href="/assets/js/runtime~app.1774b667.js" as="script"><link rel="preload" href="/assets/css/styles.1c48cbd0.css" as="style"><link rel="preload" href="/assets/js/405.f4edd94d.js" as="script"><link rel="preload" href="/assets/js/app.999deae8.js" as="script">
27
- <link rel="stylesheet" href="/assets/css/styles.1c48cbd0.css">
25
+ <link rel="shortcut icon" type="image/x-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">
26
+ <link rel="modulepreload" href="/assets/app.b3d8926b.js"><link rel="modulepreload" href="/assets/index.html.75c4e015.js"><link rel="modulepreload" href="/assets/index.html.350682d1.js"><link rel="modulepreload" href="/assets/migrate-best-save.dcc20d06.js"><link rel="modulepreload" href="/assets/plugin-vue_export-helper.21dcd24c.js">
27
+ <link rel="stylesheet" href="/assets/style.a8aae67b.css">
28
28
  </head>
29
29
  <body>
30
- <div id="app"><!--[--><div class="theme-container"><!--[--><header ref_key="navbar" class="navbar"><div class="toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/" class=""><!----><span class="site-name">Power Saver</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a aria-current="page" href="/guide/" class="router-link-active router-link-exact-active router-link-active" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-dark-button" title="toggle dark mode"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><a aria-current="page" href="/guide/" class="router-link-active router-link-exact-active router-link-active" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-items"><!--[--><li><p tabindex="0" class="sidebar-item sidebar-heading">Guide <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/guide/#introduction" class="router-link-active router-link-exact-active sidebar-item" aria-label="Introduction"><!--[--><!--]--> Introduction <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/guide/#getting-started" class="router-link-active router-link-exact-active sidebar-item" aria-label="Getting started"><!--[--><!--]--> Getting started <!--[--><!--]--></a><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/guide/#installation" class="router-link-active router-link-exact-active sidebar-item" aria-label="Installation"><!--[--><!--]--> Installation <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/guide/#get-price-data" class="router-link-active router-link-exact-active sidebar-item" aria-label="Get price data"><!--[--><!--]--> Get price data <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/guide/#add-grid-tariff" class="router-link-active router-link-exact-active sidebar-item" aria-label="Add grid tariff"><!--[--><!--]--> Add grid tariff <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/guide/#calculate-and-run-schedule" class="router-link-active router-link-exact-active sidebar-item" aria-label="Calculate and run schedule"><!--[--><!--]--> Calculate and run schedule <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/guide/#use-schedule-signals" class="router-link-active router-link-exact-active sidebar-item" aria-label="Use schedule signals"><!--[--><!--]--> Use schedule signals <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/guide/#display-schedule" class="router-link-active router-link-exact-active sidebar-item" aria-label="Display schedule"><!--[--><!--]--> Display schedule <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/guide/#more-information" class="router-link-active router-link-exact-active sidebar-item" aria-label="More information"><!--[--><!--]--> More information <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><a aria-current="page" href="/guide/#migration-from-v2" class="router-link-active router-link-exact-active sidebar-item" aria-label="Migration from v2"><!--[--><!--]--> Migration from v2 <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></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 for the popular <a href="https://nodered.org/" target="_blank" rel="noopener noreferrer">Node-RED<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a> that you can use to save money on variable electricity prices. Node-RED is a widely used low-code programming tool that can be used together with many smart home solutions to create automations.</p><p>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 implemented as <strong>strategies nodes</strong>. Each strategy 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="/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 grid 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 from 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="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a> 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">Single 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>{
30
+ <div id="app"><!--[--><div class="theme-container"><!--[--><header ref_key="navbar" class="navbar"><div class="toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/" class=""><img class="logo" src="/Ukraine-heart-shape-flag.png" alt="Power Saver"><span class="site-name can-hide">Power Saver</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a aria-current="page" href="/guide/" class="router-link-active router-link-exact-active router-link-active" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-dark-button" title="toggle dark mode"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><a aria-current="page" href="/guide/" class="router-link-active router-link-exact-active router-link-active" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-items"><!--[--><li><p tabindex="0" class="sidebar-item sidebar-heading">Guide <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/guide/#introduction" class="router-link-active router-link-exact-active sidebar-item" aria-label="Introduction"><!--[--><!--]--> Introduction <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/guide/#getting-started" class="router-link-active router-link-exact-active sidebar-item" aria-label="Getting started"><!--[--><!--]--> Getting started <!--[--><!--]--></a><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/guide/#installation" class="router-link-active router-link-exact-active sidebar-item" aria-label="Installation"><!--[--><!--]--> Installation <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/guide/#get-price-data" class="router-link-active router-link-exact-active sidebar-item" aria-label="Get price data"><!--[--><!--]--> Get price data <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/guide/#add-grid-tariff" class="router-link-active router-link-exact-active sidebar-item" aria-label="Add grid tariff"><!--[--><!--]--> Add grid tariff <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/guide/#calculate-and-run-schedule" class="router-link-active router-link-exact-active sidebar-item" aria-label="Calculate and run schedule"><!--[--><!--]--> Calculate and run schedule <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/guide/#use-schedule-signals" class="router-link-active router-link-exact-active sidebar-item" aria-label="Use schedule signals"><!--[--><!--]--> Use schedule signals <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/guide/#display-schedule" class="router-link-active router-link-exact-active sidebar-item" aria-label="Display schedule"><!--[--><!--]--> Display schedule <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/guide/#more-information" class="router-link-active router-link-exact-active sidebar-item" aria-label="More information"><!--[--><!--]--> More information <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><a aria-current="page" href="/guide/#migration-from-v2" class="router-link-active router-link-exact-active sidebar-item" aria-label="Migration from v2"><!--[--><!--]--> Migration from v2 <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></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 for the popular <a href="https://nodered.org/" target="_blank" rel="noopener noreferrer">Node-RED<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a> that you can use to save money on variable electricity prices. Node-RED is a widely used low-code programming tool that can be used together with many smart home solutions to create automations.</p><p>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 implemented as <strong>strategies nodes</strong>. Each strategy 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="/assets/example-flow-1.971bbb87.png" alt="Example flow"></p><p>Here prices are received from Tibber, converted in the <code>ps-receive-price</code> node, then grid 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 from 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="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a> 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">Single 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>{
31
31
  viewer {
32
32
  homes {
33
33
  id
@@ -42,7 +42,7 @@
42
42
  }
43
43
  }
44
44
  }
45
- </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>{
45
+ </code></pre><div class="line-numbers" aria-hidden="true"><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>{
46
46
  viewer {
47
47
  home(id: &quot;142c1670-ab43-2ab3-ba6d-723703a551e2&quot;) {
48
48
  currentSubscription{
@@ -64,7 +64,7 @@
64
64
  }
65
65
  }
66
66
  }
67
- </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="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a> 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="/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="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>, 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="/examples/example-nordpool-current-state.html" class="">See example with Nord Pool and <code>current state</code> node</a></p><p><a href="/examples/example-nordpool-events-state.html" class="">See example with Nord Pool 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 following grids are supported:</p><table><thead><tr><th>Grid supplier</th><th>Node</th></tr></thead><tbody><tr><td>General (any)</td><td><code>ps-general-add-tariff</code></td></tr><tr><td>Elvia</td><td><code>ps-elvia-add-tariff</code></td></tr></tbody></table><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="/assets/img/example-flow-2.b653b58d.png" alt="Example flow"></p><div class="custom-container tip"><p class="custom-container-title">Use output</p><p>There are many ways you can use the output:</p><ul><li>Turn on/off a switch</li><li>Set a thermostat up, down or to specific values</li><li>Change setting of a dimmer</li><li>Send a notification</li></ul></div><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 display 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/" class="">node</a> and in the <a href="/examples/" class="">examples</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="/assets/img/migrate-best-save.f73420f6.png" alt="Migrate Power Saver"></p><p>See more details in the <a href="/nodes/ps-strategy-best-save.html" class="">documentation for the <code>ps-strategy-best-save</code></a> node.</p><!--]--></div><footer class="page-meta"><!----><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><!----></footer><!----><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
68
- <script src="/assets/js/runtime~app.1774b667.js" defer></script><script src="/assets/js/405.f4edd94d.js" defer></script><script src="/assets/js/app.999deae8.js" defer></script>
67
+ </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" aria-hidden="true"><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="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a> 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="/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="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>, 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="/examples/example-nordpool-current-state.html" class="">See example with Nord Pool and <code>current state</code> node</a></p><p><a href="/examples/example-nordpool-events-state.html" class="">See example with Nord Pool 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 following grids are supported:</p><table><thead><tr><th>Grid supplier</th><th>Node</th></tr></thead><tbody><tr><td>General (any)</td><td><code>ps-general-add-tariff</code></td></tr><tr><td>Elvia</td><td><code>ps-elvia-add-tariff</code></td></tr></tbody></table><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="/assets/example-flow-2.a0c62ed7.png" alt="Example flow"></p><div class="custom-container tip"><p class="custom-container-title">Use output</p><p>There are many ways you can use the output:</p><ul><li>Turn on/off a switch</li><li>Set a thermostat up, down or to specific values</li><li>Change setting of a dimmer</li><li>Send a notification</li></ul></div><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 display 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/" class="">node</a> and in the <a href="/examples/" class="">examples</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="/assets/migrate-best-save.ec036b00.png" alt="Migrate Power Saver"></p><p>See more details in the <a href="/nodes/ps-strategy-best-save.html" class="">documentation for the <code>ps-strategy-best-save</code></a> node.</p><!--]--></div><footer class="page-meta"><!----><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><!----></footer><!----><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
68
+ <script type="module" src="/assets/app.b3d8926b.js" defer></script>
69
69
  </body>
70
70
  </html>
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width,initial-scale=1">
6
- <meta name="generator" content="VuePress 2.0.0-beta.35">
6
+ <meta name="generator" content="VuePress 2.0.0-beta.36">
7
7
  <style>
8
8
  :root {
9
9
  --c-bg: #fff;
@@ -22,12 +22,12 @@
22
22
  document.documentElement.classList.toggle('dark', true);
23
23
  }
24
24
  </script>
25
- <link rel="shortcut icon" type="image/x-icon" href="euro.png"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9857859182772006" crossorigin="anonymous"></script><title>Power Saver</title><meta name="description" content="A Node-RED note to save money on hourly changing power prices">
26
- <link rel="preload" href="/assets/js/runtime~app.1774b667.js" as="script"><link rel="preload" href="/assets/css/styles.1c48cbd0.css" as="style"><link rel="preload" href="/assets/js/405.f4edd94d.js" as="script"><link rel="preload" href="/assets/js/app.999deae8.js" as="script">
27
- <link rel="stylesheet" href="/assets/css/styles.1c48cbd0.css">
25
+ <link rel="shortcut icon" type="image/x-icon" href="euro.png"><title>Power Saver</title><meta name="description" content="A Node-RED note to save money on hourly changing power prices">
26
+ <link rel="modulepreload" href="/assets/app.b3d8926b.js"><link rel="modulepreload" href="/assets/index.html.54f6072c.js"><link rel="modulepreload" href="/assets/index.html.21bfa52e.js"><link rel="modulepreload" href="/assets/plugin-vue_export-helper.21dcd24c.js">
27
+ <link rel="stylesheet" href="/assets/style.a8aae67b.css">
28
28
  </head>
29
29
  <body>
30
- <div id="app"><!--[--><div class="theme-container no-sidebar"><!--[--><header ref_key="navbar" class="navbar"><div class="toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a aria-current="page" href="/" class="router-link-active router-link-exact-active"><!----><span class="site-name">Power Saver</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-dark-button" title="toggle dark mode"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><!----><!--[--><!--]--></aside><!--]--><!--[--><main class="home"><header class="hero"><img src="/logo.png" alt="Power Saver"><h1 id="main-title">node-red-contrib-power-saver</h1><p class="description">A collection of nodes to Node-RED that automates saving money on variable electricity prices</p><p class="actions"><!--[--><a href="/guide" class="action-button primary" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a><a href="/nodes/" class="action-button primary" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a><a href="/examples/" class="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, perfect for the water heater.</p></div><div class="feature"><h2>Lowest Price Strategy</h2><p>Turn on power when the prices are the lowest, perfect for smart charging or heating.</p></div><div class="feature"><h2>Add variable grid tariff</h2><p>Automatically add values that varies on fixed hours, or use API to get grid tariff from Elvia.</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"><!--[--><p>This is a collection of nodes for the popular <a href="https://nodered.org/" target="_blank" rel="noopener noreferrer">Node-RED<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a> that you can use to save money on variable electricity prices. Node-RED is a widely used low-code programming tool that can be used together with many smart home solutions to create automations.</p><!--[--><div class="box" data-v-66d8d572><div class="left" data-v-66d8d572><form action="https://www.paypal.com/donate" method="post" target="_blank" data-v-66d8d572><input type="hidden" name="business" value="5K5SRZU27TAC8" data-v-66d8d572><input type="hidden" name="no_recurring" value="0" data-v-66d8d572><input type="hidden" name="item_name" value="One of my hobbies is creating software for smart homes" data-v-66d8d572><input type="hidden" name="currency_code" value="NOK" data-v-66d8d572><input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" title="PayPal - The safer, easier way to pay online!" alt="Donate with PayPal button" data-v-66d8d572><img alt="" border="0" src="https://www.paypal.com/en_NO/i/scr/pixel.gif" width="1" height="1" data-v-66d8d572></form></div><div class="right" data-v-66d8d572><a class="patreonButton" href="https://www.patreon.com/bePatron?u=65948417" data-patreon-widget-type="become-patron-button" target="_blank" data-v-66d8d572>Become a Patron! </a></div></div><div data-v-66d8d572><br data-v-66d8d572></div><!--]--><!--]--></div><!--[--><div class="footer">Created by Otto Paulsen and contributors</div><!--]--></main><!--]--></div><!----><!--]--></div>
31
- <script src="/assets/js/runtime~app.1774b667.js" defer></script><script src="/assets/js/405.f4edd94d.js" defer></script><script src="/assets/js/app.999deae8.js" defer></script>
30
+ <div id="app"><!--[--><div class="theme-container no-sidebar"><!--[--><header ref_key="navbar" class="navbar"><div class="toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a aria-current="page" href="/" class="router-link-active router-link-exact-active"><img class="logo" src="/Ukraine-heart-shape-flag.png" alt="Power Saver"><span class="site-name can-hide">Power Saver</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-dark-button" title="toggle dark mode"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a href="/nodes/" class="" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><!----><!--[--><!--]--></aside><!--]--><!--[--><main class="home"><header class="hero"><img src="/logo.png" alt="Power Saver"><h1 id="main-title">node-red-contrib-power-saver</h1><p class="description">A collection of nodes to Node-RED that automates saving money on variable electricity prices</p><p class="actions"><!--[--><a href="/guide" class="action-button primary" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a><a href="/nodes/" class="action-button primary" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a><a href="/examples/" class="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, perfect for the water heater.</p></div><div class="feature"><h2>Lowest Price Strategy</h2><p>Turn on power when the prices are the lowest, perfect for smart charging or heating.</p></div><div class="feature"><h2>Add variable grid tariff</h2><p>Automatically add values that varies on fixed hours, or use API to get grid tariff from Elvia.</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"><!--[--><p>This is a collection of nodes for the popular <a href="https://nodered.org/" target="_blank" rel="noopener noreferrer">Node-RED<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a> that you can use to save money on variable electricity prices. Node-RED is a widely used low-code programming tool that can be used together with many smart home solutions to create automations.</p><!--[--><div class="box" data-v-611afafb><div class="left" data-v-611afafb><form action="https://www.paypal.com/donate" method="post" target="_blank" data-v-611afafb><input type="hidden" name="business" value="5K5SRZU27TAC8" data-v-611afafb><input type="hidden" name="no_recurring" value="0" data-v-611afafb><input type="hidden" name="item_name" value="One of my hobbies is creating software for smart homes" data-v-611afafb><input type="hidden" name="currency_code" value="NOK" data-v-611afafb><input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" title="PayPal - The safer, easier way to pay online!" alt="Donate with PayPal button" data-v-611afafb></form></div><div class="right" data-v-611afafb><a class="patreonButton" href="https://www.patreon.com/bePatron?u=65948417" data-patreon-widget-type="become-patron-button" target="_blank" data-v-611afafb>Become a Patron! </a></div></div><div data-v-611afafb><br data-v-611afafb></div><!--]--><!--]--></div><!--[--><div class="footer">Created by Otto Paulsen and contributors</div><!--]--></main><!--]--></div><!----><!--]--></div>
31
+ <script type="module" src="/assets/app.b3d8926b.js" defer></script>
32
32
  </body>
33
33
  </html>
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width,initial-scale=1">
6
- <meta name="generator" content="VuePress 2.0.0-beta.35">
6
+ <meta name="generator" content="VuePress 2.0.0-beta.36">
7
7
  <style>
8
8
  :root {
9
9
  --c-bg: #fff;
@@ -22,12 +22,12 @@
22
22
  document.documentElement.classList.toggle('dark', true);
23
23
  }
24
24
  </script>
25
- <link rel="shortcut icon" type="image/x-icon" href="euro.png"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9857859182772006" crossorigin="anonymous"></script><title>Nodes | Power Saver</title><meta name="description" content="A Node-RED note to save money on hourly changing power prices">
26
- <link rel="preload" href="/assets/js/runtime~app.1774b667.js" as="script"><link rel="preload" href="/assets/css/styles.1c48cbd0.css" as="style"><link rel="preload" href="/assets/js/405.f4edd94d.js" as="script"><link rel="preload" href="/assets/js/app.999deae8.js" as="script">
27
- <link rel="stylesheet" href="/assets/css/styles.1c48cbd0.css">
25
+ <link rel="shortcut icon" type="image/x-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">
26
+ <link rel="modulepreload" href="/assets/app.b3d8926b.js"><link rel="modulepreload" href="/assets/index.html.edb1389f.js"><link rel="modulepreload" href="/assets/index.html.88f59477.js"><link rel="modulepreload" href="/assets/node-power-saver.3a115c24.js"><link rel="modulepreload" href="/assets/node-ps-strategy-best-save.516d9e66.js"><link rel="modulepreload" href="/assets/node-ps-strategy-lowest-price.83209fac.js"><link rel="modulepreload" href="/assets/node-ps-strategy-heat-capacitor.e7736c9e.js"><link rel="modulepreload" href="/assets/node-ps-receive-price.dbc5e137.js"><link rel="modulepreload" href="/assets/node-ps-general-add-tariff.17755af1.js"><link rel="modulepreload" href="/assets/node-ps-elvia-add-tariff.57baddc7.js"><link rel="modulepreload" href="/assets/plugin-vue_export-helper.21dcd24c.js">
27
+ <link rel="stylesheet" href="/assets/style.a8aae67b.css">
28
28
  </head>
29
29
  <body>
30
- <div id="app"><!--[--><div class="theme-container"><!--[--><header ref_key="navbar" class="navbar"><div class="toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/" class=""><!----><span class="site-name">Power Saver</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a aria-current="page" href="/nodes/" class="router-link-active router-link-exact-active router-link-active" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-dark-button" title="toggle dark mode"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a aria-current="page" href="/nodes/" class="router-link-active router-link-exact-active router-link-active" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-items"><!--[--><li><p tabindex="0" class="sidebar-item sidebar-heading">Nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/power-saver.md" class="sidebar-item" aria-label="Power Saver"><!--[--><!--]--> Power Saver <!--[--><!--]--></a><!----></li><li><p tabindex="0" class="sidebar-item">Strategy nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-strategy-best-save.html" class="sidebar-item" aria-label="ps-strategy-best-save"><!--[--><!--]--> ps-strategy-best-save <!--[--><!--]--></a><!----></li><li><a href="/nodes/ps-strategy-lowest-price.html" class="sidebar-item" aria-label="ps-strategy-lowest-price"><!--[--><!--]--> ps-strategy-lowest-price <!--[--><!--]--></a><!----></li><li><a href="/nodes/ps-strategy-heat-capacitor.md" class="sidebar-item" aria-label="ps-strategy-heat-capacitor"><!--[--><!--]--> ps-strategy-heat-capacitor <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item">Utility nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-receive-price.html" class="sidebar-item" aria-label="ps-receive-price"><!--[--><!--]--> ps-receive-price <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item">Grid tariff nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-general-add-tariff.html" class="sidebar-item" aria-label="ps-general-add-tariff"><!--[--><!--]--> ps-general-add-tariff <!--[--><!--]--></a><!----></li><li><a href="/nodes/ps-elvia-add-tariff.html" class="sidebar-item" aria-label="ps-elvia-add-tariff"><!--[--><!--]--> ps-elvia-add-tariff <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item sidebar-heading">Data format <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/strategy-input.html" class="sidebar-item" aria-label="Strategy input format"><!--[--><!--]--> Strategy input format <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="page"><!--[--><!--]--><div class="theme-default-content"><!--[--><h1 id="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="/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="/assets/img/node-ps-strategy-best-save.392292d5.png" alt="ps-strategy-best-save"></p><p>Strategy to find the best hours to postpone power consumption to achieve the 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="/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><h3 id="ps-strategy-heat-capacitor-experimental" tabindex="-1"><a class="header-anchor" href="#ps-strategy-heat-capacitor-experimental" aria-hidden="true">#</a> <a href="./ps-strategy-heat-capacitor">ps-strategy-heat-capacitor</a> <span class="badge warning" style=""><!--[-->Experimental<!--]--></span></h3><p><img src="data:image/png;base64,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" alt="ps-strategy-heat-capacitor"></p><p>A strategy for moving consumption from expensive to cheap periods utilizing climate entities and trading principles.</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="/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-general-add-tariff" tabindex="-1"><a class="header-anchor" href="#ps-general-add-tariff" aria-hidden="true">#</a> <a href="./ps-general-add-tariff">ps-general-add-tariff</a></h3><p><img src="/assets/img/node-ps-general-add-tariff.a3cf6f06.png" alt="ps-general-add-tariff"></p><p>Node to add a variable grid tariff (or any value) to the prices before sending them to the strategy nodes.</p><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="/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><!----></div><!----></footer><!----><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
31
- <script src="/assets/js/runtime~app.1774b667.js" defer></script><script src="/assets/js/405.f4edd94d.js" defer></script><script src="/assets/js/app.999deae8.js" defer></script>
30
+ <div id="app"><!--[--><div class="theme-container"><!--[--><header ref_key="navbar" class="navbar"><div class="toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/" class=""><img class="logo" src="/Ukraine-heart-shape-flag.png" alt="Power Saver"><span class="site-name can-hide">Power Saver</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a aria-current="page" href="/nodes/" class="router-link-active router-link-exact-active router-link-active" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-dark-button" title="toggle dark mode"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><a href="/guide/" class="" aria-label="Guide"><!--[--><!--]--> Guide <!--[--><!--]--></a></div><div class="navbar-item"><a aria-current="page" href="/nodes/" class="router-link-active router-link-exact-active router-link-active" aria-label="Nodes"><!--[--><!--]--> Nodes <!--[--><!--]--></a></div><div class="navbar-item"><a href="/examples/" class="" aria-label="Examples"><!--[--><!--]--> Examples <!--[--><!--]--></a></div><div class="navbar-item"><a href="/faq/" class="" aria-label="FAQ"><!--[--><!--]--> FAQ <!--[--><!--]--></a></div><div class="navbar-item"><a href="/contribute/" class="" aria-label="Contribute"><!--[--><!--]--> Contribute <!--[--><!--]--></a></div><div class="navbar-item"><a href="/changelog/" class="" aria-label="Changes"><!--[--><!--]--> Changes <!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://github.com/ottopaulsen/node-red-contrib-power-saver" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-items"><!--[--><li><p tabindex="0" class="sidebar-item sidebar-heading">Nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/power-saver.md" class="sidebar-item" aria-label="Power Saver"><!--[--><!--]--> Power Saver <!--[--><!--]--></a><!----></li><li><p tabindex="0" class="sidebar-item">Strategy nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-strategy-best-save.html" class="sidebar-item" aria-label="ps-strategy-best-save"><!--[--><!--]--> ps-strategy-best-save <!--[--><!--]--></a><!----></li><li><a href="/nodes/ps-strategy-lowest-price.html" class="sidebar-item" aria-label="ps-strategy-lowest-price"><!--[--><!--]--> ps-strategy-lowest-price <!--[--><!--]--></a><!----></li><li><a href="/nodes/ps-strategy-heat-capacitor.md" class="sidebar-item" aria-label="ps-strategy-heat-capacitor"><!--[--><!--]--> ps-strategy-heat-capacitor <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item">Utility nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-receive-price.html" class="sidebar-item" aria-label="ps-receive-price"><!--[--><!--]--> ps-receive-price <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item">Grid tariff nodes <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/ps-general-add-tariff.html" class="sidebar-item" aria-label="ps-general-add-tariff"><!--[--><!--]--> ps-general-add-tariff <!--[--><!--]--></a><!----></li><li><a href="/nodes/ps-elvia-add-tariff.html" class="sidebar-item" aria-label="ps-elvia-add-tariff"><!--[--><!--]--> ps-elvia-add-tariff <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item sidebar-heading">Data format <!----></p><!--[--><ul style="" class="sidebar-item-children"><!--[--><li><a href="/nodes/strategy-input.html" class="sidebar-item" aria-label="Strategy input format"><!--[--><!--]--> Strategy input format <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="page"><!--[--><!--]--><div class="theme-default-content"><!--[--><h1 id="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="/assets/node-power-saver.feb2d4fb.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="/assets/node-ps-strategy-best-save.13861759.png" alt="ps-strategy-best-save"></p><p>Strategy to find the best hours to postpone power consumption to achieve the 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="/assets/node-ps-strategy-lowest-price.4e5c38ee.png" alt="ps-strategy-lowest-price"></p><p>Strategy to find the x hours with lowest price in a given period each day.</p><h3 id="ps-strategy-heat-capacitor-experimental" tabindex="-1"><a class="header-anchor" href="#ps-strategy-heat-capacitor-experimental" aria-hidden="true">#</a> <a href="./ps-strategy-heat-capacitor">ps-strategy-heat-capacitor</a> <span class="badge warning" style=""><!--[-->Experimental<!--]--></span></h3><p><img src="data:image/png;base64,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" alt="ps-strategy-heat-capacitor"></p><p>A strategy for moving consumption from expensive to cheap periods utilizing climate entities and trading principles.</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="/assets/node-ps-receive-price.3587e62e.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-general-add-tariff" tabindex="-1"><a class="header-anchor" href="#ps-general-add-tariff" aria-hidden="true">#</a> <a href="./ps-general-add-tariff">ps-general-add-tariff</a></h3><p><img src="/assets/node-ps-general-add-tariff.5a5c98c6.png" alt="ps-general-add-tariff"></p><p>Node to add a variable grid tariff (or any value) to the prices before sending them to the strategy nodes.</p><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="/assets/node-ps-elvia-add-tariff.0bff05a9.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><!----></div><!----></footer><!----><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
31
+ <script type="module" src="/assets/app.b3d8926b.js" defer></script>
32
32
  </body>
33
33
  </html>