NEWS
Solaredge mit Zigbee einbinden?
-
@Paan83 siehe oben: "Es benötigt noch die site ID, die sieht man im Monitoring Portal und einen API Key, den kriegt man vom Solaredge Support."
Damit rufst du aber nicht die Daten direkt vom WR ab, sondern vom Solaredge Portal.
@cburghardt Danke für den Hinweis, ich stand wohl etwas auf dem Schlauch. Ich habe beide Sachen jetzt eingetragen, und das Skript gestartet. Es scheint zu laufen, habe mal keine Fehlermeldung bekommen, jedoch erzeugt es keine Datenpunkte. Hast du das Skript am laufen?
Zum Modbus, bei mir ist es der Port 502. Hast du das mit dem Modbus hinbekommen?
--EDIT--
Ich hhab jetzt doch noch eine Fehlermeldung vom Skript bekommen. Leider verstehe ich es nicht. Könnte mir jemand helfen?

-
@cburghardt Danke für den Hinweis, ich stand wohl etwas auf dem Schlauch. Ich habe beide Sachen jetzt eingetragen, und das Skript gestartet. Es scheint zu laufen, habe mal keine Fehlermeldung bekommen, jedoch erzeugt es keine Datenpunkte. Hast du das Skript am laufen?
Zum Modbus, bei mir ist es der Port 502. Hast du das mit dem Modbus hinbekommen?
--EDIT--
Ich hhab jetzt doch noch eine Fehlermeldung vom Skript bekommen. Leider verstehe ich es nicht. Könnte mir jemand helfen?

@Paan83 das Script bekommt keine korrekte Antwort von SolarEdge. Hast du den richtigen API key eingetragen?
-
@Paan83 das Script bekommt keine korrekte Antwort von SolarEdge. Hast du den richtigen API key eingetragen?
@cburghardt Hey, natürlich, ich hatte einen Zahlendreher drinnen...:face_with_rolling_eyes:
Das Skript läuft jetzt seid gestern Abend. Ein Datenpunkt wurde erzeugt und der Wert vom DP steht auf 0. Der Zeitstempel der letzten Aktualisierung steht auf gestern Abend, das heißt es findet keine Aktualisierung statt. Woran könnte das liegen? -
@cburghardt Hey, natürlich, ich hatte einen Zahlendreher drinnen...:face_with_rolling_eyes:
Das Skript läuft jetzt seid gestern Abend. Ein Datenpunkt wurde erzeugt und der Wert vom DP steht auf 0. Der Zeitstempel der letzten Aktualisierung steht auf gestern Abend, das heißt es findet keine Aktualisierung statt. Woran könnte das liegen?@Paan83 das Script läuft alle 15 Minuten.
Versuche doch mal diesen Link im Browser, muss noch die site ID und api key eintragen, ohne die <>:
https://monitoringapi.solaredge.com/site/<site ID>/energyDetails?endTime=2019-10-29%2012:00:00&startTime=2019-10-29%2011:45:00&timeUnit=QUARTER_OF_AN_HOUR&api_key=<api key>
Das sollte die Daten vom 29.10 um 12 Uhr liefern.
-
@cburghardt kann es sein dass bei mir die Werte fehlen?
-
@cburghardt kann es sein dass bei mir die Werte fehlen?
@Paan83 dann sollte aber im Datenpunkt "Production" schon etwas anderes als 0 stehen, zumindest wenn in den letzten 15 Minuten etwas produziert wurde. Der Wert ist in kWh. Wenn du wH haben möchtest, entfernst du einfach das " / 1000", also:
var value = Number(result.energyDetails.meters[i].values[0].value);Habs gerade getestet, die Werte werden erstellt.
Nachdem nur Produktion geliefert wird und kein Verbrauch o.ä. hast du wohl keinen Modbus Zähler installiert. -
Ich habe mir das pdf Dokument von Solaredge nochmal durchgelesen und habe mit den url's rumprobiert. Ich bekomme jetzt doch die erhofften Werte, hier mal ein Beispiel:

Was ich jetzt noch nicht herausgefunden habe, wie ich es machen soll dass er mir die produzierten kWh Stunden vom aktuellen Tag, und kWh's vom 1.ten des Monats bis heute ausgibt. -
Ich habe mir das pdf Dokument von Solaredge nochmal durchgelesen und habe mit den url's rumprobiert. Ich bekomme jetzt doch die erhofften Werte, hier mal ein Beispiel:

Was ich jetzt noch nicht herausgefunden habe, wie ich es machen soll dass er mir die produzierten kWh Stunden vom aktuellen Tag, und kWh's vom 1.ten des Monats bis heute ausgibt.@Paan83 vorherige Tag, also morgens aufrufen:
function totalDay() { var date = new Date(); date.setDate(date.getDate()-1); var dateStr = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate(); var endTime = dateStr + "%2023:59:59"; var startTime = dateStr + "%2000:00:00"; var link = "https://monitoringapi.solaredge.com/site/" + site + "/energyDetails?endTime=" + endTime + "&startTime=" + startTime + "&timeUnit=DAY&api_key=" + api_key; request(link, function(error, response, body) { if (error) log('Error from Solaredge API:' + error, 'error'); else { var result = JSON.parse(body); for (var i = 0; i < result.energyDetails.meters.length; ++i) { var t = result.energyDetails.meters[i].type; var value = Number(result.energyDetails.meters[i].values[0].value) / 1000; setState("stats." + t, value); } } }); } -
Ja, grundsätzlich klappt es auch mit einem einfachen Blockly (hatte ich früher mal) mit der Rechnung wie Du sie geschrieben hast.
Wenn Du nur den Wert anzeigen willst ist das auch gut. Bei mir gab es dann allerdings bei einer Kurvenaufzeichnung unschöne Spitzen. Die kommen scheinbar daher, dass der Scale-Faktor und der Wert nicht 100% gleichzeitig umschalten.
Ich bekam dann Hilfe aus dem Forum und seither habe ich folgendes Script/* Quelle Script: http://forum.iobroker.net/viewtopic.php?f=21&t=3961 */ function convertValue(value, factor) { if (value === null) return; if (factor === null) factor = 0; setState('PV_Leistung', value * Math.pow(10, factor), true); } createState('PV_Leistung', { name: 'AC Power value', unit: 'W', min: 0, type: 'number', role: 'value.energy' }, function () { on('modbus.0.holdingRegisters.40084_WR_Leistung', function(obj) { var timeout = setTimeout(function () { clearTimeout(timeout); var factorState = getState('modbus.0.holdingRegisters.40085_WR_Leistung scale'); convertValue(obj.state.val, factorState ? factorState.val : 0); }, 100); }); var factorState = getState('modbus.0.holdingRegisters.40085_WR_Leistung scale'); var valueState = getState('modbus.0.holdingRegisters.40084_WR_Leistung'); convertValue(valueState ? valueState.val : null, factorState ? factorState.val : 0); });Klappt gut, einfach kontrollieren dass die Variablen im Modbus Adapter gleich heissen (40084_WR_Leistung und 40085_WR_Leistung scale) oder im Code anpassen.
Neu gibt es nun das Objekt "PV_Leisung" mit der berechneten Leistung.Die Startadresse steht schon standardmässig auf 40001, das brauch ich doch eigentlich nicht anzurühren, ich tippe ja nur meine Werte unten in der Zeile ein oder?
Die Start-Adresse war nur als Idee gedacht wenn wir den Adapter nicht auf grün kriegen. Also alles i.O.
-
wo wird der Script eingefügt? Ich bekomme es leider nicht hin...
