NEWS
SMA Wechselrichter Modbus Werte auf 0 setzen
-
Hallo,
wenn der SMA Wechselrichter aus geht, dann schickt er über Modbus Minuswerte. Diese möchte ich nicht in meiner Datenbank haben. Es soll jetzt also eine 0 geschrieben werden, wenn der Wert unter 1 Watt ist. Leider funktioniert es nicht. Kann mir jemand sagen, was ich beim Skript falsch habe?
-
nix alles so wie du meinst.. aber auch nicht.. du reagierst auf die Wertänderung von dem Object.. also -1 das wird natürlich auch Protokolliert und du setzt es auf 0 .. und das wird wiederrum auch Protokolliert..
das geht so nicht wie du dir das vorstellst.. du musst mit einem eigenem Wert arbeiten.. und diesen Protokollieren
sonst müsstest du den Wert abfangen bevor es im Objekt landet und das kann nur der Adapter internalso eigenens Object erstellen diesen in die DB schreiben
bei jedem Änderung des Objectes _PV-Leistung schreibst du das in dein Object rein
nur nicht wenn dieser -1 ist.. fertig.. dann brauchst du noch nichtmal 0 Wert rein zuschreiben... -
Hi, danke für deine Antwort. Hatte schon eigenes Objekt erzeugt. Wie muss ich das denn machen, dass er nichts schreibt, wenn der Wert -1 ist?
-
Ich mache das z.B. so:
-
Ok und warum machst du oben vorher nochmal falls mache Wert unter < 0 und unten das selbe nochmal?
-
Ähm.... läuft jetzt schon seit 2 Jahren so... wenn ich ehrlich bin weiß ich nicht mehr wodurch das damals entstanden ist
-
Ich habe dieses JS seit Beginn erfolgreich am laufen:
createState('javascript.0.Manuell.Systemvariable.PV_Anlage.PVLeistung', { name: 'PVLeistung', unit: 'Watt', type: 'number', def: 0, min: 0 }); on({id: "modbus.0.inputRegisters.30777_Power_L1", change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("javascript.0.PV_Anlage.Werte.PVLeistung", (getState("modbus.0.inputRegisters.30777_Power_L1").val), true); });
-
@Röstkartoffel sagte in SMA Wechselrichter Modbus Werte auf 0 setzen:
min: 0
Geht natürlich auch und ist einfacher. Einfach den kleinsten möglichen Wert für den Datenpunkt fest auf "0" setzen.