@iseeberg79/battery-usage-optimization-nodes
Version:
A custom Node-RED package for battery usage optimization
115 lines (113 loc) • 4.81 kB
HTML
<script type="text/javascript">
RED.nodes.registerType('@iseeberg79/EstimateBatterymode', {
category: 'function',
color: '#a6bbcf',
defaults: {
name: {
value: ""
},
batteryBuffer: {
value: 5,
validate: RED.validators.number()
},
batteryCapacity: {
value: 10,
validate: RED.validators.number()
},
maxCharge: {
value: 5,
validate: RED.validators.number()
},
feedin: {
value: 0.079,
validate: RED.validators.number()
},
efficiency: {
value: 80,
validate: RED.validators.number()
},
performance: {
value: 20,
validate: RED.validators.number()
}
},
inputs: 1,
outputs: 1,
icon: "file.png",
label: function() {
return this.name || "Estimate Battery Mode";
}
});
</script>
<script type="text/x-red" data-template-name="@iseeberg79/EstimateBatterymode">
<div class="form-row">
<label for="node-input-name">Name</label>
<input type="text" id="node-input-name" placeholder="Name" class="input-typed"/>
</div>
<div class="form-row">
<label for="node-input-batteryBuffer">Battery Buffer (%)</label>
<input type="text" id="node-input-batteryBuffer" placeholder="5" class="input-typed"/>
</div>
<div class="form-row">
<label for="node-input-batteryCapacity">Battery Capacity (kWh)</label>
<input type="text" id="node-input-batteryCapacity" placeholder="10" class="input-typed"/>
</div>
<div class="form-row">
<label for="node-input-maxCharge">Max Charge (kWh)</label>
<input type="text" id="node-input-maxCharge" placeholder="5" class="input-typed"/>
</div>
<div class="form-row">
<label for="node-input-feedin">Feed-in Tariff (€)</label>
<input type="text" id="node-input-feedin" placeholder="0.079" class="input-typed"/>
</div>
<div class="form-row">
<label for="node-input-efficiency">Efficiency (%)</label>
<input type="text" id="node-input-efficiency" placeholder="80" class="input-typed"/>
</div>
<div class="form-row">
<label for="node-input-performance">Performance (%)</label>
<input type="text" id="node-input-performance" placeholder="20" class="input-typed"/>
</div>
</script>
<script type="text/x-red" data-help-name="@iseeberg79/EstimateBatterymode">
<p>Dieser Node ermöglicht die Schätzung des Batteriemodus basierend auf den aktuellen Preis- und Prognosedaten.</p>
<p><b>Inputs:</b></p>
<ul>
<li><b>Battery Buffer (%):</b> - der Mindest-SoC der Hausbatterie</li>
<li><b>Battery Capacity (kWh):</b> - die Gesamtkapazität der Batterie</li>
<li><b>Max Charge (kWh):</b> - die maximale Ladeleistung</li>
<li><b>Feed-in Tariff (€):</b> - Einspeisevergütung</li>
<li><b>Efficiency (%):</b> - Wirkungsgrad der Batterie</li>
<li><b>Performance (%):</b> - Preisvorteil</li>
<li><b>lastGridchargePrice (€):</b> - letzter Preis für Netzladung, optional</li>
<li><b>charge (bool):</b> - Netzladung erlaubt, optional</li>
<li><b>msg.payload.priceData</b> - Array mit stündlichen Strompreisen (Import/Export)</li>
<li><b>msg.payload.productionForecast</b> - Prognose der PV-Erzeugung</li>
<li><b>msg.payload.consumptionForecast</b> - Prognose des Haushaltsverbrauchs</li>
<li><b>msg.payload.soc</b> - aktueller Ladestand der Batterie</li>
</ul>
<p><b>Beispiel für eine Preis- und Prognosenachricht:</b></p>
<pre>
{
"priceData": [
{"start": "2025-02-15T00:00:00+01:00", "importPrice": 0.3123, "exportPrice": 0.079},
{"start": "2025-02-15T12:00:00+01:00", "importPrice": 0.2851, "exportPrice": 0.079},
{"start": "2025-02-15T18:00:00+01:00", "importPrice": 0.3592, "exportPrice": 0.079}
],
"productionForecast": [
{"start": "2025-02-15T08:00:00.000Z", "value": 0.1811},
{"start": "2025-02-15T12:00:00.000Z", "value": 5.087}
],
"consumptionForecast": [
{"start": "2025-02-15T06:00:00.000Z", "value": 1},
{"start": "2025-02-15T18:00:00.000Z", "value": 1}
],
"soc": 5
}
</pre>
<p><b>Outputs:</b></p>
<ul>
<li><b>msg.payload.batteryModes</b> - ein Array der erwarteten Energieverteilung (Attribute: start, mode)</li>
<li><b>msg.payload.stats</b> - Statistiken</li>
</ul>
</script>