NEWS
Bezug/Einspeisung Vorzeichenwechsel
-
Hallo zusammen,
kann mir bitte jemand helfen.
Ich greife am Smartmeter per Modbus Bezug/Einspeisung in Watt ab. Bei minus Vorzeichen wird eingespeist, bei plus Vorzeichen bezogen.Jetzt würde ich gerne nur die negativen Werte erfassen, sprich wenn der Datenpunkt einen negativen Wert liefert, dass Vorzeichen auf + zu wechseln und wenn positiver Wert > 0 soll einfach 0 Watt angezeigt werden.
Es handelt sich um diesen Wert:
const inputRegisters = { powerOut: 'modbus.0.holdingRegisters.200.40087_W'/*Total Real Power*/, }
Wie mache ich das am geschicktesten?
Danke!
VG
-
@diamand2k22 sagte: Wie mache ich das am geschicktesten?
Mit einem Alias-Datenpunkt mit Lesekonvertierung:
val < 0 ? -val : 0
-
danke Paul, geht das auch ohne Alias direkt im Skript in der Zeile?
powerOut: 'modbus.0.holdingRegisters.200.40087_W'/*Total Real Power*/,
Gruß
-
@diamand2k22 sagte: geht das auch ohne Alias direkt im Skript
on('modbus.0.holdingRegisters.200.40087_W', function(dp) { setState('0_userdata.0.zaehler.einspeisung', dp.state.val < 0 ? -dp.state.val : 0, true); });
Mit Alias spart man sich die Umsetzung per Skript.
-
Hallo Paul,
hab das mal so eingebaut, jetzt bekomme ich bei jedem Wert Wechsel eine Warnung.var powerOut; powerOut = 0; on('modbus.0.holdingRegisters.200.40087_W', function(dp) { setState(powerOut, dp.state.val < 0 ? -dp.state.val : 0);
javascript.0 2024-02-04 19:27:13.269 warn State "0" not found javascript.0 2024-02-04 19:27:13.271 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1819:20) javascript.0 2024-02-04 19:27:13.271 warn at Object.<anonymous> (script.js.common.Tibber_Test_2.Batterie_Regelung_0_1:35:5) javascript.0 2024-02-04 19:27:13.272 warn at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1269:38) javascript.0 2024-02-04 19:27:13.272 warn at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:641:29) javascript.0 2024-02-04 19:27:13.272 warn at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11200:62) javascript.0 2024-02-04 19:27:13.272 warn at processImmediate (node:internal/timers:476:21)
-
@diamand2k22 sagte in Bezug/Einspeisung Vorzeichenwechsel:
setState(powerOut, dp.state.val < 0 ? -dp.state.val : 0);
und powerOut ist bei dir 0
@paul53 sagte in Bezug/Einspeisung Vorzeichenwechsel:
setState('0_userdata.0.zaehler.einspeisung',
-
@diamand2k22
powerOut
muss die ID eines existierenden Ziel-Datenpunktes enthalten. Beispiel:const powerOut = '0_userdata.0.zaehler.einspeisung'; // Typ: Zahl, Einheit: W on('modbus.0.holdingRegisters.200.40087_W', function(dp) { setState(powerOut, dp.state.val < 0 ? -dp.state.val : 0, true); });
-