Macht er ja auch, aber nur den des aktuellen Jahres.Bis 31.12. geht das so, dann vermutlich wieder bei 0.
Wie gesagt, es gibt ein json, da steht die GesamtLeistung drin, aber nur in MWh.
Ich hab keine Ahnung wie das gehen kann.
Macht er ja auch, aber nur den des aktuellen Jahres.Bis 31.12. geht das so, dann vermutlich wieder bei 0.
Ich hab keine Ahnung wie das gehen kann.
Direkt über einen Channel geht es nicht. Du kannst aber das komplette JSON als String Channel weiterreichen und innerhalb einer Rule auswerten. Dort könnte man dann das Wertearray in eine Liste überführen und diese Liste anschließend aufaddieren. Man benötigt dazu also eine Rule.starbright hat geschrieben: ↑8. Dez 2024 08:22 Harka hat geschrieben: ↑Gestern 18:25Ich hab keine Ahnung wie das gehen kann.Data scheint ja Teil eines größeren JSON zu sein. Das sollte sich gut auslesen und mit einer Schleife aufaddieren lassen.
Code: Alles auswählen
JS:| var i; var oData = input.split('"data": [').slice(-1)[0].split(']')[0]; var iSumme = 0; var i_list = oData.split(','); for (var i_index in i_list) { i = i_list[i_index];iSumme = iSumme + parseFloat(i);}iSumme;
Code: Alles auswählen
configuration: {}
triggers:
- id: "1"
configuration:
itemName: Solar_Total_String
type: core.ItemStateUpdateTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
type: application/javascript
script: |
var i;
var oData = input.split('"data": [').slice(-1)[0].split(']')[0];
var iSumme = 0;
var i_list = oData.split(',');
for (var i_index in i_list) {
i = i_list[i_index];
iSumme = iSumme + parseFloat(i);
};
iSumme= 10;
events.sendCommand('Solar_Total_Rule', iSumme);
type: script.ScriptAction
Code: Alles auswählen
var input = event.itemState.toString();
Code: Alles auswählen
items.getItem('Solar_Total_Rule').sendCommand(iSumme);
Code: Alles auswählen
var A, B, C, D, E;
A = itemRegistry.getItem('sm_cnt_purchase').getState();
B = itemRegistry.getItem('Wechselrichter_Solar_Years').getState();
C = itemRegistry.getItem('sm_cnt_deliver').getState();
D = A + B - C + 4051.203;
E = D.toFixed(3);
events.sendCommand('sm_calc_consumption_total', E);
Das Updaten wird durch Abwarten auch nicht einfacher und meiner Erinnerung nach sind die Anforderungen mit OH4 nicht nennenswert gestiegen. Nur das Backup vorher nicht vergessen! openHAB ist noch um einiges benutzerfreundlicher geworden.starbright hat geschrieben: ↑ Danke für den Hinweis. Ich hänge wegen schwacher Hardware noch an openHAB 3.4. Weiß nicht ob das auch zu beachten ist.
Muss gestehen, dass ich bei der Aufgabe Deiner Rule gerade auf dem Schlauch stehe (langer Tag). Du kannst aber Werte mittels Rule z.b. in einem manuell angelegtem Item (Add Point) oder in Custom-Metadaten abspeichern. Was Dir hier möglicherweise auch weiterhilf ist die Persistence. OH speichert standartmäßig alle Werte minütlich in einer rrd4j-Datenbankstarbright hat geschrieben: ↑Wie stelle ich es an, dass der Offset (derzeit fix codiert) entweder zum Tages- oder Monats-Wechsel neu gesetzt wird, so dass der D=Verbrauch zu diesem Zeitpunkt "0" wird?
Dann hat man Counter der den aktuellen Tages- bzw Monatsverbrauch anzeigt. Aber wie kann ich den Offset bestimmen?
Ja, mehrere Trigger sind möglich und in in der Rule mit if-then auswertbar. Der Sinn hängt von der Aufgabe ab.starbright hat geschrieben: ↑Kann man einer Rule mehrer Trigger geben Zum Beispiel einen der um 0:00 zuschlägt) und davon unterschiedliche Aktionen ableiten und die Variable gehalten werden? Oder wie kann man das tun?
Was genau rechnest Du denn aus? Welche Werte stehen genau zur Verfügung?starbright hat geschrieben: ↑12. Dez 2024 11:26 Wie stelle ich es an, dass der Offset (derzeit fix codiert) entweder zum Tages- oder Monats-Wechsel neu gesetzt wird, so dass der D=Verbrauch zu diesem Zeitpunkt "0" wird?