NEWS
Unterstützung gesucht ($): Entwicklung eines Scripts
-
Hallo,
ich suche jemanden, der ein kleines Script für mich entwickelt.
Was soll es tun?
-
Es gibt zwei Datenpunkte in der ioBroker Datenbank, die sich regelmäßig ändern. Es handelt sich um zwei Zahlen (Ertrag eines SolarEdge PV-Wechselrichters und entsprechender Skalierungsfaktor dazu). Hier werden zB gerade 3794W produziert:
-
In Abhängigkeit der erzeugten Energie ändert sich logischerweise der Datenpunkt für den Ertrag. Ändert sich der Ertragswert unter bzw. über einen gewissen Schwellenwert, so ändert sich seine Darstellung im Objekt und gleichzeitig der Skalierungsfaktor. Hier werden zB gerade 2132W produziert:
(detaillierte Beschreibung siehe hier: http://forum.iobroker.net/viewtopic.php … 208#p37206 )
- Das Skript soll in dem Moment, wo die Werte durch den Modbus Adapter aktualisiert werden, prüfen ob der Skalierungsfaktor ungleich 0 ist. <u>Ist er Null</u>, soll der Ertragswert 1:1 in einen Datenpunkt anderes ioBroker Objekt übertragen werden. <u>Ist er nicht 0</u> sondern zB -1, so soll der Ertragswert durch 10 geteilt werden und das Ergebnis in den neuen Datenpunkt geschrieben werden.
Ich möchte das nicht für umsonst haben, sondern bin gern offen für Angebote, was so ein Script kosten würde. Sofern es einmal fertig ist, stelle ich es gern der Community zur Verfügung.
Viele Grüße
Christian
-
-
function convertValue(value, factor) { if (value === null) return; if (factor === null) factor = 0; setState('Energie', value * Math.pow(10, factor), true); } createState('Energie', { name: 'Energiewert', unit: 'W', min: 0, type: 'number', role: 'value.energy' }, function () { on('modbus.0.holdingRegisters.40084_CurrentPower-AC', function(obj) { var timeout = setTimeout(function () { clearTimeout(timeout); var factorState = getState('modbus.0.holdingRegisters.40085_ACPF'); convertValue(obj.state.val, factorState ? factorState.val : 0); }, 100); }); var factorState = getState('modbus.0.holdingRegisters.40085_ACPF'); var valueState = getState('modbus.0.holdingRegisters.40084_CurrentPower-AC'); convertValue(valueState ? valueState.val : null, factorState ? factorState.val : 0); });
-
Sollte man ein kleines Delay einbauen falls Wert und Skalierungsfaktor nicht "gleichzeitig" aktualisiert werden?
-
Sollte man ein kleines Delay einbauen falls Wert und Skalierungsfaktor nicht "gleichzeitig" aktualisiert werden? `
Vielleicht. Wird nicht schaden.habe ich oben ergänzt.
-
Alternative Funktion convertValue:
function convertValue(value, factor) { if (value === null) return; if (factor === null) factor = 0; setState('Energie', value * Math.pow(10, factor), true); }
-
Wow, vielen Dank ! Das ging ja extrem fix. Bin gespannt ob es morgen funktioniert, bis auf ein Hochkomma zu viel hat die JS-Engine es schonmal geschluckt Leider scheint gerade keine Sonne, aber ich probiere es morgen natürlich sofort aus
Viele Grüße
Christan
-
und wenn alles läuft kannst du ja mal hier in der Mitte unter dem blauen Header nachsehen:
http://www.iobroker.net/?lang=de
Gruß
Rainer
-
Danke, ist erledigt
Das Script funktioniert übrigens prima
-
Das Script funktioniert übrigens prima `
@ChristianF:eider scheint gerade keine Sonne, aber ich probiere es morgen natürlich sofort aus `
Wieso konntest du das denn gestern abend nicht testen. Hast du bei der Planung der Anlage vergessen auch einige Lunarmodule einzubauen?
:lol: :lol:
Schön das jetzt alles klappt.
Gruß
Rainer