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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/.firebase/hosting.ZG9jcy8udnVlcHJlc3MvZGlzdA.cache +221 -0
  2. package/.firebaserc +5 -0
  3. package/.github/workflows/firebase-hosting-merge.yml +20 -0
  4. package/.github/workflows/firebase-hosting-pull-request.yml +17 -0
  5. package/README.md +1 -1
  6. package/docs/.vuepress/components/BestSaveVerificator.vue +3 -3
  7. package/docs/.vuepress/config.js +8 -0
  8. package/docs/.vuepress/dist/404.html +23 -5
  9. package/docs/.vuepress/dist/assets/css/896.styles.21a80cb6.css +1 -0
  10. package/docs/.vuepress/dist/assets/css/styles.1c48cbd0.css +10 -0
  11. package/docs/.vuepress/dist/assets/js/229.5c5378fa.js +1 -0
  12. package/docs/.vuepress/dist/assets/js/331.872104cd.js +1 -0
  13. package/docs/.vuepress/dist/assets/js/405.f4edd94d.js +2 -0
  14. package/docs/.vuepress/dist/assets/js/{619.8ba1b1f6.js.LICENSE.txt → 405.f4edd94d.js.LICENSE.txt} +0 -0
  15. package/docs/.vuepress/dist/assets/js/490.1e639e05.js +1 -0
  16. package/docs/.vuepress/dist/assets/js/{491.17a98f38.js → 491.bd938119.js} +1 -1
  17. package/docs/.vuepress/dist/assets/js/555.d8963d84.js +1 -0
  18. package/docs/.vuepress/dist/assets/js/{811.6a3392d5.js → 811.5f659592.js} +0 -0
  19. package/docs/.vuepress/dist/assets/js/app.999deae8.js +1 -0
  20. package/docs/.vuepress/dist/assets/js/runtime~app.1774b667.js +1 -0
  21. package/docs/.vuepress/dist/assets/js/v-0607240a.1304cbb6.js +1 -0
  22. package/docs/.vuepress/dist/assets/js/v-08683c60.52e94cb6.js +1 -0
  23. package/docs/.vuepress/dist/assets/js/{v-0aca7ba6.4f3573a3.js → v-0aca7ba6.cac5d4b9.js} +1 -1
  24. package/docs/.vuepress/dist/assets/js/v-0b5e3c8c.18561f6e.js +1 -0
  25. package/docs/.vuepress/dist/assets/js/v-1ad821fa.6697a349.js +1 -0
  26. package/docs/.vuepress/dist/assets/js/v-1b3a0ab8.c6c4e19b.js +1 -0
  27. package/docs/.vuepress/dist/assets/js/v-1e2b191e.07b8ab21.js +1 -0
  28. package/docs/.vuepress/dist/assets/js/v-29504124.00be7399.js +1 -0
  29. package/docs/.vuepress/dist/assets/js/v-30acb564.28af12af.js +1 -0
  30. package/docs/.vuepress/dist/assets/js/{v-3706649a.d7f73384.js → v-3706649a.c76d575b.js} +1 -1
  31. package/docs/.vuepress/dist/assets/js/v-4637f9e4.d334c29a.js +1 -0
  32. package/docs/.vuepress/dist/assets/js/v-4c28314d.8cbb0f9d.js +1 -0
  33. package/docs/.vuepress/dist/assets/js/v-510ed0d4.14f08cf3.js +1 -0
  34. package/docs/.vuepress/dist/assets/js/{v-5954bcb2.937005d0.js → v-5954bcb2.dff3fc67.js} +1 -1
  35. package/docs/.vuepress/dist/assets/js/v-5db8da3a.e5e6d7a6.js +1 -0
  36. package/docs/.vuepress/dist/assets/js/v-61f728ca.81968036.js +1 -0
  37. package/docs/.vuepress/dist/assets/js/v-677dfaed.c159b0f4.js +1 -0
  38. package/docs/.vuepress/dist/assets/js/v-7446a652.88afb5e4.js +1 -0
  39. package/docs/.vuepress/dist/assets/js/{v-7c87f26e.5e3553b0.js → v-7c87f26e.8ed52391.js} +1 -1
  40. package/docs/.vuepress/dist/assets/js/v-84304104.ad4da2d5.js +1 -0
  41. package/docs/.vuepress/dist/assets/js/{v-8daa1a0e.c06c5c76.js → v-8daa1a0e.ed84ca09.js} +1 -1
  42. package/docs/.vuepress/dist/assets/js/{v-b4a42144.733e4e7c.js → v-b4a42144.9a2a0c9f.js} +1 -1
  43. package/docs/.vuepress/dist/assets/js/v-e8c55052.b7d52fc6.js +1 -0
  44. package/docs/.vuepress/dist/assets/js/v-fffb8e28.d09ab959.js +1 -0
  45. package/docs/.vuepress/dist/changelog/index.html +23 -5
  46. package/docs/.vuepress/dist/contribute/index.html +23 -5
  47. package/docs/.vuepress/dist/examples/example-cascade-temperature-control.html +24 -6
  48. package/docs/.vuepress/dist/examples/example-heat-capacitor.html +24 -6
  49. package/docs/.vuepress/dist/examples/example-next-schedule-entity.html +27 -9
  50. package/docs/.vuepress/dist/examples/example-nordpool-current-state.html +24 -6
  51. package/docs/.vuepress/dist/examples/example-nordpool-events-state.html +24 -6
  52. package/docs/.vuepress/dist/examples/example-tibber-mqtt.html +24 -6
  53. package/docs/.vuepress/dist/examples/index.html +23 -5
  54. package/docs/.vuepress/dist/faq/best-save-viewer.html +23 -5
  55. package/docs/.vuepress/dist/faq/index.html +23 -5
  56. package/docs/.vuepress/dist/guide/index.html +24 -6
  57. package/docs/.vuepress/dist/index.html +23 -5
  58. package/docs/.vuepress/dist/nodes/index.html +23 -5
  59. package/docs/.vuepress/dist/nodes/old-power-saver-doc.html +25 -7
  60. package/docs/.vuepress/dist/nodes/power-saver.html +23 -5
  61. package/docs/.vuepress/dist/nodes/ps-elvia-add-tariff.html +23 -5
  62. package/docs/.vuepress/dist/nodes/ps-general-add-tariff.html +23 -5
  63. package/docs/.vuepress/dist/nodes/ps-receive-price.html +26 -8
  64. package/docs/.vuepress/dist/nodes/ps-strategy-best-save.html +26 -8
  65. package/docs/.vuepress/dist/nodes/ps-strategy-heat-capacitor.html +24 -6
  66. package/docs/.vuepress/dist/nodes/ps-strategy-lowest-price.html +24 -6
  67. package/docs/.vuepress/dist/nodes/strategy-input.html +24 -6
  68. package/docs/changelog/README.md +6 -0
  69. package/docs/examples/example-cascade-temperature-control.md +19 -18
  70. package/examples/add-general-tariff.json +103 -0
  71. package/examples/best-save-for-water-heater.json +140 -0
  72. package/examples/elvia-add-tariff.json +99 -0
  73. package/examples/elvia-get-tariff-types.json +58 -0
  74. package/examples/elvia-get-tariff.json +60 -0
  75. package/examples/heat-capacitor-for-room-heating.json +186 -0
  76. package/examples/lowest-price-for-heating-cables.json +159 -0
  77. package/firebase.json +6 -0
  78. package/package.json +16 -9
  79. package/public/404.html +33 -0
  80. package/public/index.html +89 -0
  81. package/src/elvia/elvia-tariff.js +2 -1
  82. package/test/strategy-heat-capacitor.test.js +0 -2
  83. package/test/strategy-lowest-price-functions.test.js +1 -1
  84. package/test/utils.test.js +0 -2
  85. package/docs/.vuepress/dist/.nojekyll +0 -0
  86. package/docs/.vuepress/dist/assets/css/563.styles.99f4a8aa.css +0 -1
  87. package/docs/.vuepress/dist/assets/css/styles.031dcf27.css +0 -9
  88. package/docs/.vuepress/dist/assets/js/262.cf2c57d2.js +0 -1
  89. package/docs/.vuepress/dist/assets/js/293.08ea5200.js +0 -1
  90. package/docs/.vuepress/dist/assets/js/331.15ee3c51.js +0 -1
  91. package/docs/.vuepress/dist/assets/js/619.8ba1b1f6.js +0 -2
  92. package/docs/.vuepress/dist/assets/js/app.e881e9b6.js +0 -1
  93. package/docs/.vuepress/dist/assets/js/runtime~app.8bebaa00.js +0 -1
  94. package/docs/.vuepress/dist/assets/js/v-0607240a.a57c2199.js +0 -1
  95. package/docs/.vuepress/dist/assets/js/v-08683c60.ccafdcab.js +0 -1
  96. package/docs/.vuepress/dist/assets/js/v-0b5e3c8c.76407435.js +0 -1
  97. package/docs/.vuepress/dist/assets/js/v-1ad821fa.5978386f.js +0 -1
  98. package/docs/.vuepress/dist/assets/js/v-1b3a0ab8.def099e9.js +0 -1
  99. package/docs/.vuepress/dist/assets/js/v-1e2b191e.88dc5555.js +0 -1
  100. package/docs/.vuepress/dist/assets/js/v-29504124.4aca27d5.js +0 -1
  101. package/docs/.vuepress/dist/assets/js/v-30acb564.529a3c16.js +0 -1
  102. package/docs/.vuepress/dist/assets/js/v-4637f9e4.5cc542f6.js +0 -1
  103. package/docs/.vuepress/dist/assets/js/v-4c28314d.48fc6e75.js +0 -1
  104. package/docs/.vuepress/dist/assets/js/v-510ed0d4.b58000bf.js +0 -1
  105. package/docs/.vuepress/dist/assets/js/v-5db8da3a.3de3588d.js +0 -1
  106. package/docs/.vuepress/dist/assets/js/v-61f728ca.21d432fe.js +0 -1
  107. package/docs/.vuepress/dist/assets/js/v-677dfaed.1ad4c776.js +0 -1
  108. package/docs/.vuepress/dist/assets/js/v-7446a652.74b21d0b.js +0 -1
  109. package/docs/.vuepress/dist/assets/js/v-84304104.f66996c5.js +0 -1
  110. package/docs/.vuepress/dist/assets/js/v-e8c55052.9664f731.js +0 -1
  111. package/docs/.vuepress/dist/assets/js/v-fffb8e28.525be02a.js +0 -1
@@ -20,43 +20,43 @@ A cascade temperature controller is a controller which utilizes the input/setpoi
20
20
 
21
21
  ## Requirements
22
22
 
23
- > Home assistant integrated with Node-RED
23
+ - Home assistant integrated with Node-RED
24
24
 
25
- > The PID node installed - https://flows.nodered.org/node/node-red-contrib-pid
25
+ - The PID node installed - https://flows.nodered.org/node/node-red-contrib-pid
26
26
 
27
- > A climate entity
27
+ - A climate entity
28
28
 
29
29
  ## Instructions
30
30
 
31
- > Create an `input_number` entity in Home Assistant and name it "cascade_setpoint"
31
+ - Create an `input_number` entity in Home Assistant and name it "cascade_setpoint"
32
32
 
33
- > Create an `input_boolean` entity in Home Assistant and name it `cascade_enabled`
33
+ - Create an `input_boolean` entity in Home Assistant and name it `cascade_enabled`
34
34
 
35
- - When set to false, this will disengage the controller
35
+ * When set to false, this will disengage the controller
36
36
 
37
- > Import the flow into Node-RED
37
+ - Import the flow into Node-RED
38
38
 
39
- > Enter the correct sensor tempertaure entity in the `Temp sensor` node
39
+ - Enter the correct sensor tempertaure entity in the `Temp sensor` node
40
40
 
41
- > Change the climate entity name in three places
41
+ - Change the climate entity name in three places
42
42
 
43
- - Current climate settings - node
44
- - Set Temperature node - two places
43
+ * Current climate settings - node
44
+ * Set Temperature node - two places
45
45
  - `Entity ID`
46
46
  - `Data`
47
47
 
48
- > (optional) Change the oven setpoint range - see figure below.
48
+ - (optional) Change the oven setpoint range - see figure below.
49
49
 
50
- - This regulates what values the controller sends to the oven. As a default, the value sent is oven_setpoint = setpoint +- 5 degrees. That is, for a setoint of 10C, the controller will be sending setpoints between 5 and 15 C to the oven. This is further limited to whole numbers, a minimum value of 5, and a maximum value of 30.
50
+ * This regulates what values the controller sends to the oven. As a default, the value sent is oven_setpoint = setpoint +- 5 degrees. That is, for a setoint of 10C, the controller will be sending setpoints between 5 and 15 C to the oven. This is further limited to whole numbers, a minimum value of 5, and a maximum value of 30.
51
51
 
52
- > (reccomended) Tune the PID controller - Detailed instructions can be found here: http://blog.clanlaw.org.uk/pid-loop-tuning.html
52
+ - (reccomended) Tune the PID controller - Detailed instructions can be found here: http://blog.clanlaw.org.uk/pid-loop-tuning.html
53
53
 
54
- - Measure the system and find the overshoot time
54
+ * Measure the system and find the overshoot time
55
55
  - Set the proportional band to **zero** and place the setpoint a bit above the current measured value (se figure).
56
56
  - Wait for the system to overshoot the target temperature and measure the time it takes for the system to return to the setpoint.
57
- - Set the proportional band. This is the value indicates how much the measured temperature is allowed to deviate from the setpoint before max load is applied.
58
- - Spesify the integral time. A good value is two times the overshoot time.
59
- - Insert the derivative time. A good value here is half of the overshoot time.
57
+ * Set the proportional band. This is the value indicates how much the measured temperature is allowed to deviate from the setpoint before max load is applied.
58
+ * Spesify the integral time. A good value is two times the overshoot time.
59
+ * Insert the derivative time. A good value here is half of the overshoot time.
60
60
 
61
61
  ![oven_setoint](../images/oven-setpoint-calculation.png)
62
62
  ![overshoot_time](../images/overshoot-time.png)
@@ -342,4 +342,5 @@ A cascade temperature controller is a controller which utilizes the input/setpoi
342
342
  }
343
343
  ]
344
344
  ```
345
+
345
346
  :::
@@ -0,0 +1,103 @@
1
+ [
2
+ {
3
+ "id": "a621e21fe99857ef",
4
+ "type": "inject",
5
+ "z": "7b33d8ec8339db62",
6
+ "name": "House",
7
+ "props": [
8
+ {
9
+ "p": "payload"
10
+ }
11
+ ],
12
+ "repeat": "",
13
+ "crontab": "",
14
+ "once": false,
15
+ "onceDelay": 0.1,
16
+ "topic": "",
17
+ "payload": "{viewer{home(id:\"12345678-abcd-4df4-ba6d-654321a987ab\"){currentSubscription{priceInfo{today{totalenergytaxstartsAt}tomorrow{totalenergytaxstartsAt}}}}}}",
18
+ "payloadType": "str",
19
+ "x": 70,
20
+ "y": 100,
21
+ "wires": [["2b55670453ea3277"]]
22
+ },
23
+ {
24
+ "id": "2b55670453ea3277",
25
+ "type": "tibber-query",
26
+ "z": "7b33d8ec8339db62",
27
+ "name": "Get prices",
28
+ "active": true,
29
+ "apiEndpointRef": "0b8e6a120837e93c",
30
+ "x": 210,
31
+ "y": 100,
32
+ "wires": [["7eeb5593b6da21f1"]]
33
+ },
34
+ {
35
+ "id": "027b09b451ef7b59",
36
+ "type": "ps-general-add-tariff",
37
+ "z": "7b33d8ec8339db62",
38
+ "name": "Add General Tariff",
39
+ "periods": [
40
+ {
41
+ "start": "22",
42
+ "value": "0.23"
43
+ },
44
+ {
45
+ "start": "06",
46
+ "value": "0.45"
47
+ }
48
+ ],
49
+ "validFrom": "2022-01-01",
50
+ "validTo": "",
51
+ "x": 570,
52
+ "y": 100,
53
+ "wires": [["c65dfd3ad3f7b10d"]]
54
+ },
55
+ {
56
+ "id": "7eeb5593b6da21f1",
57
+ "type": "ps-receive-price",
58
+ "z": "7b33d8ec8339db62",
59
+ "name": "Price Receiver",
60
+ "x": 380,
61
+ "y": 100,
62
+ "wires": [["027b09b451ef7b59"]]
63
+ },
64
+ {
65
+ "id": "c65dfd3ad3f7b10d",
66
+ "type": "ps-strategy-lowest-price",
67
+ "z": "7b33d8ec8339db62",
68
+ "name": "Lowest Price",
69
+ "fromTime": "00",
70
+ "toTime": "00",
71
+ "hoursOn": "12",
72
+ "doNotSplit": "false",
73
+ "sendCurrentValueWhenRescheduling": "true",
74
+ "outputIfNoSchedule": "true",
75
+ "outputOutsidePeriod": "false",
76
+ "x": 750,
77
+ "y": 100,
78
+ "wires": [[], [], ["9eb381b935ec987c"]]
79
+ },
80
+ {
81
+ "id": "9eb381b935ec987c",
82
+ "type": "debug",
83
+ "z": "7b33d8ec8339db62",
84
+ "name": "",
85
+ "active": true,
86
+ "tosidebar": true,
87
+ "console": false,
88
+ "tostatus": false,
89
+ "complete": "false",
90
+ "statusVal": "",
91
+ "statusType": "auto",
92
+ "x": 960,
93
+ "y": 120,
94
+ "wires": []
95
+ },
96
+ {
97
+ "id": "0b8e6a120837e93c",
98
+ "type": "tibber-api-endpoint",
99
+ "feedUrl": "wss://api.tibber.com/v1-beta/gql/subscriptions",
100
+ "queryUrl": "https://api.tibber.com/v1-beta/gql",
101
+ "name": "Tibber prices"
102
+ }
103
+ ]
@@ -0,0 +1,140 @@
1
+ [
2
+ {
3
+ "id": "4f11b5ae.4cc22c",
4
+ "type": "inject",
5
+ "z": "d938c47f.3398f8",
6
+ "name": "Refresh",
7
+ "props": [
8
+ {
9
+ "p": "payload"
10
+ }
11
+ ],
12
+ "repeat": "3600",
13
+ "crontab": "",
14
+ "once": true,
15
+ "onceDelay": "1",
16
+ "topic": "",
17
+ "payload": "{viewer{homes{currentSubscription{priceInfo{today{totalstartsAt}tomorrow{totalstartsAt}}}}}}",
18
+ "payloadType": "str",
19
+ "x": 120,
20
+ "y": 40,
21
+ "wires": [["ab2d599a.077738"]]
22
+ },
23
+ {
24
+ "id": "ab2d599a.077738",
25
+ "type": "tibber-query",
26
+ "z": "d938c47f.3398f8",
27
+ "name": "Get Tibber prices",
28
+ "active": true,
29
+ "apiEndpointRef": "b70ec5d0.6f8f08",
30
+ "x": 310,
31
+ "y": 40,
32
+ "wires": [["0ef929fde193cf4d"]]
33
+ },
34
+ {
35
+ "id": "0ef929fde193cf4d",
36
+ "type": "ps-receive-price",
37
+ "z": "d938c47f.3398f8",
38
+ "name": "Price Receiver",
39
+ "x": 140,
40
+ "y": 100,
41
+ "wires": [["5b6be1568744c6cf", "391ac08890e0dd40"]]
42
+ },
43
+ {
44
+ "id": "5b6be1568744c6cf",
45
+ "type": "ps-strategy-best-save",
46
+ "z": "d938c47f.3398f8",
47
+ "name": "Best Save",
48
+ "maxHoursToSaveInSequence": "5",
49
+ "minHoursOnAfterMaxSequenceSaved": "1",
50
+ "minSaving": "0.05",
51
+ "sendCurrentValueWhenRescheduling": true,
52
+ "outputIfNoSchedule": "true",
53
+ "x": 410,
54
+ "y": 140,
55
+ "wires": [
56
+ ["467a5fe.d0bbba", "5e485ff7.db156"],
57
+ ["9c978d1c.ee76", "467a5fe.d0bbba"],
58
+ ["42d8b632.402e38", "aa4f06692a2fe46b"]
59
+ ]
60
+ },
61
+ {
62
+ "id": "5e485ff7.db156",
63
+ "type": "api-call-service",
64
+ "z": "d938c47f.3398f8",
65
+ "name": "Turn on VVB",
66
+ "server": "ec4a12a1.b2be9",
67
+ "version": 3,
68
+ "debugenabled": false,
69
+ "service_domain": "switch",
70
+ "service": "turn_on",
71
+ "entityId": "switch.varmtvannsbereder",
72
+ "data": "",
73
+ "dataType": "jsonata",
74
+ "mergecontext": "",
75
+ "mustacheAltTags": false,
76
+ "outputProperties": [],
77
+ "queue": "none",
78
+ "x": 710,
79
+ "y": 40,
80
+ "wires": [[]]
81
+ },
82
+ {
83
+ "id": "9c978d1c.ee76",
84
+ "type": "api-call-service",
85
+ "z": "d938c47f.3398f8",
86
+ "name": "Turn off VVB",
87
+ "server": "ec4a12a1.b2be9",
88
+ "version": 3,
89
+ "debugenabled": true,
90
+ "service_domain": "switch",
91
+ "service": "turn_off",
92
+ "entityId": "switch.varmtvannsbereder",
93
+ "data": "",
94
+ "dataType": "json",
95
+ "mergecontext": "",
96
+ "mustacheAltTags": false,
97
+ "outputProperties": [],
98
+ "queue": "none",
99
+ "x": 710,
100
+ "y": 160,
101
+ "wires": [[]]
102
+ },
103
+ {
104
+ "id": "aa4f06692a2fe46b",
105
+ "type": "debug",
106
+ "z": "d938c47f.3398f8",
107
+ "name": "Best Save Schedule",
108
+ "active": true,
109
+ "tosidebar": true,
110
+ "console": false,
111
+ "tostatus": false,
112
+ "complete": "payload",
113
+ "targetType": "msg",
114
+ "statusVal": "",
115
+ "statusType": "auto",
116
+ "x": 740,
117
+ "y": 280,
118
+ "wires": []
119
+ },
120
+ {
121
+ "id": "b70ec5d0.6f8f08",
122
+ "type": "tibber-api-endpoint",
123
+ "feedUrl": "wss://api.tibber.com/v1-beta/gql/subscriptions",
124
+ "queryUrl": "https://api.tibber.com/v1-beta/gql",
125
+ "name": "Tibber API"
126
+ },
127
+ {
128
+ "id": "ec4a12a1.b2be9",
129
+ "type": "server",
130
+ "name": "Home Assistant",
131
+ "version": 2,
132
+ "addon": true,
133
+ "rejectUnauthorizedCerts": true,
134
+ "ha_boolean": "y|yes|true|on|home|open",
135
+ "connectionDelay": true,
136
+ "cacheJson": true,
137
+ "heartbeat": false,
138
+ "heartbeatInterval": 30
139
+ }
140
+ ]
@@ -0,0 +1,99 @@
1
+ [
2
+ {
3
+ "id": "a621e21fe99857ef",
4
+ "type": "inject",
5
+ "z": "7b33d8ec8339db62",
6
+ "name": "House",
7
+ "props": [
8
+ {
9
+ "p": "payload"
10
+ }
11
+ ],
12
+ "repeat": "",
13
+ "crontab": "",
14
+ "once": false,
15
+ "onceDelay": 0.1,
16
+ "topic": "",
17
+ "payload": "{viewer{home(id:\"12345678-abcd-4df4-ba6d-654321a987ab\"){currentSubscription{priceInfo{today{totalenergytaxstartsAt}tomorrow{totalenergytaxstartsAt}}}}}}",
18
+ "payloadType": "str",
19
+ "x": 70,
20
+ "y": 100,
21
+ "wires": [["2b55670453ea3277"]]
22
+ },
23
+ {
24
+ "id": "2b55670453ea3277",
25
+ "type": "tibber-query",
26
+ "z": "7b33d8ec8339db62",
27
+ "name": "Get prices",
28
+ "active": true,
29
+ "apiEndpointRef": "0b8e6a120837e93c",
30
+ "x": 210,
31
+ "y": 100,
32
+ "wires": [["7eeb5593b6da21f1"]]
33
+ },
34
+ {
35
+ "id": "7eeb5593b6da21f1",
36
+ "type": "ps-receive-price",
37
+ "z": "7b33d8ec8339db62",
38
+ "name": "Price Receiver",
39
+ "x": 380,
40
+ "y": 100,
41
+ "wires": [["5482ec46805cd9fd"]]
42
+ },
43
+ {
44
+ "id": "c65dfd3ad3f7b10d",
45
+ "type": "ps-strategy-lowest-price",
46
+ "z": "7b33d8ec8339db62",
47
+ "name": "Lowest Price",
48
+ "fromTime": "00",
49
+ "toTime": "00",
50
+ "hoursOn": "12",
51
+ "doNotSplit": "false",
52
+ "sendCurrentValueWhenRescheduling": "true",
53
+ "outputIfNoSchedule": "true",
54
+ "outputOutsidePeriod": "false",
55
+ "x": 750,
56
+ "y": 100,
57
+ "wires": [[], [], ["9eb381b935ec987c"]]
58
+ },
59
+ {
60
+ "id": "5482ec46805cd9fd",
61
+ "type": "ps-elvia-add-tariff",
62
+ "z": "7b33d8ec8339db62",
63
+ "name": "Add Elvia Grid Tariff",
64
+ "elviaConfig": "45c5580013db88b3",
65
+ "tariffKey": "private_tou_rush1",
66
+ "range": "today",
67
+ "x": 570,
68
+ "y": 100,
69
+ "wires": [["c65dfd3ad3f7b10d"]]
70
+ },
71
+ {
72
+ "id": "9eb381b935ec987c",
73
+ "type": "debug",
74
+ "z": "7b33d8ec8339db62",
75
+ "name": "",
76
+ "active": true,
77
+ "tosidebar": true,
78
+ "console": false,
79
+ "tostatus": false,
80
+ "complete": "false",
81
+ "statusVal": "",
82
+ "statusType": "auto",
83
+ "x": 960,
84
+ "y": 120,
85
+ "wires": []
86
+ },
87
+ {
88
+ "id": "0b8e6a120837e93c",
89
+ "type": "tibber-api-endpoint",
90
+ "feedUrl": "wss://api.tibber.com/v1-beta/gql/subscriptions",
91
+ "queryUrl": "https://api.tibber.com/v1-beta/gql",
92
+ "name": "Tibber prices"
93
+ },
94
+ {
95
+ "id": "45c5580013db88b3",
96
+ "type": "ps-elvia-config",
97
+ "name": "Elvia Config"
98
+ }
99
+ ]
@@ -0,0 +1,58 @@
1
+ [
2
+ {
3
+ "id": "4168826b961c92d8",
4
+ "type": "ps-elvia-tariff-types",
5
+ "z": "7b33d8ec8339db62",
6
+ "name": "Elvia Tariff Types",
7
+ "elviaConfig": "45c5580013db88b3",
8
+ "x": 280,
9
+ "y": 320,
10
+ "wires": [["9c125f23de65a5b7"]]
11
+ },
12
+ {
13
+ "id": "9c125f23de65a5b7",
14
+ "type": "debug",
15
+ "z": "7b33d8ec8339db62",
16
+ "name": "",
17
+ "active": true,
18
+ "tosidebar": true,
19
+ "console": false,
20
+ "tostatus": false,
21
+ "complete": "false",
22
+ "statusVal": "",
23
+ "statusType": "auto",
24
+ "x": 470,
25
+ "y": 320,
26
+ "wires": []
27
+ },
28
+ {
29
+ "id": "9b1a2d7f9a96214c",
30
+ "type": "inject",
31
+ "z": "7b33d8ec8339db62",
32
+ "name": "",
33
+ "props": [
34
+ {
35
+ "p": "payload"
36
+ },
37
+ {
38
+ "p": "topic",
39
+ "vt": "str"
40
+ }
41
+ ],
42
+ "repeat": "",
43
+ "crontab": "",
44
+ "once": false,
45
+ "onceDelay": 0.1,
46
+ "topic": "",
47
+ "payload": "",
48
+ "payloadType": "date",
49
+ "x": 110,
50
+ "y": 320,
51
+ "wires": [["4168826b961c92d8"]]
52
+ },
53
+ {
54
+ "id": "45c5580013db88b3",
55
+ "type": "ps-elvia-config",
56
+ "name": "Elvia Config"
57
+ }
58
+ ]
@@ -0,0 +1,60 @@
1
+ [
2
+ {
3
+ "id": "77f2f8de4c2153e7",
4
+ "type": "ps-elvia-tariff",
5
+ "z": "7b33d8ec8339db62",
6
+ "name": "Elvia Tariff",
7
+ "elviaConfig": "45c5580013db88b3",
8
+ "tariffKey": "private_tou_daynight2",
9
+ "range": "today",
10
+ "x": 290,
11
+ "y": 440,
12
+ "wires": [["cd59d4855edd052c"]]
13
+ },
14
+ {
15
+ "id": "551da2a5de1259dc",
16
+ "type": "inject",
17
+ "z": "7b33d8ec8339db62",
18
+ "name": "",
19
+ "props": [
20
+ {
21
+ "p": "payload"
22
+ },
23
+ {
24
+ "p": "topic",
25
+ "vt": "str"
26
+ }
27
+ ],
28
+ "repeat": "",
29
+ "crontab": "",
30
+ "once": false,
31
+ "onceDelay": 0.1,
32
+ "topic": "",
33
+ "payload": "",
34
+ "payloadType": "date",
35
+ "x": 120,
36
+ "y": 440,
37
+ "wires": [["77f2f8de4c2153e7"]]
38
+ },
39
+ {
40
+ "id": "cd59d4855edd052c",
41
+ "type": "debug",
42
+ "z": "7b33d8ec8339db62",
43
+ "name": "",
44
+ "active": true,
45
+ "tosidebar": true,
46
+ "console": false,
47
+ "tostatus": false,
48
+ "complete": "false",
49
+ "statusVal": "",
50
+ "statusType": "auto",
51
+ "x": 450,
52
+ "y": 440,
53
+ "wires": []
54
+ },
55
+ {
56
+ "id": "45c5580013db88b3",
57
+ "type": "ps-elvia-config",
58
+ "name": "Elvia Config"
59
+ }
60
+ ]