NEWS
Test Adapter Fronius 2.0.x
-
@nkleber Das Problem ist, dass ich zb. mit einer gewissen Leistung entladen will und wenn man von der Batterie eine Zwangsladung veranlasst, macht das der Gen24 mit 500Watt. Ich muss hier die Leistung mitgeben können. Das hätte ich beim Modbus nicht gefunden bis dato.
Was ich rausgefunden habe ist, dass man die Requests den Webinterfaces vielleicht benutzen kann:
http post http://xxx.xxx.xxx.xxx/config/timeofuse
Content: {"timeofuse":[{"Active":true,"Power":3000,"ScheduleType":"DISCHARGE_MIN","TimeTable":{"Start":"20:00","End":"21:00"},"Weekdays":{"Mon":true,"Tue":true,"Wed":true,"Thu":true,"Fri":true,"Sat":true,"Sun":true}}]}result:
{ "errors" : [], "permissionFailure" : [], "unknownNodes" : [], "validationErrors" : [], "writeFailure" : [], "writeSuccess" : [ "timeofuse" ] }Löschen geht dann:
http post http://xxx.xxx.xxx.xxx/config/timeofuse
Content:
{"timeofuse":[]}result:
{ "errors" : [], "permissionFailure" : [], "unknownNodes" : [], "validationErrors" : [], "writeFailure" : [], "writeSuccess" : [ "timeofuse" ] }Um die Werte abzufragen gibts folgendes http get http://10.10.13.211/config/timeofuse, dort kommt dann das array zurück, sofern die authentifzierung passt.
Die Authentifzierung wird im Header unter
authorization: Digest username="technician", realm="Webinterface area", nonce="xxxxxxxxxxx", uri="/config/timeofuse", response="xxxxxxxxxxx", qop=auth, nc=00000042, cnonce="xxxxxxxxxxx"Die Werte response und cnonce ändern sich bei jedem request dabei, der Wert nonce bleibt für einige Zeit gleich. Der Wert nc wird hochgezählt bei jeder Abfrage, sobald dieser bei mir gerade 61 erreicht hat, wird der counter resettet und gebinnt wieder bei 01 und nonce hat einen neuen tokken oder hash.
im main.js am gen24 findet man auch die authentication berechnung.
key: "digestAuthHeader", value: function(p, g, w, b) { for (var B = !(arguments.length > 4 && void 0 !== arguments[4]) || arguments[4], y = w.split(","), T = {}, L = 0; L < y.length; L++) { var S = y[L].match(this.AUTH_KEY_VALUE_RE); S && (T[S[1]] = S[2].replace(/["']/g, "")) } if (!T.realm || !T.nonce) return ""; var k = T.qop || "" , R = _.splitCredentials(b) , Y = String(++this.NC); Y = this.NC_PAD.substring(Y.length) + Y; var U = this.randomBytes(8).join("") , X = B ? o.V8.hashStr(R.username + ":" + T.realm + ":" + R.password) : R.password , z = o.V8.hashStr(p.toUpperCase() + ":" + g) , H = X + ":" + T.nonce; k && (H += ":" + Y + ":" + U + ":" + (k = k.split(",")[0])); var se = o.V8.hashStr(H += ":" + z) , te = 'Digest username="' + R.username + '", realm="' + T.realm + '", nonce="' + T.nonce + '", uri="' + g + '", response="' + se + '"'; return T.opaque && (te += ', opaque="' + T.opaque + '"'), k && (te += ", qop=" + k + ", nc=" + Y + ', cnonce="' + U + '"'), te }Die funktion calcHash(User, realm, password)
key: "calcHash", value: function(p, g, w) { return o.V8.hashStr(p + ":" + g + ":" + w) } key: "hashStr", value: function(s) { var p = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; return this.onePassHasher.start().appendStr(s).end(p) }Wenn ich den Code richtig verstehe, wird in der respone der Username, realm und das Passwort per hash übertragen. Mittels einen ,,onePassHasher", dieser dürfte aus diesem Github Projekt stammen: https://github.com/cotag/ts-md5/tree/master/src
-
@alex4 Wo hast du die Info bzgl. dem config/timeofuse her. Das klingt grundsätzlich interessant, funktioniert bei mir aber so noch nicht... Eventuell gibt es da ja noch mehr "config" parameter die nutzbar wären
@nkleber Du kannst im Browser den developer Mode starten und dann den Netzwerk verkehr mit lauschen. Da siehst Du die Requests die abgesetzt werden von der GUI gegen die API für die Weboberfläche. Das ist natürlich keine API die vermutlich irgendwo dokumentiert ist, aber zumindest kann man diese so verwenden.
Man muss nur das Login via Script machen und sich die variablen / hashes irgendwo speichern und falls diese abgelaufen sind, das Login erneut anstoßen. Bei jedem Request muss der digestAuthHeader neu erstellt werden. Siehe oben.
-
Hallo
Ich komm mit den DP nicht zurecht. Was ist was?!
Ich bräuchte folgende:
- PV Erzeugung
- Netz Bezug
- Netz Einspeisung
- Hausverbrauch
Finde ich die unter
fronius.0.inverter.1oderfronius.0.meter.0oder doch eherfronius.0.site?Wäre super, wenn mir wer weiterhelfen könnte.
hab gerade das gefunden.
Würde das passen?P_Akku : in die Batterie fließende Leistung
P_Grid : aus dem Netz bezogene Leistung (für die man zahlen muss).
P_Load : ins Hausnetz abgegebene Leistung als Summe von P_AC und P_Grid. Anm.: Hieraus lässt sich der Eigenverbrauch des GEN24 ermitteln.
P_PV : von den Solarmodulen DC-seitig gelieferte Leistung -
Forum schein defekt. Ich versuche blind:
PV:
fronius.0.site.P_PVP_Akku vorzeichenabhängig: + aus Akku heraus
P_Grid Fronius Smartmeter Vorzeichen + Bezug (kaufen) ; - Einspeisung
P_Load: das kommt aus dem Gen24 raus ins Hausnetz
Die Differenz zwischen P_Load und P_Grid wird im Haus verbraucht. -
Forum schein defekt. Ich versuche blind:
PV:
fronius.0.site.P_PVP_Akku vorzeichenabhängig: + aus Akku heraus
P_Grid Fronius Smartmeter Vorzeichen + Bezug (kaufen) ; - Einspeisung
P_Load: das kommt aus dem Gen24 raus ins Hausnetz
Die Differenz zwischen P_Load und P_Grid wird im Haus verbraucht.Forum schein defekt.

-
Forum schein defekt. Ich versuche blind:
PV:
fronius.0.site.P_PVP_Akku vorzeichenabhängig: + aus Akku heraus
P_Grid Fronius Smartmeter Vorzeichen + Bezug (kaufen) ; - Einspeisung
P_Load: das kommt aus dem Gen24 raus ins Hausnetz
Die Differenz zwischen P_Load und P_Grid wird im Haus verbraucht.Die Differenz zwischen P_Load und P_Grid wird im Haus verbraucht.
Danke dir
Also müsste ich den Hausverbrauch dann zB mit Blockly berechnen?
Du hast nicht zufällig was fertiges? ;) -
Die Differenz zwischen P_Load und P_Grid wird im Haus verbraucht.
Danke dir
Also müsste ich den Hausverbrauch dann zB mit Blockly berechnen?
Du hast nicht zufällig was fertiges? ;) -
Bei Änderung Ergebnis in eigenen Datenpunkt schreiben
habs so versucht.
Da schreibt er mir(null)in den erstellten DP (number).

{ "common": { "name": "Fronius.Verbrauch", "desc": "Manuell erzeugt", "role": "state", "type": "number", "read": true, "write": true, "def": 0 }, "type": "state", "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1776080048723, "_id": "0_userdata.0.Fronius.Verbrauch", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } -
Bei Änderung Ergebnis in eigenen Datenpunkt schreiben
habs so versucht.
Da schreibt er mir(null)in den erstellten DP (number).

{ "common": { "name": "Fronius.Verbrauch", "desc": "Manuell erzeugt", "role": "state", "type": "number", "read": true, "write": true, "def": 0 }, "type": "state", "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1776080048723, "_id": "0_userdata.0.Fronius.Verbrauch", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } -
Du nimmst ja auch das Objekt und nicht dessen Wert
da kommt ein Fehler

javascript.0 14:00:37.860 error getState has been called with id of type "number" but expects a string javascript.0 14:00:37.861 error Error: TypeError: Cannot read properties of undefined (reading 'val') javascript.0 14:00:37.861 error at Object.<anonymous> (script.js.Fronius.Hausverbrauch:5:153) javascript.0 14:00:37.861 error at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/src/lib/sandbox.ts:1773:38) javascript.0 14:00:37.861 error at JavaScript.onStateChange (/opt/iobroker/node_modules/iobroker.javascript/src/main.ts:753:25) javascript.0 14:00:37.861 error at JavaScript.emit (node:events:519:28) javascript.0 14:00:37.861 error at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11163:53) javascript.0 14:00:37.861 error at processImmediate (node:internal/timers:484:21) javascript.0 14:00:37.861 error at process.callbackTrampoline (node:internal/async_hooks:130:17) -
funktioniert jetzt.

Danke
-
-
H Homoran verschob dieses Thema von Tester am
-
H Homoran verschob dieses Thema von ...nicht in offiziellem Repo am
-
Die Differenz zwischen P_Load und P_Grid wird im Haus verbraucht.
Danke dir
Also müsste ich den Hausverbrauch dann zB mit Blockly berechnen?
Du hast nicht zufällig was fertiges? ;)Also müsste ich den Hausverbrauch dann zB mit Blockly berechnen?
Du hast nicht zufällig was fertiges? ;)Sorry, ich mache meine Berechnungen in JScript.
@homoran Ja, Forum war bei mir kaputt, Firefox und Chrome. Die Formatierung war völlig daneben und die Antwort-Box nur ein kleines Feldchen. Jetzt geht es wieder.
Mails über neue Antworten habe ich auch nicht mehr bekommen.
Kenne mich im neuen Forum auch nicht mehr aus, muß ständig die Buttons suchen. Manche erscheinen nur bei hover, mouseover .... Aber das ist ein anderes Thema.... -
Also müsste ich den Hausverbrauch dann zB mit Blockly berechnen?
Du hast nicht zufällig was fertiges? ;)Sorry, ich mache meine Berechnungen in JScript.
@homoran Ja, Forum war bei mir kaputt, Firefox und Chrome. Die Formatierung war völlig daneben und die Antwort-Box nur ein kleines Feldchen. Jetzt geht es wieder.
Mails über neue Antworten habe ich auch nicht mehr bekommen.
Kenne mich im neuen Forum auch nicht mehr aus, muß ständig die Buttons suchen. Manche erscheinen nur bei hover, mouseover .... Aber das ist ein anderes Thema....Sorry, ich mache meine Berechnungen in JScript.
Ich muss bei mir anders rechnen. :(
Habe 2 unterschiedliche PV Anlagen.
Unterfronius.0.siteseh ich nur die Fronius.fronius.0.meter.0hängt die Fronius PV
fronius.0.meter.1hängt die Enphase PVAber mit den vielen DP steh ich auf Kriegsfuß um zu verstehn, welche ich benötige, um
PV Erzeugung, Netz Bezug, Netz Einspeisung, Hausverbrauchzu bekommen. :(
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden