NEWS
Javaskript nur positive Ergebnisse anzeigen
-
Hallo zusammen,
ich möchte bei diesem Skript nur positive Ergebnisse anzeigen lassen. Alles was minus als Vorzeichen hat soll 0 sein.
Könnt Ihr mir einen Lösungsansatz geben? Ich denke das ist für geübte nur eine KleinigkeitVielen Dank schonmal!!!
Timo
const idSolar = 'javascript.0.Solar.Wechselrichter.PVLeistungAktuell'; const idSolarBatt = 'modbus.0.holdingRegisters.57716_Battery_Instantaneous_Power'; const idSumme = 'javascript.0.Solar.PVDach'; var solar = getState(idSolar).val; var solarBatt = getState(idSolarBatt).val; if(!existsState(idSumme)) createState(idSumme, solar + solarBatt, {type: 'number', unit: 'W'}); function summe() { setState(idSumme, solar + solarBatt, true); } on(idSolar, function(dp) { solar = dp.state.val; summe(); }); on(idSolarBatt, function(dp) { solarBatt = dp.state.val; summe(); });
-
@txixmxo
So klappt das nicht.- Variablen nicht übergeben zur function
- außerhalb der function Variablen sind nicht aktuell
- etc.
Probier es so:
var solar, solarBatt, summe = 'javascript.0.Solar.PVDach'; on('javascript.0.Solar.Wechselrichter.PVLeistungAktuell', function(dp) { solar = dp.state.val; if (solar < 0) { solar = 0; } solarBatt = getState('modbus.0.holdingRegisters.57716_Battery_Instantaneous_Power').val; if (solarBatt < 0) { solarBatt = 0; }; setState(summe, solar + solarBatt); }); on('modbus.0.holdingRegisters.57716_Battery_Instantaneous_Power', function(dp) { solarBatt = dp.state.val; if (solarBatt < 0) { solarBatt = 0; } solar = getState('javascript.0.Solar.Wechselrichter.PVLeistungAktuell').val; if (solar < 0) { solar = 0; }; setState(summe, solar + solarBatt); });
-
Die SolarBatt ist gerade ein negativer Wert da entladen wird. Mit der Addition mit der PV Leistung Aktuell soll die aktuelle Solarleistung angezeigt werden.
Wenn ich dein Skript starte Habe ich fpr PVDach gerade einen Wert von 400 Watt. Das enspricht der Entladung der Batterie.
Möchte halt gerne nur die Ausgabe nach der Berechnung auf dem Minimalwert 0 bringen. Die Berechnung an sich soll nicht beeinflusst werden.
-
@txixmxo sagte in Javaskript nur positive Ergebnisse anzeigen:
Die SolarBatt ist gerade ein negativer Wert da entladen wird. Mit der Addition mit der PV Leistung Aktuell soll die aktuelle Solarleistung angezeigt werden.
Wenn ich dein Skript starte Habe ich fpr PVDach gerade einen Wert von 400 Watt. Das enspricht der Entladung der Batterie.
Möchte halt gerne nur die Ausgabe nach der Berechnung auf dem Minimalwert 0 bringen. Die Berechnung an sich soll nicht beeinflusst werden.
Das versteh ich nicht.
Du hast oben geschrieben:@txixmxo sagte in Javaskript nur positive Ergebnisse anzeigen:
Alles was minus als Vorzeichen hat soll 0 sein.
und dies macht das Script.
Aber wenn es nicht so ist, wie du es möchtest dann pass es doch an.
Hast doch jetzt eine Vorlage. -
@txixmxo sagte: nach der Berechnung auf dem Minimalwert 0 bringen.
function summe() { setState(idSumme, Math.max(solar + solarBatt, 0), true); }
-
@bahnuhr said in Javaskript nur positive Ergebnisse anzeigen:
@txixmxo sagte in Javaskript nur positive Ergebnisse anzeigen:
Alles was minus als Vorzeichen hat soll 0 sein.
Genau. Meine aber das Ergebnis was in PVDach steht. Wenn Skript -40 ausrechnet dann sollte 0 in PVDach angezeigt werden. Wenn im Skript 400 ausgerechnet wird soll auch 400 in PVDach ausgegeben werden.
So verständlicher? Sorry für die umständliche Beschreibung.
Meine erste Idee war bei diesem hier:
if(!existsState(idSumme)) createState(idSumme, solar + solarBatt, {type: 'number', unit: 'W'});
einfach ein =>0 einzufügen, aber das hat leider nicht geklappt ...
Vielen Dank auf jeden Fall schonmal für deine Hilfe!!
-
@paul53 said in Javaskript nur positive Ergebnisse anzeigen:
function summe() { setState(idSumme, Math.max(solar + solarBatt, 0), true); }
Ich glaube das war es .... danke allen!! Mal sehen was passiert, wenn morgen die Sonne scheint