UNPKG

@gravypower/node-red-franklinwh

Version:

Node-RED node to control FranklinWH gateway

169 lines (149 loc) 6.09 kB
<script type="text/javascript"> RED.nodes.registerType('franklinwh-set-reserve',{ category: 'FranklinWH', color: '#a6bbcf', defaults: { name: {value:""}, server: {type:"franklinwh-config", required:true}, usePayload: {value: true}, reserveValue: {value:"", validate: function(v) { if (this.usePayload) return true; const num = Number(v); return !v || (!isNaN(num) && num >= 5 && num <= 100); }} }, oneditprepare: function() { const usePayload = $("#node-input-usePayload"); const reserveInput = $("#node-input-reserveValue"); usePayload.on("change", function() { const usePayloadValue = $(this).is(":checked"); reserveInput.parent().toggle(!usePayloadValue); }); // Set initial state const usePayloadValue = usePayload.is(":checked"); reserveInput.parent().toggle(!usePayloadValue); // Add input validation reserveInput.on("input", function() { const value = $(this).val(); if (value && (isNaN(value) || value < 5 || value > 100)) { $(this).addClass("input-error"); } else { $(this).removeClass("input-error"); } }); }, inputs:1, outputs:1, icon: "font-awesome/fa-battery-half", label: function() { return this.name || "set reserve"; } }); </script> <script type="text/html" data-template-name="franklinwh-set-reserve"> <div class="form-row"> <label for="node-input-name"><i class="fa fa-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name"> </div> <div class="form-row"> <label for="node-input-server"><i class="fa fa-globe"></i> Server</label> <input type="text" id="node-input-server"> </div> <div class="form-row"> <label for="node-input-usePayload"><i class="fa fa-random"></i> Use Payload</label> <input type="checkbox" id="node-input-usePayload" style="display:inline-block; width:auto; vertical-align:top;"> <span>&nbsp;Use msg.payload for reserve value</span> </div> <div class="form-row"> <label for="node-input-reserveValue"><i class="fa fa-battery-half"></i> Reserve (%)</label> <input type="number" id="node-input-reserveValue" min="5" max="100" step="1" placeholder="5-100"> </div> </script> <script type="text/html" data-help-name="franklinwh-set-reserve"> <p>Sets the battery reserve level for the FranklinWH system. The reserve level determines the minimum battery charge that will be maintained for backup power purposes.</p> <h3>Properties</h3> <dl class="message-properties"> <dt>Name <span class="property-type">string</span> </dt> <dd>Name of the node</dd> <dt>Server <span class="property-type">config</span> </dt> <dd>FranklinWH server configuration</dd> <dt>Use Payload <span class="property-type">boolean</span> </dt> <dd>If enabled, the reserve value will be taken from msg.payload. If disabled, the Default Reserve will be used.</dd> <dt class="optional">Reserve (%) <span class="property-type">number</span> </dt> <dd>Default reserve percentage to maintain (5-100%)</dd> </dl> <h3>Inputs</h3> <dl class="message-properties"> <dt>payload <span class="property-type">number</span> </dt> <dd> When "Use Payload" is enabled, specifies the reserve percentage: <ul> <li>Must be a number between 5 and 100</li> <li>Will be rounded to the nearest integer</li> <li>Represents minimum battery charge percentage</li> </ul> </dd> </dl> <h3>Outputs</h3> <dl class="message-properties"> <dt>payload <span class="property-type">object</span> </dt> <dd> An object containing: <ul> <li><code>reserve</code> - Set reserve value (number)</li> <li><code>unit</code> - Unit of measurement ('%')</li> <li><code>description</code> - Human-readable description of the change</li> </ul> </dd> </dl> <h3>Reserve Level Details</h3> <p>The battery reserve level serves several important purposes:</p> <ul> <li><strong>Backup Power:</strong> Ensures minimum power available for emergencies</li> <li><strong>Grid Outages:</strong> Maintains critical loads during power failures</li> <li><strong>Battery Health:</strong> Prevents complete battery discharge</li> </ul> <p>Recommended settings:</p> <ul> <li><strong>5-20%:</strong> Minimal backup, maximize solar self-consumption</li> <li><strong>20-30%:</strong> Standard backup for short outages</li> <li><strong>30-50%:</strong> Extended backup for longer outages</li> <li><strong>50%+:</strong> Maximum backup for critical applications</li> </ul> <h3>Status</h3> <dl> <dt>Grey ring</dt> <dd>Waiting for input (when using payload)</dd> <dt>Blue dot</dt> <dd>Default reserve configured</dd> <dt>Yellow dot</dt> <dd>Setting reserve value</dd> <dt>Green dot</dt> <dd>Reserve successfully set</dd> <dt>Red ring</dt> <dd>Error occurred or missing configuration</dd> </dl> <h3>Example Flow</h3> <pre> [{"id":"n1","type":"inject","payload":"30"}, {"id":"n2","type":"franklinwh-set-reserve"}, {"id":"n3","type":"debug"}] </pre> <h3>References</h3> <ul> <li><a href="https://www.franklinwh.com/support" target="_blank">FranklinWH Documentation</a></li> </ul> </script>