@gravypower/node-red-franklinwh
Version:
Node-RED node to control FranklinWH gateway
170 lines (151 loc) • 5.95 kB
HTML
<script type="text/javascript">
RED.nodes.registerType('franklinwh-set-mode',{
category: 'FranklinWH',
color: '#a6bbcf',
defaults: {
name: {value:""},
server: {type:"franklinwh-config", required:true},
mode: {value:""},
usePayload: {value:true}
},
inputs:1,
outputs:1,
icon: "font-awesome/fa-cog",
label: function() {
return this.name || "set mode";
},
oneditprepare: function() {
const usePayloadInput = $("#node-input-usePayload");
usePayloadInput.on("change", function() {
const usePayload = $(this).is(":checked");
$(".node-input-mode-row").toggle(!usePayload);
});
// Set initial state
const usePayload = usePayloadInput.is(":checked");
$(".node-input-mode-row").toggle(!usePayload);
}
});
</script>
<script type="text/html" data-template-name="franklinwh-set-mode">
<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> Use msg.payload for mode value</span>
</div>
<div class="form-row node-input-mode-row">
<label for="node-input-mode"><i class="fa fa-cog"></i> Default Mode</label>
<select id="node-input-mode" style="width:70%;">
<option value="self">Self-consumption</option>
<option value="tou">Time of Use</option>
<option value="emer">Emergency Backup</option>
</select>
</div>
</script>
<script type="text/html" data-help-name="franklinwh-set-mode">
<p>Sets the operating mode of the FranklinWH system. The operating mode determines how the system manages power flow between solar, battery, grid, and loads.</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 mode will be taken from msg.payload. If disabled, the Default Mode will be used.</dd>
<dt class="optional">Default Mode
<span class="property-type">string</span>
</dt>
<dd>Operating mode to use when not using payload input.</dd>
</dl>
<h3>Inputs</h3>
<dl class="message-properties">
<dt>payload
<span class="property-type">string</span>
</dt>
<dd>
When "Use Payload" is enabled, sets the operating mode. Valid values:
<ul>
<li><code>self</code> - Self-consumption mode</li>
<li><code>tou</code> - Time of Use mode</li>
<li><code>emer</code> - Emergency Backup mode</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>mode</code> - The mode that was set</li>
<li><code>description</code> - Human-readable description of the mode</li>
</ul>
</dd>
</dl>
<h3>Operating Modes</h3>
<dl>
<dt><strong>Self-consumption</strong> (<code>self</code>)</dt>
<dd>Optimizes the use of solar power and minimizes grid consumption. The system prioritizes:
<ol>
<li>Using solar power for immediate consumption</li>
<li>Storing excess solar in the battery</li>
<li>Using stored battery power when solar is insufficient</li>
<li>Using grid power only when necessary</li>
</ol>
</dd>
<dt><strong>Time of Use</strong> (<code>tou</code>)</dt>
<dd>Optimizes energy usage based on time-of-use electricity rates:
<ul>
<li>Charges battery during off-peak hours</li>
<li>Discharges battery during peak rate periods</li>
<li>Follows configured TOU schedule</li>
</ul>
</dd>
<dt><strong>Emergency Backup</strong> (<code>emer</code>)</dt>
<dd>Prioritizes maintaining battery charge for backup power:
<ul>
<li>Maintains high battery level</li>
<li>Minimizes battery discharge</li>
<li>Preserves power for emergencies</li>
</ul>
</dd>
</dl>
<h3>Status</h3>
<dl>
<dt>Grey ring</dt>
<dd>Waiting for input (when using payload)</dd>
<dt>Blue dot</dt>
<dd>Default mode configured</dd>
<dt>Yellow dot</dt>
<dd>Setting new mode</dd>
<dt>Green dot</dt>
<dd>Mode 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":"tou"},
{"id":"n2","type":"franklinwh-set-mode"},
{"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>