NEWS
Test Adapter Growatt v3.3.1
-
hi @PLCHome-0
ganz lieben Dank nochmal.
ich hätte aber noch eine Frageich versuche den WR in Abhängigkeit des Vergleichs "SOC" kleiner gleich "max Discharge SOC" und ="Nacht", also zwischen Sonnenunter und Sonnenaufgang in Standby zu setzen.
Würdest du dir das Blockly mal anschauen, evtl. per PN, wenn das okay ist poste ich das hier für die Nachwelt. Denke das Thema haben ja auch noch andere
Viele Grüße LaFo
-
-
@plchome-0 hab festgestellt im Chat gehen keine Bilder.
Was hältst du so davon ?
Oben im Cron fehlt im Bild noch das er das alle viertel Stunde checkt.
Ganz unten müsste er das einschalten ja nur einmal morgens machen.
Und würde das mit Wert umschalten bei Inverter On Off gehen da er ja nur 2 Zustände hat?
Lieben Dank und VG LaFo -
@laforge112
Ich muss gestehen, ich verstehe das nicht. Mit dem Blocky kann ich nichts anfangen. sorry. Das ist für mich ein Buch mit sieben Siegeln. -
@plchome-0 So eine Crownregel habe ich auch noch nie gesehen, normalerweise ist das, was in der Art */10 * * * * . Kann man da noch was anderes mitgeben?
-
im Wizard siehts so aus. Und meinst du die Zustände lassen sich mit umschalten bearbeiten ?
-
@laforge112
Also so hab ich das mit dem Blocky kann ich leider nicht. Ich habe leider Informatik und nicht Kunst studiert ...
Um 7:00 setzt er die Einstellungen zum Laden zurück, falls ich das vergessen habe.
Ansonsten prüfe ich alle 2min ob es Nacht oder Tag ist.
Ist es Tag, wird das Ding eingeschaltet, wenn es aus ist.
Bei Nacht wird geprüft, ob der SOC leer ist und auch keine Leistung mehr entnommen wird. Dann schaltet er ab.schedule('0 7 * * *', async ()=>{ let [stat,stat2,stat3] = await Promise.all( [ getStateAsync('growatt.0. -a- .devices. -b-.settings.batteryFirst.values.param8'/*Time slot 1 on*/), getStateAsync('growatt.0. -a- .devices. -b-.settings.batteryFirst.values.param13'/*Time slot 2 on*/), getStateAsync('growatt.0. -a- .devices. -b-.settings.batteryFirst.values.param18'/*Time Slot 3 on*/) ]); if (stat.val == true || stat2.val == true || stat3.val == true) { await setStateAsync('growatt.0. -a- .devices. -b-.settings.batteryFirst.values.param8'/*Time slot 1 on*/,false,false); await setStateAsync('growatt.0. -a- .devices. -b-.settings.batteryFirst.values.param13'/*Time slot 2 on*/,false,false); await setStateAsync('growatt.0. -a- .devices. -b-.settings.batteryFirst.values.param18'/*Time slot 3 on*/,false,false); await setStateAsync('growatt.0. -a- .devices. -b-.settings.batteryFirst.write',true,false); sendTo('telegram.0', {user: 'Nasenbär', text: `Growatt: Der Timeslot zum Laden wurde zurückgesetzt!`}); } }) schedule('*/2 * * * *', async ()=>{ if (isAstroDay()) { let stat = await getStateAsync('growatt.0. -a- .devices. -b-.settings.pvOnOff.values.param1'/*Inverter On/Off*/) if (stat.val == 0) { await setStateAsync('growatt.0. -a- .devices. -b-.settings.pvOnOff.values.param1'/*Inverter On/Off*/,1,false); await setStateAsync('growatt.0. -a- .devices. -b-.settings.pvOnOff.write',true,false); sendTo('telegram.0', {user: 'Nasenbär', text: `Growatt: Der Wechselrichter wurde eingeschaltet!`}); } } else { let [connected, onoff, soc,stopsoc, pdischarge1] = await Promise.all( [ getStateAsync('growatt.0.info.connection'/*If connected to Growatt Server*/), getStateAsync('growatt.0. -a- .devices. -b-.settings.pvOnOff.values.param1'/*Inverter On/Off*/), getStateAsync('growatt.0. -a- .devices. -b-.historyLast.soc'/*soc*/), getStateAsync('growatt.0. -a- .devices. -b-.settings.loadFirst.values.param1'/*Discharge Stopped Soc*/), getStateAsync('growatt.0. -a- .devices. -b-.historyLast.pdischarge1'/*pdischarge1*/) ]); if (connected.val && onoff.val == 1 && soc.val <= stopsoc.val && pdischarge1.val == 0) { await setStateAsync('growatt.0. -a- .devices. -b-.settings.pvOnOff.values.param1'/*Inverter On/Off*/,0,false); await setStateAsync('growatt.0. -a- .devices. -b-.settings.pvOnOff.write',true,false); sendTo('telegram.0', {user: 'Nasenbär', text: `Growatt: Der Wechselrichter wurde abgeschaltet!`}); } } })
Script angepasst...
Dann hab ich noch das hier gefunden:
https://forum.iobroker.net/topic/4324/
scheint aber älter zu sein. Villeicht geht das mitlerweile. -
@laforge112 said in Test Adapter Growatt v3.2.0:
Und meinst du die Zustände lassen sich mit umschalten bearbeiten ?Also umschalten der Zustände geht schon mal.
Ich teste weiter
-
@laforge112
Der Vergleich ist ähnlich. Ich vergleiche hard soc und stopp soc. Und dann frage ich noch ab, ob die Entladeleistung 0 ist.
Die solltest auch prüfen das Inverter ON/Off 0 ist. Da da alle 15min aufgerufen wird und er nur einmal schalten soll.Unstellen schreibt, glaube ich Boolean. Mach einfach aktualisiere mit 0 als Zahl auf Value1.
Ich bin kein Blocky Experte aber:
Das funktioniert, glaube ich nicht, da dieser Teil nur bei Programmstart ausgeführt wird. Der benötigt auch einen Zeitplan, der bei Sonnenaufgang auslöst. Besser eine halbe Stunde vorher. Und dann einfach aktualisiere mit 1 als Zahl auf Value1.
Du kannst vorher noch abfragen, ob eine 0 drinsteht, dann macht er das nur einmal. -
@plchome-0 said in Test Adapter Growatt v3.2.0:
Das funktioniert, glaube ich nicht, da dieser Teil nur bei Programmstart ausgeführt wird. Der benötigt auch einen Zeitplan, der bei Sonnenaufgang auslöst. Besser eine halbe Stunde vorher. Und dann einfach aktualisiere mit 1 als Zahl auf Value1.
Ja das war mir auch schon aufgefallen und ist bereits geändert.
Du kannst vorher noch abfragen, ob eine 0 drinsteht, dann macht er das nur einmal.
Dieser Check ist drin, der checkt aber den Actual State (oben Wert von "status") und nicht den Programmierten und das sowohl beim ein und ausschalten.
Ganz lieben Dank aber noch für deinen Input,Jetzt muss ich mal noch ne Tibber SOC Steuerung erfinden.
Aber hier: https://www.tns-labs.org/multiplus-ii-tibber-dynamischer-stromtarif/
hab ich schon mal nen Ansatz gefunden. Wenn auch für nen Multiplus2 mal sehen was ich abkupfern kannLG LaFo
-
Hi zusammen,
Adapter läuft schon nice.
Ich habe hier ein Growatt MOD 10KTL3-X, bei Typ steht laut Adapter max.Gibt es eine Möglichkeit die Wirkleistung auch per Adapter bei diesen Wechselrichter einzustellen ?
Stehe gern als Testobjekt zur verfügungMfG
-
Hast du dir einmal weiter oben angeschaut, wie im Browser die Daten mitgeschnitten werden?
Wenn du mir die Mitschnitte zum Auslesen und Setzen lieferst, kann ich die eintragen.
https://forum.iobroker.net/topic/36474/test-adapter-growatt-v3-2-0/476
-
Also bei Typ steht max
Gesendet wurde :
Als Antwort kamm :
Ich hoffe das ist was du brauchst
MfG
-
@sefina Super das die halbe Miete. Weiter unten in dem Dialog kannst du auch den Wert lesen mit Advanced Set. Davon brauche ich auch mal eine Hardcopy.
-
Ich glaube es ist falsch,
ich finde nichts was nach deinem Bild ausschaut.
Was muss ich auslössen um diesen eintrag zu generieren ? -
-
Ok auch das habe ich gefunden,
was brauchst du genau ? -
@sefina nur den Payload (Nutzlast) vom MAX
-
@sefina such mal in der iobroker Installation die Datei:
node_odules/iobroker.growatt/node_odules/growatt/lib/growatttype.js
oder
node_odules/growatt/lib/growatttype.jsam besten machst du eine Sicherungskopie der Datei.
dann ersetzt du:
[MAX]: { snParam: 'maxSn', getTotalData: '/panel/max/getMAXTotalData', getHistory: '/device/getMAXHistory', },
gegen:
[MAX]: { snParam: 'maxSn', getTotalData: '/panel/max/getMAXTotalData', getHistory: '/device/getMAXHistory', readParam: 'readMinParam', writeParam: 'maxSet', comInverter: { time: { name: 'Time', type: 'pf_sys_year', paramId: 'pf_sys_time_mutli', parseRet: PARSERET.parseRetDate, param: { param1: { name: 'Time', type: 'DATETIME' } }, }, pvActivePRate: { name: 'PV active power rate', type: 'pv_active_p_rate', paramId: 'pv_active_p_rate', parseRet: PARSERET.parseRetNum, param: { param1: { name: 'Active power rate', type: 'INUM_0_100', unit: '%' }, param2: { name: 'Store', type: 'BOOL', def: false } }, }, }, },
Ich gehe aber davon aus, das 'readMinParam' falsch ist.
-
Achso, dass
Rest teste ich gleich