Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
Helaas, meer dan genoeg tijd om eens rond te kijken naar andere zaken.

Heeft iemand ooit de portlet-functie toegepast zoals aangeboden door PVOutput?
Zie https://pvoutput.org/help.html#portlet

In de beschrijving lijkt het heel eenvoudig een regeltje script op de gewenste plek invoegen op een webpagina.
Maar blijkbaar toch wat meer dan dat, want in een pagina met html-code komt dat scriptregeltje niet zelfstandig tot leven.
Ook niet als je in PVOutput_Settings de aangewezen API_Access en API_Referrer met de webpagina netjes invult.

Zal wel kleinigheidje zijn, maar wat is er nog meer nodig?

[ Voor 4% gewijzigd door Toulon7559 op 26-03-2020 21:55 . Reden: Tekst bijwerken ]


Acties:
  • 0 Henk 'm!

  • Kenny73
  • Registratie: Maart 2016
  • Laatst online: 13-09 19:33
Ik het ook eindelijk voor elkaar om mijn SMA STP6000TL via de ModBus in H.A. uit te lezen.
Alleen ik kan de adressen van de spanning van mijn 2 strings niet vinden in de datasheet.
Op internet ben ik wel verschillende adressen tegengekomen die ik geprobeerd heb maar helaas waren dat niet de goede.
Heeft iemand een suggestie?

De link naar de datasheet:
https://www.dropbox.com/s...Bus%20STP6000Tl.xlsx?dl=0

24x LG Mono Full Black 320Wp, SMA Sunny Tripower 6000TL/ Atlantic 270 L WP-Boiler


Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@Kenny73
code:
1
2
3
4
5
6
7
30769   DC current input [1]
30771   DC voltage input [1]
30773   DC power input [1]

30957   DC current input [2]
30959   DC voltage input [2]
30961   DC power input [2]

Gebruik je wel het goede document?
Want die staan er daar inderdaad niet in.
Stuur even een DM voor de node-red flow.
https://www.mupload.nl/img/utrxtlhso1.jpg

[ Voor 6% gewijzigd door AUijtdehaag op 30-03-2020 19:20 ]

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • Kenny73
  • Registratie: Maart 2016
  • Laatst online: 13-09 19:33
Helaas, die zijn het niet.Afbeeldingslocatie: https://tweakers.net/i/6nK8M0913Q7sj1pSghsQ_RJG64M=/f/image/Voz087mqw7vDzjTWzKRKBjYc.png

Afbeeldingslocatie: https://tweakers.net/i/GPQVLPSCqeQEFxBaAW1P6OyW8_Y=/800x/filters:strip_exif()/f/image/6Qz1fTAixvFLe2oJxdGNtFRC.png?f=fotoalbum_large

24x LG Mono Full Black 320Wp, SMA Sunny Tripower 6000TL/ Atlantic 270 L WP-Boiler


Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@Kenny73 Heb je node-red?

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • clemento
  • Registratie: December 2006
  • Laatst online: 20-06-2024
Beste mensen,

Ik ben nieuw in dit topic en de startpost is al aardig gedateerd.
Gisteren heb ik mijn offerte voor 24 panelen getekend en graag zou ik de productie willen loggen en misschien realtime delen. Ook begreep ik van een meneer van Greenchoice dat ik mijn panelen bij http://www.certiq.nl/ kan aanmelden en dan zou de Garantie van Oorsprong (GvO) ook bij hun terecht komen.
Die GvO heeft op dit moment haast geen waarde maar dat zou wel eens kunnen gaan veranderen waardoor de als klant van een Energiebedrijf wellicht best een aardig bijverdienste zou kunnen claimen.
Dit idee heb ik trouwens als sinds 2015.
Eventueel is dit iets voor een apart topic als er interesse is het verder uit te werken.
Ik heb hier geen commercieel belang bij maar ik wil wel dat mijn groene verse stroom transparant is.
Na 2023 kunnen we hier extra waarde voor panelen bezitters mee genereren.
Groet,
Jan

[ Voor 0% gewijzigd door clemento op 03-04-2020 11:04 . Reden: typo ]


Acties:
  • 0 Henk 'm!

  • CIM
  • Registratie: Mei 2000
  • Laatst online: 19:58

CIM

Interessant vraagstuk; hoe claim je als KV-opwekker de GvO opbrengsten? Beetje GvO doet toch wel zo'n €0,50-€6/MWh (prijs is afhankelijk van vele factoren).

Voor zover ik weet kan mijn energieleverancier niet mijn teruglevering (~2MWh/jaar) claimen als GvO. Tenminste, dat vermoed ik. Overigens zijn de marges op elektriciteit bij energieleveranciers flinterdun; 2x bellen naar de klantenservice en de marge is al weg.

Acties:
  • 0 Henk 'm!

  • clemento
  • Registratie: December 2006
  • Laatst online: 20-06-2024
Klopt, de prijs van GvO is belachelijk laag. Eigenlijk krijg je het label groene stroom bijna voor niks.
Maar Greenchoince bijvoorbeeld wil naar 100% groene stroom op elk moment. Dan kun je dus hele hoge prijzen verwachten voor realtime GvO en dat is wat wij als panelenbezitters mogelijk zouden kunnen leveren. Welicht is het dan ook rendabel om een batterij te nemen en te leveren als het nodig is.

[ Voor 0% gewijzigd door clemento op 03-04-2020 16:52 . Reden: typo ]


Acties:
  • 0 Henk 'm!

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 20:36
cville schreef op vrijdag 21 februari 2020 @ 19:20:
[...]

Helaas, om onbekende redenen levert SMA deze data niet meer en beantwoord ook geen vragen hierover. EToday kun je zelf uitrekenen en de temperatuur lees ik uit d.m.v. ModBus queries. In het SBFspot forum vind je Python code van mij die dat kan.
Sinds deze ochtend heb ik ook een SMA inverter een tripower 10.0. Omdat sbfspot de temperatuur niet kan uitlezen kwam ik jouw script tegen.
Ik heb het aangepast met het juiste IP (en er wat zaken uitgedaan ivm het loggen), maar ik krijg een Modbus Error (Failed to connect).
Ook met bv RMMS (link van SMA) krijg ik geen verbinding op poort 502.
Enig idee wat ik mis doe? :(

Acties:
  • 0 Henk 'm!

  • cville
  • Registratie: Juni 2012
  • Laatst online: 09-09 12:43
Promy schreef op donderdag 9 april 2020 @ 21:25:
[...]

Sinds deze ochtend heb ik ook een SMA inverter een tripower 10.0. Omdat sbfspot de temperatuur niet kan uitlezen kwam ik jouw script tegen.
Ik heb het aangepast met het juiste IP (en er wat zaken uitgedaan ivm het loggen), maar ik krijg een Modbus Error (Failed to connect).
Ook met bv RMMS (link van SMA) krijg ik geen verbinding op poort 502.
Enig idee wat ik mis doe? :(
Kun je me de link geven naar mijn code? Dan zal ik die vergelijken met mijn huidige code en kijken of je de meest recente versie hebt.

12.090kWp → 40 panelen → oost/zuid/west | Tibber | EV


Acties:
  • +1 Henk 'm!

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 20:36
cville schreef op donderdag 9 april 2020 @ 23:52:
[...]


Kun je me de link geven naar mijn code? Dan zal ik die vergelijken met mijn huidige code en kijken of je de meest recente versie hebt.
ik ben deze tegengekomen (denk toch dat het van jou is aangezien je hoger in dit topic ernaar linkte).
Ondertussen met de hulp van @AUijtdehaag AUijtdehaag het probleem gevonden...in de SMA moet de TCPModbus server dus aanstaan 8)7 8)7

edit:
heeft er iemand het modbus address voor de e-today? ik kan enkel de e-total terugvinden?

[ Voor 7% gewijzigd door Promy op 10-04-2020 10:25 ]


Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@Promy Is dat 30435 30535 ?

[ Voor 22% gewijzigd door AUijtdehaag op 10-04-2020 11:23 ]

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 20:36
Ondertussen gevonden via trial-and-error :) het is bij mijn 3fase omvormer 30535

Acties:
  • +1 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@Promy je kan ook even een modbuslijst downloaden he?
Is even zoeken maar hij bestaat.
https://www.sma.de/en/pro...s-protocol-interface.html
Maar je hebt gelijk 30535 (ik pas het meteen aan in mijn commentaar van de modbus node-red flow :/ )

[ Voor 22% gewijzigd door AUijtdehaag op 10-04-2020 11:22 ]

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • cville
  • Registratie: Juni 2012
  • Laatst online: 09-09 12:43
Promy schreef op vrijdag 10 april 2020 @ 09:26:
[...]

ik ben deze tegengekomen (denk toch dat het van jou is aangezien je hoger in dit topic ernaar linkte).
Ondertussen met de hulp van @AUijtdehaag AUijtdehaag het probleem gevonden...in de SMA moet de TCPModbus server dus aanstaan 8)7 8)7

edit:
heeft er iemand het modbus address voor de e-today? ik kan enkel de e-total terugvinden?
Ik neem aan dat je nu alles hebt dat je nodig hebt? Ik zelf heb het programma waar je naar linkte later vervangen door code die veel meer uitleest. Vandaar mijn vraag.

12.090kWp → 40 panelen → oost/zuid/west | Tibber | EV


Acties:
  • 0 Henk 'm!

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 20:36
cville schreef op vrijdag 10 april 2020 @ 12:32:
[...]


Ik neem aan dat je nu alles hebt dat je nodig hebt? Ik zelf heb het programma waar je naar linkte later vervangen door code die veel meer uitleest. Vandaar mijn vraag.
Ik heb inderdaad alles wat ik nodig had :9 , maar een link naar je laatste programma is natuurlijk altijd handig!

edit: ik was de lijst aan het bekijken en ik vroeg me af hoe je de aparte strings kan uitlezen.
Bv address 30773 is de DC power, maar bij de uitleg staan de verschillende strings (A1 , A2, B, ...) maar er komt maar 1 waarde terug?

[ Voor 22% gewijzigd door Promy op 10-04-2020 17:15 ]


Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

Kwam er zojuist achter waarom mijn SMA geen decimalen gaf in de kWh waarden. Blijkt dat het een beperking van modbus is, maar dat was mij natuurlijk niet bekend. Je hebt de volgende register waarden:

30529-30530
Wh
Total yield

30531-30532
kWh
Total yield

30533-30534
MWh
Total yield

Ik gebruikte 30531-30532 en dan komt in register 30532 de total yield in kWh, zoals beschreven. Dit zijn echter waarden afgerond op gehele kWh. Vraag je register 30529-30530 op dan krijg je het volgende:
30529: 55
30530: 2620
In eerste instantie geen chocola van te maken maar het blijkt dat een register tot een maximale decimale waarde van 65535 gaat. Dus register 30530 heeft de total yield in Wh maar kan slechts maximaal 65535 Wh opslaan, vanaf dat moment begint hij weer bij 0. Register 30529 houd bij hoe vaak deze cyclus al doorlopen is.
Je komt dus uit op (55*65535)+2360 en dan kom je uit op 3607045 Wh oftewel 3607,045 kWh.

Weer wat geleerd vandaag :)

Morgen maar even een berekening toevoegen waarbij ik intern gebruik in kWh nu zeer nauwkeurig kan uitrekenen :)

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • +1 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
Promy schreef op vrijdag 10 april 2020 @ 13:39:
[...]

Ik heb inderdaad alles wat ik nodig had :9 , maar een link naar je laatste programma is natuurlijk altijd handig!

edit: ik was de lijst aan het bekijken en ik vroeg me af hoe je de aparte strings kan uitlezen.
Bv address 30773 is de DC power, maar bij de uitleg staan de verschillende strings (A1 , A2, B, ...) maar er komt maar 1 waarde terug?
code:
1
2
3
4
5
6
7
30769   DC current input [1]
30771   DC voltage input [1]
30773   DC power input [1]   (A1 en A2 zitten parallel aan elkaar intern)

30957   DC current input [2]
30959   DC voltage input [2]
30961   DC power input [2]  (B)

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • mkleinman
  • Registratie: Oktober 2001
  • Laatst online: 22:50

mkleinman

8kWp, WPB, ELGA 6

Topicstarter
Mochten er nog meer liefhebbers zijn om mede-auteur te worden van de openingspost, laat het mij via een DM even weten :)

Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.


Acties:
  • 0 Henk 'm!

  • PeeVv
  • Registratie: Oktober 2008
  • Laatst online: 23:43
Ik heb hier een oudere Stecagrid 3600 draaien die ik graag d.m.v. RS485 wil uitlezen bij gebrek aan een lan-aansluiting. Nu moet ik een HEX-code sturen waarna ik reactie krijg van de omvormer. Tot zo ver lukt dat, dit is dan de respons:

??AACPower:
?????J

De communicatie werkt dus, echter moet ik, vanwege het propriëtaire protocol van Stecagrid, iets zien te doen met de hex die ik terug krijg. Iemand een idee wat de vervolgstappen zijn? Ik werk op dit moment in Python. Daarnaast ben ik ook op zoek naar de te versturen hex waarden voor de verschillende soorten data die ik op kan vragen, heb nu via een obscuur Github-project alleen die van het huidige AC vermogen achterhaald. @Dracula78, jij hebt al wat meer ervaring hiermee zie ik, jij toevallig een idee?

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 19:31
PeeVv schreef op zondag 19 april 2020 @ 20:11:
Ik heb hier een oudere Stecagrid 3600 draaien die ik graag d.m.v. RS485 wil uitlezen bij gebrek aan een lan-aansluiting. Nu moet ik een HEX-code sturen waarna ik reactie krijg van de omvormer. Tot zo ver lukt dat, dit is dan de respons:

??AACPower:
?????J

De communicatie werkt dus, echter moet ik, vanwege het propriëtaire protocol van Stecagrid, iets zien te doen met de hex die ik terug krijg. Iemand een idee wat de vervolgstappen zijn? Ik werk op dit moment in Python. Daarnaast ben ik ook op zoek naar de te versturen hex waarden voor de verschillende soorten data die ik op kan vragen, heb nu via een obscuur Github-project alleen die van het huidige AC vermogen achterhaald. @Dracula78, jij hebt al wat meer ervaring hiermee zie ik, jij toevallig een idee?
Ik heb zelf een Stecagrid 3611 gehad, wat eigenlijk een Kostal Plenticore bleek te zijn. Misschien bij jou ook? En na lang zoeken vond ik kostal_modbusquery waarmee ik omvormer via modbus kon uitlezen. Ik deed dat via TCP/IP maar wellicht helpt dit je verder.

Acties:
  • 0 Henk 'm!

  • PeeVv
  • Registratie: Oktober 2008
  • Laatst online: 23:43
Kalentum schreef op zondag 19 april 2020 @ 21:17:
[...]


Ik heb zelf een Stecagrid 3611 gehad, wat eigenlijk een Kostal Plenticore bleek te zijn. Misschien bij jou ook? En na lang zoeken vond ik kostal_modbusquery waarmee ik omvormer via modbus kon uitlezen. Ik deed dat via TCP/IP maar wellicht helpt dit je verder.
Volgens mij is de 3611 net een andere serie dan de 3600. 3600 lijkt geen modbus te gebruiken.

Heb wel deze code voor een ESP8266 maar die lijkt niet goed te werken. Als ik dit op een NodeMCU zeg krijg ik alleen "No data received! Setting ACpower to 0.0 and returning FALSE..." terug.

Relevant stuk code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
byte request[] = {0x02, 0x01, 0x00, 0x10, 0x01, 0xC9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x29, 0x7E, 0x29, 0xBE, 0x03};   //This is the request to Steca for ACpower
  //Serial.println("Sending request to Steca...");
  ss2.write(request, sizeof(request));
  byte INVdata[31];  //buffer for storing the entire the StecaGrid answer
  for (byte i = 0; i < 31; i++) INVdata[i] = 0; //fill the array with zeros - so it is easier to detect erros later
  int data_length = 0;
  data_length = ss2.readBytes(INVdata, 31); // read Rx buffer as 31 byte array; note that the default timeout for this function is 1 second
  delay(20);  //important to wait until further data arrive
  while (ss2.available() > 0) { //empty the serial buffer from excessive data, if any
    ss2.read();
    delay(2);
  }
  if (data_length > 0) {   //if some data has been read
    if (INVdata[23] == 0x0B) {   //check the header; 0x0B means ACpower is > 0
      int iACpower = ((INVdata[26] << 8 | INVdata[24]) << 8 | INVdata[25]) << 7 ;   //"formula to float" conversion according to Steca
      fACpower = *((float*)&iACpower);  //convert HEX to float
      //Serial.println("fACpower from function: ");
      //Serial.println(fACpower);
    }

Ik heb dit grotendeels weten te vertalen naar Python, heb nu dit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
command = b'\x02\x01\x00\x10\x01\xC9\x65\x40\x03\x00\x01\x29\x7E\x29\xBE\x03'
ser.write(command)
INVdata = ser.read(31)

if len(INVdata) > 20:
    if int(INVdata[23].encode("hex"), 16) == 11:
        print("Omvormer levert terug!")

        //laatste stukje van de puzzel komt hier

        else:
    print("Omvormer offline?")

ser.close()

Het volgende gedeelte van de originele code kom ik niet uit:
code:
1
2
int iACpower = ((INVdata[26] << 8 | INVdata[24]) << 8 | INVdata[25]) << 7 ;   //"formula to float" conversion according to Steca
fACpower = *((float*)&iACpower);  //convert HEX to float

Helaas heb ik weinig ervaring met hex, dus geen flauw idee wat hier nu eigenlijk gebeurt, laat staan hoe ik het vertaal naar Python 8)7

Acties:
  • +1 Henk 'm!

  • Dracula78
  • Registratie: Februari 2002
  • Laatst online: 05-09 21:07
De volgende commando's heb ik destijds achterhaald d.m.v. een serial traffic logger.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
private static Dictionary<MeasurementType, byte[]> _commands = new Dictionary<MeasurementType, byte[]>()
    {
        { MeasurementType.NominalPower,   new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x1D, 0x72, 0x81, 0x70, 0x03 } },
        { MeasurementType.PanelPower,     new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x22, 0x77, 0xA3, 0x0B, 0x03 } },
        { MeasurementType.PanelVoltage,   new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x23, 0x78, 0xC9, 0x01, 0x03 } },
        { MeasurementType.PanelCurrent,   new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x24, 0x79, 0x11, 0x53, 0x03 } },
        { MeasurementType.ACPower,        new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x29, 0x7E, 0x29, 0xBE, 0x03 } },
        { MeasurementType.CurrentYield,   new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x3C, 0x91, 0x50, 0x2C, 0x03 } },
        { MeasurementType.GridValues,     new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x51, 0xA6, 0x65, 0x25, 0x03 } },
        { MeasurementType.TotalYield,     new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x64, 0x03, 0x00, 0x01, 0xF1, 0x46, 0x7D, 0x9C, 0x03 } },
        { MeasurementType.Time,           new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x64, 0x03, 0x00, 0x01, 0x05, 0x5A, 0x8B, 0xA1, 0x03 } },
        { MeasurementType.Flags,          new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x64, 0x03, 0x00, 0x01, 0x02, 0x57, 0x8B, 0xA1, 0x03 } },
    };


Hier zie je dus voor 10 verschillende commando's de reeks van 16 bytes die je over de seriële connectie moet sturen. Kun je bevestigen dat de ACPower overeenkomt met jouw bevinding?

Er zijn nog veel meer commando's, maar die zijn enkel gericht op het ophalen van historische dag/maand/jaar gegevens.

De respons bevat een gecodeerde waarde op byte positie 12-15 (geteld vanaf 0), en de decodering ervan verschilt per type commando.

TotalYield gebruikt een 'normale' IEEE754 codering. Ik zie dat ik hiervoor de volgende C# functies gebruik:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static float IntToFloat_IEEE754(int value) => BytesToFloat_IEEE754(BitConverter.GetBytes(value));
public static float BytesToFloat_IEEE754(byte[] bytes)
{
    int startIndex = 0;
    byte[] value = bytes;
    unsafe
    {
        fixed (byte* startAddress = &value[startIndex])
        {
            int num = (int)(*startAddress) | (int)(startAddress)[1] << 8 | (int)(startAddress)[2] << 16 | (int)(startAddress)[3] << 24;
            return *(float*)(&num);
        }
    }
}


Andere commando's gooien er nog een Steca proprietary bit shuffle overheen, waarbij de volgende extra C# functies helpen bij decodering:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static float BusToFloat(byte[] busBytes) => BusToFloat(BitConverter.ToInt32(busBytes.Reverse().ToArray(), 0));
public static float BusToFloat(int busValue) => BusToFloat(busValue, out _);
public static float BusToFloat(int busValue, out byte formula)
{
    int formulaPrefix = busValue;
    formula = (byte)(formulaPrefix >>= 24);
    busValue &= 0xFFFFFF;
    int lowPart = busValue & 0xFF;
    lowPart <<= 16;
    busValue >>= 8;
    busValue |= lowPart;
    busValue <<= 7;
    return IntToFloat_IEEE754(busValue);
}


Allemaal erg technisch, maar hoop dat je er wat aan hebt.

3720 Wp @ StecaGrid 3600 Coolcept PVOutput Tech-blog


Acties:
  • 0 Henk 'm!

  • Dogooder
  • Registratie: April 2004
  • Laatst online: 23:19

Dogooder

dus...

CasGas schreef op donderdag 12 maart 2020 @ 21:19:
Toch een crosspost vanuit een ander topic, maar dit blijft maar zoeken geblazen, dus hopelijk dat iemand hier er iets vanaf weet?

Misschien hier maar eens de vraag stellen. Ik ben al de hele dag opzoek om mijn omvormer uit te lezen maar ik kom er niet uit.
Wij hebben een nieuw huis gekocht en de vorige bewoner had deze omvormer in de schuur hangen. Blijkbaar nooit iets gedaan met uitlezen maar dat wil ik natuurlijk wel. Nu zit er op dit apparaat een rj45 poort dus maar meteen geprobeerd om het uit te lezen, maar blijkbaar de poort geeft ook helemaal geen link.

Op internet nog gezocht naar een type, maar ik kan er niks over vinden, Ik heb geen stikkers of andere dingen aan de buitenkant zitten, dus misschien dat iemand mij hier meer kan vertellen welke type dit is? Of hoe deze uberhaubt uit te lezen zou kunnen zijn?

[Afbeelding]
Die zou wel eens op die van mij kunnen lijken. RS-485 modbus via RJ-45 poort. Ik heb mijn uitleesscript al eerder eens gepost.

https://gathering.tweaker...message/58384146#58384146

Acties:
  • 0 Henk 'm!

  • PeeVv
  • Registratie: Oktober 2008
  • Laatst online: 23:43
Dracula78 schreef op zondag 19 april 2020 @ 22:29:
De volgende commando's heb ik destijds achterhaald d.m.v. een serial traffic logger.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
private static Dictionary<MeasurementType, byte[]> _commands = new Dictionary<MeasurementType, byte[]>()
    {
        { MeasurementType.NominalPower,   new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x1D, 0x72, 0x81, 0x70, 0x03 } },
        { MeasurementType.PanelPower,     new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x22, 0x77, 0xA3, 0x0B, 0x03 } },
        { MeasurementType.PanelVoltage,   new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x23, 0x78, 0xC9, 0x01, 0x03 } },
        { MeasurementType.PanelCurrent,   new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x24, 0x79, 0x11, 0x53, 0x03 } },
        { MeasurementType.ACPower,        new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x29, 0x7E, 0x29, 0xBE, 0x03 } },
        { MeasurementType.CurrentYield,   new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x3C, 0x91, 0x50, 0x2C, 0x03 } },
        { MeasurementType.GridValues,     new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x40, 0x03, 0x00, 0x01, 0x51, 0xA6, 0x65, 0x25, 0x03 } },
        { MeasurementType.TotalYield,     new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x64, 0x03, 0x00, 0x01, 0xF1, 0x46, 0x7D, 0x9C, 0x03 } },
        { MeasurementType.Time,           new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x64, 0x03, 0x00, 0x01, 0x05, 0x5A, 0x8B, 0xA1, 0x03 } },
        { MeasurementType.Flags,          new byte[] { 0x02, 0x01, 0x00, 0x10, 0x01, 0xc9, 0x65, 0x64, 0x03, 0x00, 0x01, 0x02, 0x57, 0x8B, 0xA1, 0x03 } },
    };


Hier zie je dus voor 10 verschillende commando's de reeks van 16 bytes die je over de seriële connectie moet sturen. Kun je bevestigen dat de ACPower overeenkomt met jouw bevinding?

Er zijn nog veel meer commando's, maar die zijn enkel gericht op het ophalen van historische dag/maand/jaar gegevens.

De respons bevat een gecodeerde waarde op byte positie 12-15 (geteld vanaf 0), en de decodering ervan verschilt per type commando.

TotalYield gebruikt een 'normale' IEEE754 codering. Ik zie dat ik hiervoor de volgende C# functies gebruik:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static float IntToFloat_IEEE754(int value) => BytesToFloat_IEEE754(BitConverter.GetBytes(value));
public static float BytesToFloat_IEEE754(byte[] bytes)
{
    int startIndex = 0;
    byte[] value = bytes;
    unsafe
    {
        fixed (byte* startAddress = &value[startIndex])
        {
            int num = (int)(*startAddress) | (int)(startAddress)[1] << 8 | (int)(startAddress)[2] << 16 | (int)(startAddress)[3] << 24;
            return *(float*)(&num);
        }
    }
}


Andere commando's gooien er nog een Steca proprietary bit shuffle overheen, waarbij de volgende extra C# functies helpen bij decodering:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static float BusToFloat(byte[] busBytes) => BusToFloat(BitConverter.ToInt32(busBytes.Reverse().ToArray(), 0));
public static float BusToFloat(int busValue) => BusToFloat(busValue, out _);
public static float BusToFloat(int busValue, out byte formula)
{
    int formulaPrefix = busValue;
    formula = (byte)(formulaPrefix >>= 24);
    busValue &= 0xFFFFFF;
    int lowPart = busValue & 0xFF;
    lowPart <<= 16;
    busValue >>= 8;
    busValue |= lowPart;
    busValue <<= 7;
    return IntToFloat_IEEE754(busValue);
}


Allemaal erg technisch, maar hoop dat je er wat aan hebt.
Hartelijk dank! Dit is waarschijnlijk precies wat ik nodig heb. C# naar Python moet te doen zijn, ik ga puzzelen!

-edit-
ACPower code komt inderdaad overeen met wat ik reeds had, dus de rest zal waarschijnlijk ook kloppen _/-\o_

Acties:
  • +1 Henk 'm!

  • Dracula78
  • Registratie: Februari 2002
  • Laatst online: 05-09 21:07
PeeVv schreef op zondag 19 april 2020 @ 22:32:
ACPower code komt inderdaad overeen met wat ik reeds had, dus de rest zal waarschijnlijk ook kloppen _/-\o_
Dat is een goed teken!

Ik gebruik Python zelf alleen als er echt geen andere optie is, dus daar kan ik je niet mee helpen.
Maar vrijwel alles wat je daar ziet zijn bitwise operaties die eenvoudig te vertalen moeten zijn.

Hier heb je wat test waardes voor je unittests:
0x0B, 0x9D, 0x82, 0x88 => 827.02
0x0B, 0x90, 0x00, 0x85 => 100.0

3720 Wp @ StecaGrid 3600 Coolcept PVOutput Tech-blog


Acties:
  • 0 Henk 'm!

  • PeeVv
  • Registratie: Oktober 2008
  • Laatst online: 23:43
Dracula78 schreef op zondag 19 april 2020 @ 22:55:
[...]


Dat is een goed teken!

Ik gebruik Python zelf alleen als er echt geen andere optie is, dus daar kan ik je niet mee helpen.
Maar vrijwel alles wat je daar ziet zijn bitwise operaties die eenvoudig te vertalen moeten zijn.

Hier heb je wat test waardes voor je unittests:
0x0B, 0x9D, 0x82, 0x88 => 827.02
0x0B, 0x90, 0x00, 0x85 => 100.0
Het was even flink puzzelen, maar met resultaat!
Afbeeldingslocatie: https://tweakers.net/i/M4p2nVIJvx5oWF0_72PlmVcW7jU=/800x/filters:strip_exif()/f/image/Z5M8iviVpkIY94GioZcyYOc7.png?f=fotoalbum_large

Hartelijk dank voor je hulp!

Acties:
  • 0 Henk 'm!

  • Jerrythafast
  • Registratie: September 2012
  • Laatst online: 22:00
In python heb je ook gewoon
code:
1
import struct

om binaire data te lezen. Al dat moeilijk leesbare bitwise gedoe is nergens voor nodig in python!

https://docs.python.org/3/library/struct.html

Acties:
  • +1 Henk 'm!

  • PeeVv
  • Registratie: Oktober 2008
  • Laatst online: 23:43
Jerrythafast schreef op maandag 20 april 2020 @ 13:29:
In python heb je ook gewoon
code:
1
import struct

om binaire data te lezen. Al dat moeilijk leesbare bitwise gedoe is nergens voor nodig in python!

https://docs.python.org/3/library/struct.html
Heb nu inderdaad ook struct gebruikt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
def decode_all(bytesarray):
    busValue = struct.unpack('L', bytesarray)[0]
    busValue = busValue & 0xFFFFFF
    lowPart = busValue & 0xFF
    lowPart = lowPart << 16
    busValue = busValue >> 8
    busValue = busValue | lowPart
    busValue = busValue << 7
    ieee754 = busValue.to_bytes(4, byteorder="little")
    num = ieee754[0] | ieee754[1] << 8 | ieee754[2] << 16 | ieee754[3] << 24
    packed_v = struct.pack('>l', num)
    return(struct.unpack('>f', packed_v)[0])


Geen flauw idee hoe het precies werkt, ik heb de C# code van @Dracula78 in Visual Studio gegooid en regel voor regel de waardes vergeleken tot ik hetzelfde in Python had 8)7

Acties:
  • 0 Henk 'm!

  • Jerrythafast
  • Registratie: September 2012
  • Laatst online: 22:00
Wauw, wel een bizar stukje bit shuffling zeg! Wat is dat voor gek 24-bits floating point formaat? Heb het nog niet eerder gezien. De eerste byte bevat dus 8 bits exponent, de twee bytes daarna vormen samen de hogere 16 bits van de mantisse en de vierde byte wordt genegeerd. Een sign bit lijkt er niet te zijn.

Hier is een iets korter opgeschreven versie van die functie:
Python:
1
2
3
4
def parse_float(bytesarray):
    lowPart, busValue, unusedByte = struct.unpack('<BHB', bytesarray)
    shiftedValue = ((lowPart << 16) | busValue) << 7
    return struct.unpack('<f', shiftedValue.to_bytes(4, byteorder="little"))[0]

Acties:
  • +1 Henk 'm!

  • PeeVv
  • Registratie: Oktober 2008
  • Laatst online: 23:43
Jerrythafast schreef op maandag 20 april 2020 @ 22:46:
Wauw, wel een bizar stukje bit shuffling zeg! Wat is dat voor gek 24-bits floating point formaat? Heb het nog niet eerder gezien. De eerste byte bevat dus 8 bits exponent, de twee bytes daarna vormen samen de hogere 16 bits van de mantisse en de vierde byte wordt genegeerd. Een sign bit lijkt er niet te zijn.

Hier is een iets korter opgeschreven versie van die functie:
Python:
1
2
3
4
def parse_float(bytesarray):
    lowPart, busValue, unusedByte = struct.unpack('<BHB', bytesarray)
    shiftedValue = ((lowPart << 16) | busValue) << 7
    return struct.unpack('<f', shiftedValue.to_bytes(4, byteorder="little"))[0]
Haha, je praat Russisch voor me, maar je code werkt perfect! Heb ondertussen ook een kapotte Mastervolt ES3.6TL van marktplaats gehaald, gerepareerd en uitgelezen (XML via de lan-interface), dat kostte minder tijd dan alleen het uitlezen van de Stecagrid voor elkaar krijgen 8)7

Acties:
  • 0 Henk 'm!

  • mkleinman
  • Registratie: Oktober 2001
  • Laatst online: 22:50

mkleinman

8kWp, WPB, ELGA 6

Topicstarter
PeeVv schreef op dinsdag 21 april 2020 @ 10:21:
[...]

Heb ondertussen ook een kapotte Mastervolt ES3.6TL van marktplaats gehaald, gerepareerd en uitgelezen (XML via de lan-interface), dat kostte minder tijd dan alleen het uitlezen van de Stecagrid voor elkaar krijgen 8)7
Is die interface lastig te ontcijferen? Heb je meer informatie voor mij hoe je die webinterface kan benaderen en hoe die XML er uit ziet? Dan ga ik een loggertje bouwen die deze interface kan uitlezen en dan kan ik dat weer toevoegen aan jSunnyreports :)

Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.


Acties:
  • +1 Henk 'm!

  • PeeVv
  • Registratie: Oktober 2008
  • Laatst online: 23:43
mkleinman schreef op dinsdag 21 april 2020 @ 10:33:
[...]


Is die interface lastig te ontcijferen? Heb je meer informatie voor mij hoe je die webinterface kan benaderen en hoe die XML er uit ziet? Dan ga ik een loggertje bouwen die deze interface kan uitlezen en dan kan ik dat weer toevoegen aan jSunnyreports :)
Als je omvormer een IP-adres heeft, kan je die bezoeken en dan zou je daar alle info moeten kunnen vinden. Nu kan je alle .html's vervangen voor .xml. De belangrijkste is dan http://[IP-adres]/monitoring.xml, dan krijg je een XML als deze:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" ?>
<piv>
    <currlang>0</currlang>
    <loginLevel>0</loginLevel>
    <sysstates>2,259,32768</sysstates>
    <WEB_REFRESH>8</WEB_REFRESH>
    <COUNTRYID>2</COUNTRYID>
    <InputDcVolt>327.8</InputDcVolt>
    <InputDcCurr>5.7</InputDcCurr>
    <InputDcPower>1857</InputDcPower>
    <RatingOutputPower>36</RatingOutputPower>
    <OutputAcPower>1774</OutputAcPower>
    <OutputAcPowerP>0</OutputAcPowerP>
    <OutputAcVolt>243.9</OutputAcVolt>
    <OutputAcCurr>7.4</OutputAcCurr>
    <OutputAcFreq>50.0</OutputAcFreq>
    <OutputAcPowerQ>0</OutputAcPowerQ>
    <OutputAcPowerS>1774</OutputAcPowerS>
    <Template>44</Template>
    <EnergyToday>2900</EnergyToday>
    <RuntimeToday>13526</RuntimeToday>
    <EnergyTotal>18237220</EnergyTotal>
    <RuntimeTotal>78873706</RuntimeTotal>
    <InsulationResistance>16101</InsulationResistance>
    <InverterStatus>
        <Fault>0    0   0   0   0   0   0   0</Fault>
        <Error>0    0   0   0   0</Error>
        <Warning>0  0   0</Warning>
        <State>27</State>
    </InverterStatus>
</piv>

Ik lees hem elke 10 seconden uit, dan is het gewoon een kwestie van de XML parsen in welke taal je wilt. "Template" in de XML is de temperatuur, energie is in Wh.

Acties:
  • +1 Henk 'm!

  • Jerrythafast
  • Registratie: September 2012
  • Laatst online: 22:00
PeeVv schreef op dinsdag 21 april 2020 @ 10:38:
code:
1
    <Template>44</Template>

"Template" in de XML is de temperatuur, energie is in Wh.
Hahaha pareltjes dit soort typfouten in code die zo naar buiten sijpelen >:)

Acties:
  • 0 Henk 'm!

  • Claes Maarten
  • Registratie: Augustus 2016
  • Laatst online: 12-09 21:55
Ik ben recentelijk gestart met het ontdekken van Node Red en zat zo een beetje rond te zoeken en te lezen en kwam ook langs in dit topic. Nu krijg ik de indruk dat je vanuit Node Red ook een SMA SB2,5 via modbus kunt benaderen en uitlezen. Interessant, maar hoe krijg ik dit voor elkaar? Heeft er iemand info of een link naar instructies? Ik krijg ze namelijk niet gevonden.
Kan dit door middel van de standaard blokjes tcp in, tcp out en tcp reqeust? Zo ja hoe vraag ik dan de info op uit het juiste register?

Ter info: Ik heb dus een SMA SB2,5 als PV omvormer, deze is ook netjes met mijn RPI verbonden waar SBFspot opdraait. Dus dat werkt 😊

Acties:
  • +1 Henk 'm!

  • Aegle
  • Registratie: November 2013
  • Laatst online: 14-09 12:43
@Claes Maarten: volgens mij weet @AUijtdehaag er wel het e.e.a.van.

33 x ET Solar 270Wp = 8910Wp @ SMA Sunny TriPower STP 8000TL-20 Live: PVOutput


Acties:
  • +1 Henk 'm!

  • Possible
  • Registratie: Mei 2002
  • Laatst online: 12-09 13:32
Inderdaad, @AUijtdehaag is daar de man voor!

Gasloos sinds 2020 - 3240wp-Z Live 5100wp-W Live 8340wp-Merged Live Altantic Explorer 200 Live


Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@Claes Maarten
Ik heb een werkende Node-red flow om via modbus tcp uit te lezen.
Ook eentje om de mqtt van SBFspot op te vangen en door te sturen naar influx.
Zal vanavond ff sturen via PM

Edit: niet meer nodig dus. ;)

[ Voor 9% gewijzigd door AUijtdehaag op 22-04-2020 10:08 ]

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • +1 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

@Claes Maarten
Afbeeldingslocatie: https://tweakers.net/i/ymloQiqP8f3aNvD_0ZEKKV6jiUI=/800x/filters:strip_exif()/f/image/iVUg8H9RMUVfmDYxf6Wt4wsS.png?f=fotoalbum_large

code:
1
[{"id":"7756da.c2a07928","type":"tab","label":"P1 + SMA Logging","disabled":false,"info":""},{"id":"eec48ef7.1e65a","type":"modbus-getter","z":"7756da.c2a07928","name":"Yield","showStatusActivities":true,"showErrors":true,"logIOActivities":false,"unitid":"3","dataType":"HoldingRegister","adr":"30529","quantity":"4","server":"84430495.b18c58","useIOFile":false,"ioFile":"","useIOForPayload":false,"x":450,"y":220,"wires":[["82aedfff.8a9f4"],[]]},{"id":"e6de8775.8d10c8","type":"modbus-getter","z":"7756da.c2a07928","name":"DC1 - AC","showStatusActivities":true,"showErrors":true,"logIOActivities":false,"unitid":"","dataType":"HoldingRegister","adr":"30769","quantity":"16","server":"84430495.b18c58","useIOFile":false,"ioFile":"","useIOForPayload":false,"x":460,"y":560,"wires":[["22c97d98.393f42","6301bae2.3f5074"],[]]},{"id":"2667525d.d4587e","type":"modbus-getter","z":"7756da.c2a07928","name":"Temp - DC2 - AC","showStatusActivities":false,"showErrors":false,"logIOActivities":false,"unitid":"","dataType":"HoldingRegister","adr":"30953","quantity":"26","server":"84430495.b18c58","useIOFile":false,"ioFile":"","useIOForPayload":false,"x":490.50000381469727,"y":320.00001335144043,"wires":[["e3742847.b7c648","b7dd203f.2d9fc"],[]]},{"id":"e3742847.b7c648","type":"function","z":"7756da.c2a07928","name":"Extract + Format SMA DC2","func":"let DCCurrent2 =    msg.payload[5] / 1000;      // 30957\nlet DCVoltage2 =    msg.payload[7] / 100;       // 30959\nlet DCPower2 =      msg.payload[9];             // 30961\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"energy\",\n\t\tfields: {\n\t\t\tcurrent: DCCurrent2,\n\t\t\tvoltage: DCVoltage2,\n\t\t\tpower: DCPower2,\n\t\t},\n\t\ttags:{\n\t\t    device: \"SMA 5.0 - MPPT A\",\n\t\t    orientation: \"West\",\n\t\t    type: \"DC\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":744.0000038146973,"y":282.00001335144043,"wires":[["97880c2a.6eb01"]]},{"id":"3adbb600.567eea","type":"function","z":"7756da.c2a07928","name":"OLD: Extract + Format SMA Yield","func":"let TotalYield = msg.payload[1] ;    // 30531\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"yield\",\n\t\tfields: {\n\t\t\ttotalyield: TotalYield,\n\t\t},\n\t\ttags:{\n\t\t    device: \"SMA 5.0 - System\",\n\t\t    direction: \"Internal Production\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":980,"y":60,"wires":[[]]},{"id":"290b2fe2.20b1d","type":"debug","z":"7756da.c2a07928","name":"Debug","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1848.5001773834229,"y":361.0000972747803,"wires":[]},{"id":"6301bae2.3f5074","type":"function","z":"7756da.c2a07928","name":"Extract + Format SMA DC1","func":"let DCCurrent1    = msg.payload[1] / 1000;       // 30769\nlet DCVoltage1    = msg.payload[3] / 100;        // 30771\nlet DCPower1      = msg.payload[5];              // 30773\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"energy\",\n\t\tfields: {\n\t\t\tcurrent: DCCurrent1,\n\t\t\tvoltage: DCVoltage1,\n\t\t\tpower: DCPower1, \n\t\t},\n\t\ttags:{\n\t\t    device: \"SMA 5.0 - MPPT B\",\n\t\t    orientation: \"East\",\n\t\t    type: \"DC\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":732.4999961853027,"y":598.9999866485596,"wires":[["1e17b172.7275df"]]},{"id":"8a66b781.4da878","type":"join","z":"7756da.c2a07928","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"8","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":1717.5000381469727,"y":360.0000343322754,"wires":[["290b2fe2.20b1d","af180fcb.2713"]]},{"id":"22c97d98.393f42","type":"function","z":"7756da.c2a07928","name":"Extract SMA AC","func":"let PowerTot      = msg.payload[7];              // 30775\nlet GridVoltagePhase1 = msg.payload[15] / 100;  // 30783\n\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n\t\t\tsma_ac_power_tot: PowerTot,\n\t\t\tsma_ac_voltage: GridVoltagePhase1,\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":760,"y":400,"wires":[["d1e04a8a.16dab8","fc0157c7.890438"]]},{"id":"b7dd203f.2d9fc","type":"function","z":"7756da.c2a07928","name":"Extract SMA AC + Temp","func":"let InternalTemperature = msg.payload[1] /10; // 30953\nlet ACCurrentL1 = msg.payload[25] / 1000;    // 30977\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n\t\t\tsma_temperature: InternalTemperature,\n\t\t\tsma_ac_currentL1: ACCurrentL1,\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":730,"y":340,"wires":[["d1e04a8a.16dab8"]]},{"id":"d1e04a8a.16dab8","type":"join","z":"7756da.c2a07928","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":954.5000534057617,"y":374.0000057220459,"wires":[["43b4944b.cfe70c","9c7ab38.1cb1e5"]]},{"id":"43b4944b.cfe70c","type":"function","z":"7756da.c2a07928","name":"Format SMA AC","func":"let _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"energy\",\n\t\tfields: {\n\t\t\tcurrent: msg.payload.sma_ac_currentL1,\n\t\t\tvoltage: msg.payload.sma_ac_voltage,\n\t\t\tpower: msg.payload.sma_ac_power_tot,\n\t\t},\n\t\ttags:{\n\t\t    device: \"SMA 5.0 - System\",\n\t\t    type: \"AC\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":1140,"y":400,"wires":[["7042bec2.84394"]]},{"id":"9c7ab38.1cb1e5","type":"function","z":"7756da.c2a07928","name":"Format SMA Temp","func":"let _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"temperature\",\n\t\tfields: {\n\t\t\ttemperature: msg.payload.sma_temperature,\n\t\t},\n\t\ttags:{\n\t\t    device: \"SMA 5.0 - System\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":1150,"y":340,"wires":[["7f250d9c.d6b234"]]},{"id":"af180fcb.2713","type":"influxdb batch","z":"7756da.c2a07928","influxdb":"27e18148.8340de","precision":"","retentionPolicy":"","name":"InfluxDB","x":1858.4999961853027,"y":302.0000743865967,"wires":[]},{"id":"1e17b172.7275df","type":"switch","z":"7756da.c2a07928","name":"Filter null","property":"payload.fields.power","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1332.4999961853027,"y":598.9999866485596,"wires":[["8a66b781.4da878"]]},{"id":"7f250d9c.d6b234","type":"switch","z":"7756da.c2a07928","name":"Filter null","property":"payload.fields.temperature","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1340,"y":340,"wires":[["8a66b781.4da878"]]},{"id":"7042bec2.84394","type":"switch","z":"7756da.c2a07928","name":"Filter null","property":"payload.fields.power","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1340,"y":400,"wires":[["8a66b781.4da878"]]},{"id":"97880c2a.6eb01","type":"switch","z":"7756da.c2a07928","name":"Filter null","property":"payload.fields.power","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1340,"y":280,"wires":[["8a66b781.4da878"]]},{"id":"d6aca862.f625e8","type":"function","z":"7756da.c2a07928","name":"Set totalyield filter value","func":"flow.set('totalyield_sma',msg.payload.fields.totalyield);","outputs":1,"noerr":0,"x":1590,"y":180,"wires":[[]]},{"id":"fa879f77.4baf9","type":"switch","z":"7756da.c2a07928","name":"Limit Repeating","property":"payload.fields.totalyield","propertyType":"msg","rules":[{"t":"neq","v":"totalyield_sma","vt":"flow"}],"checkall":"true","repair":false,"outputs":1,"x":1360,"y":220,"wires":[["d6aca862.f625e8","8a66b781.4da878"]]},{"id":"fb9defaf.71ff3","type":"inject","z":"7756da.c2a07928","name":"Reset totalyield filter","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":171.5,"y":58,"wires":[["3453826b.5f907e"]]},{"id":"3453826b.5f907e","type":"function","z":"7756da.c2a07928","name":"Reset totalyield filter value","func":"flow.set('totalyield',0);\nflow.set('gas',0);","outputs":1,"noerr":0,"x":486,"y":58,"wires":[[]]},{"id":"4b398d0a.a3d4b4","type":"switch","z":"7756da.c2a07928","name":"Filter invalid","property":"payload.fields.totalyield","propertyType":"msg","rules":[{"t":"lt","v":"200000","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1150,"y":220,"wires":[["fa879f77.4baf9"]]},{"id":"cb4f0568.7f1c48","type":"exec","z":"7756da.c2a07928","command":"smeterd","addpay":false,"append":"read-meter --serial-baudrate 115200 --show-output consumed current produced voltage --tsv","useSpawn":"false","timer":"5","oldrc":false,"name":"","x":455.4999885559082,"y":671.0000762939453,"wires":[["a5d9004b.b9b74"],[],[]]},{"id":"a5d9004b.b9b74","type":"function","z":"7756da.c2a07928","name":"Extract smeterd","func":"var payload = msg.payload\nvar clean_payload = msg.payload.trim();\n\nvar output = clean_payload.split('\\t');\n\n\nvar consumed_high = output[0];\nvar consumed_low = output[1];\nvar consumed_gas = output[2];\nvar produced_high = output[3];\nvar produced_low = output[4];\nvar current_consumption = output[5];\nvar current_production = output[6];\nvar current_voltage = output[7];\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        consumed_high: consumed_high,\n        consumed_low: consumed_low,\n        consumed_gas: consumed_gas,\n        produced_high: produced_high,\n        produced_low: produced_low,\n        current_consumption: current_consumption,\n        current_production: current_production,\n        current_voltage: current_voltage,\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":772.4999961853027,"y":858.9999866485596,"wires":[["572cb1c4.d6324","a21b3f99.78007","7582d8e5.0c4718","738333a1.49e76c","1bf75599.c1bb0a","fd89fd27.fb04c","322d7b8a.da34b4","87173f8d.eb97b","2775d582.eea69a","cfe0670a.b415e8","f303e6a6.68dd68","5f456372.16a02c"]]},{"id":"a21b3f99.78007","type":"function","z":"7756da.c2a07928","name":"Format P1 Consumption Low","func":"let consumed_low = msg.payload.consumed_low / 1000;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"yield\",\n\t\tfields: {\n\t\t\ttotalyield: consumed_low,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"Low\",\n\t\t    direction: \"Grid Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1412.4999961853027,"y":978.9999866485596,"wires":[["8a66b781.4da878"]]},{"id":"7582d8e5.0c4718","type":"function","z":"7756da.c2a07928","name":"Format P1 Consumption High","func":"let consumed_high = msg.payload.consumed_high / 1000;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"yield\",\n\t\tfields: {\n\t\t\ttotalyield: consumed_high,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"High\",\n\t\t    direction: \"Grid Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1422.4999961853027,"y":1018.9999866485596,"wires":[["8a66b781.4da878"]]},{"id":"1bf75599.c1bb0a","type":"function","z":"7756da.c2a07928","name":"Format P1 Production Low","func":"let produced_high = msg.payload.produced_high / 1000;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"yield\",\n\t\tfields: {\n\t\t\ttotalyield: produced_high,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"Low\",\n\t\t    direction: \"Grid Production\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1412.4999961853027,"y":1118.9999866485596,"wires":[["8a66b781.4da878"]]},{"id":"fd89fd27.fb04c","type":"function","z":"7756da.c2a07928","name":"Format P1 Production High","func":"let produced_low = msg.payload.produced_low / 1000;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"yield\",\n\t\tfields: {\n\t\t\ttotalyield: produced_low,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"High\",\n\t\t    direction: \"Grid Production\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1412.4999961853027,"y":1158.9999866485596,"wires":[["8a66b781.4da878"]]},{"id":"2775d582.eea69a","type":"function","z":"7756da.c2a07928","name":"Extract P1 Power","func":"let current_voltage = msg.payload.current_voltage\nlet current_consumption = msg.payload.current_consumption\nlet current_production = msg.payload.current_production\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n\t\t\tp1_ac_power_usage: Number(current_consumption),\n\t\t\tp1_ac_power_delivery: Number(current_production),\n\t\t\tp1_ac_voltage: Number(current_voltage),\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":770.5002059936523,"y":697.4999847412109,"wires":[["84a802bd.23e6d","c1c79824.373528","89ffe83e.9f1548","fc0157c7.890438"]]},{"id":"84a802bd.23e6d","type":"function","z":"7756da.c2a07928","name":"Format P1 Net Consumption","func":"let _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"energy\",\n\t\tfields: {\n\t\t\tvoltage: msg.payload.p1_ac_voltage,\n\t\t\tpower: msg.payload.p1_ac_power_usage - msg.payload.p1_ac_power_delivery,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    type: \"AC\",\n\t\t    direction: \"Grid Net Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":1212.4999961853027,"y":698.9999866485596,"wires":[["8a66b781.4da878"]]},{"id":"738333a1.49e76c","type":"function","z":"7756da.c2a07928","name":"Format P1 Consumption Total","func":"let consumed_high = msg.payload.consumed_high / 1000;\nlet consumed_low = msg.payload.consumed_low / 1000;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"yield\",\n\t\tfields: {\n\t\t\ttotalyield: consumed_high + consumed_low,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"Total\",\n\t\t    direction: \"Grid Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1422.4999961853027,"y":1058.9999866485596,"wires":[["8a66b781.4da878"]]},{"id":"322d7b8a.da34b4","type":"function","z":"7756da.c2a07928","name":"Format P1 Production Total","func":"let produced_low = msg.payload.produced_low / 1000;\nlet produced_high = msg.payload.produced_high / 1000;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"yield\",\n\t\tfields: {\n\t\t\ttotalyield: produced_low + produced_high,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"Total\",\n\t\t    direction: \"Grid Production\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1412.4999961853027,"y":1198.9999866485596,"wires":[["8a66b781.4da878"]]},{"id":"87173f8d.eb97b","type":"function","z":"7756da.c2a07928","name":"Format P1 Net Consumption Total","func":"let consumed_low = msg.payload.consumed_low / 1000;\nlet consumed_high = msg.payload.consumed_high / 1000;\nlet produced_low = msg.payload.produced_low / 1000;\nlet produced_high = msg.payload.produced_high / 1000;\n\nlet TotalUsage = consumed_low + consumed_high;\nlet TotalDelivery = produced_low + produced_high;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"yield\",\n\t\tfields: {\n\t\t\ttotalyield: TotalUsage - TotalDelivery,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"Total\",\n\t\t    direction: \"Grid Net Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1432.4999961853027,"y":1338.9999866485596,"wires":[["8a66b781.4da878"]]},{"id":"572cb1c4.d6324","type":"function","z":"7756da.c2a07928","name":"Format P1 Gas","func":"let consumed_gas = msg.payload.consumed_gas / 1000;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"gas\",\n\t\tfields: {\n\t\t\ttotalyield: consumed_gas,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    direction: \"Grid Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1172.4999961853027,"y":858.9999866485596,"wires":[["6cb3edd2.321ea4"]]},{"id":"c1c79824.373528","type":"function","z":"7756da.c2a07928","name":"Format P1 Consumption","func":"let _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"energy\",\n\t\tfields: {\n\t\t\tvoltage: msg.payload.p1_ac_voltage,\n\t\t\tpower: msg.payload.p1_ac_power_usage,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    type: \"AC\",\n\t\t    direction: \"Grid Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":1202.4999961853027,"y":738.9999866485596,"wires":[["d5c9153c.0cb918"]]},{"id":"89ffe83e.9f1548","type":"function","z":"7756da.c2a07928","name":"Format P1 Production","func":"let _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"energy\",\n\t\tfields: {\n\t\t\tvoltage: msg.payload.p1_ac_voltage,\n\t\t\tpower: msg.payload.p1_ac_power_delivery*-1,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    type: \"AC\",\n\t\t    direction: \"Grid Production\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":1192.4999961853027,"y":778.9999866485596,"wires":[["224570fd.c5023"]]},{"id":"d5c9153c.0cb918","type":"switch","z":"7756da.c2a07928","name":"Filter null","property":"payload.fields.power","propertyType":"msg","rules":[{"t":"neq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1432.4999961853027,"y":738.9999866485596,"wires":[["8a66b781.4da878"]]},{"id":"224570fd.c5023","type":"switch","z":"7756da.c2a07928","name":"Filter null","property":"payload.fields.power","propertyType":"msg","rules":[{"t":"neq","v":"","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1432.4999961853027,"y":778.9999866485596,"wires":[["8a66b781.4da878"]]},{"id":"a854d0c0.09489","type":"function","z":"7756da.c2a07928","name":"Format Internal Consumption","func":"grid_consumption = msg.payload.p1_ac_power_usage;\ngrid_production = msg.payload.p1_ac_power_delivery;\n\ninternal_production = msg.payload.sma_ac_power_tot;\nif(internal_production == null)\n{\n    internal_production = 0;\n}\n\nnet_grid = grid_consumption - grid_production;\nnet_internal_consumption = internal_production + net_grid;\n\n\n\n\n_msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"energy\",\n\t\tfields: {\n\t\t\tvoltage: msg.payload.p1_ac_voltage,\n\t\t\tpower: net_internal_consumption,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    type: \"AC\",\n\t\t    direction: \"Internal Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\nreturn _msg;","outputs":1,"noerr":0,"x":1212.4999961853027,"y":658.9999866485596,"wires":[["8a66b781.4da878"]]},{"id":"fc0157c7.890438","type":"join","z":"7756da.c2a07928","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1002.4999961853027,"y":658.9999866485596,"wires":[["a854d0c0.09489"]]},{"id":"efe46d48.f4459","type":"function","z":"7756da.c2a07928","name":"Create Timestamp","func":"let _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n\t\ttimestamp: new Date(),\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":190,"y":260,"wires":[["43ea38a0.da2d88"]]},{"id":"43ea38a0.da2d88","type":"change","z":"7756da.c2a07928","name":"Set Timestamp","rules":[{"t":"move","p":"payload.timestamp","pt":"msg","to":"timestamp","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":244.28905487060547,"y":320.3437786102295,"wires":[["eec48ef7.1e65a","2667525d.d4587e","e6de8775.8d10c8","cb4f0568.7f1c48"]]},{"id":"6cb3edd2.321ea4","type":"switch","z":"7756da.c2a07928","name":"Limit Repeating","property":"payload.fields.totalyield","propertyType":"msg","rules":[{"t":"neq","v":"gas","vt":"flow"}],"checkall":"true","repair":false,"outputs":1,"x":1412.4999961853027,"y":858.9999866485596,"wires":[["9cb9e059.073ea","8a66b781.4da878"]]},{"id":"9cb9e059.073ea","type":"function","z":"7756da.c2a07928","name":"Set totalyield filter value","func":"flow.set('gas',msg.payload.fields.totalyield);","outputs":1,"noerr":0,"x":1402.4999961853027,"y":918.9999866485596,"wires":[[]]},{"id":"1680367.9ef68ca","type":"interval","z":"7756da.c2a07928","name":"interval","interval":10,"onstart":false,"msg":"ping","showstatus":true,"unit":"seconds","statusformat":"YYYY-MM-D HH:mm:ss","x":90,"y":200,"wires":[["efe46d48.f4459"]]},{"id":"f303e6a6.68dd68","type":"function","z":"7756da.c2a07928","name":"Format P1 Net Consumption Low","func":"let consumed_low = msg.payload.consumed_low / 1000;\nlet produced_low = msg.payload.produced_low / 1000;\n\nlet TotalUsage = consumed_low;\nlet TotalDelivery = produced_low;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"yield\",\n\t\tfields: {\n\t\t\ttotalyield: TotalUsage - TotalDelivery,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"Low\",\n\t\t    direction: \"Grid Net Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1432.4999961853027,"y":1258.9999866485596,"wires":[["8a66b781.4da878"]]},{"id":"cfe0670a.b415e8","type":"function","z":"7756da.c2a07928","name":"Format P1 Net Consumption High","func":"let consumed_high = msg.payload.consumed_high / 1000;\nlet produced_high = msg.payload.produced_high / 1000;\n\nlet TotalUsage = consumed_high;\nlet TotalDelivery = produced_high;\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"yield\",\n\t\tfields: {\n\t\t\ttotalyield: TotalUsage - TotalDelivery,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    rate: \"High\",\n\t\t    direction: \"Grid Net Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1432.4999961853027,"y":1298.9999866485596,"wires":[["8a66b781.4da878"]]},{"id":"bdd03ee.52ad6c","type":"function","z":"7756da.c2a07928","name":"Format SMA Yield","func":"let _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n        measurement: \"yield\",\n\t\tfields: {\n\t\t\ttotalyield: msg.payload.totalyield,\n\t\t},\n\t\ttags:{\n\t\t    device: \"SMA 5.0 - System\",\n\t\t    direction: \"Internal Production\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":950,"y":220,"wires":[["4b398d0a.a3d4b4"]]},{"id":"5f456372.16a02c","type":"join","z":"7756da.c2a07928","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":950,"y":500,"wires":[["a19b53ef.27d4"]]},{"id":"82aedfff.8a9f4","type":"function","z":"7756da.c2a07928","name":"CalculateYield","func":"let yieldCycle = msg.payload[0];    // 30531\nlet yieldCycleValue = 65535;    // 30531\nlet yieldCurrent = msg.payload[1];\n\nlet TotalYieldwH = (yieldCycle * yieldCycleValue) + yieldCurrent;\nlet TotalYield = TotalYieldwH / 1000;\n\nlet _msg = {\n    payload:[]\n};\n\n_msg.payload=\n    {\n      totalyield: TotalYield,\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":700,"y":220,"wires":[["bdd03ee.52ad6c","5f456372.16a02c"]]},{"id":"eb9c1f82.981a5","type":"function","z":"7756da.c2a07928","name":"Format Internal Consumption","func":"internal_consumption = msg.payload.direct_consumption + msg.payload.net_consumption;\n\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"yield\",\n\t\tfields: {\n\t\t\ttotalyield: internal_consumption,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    direction: \"Internal Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1280,"y":460,"wires":[["8a66b781.4da878"]]},{"id":"bf795271.7b1cd","type":"function","z":"7756da.c2a07928","name":"Combine Data","func":"start_sma_production = 1586.28; //Value of SMA production at installation of new meter\nnet_production_wh = (Number(msg.payload.produced_high) + Number(msg.payload.produced_low));\nnet_consumption_wh = (Number(msg.payload.consumed_high) + Number(msg.payload.consumed_low));\nnet_consumption = net_consumption_wh / 1000;\nnet_production = net_production_wh / 1000;\nsma_production = msg.payload.totalyield - start_sma_production;\ndirect_consumption = sma_production - net_production;\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        net_consumption: net_consumption,\n        net_production: net_production,\n        sma_production: sma_production,\n        direct_consumption: direct_consumption,\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1300,"y":500,"wires":[["eb9c1f82.981a5","2ea13653.c3599a"]]},{"id":"2ea13653.c3599a","type":"function","z":"7756da.c2a07928","name":"Format Direct Consumption","func":"direct_consumption = msg.payload.direct_consumption;\n\n\nlet _msg = {\n    payload: []\n};\n\n_msg.payload=\n    {\n        measurement: \"yield\",\n\t\tfields: {\n\t\t\ttotalyield: direct_consumption,\n\t\t},\n\t\ttags:{\n\t\t    device: \"P1\",\n\t\t    direction: \"Direct  Consumption\",\n\t\t},\n\t\ttimestamp: flow.get('timestamp')\n\t}\n\n\nreturn _msg;","outputs":1,"noerr":0,"x":1280,"y":540,"wires":[["8a66b781.4da878"]]},{"id":"a19b53ef.27d4","type":"switch","z":"7756da.c2a07928","name":"Filter Invalid","property":"payload.totalyield","propertyType":"msg","rules":[{"t":"lt","v":"200000","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":1110,"y":500,"wires":[["bf795271.7b1cd"]]},{"id":"84430495.b18c58","type":"modbus-client","z":"","name":"SMA","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":true,"tcpHost":"10.5.0.70","tcpPort":"502","tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":"3","commandDelay":"1","clientTimeout":"1500","reconnectTimeout":"2000"},{"id":"27e18148.8340de","type":"influxdb","z":"","hostname":"127.0.0.1","port":"8086","protocol":"http","database":"SMA","name":"","usetls":false,"tls":"b2a3d022.4f648"},{"id":"b2a3d022.4f648","type":"tls-config","z":"","name":"local-tls","cert":"","key":"","ca":"","certname":"","keyname":"","caname":"","verifyservercert":false}]


Ik combineer hierbij de data van mijn SMA tezamen met de data van mijn slimme meter om zo ook het interne verbruik en directe verbruik uit te lezen. Daarmee krijg je inzichtelijk hoeveel watt en kWh je huis op elk moment verbruikt en hoeveel kWh van opwekking je direct zelf gebruikt.

Er zitten een aantal handigheidjes in zoals het filteren van invalide data en het filteren van 0 waarden. Waar je met modbus rekening mee moet houden is dat een error vaak door kan komen als 65535, wat de maximale waarde van een veld is. Daar moet je dan niet mee gaan rekenen want dan krijg je opeens een verbruik van 4 miljoen kWh op een dag. En dat verwijderen is met InfluxDB heel pijnlijk ;(

Note: Ik heb in de Combine Data node een SMA startwaarde gedefinieerd aangezien die opgeleverd was voor mijn slimme meter geplaatst werd:
code:
1
start_sma_production = 1586.28; //Value of SMA production at installation of new meter



Zoek trouwens even op mijn naam en je vind eerdere iteraties van mijn flow, die waren wat simpeler :+
Je kan hier ook de hele slimme meter logica uithalen en je hebt dan enkel de zonnepanelen data over.

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • DRuw
  • Registratie: November 2009
  • Laatst online: 18-08 20:36

DRuw

Bacardi Bat on Ice:)

Pino112 schreef op woensdag 26 februari 2020 @ 10:01:
[...]

Qua code weet ik, heb al code voor Solax gevonden. Ging me nu even om de hardware. Zie nu inderdaad dat alleen de IDE van Arduino nodig is ja (staat bij requirements), overheen gelezen.


[...]

Had meerdere webshops bezocht/gezocht, deze nog niet. Dan lijkt me dat deze hetzelfde is, die is idd op voorraad. Dank.
Hey Pino, heb je het met dat bordje voor elkaar gekregen?
Ik ben loggen via m'n pi zat en ga nu m'n goodwe ook proberen uit te lezen met deze module en een nodemcu.
Ben benieuwd!

Deze signature is om volstrekt onduidelijke redenen verwijderd. PVOutput


Acties:
  • 0 Henk 'm!

  • Claes Maarten
  • Registratie: Augustus 2016
  • Laatst online: 12-09 21:55
@AUijtdehaag en @Tsurany
bedankt voor het delen. Ik ga hier eens mee aan de slag.
Het SM gedeelte laat ik er uit omdat ik er nog geen een heb. Dat van die errors is een goede om te weten.
Zit er eigenlijk nog echt verschil tussen influxdb en sqlite? Of is dit een kwestie van persoonlijke voorkeur? Ik gebruik nu sqlite.

[ Voor 58% gewijzigd door Claes Maarten op 22-04-2020 17:09 ]


Acties:
  • 0 Henk 'm!

  • Wiley99
  • Registratie: Juni 2014
  • Laatst online: 23:32
Claes Maarten schreef op woensdag 22 april 2020 @ 17:01:
@AUijtdehaag en @Tsurany
bedankt voor het delen. Ik ga hier eens mee aan de slag.
Het SM gedeelte laat ik er uit omdat ik er nog geen een heb. Dat van die errors is een goede om te weten.
Zit er eigenlijk nog echt verschil tussen influxdb en sqlite? Of is dit een kwestie van persoonlijke voorkeur? Ik gebruik nu sqlite.
Sqlite is een lichte variant van een klassieke relationele database met tabellen, rijen en kolommen. Daarin kun je zowat alles opslaan wat zich op die manier relationeel laat uitdrukken. Het vereist wel wat database kennis om de juiste structuren (indices) op te bouwen vooral als ie groot wordt (performance enz)
Influxdb is een time series database, vooral gericht op het opslaan van bijv. IoT gegevens die in de loop van de tijd wijzigen. Alles wat dus tijdafhankelijk is laat zich veel makkelijker in een time series database opslaan. Elk punt is een tijdstip, gegevensvelden en tags.
Daarom is het ook weer veel makkelijker om het eruit te halen in de vorm van grafieken en tabellen, bijvoorbeeld in Grafana.

A polar bear is a rectangular bear after a coordinate transform - Never attribute to malice that which is adequately explained by stupidity


Acties:
  • 0 Henk 'm!

  • Pino112
  • Registratie: November 2007
  • Laatst online: 18:55
DRuw schreef op woensdag 22 april 2020 @ 15:04:
[...]

Hey Pino, heb je het met dat bordje voor elkaar gekregen?
Ik ben loggen via m'n pi zat en ga nu m'n goodwe ook proberen uit te lezen met deze module en een nodemcu.
Ben benieuwd!
Nee nog niet, maar dat ligt denk ik meer aan het feit dat ik een Solax inverter heb. Krijg er met geen mogelijkheid een verbinding naartoe.

[ Voor 6% gewijzigd door Pino112 op 22-04-2020 19:33 ]


Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
Pino112 schreef op woensdag 22 april 2020 @ 19:33:
[...]


Nee nog niet, maar dat ligt denk ik meer aan het feit dat ik een Solax inverter heb. Krijg er met geen mogelijkheid een verbinding naartoe.
En 'scrapen' via de solaxcloud vind je niks?

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • DRuw
  • Registratie: November 2009
  • Laatst online: 18-08 20:36

DRuw

Bacardi Bat on Ice:)

Pino112 schreef op woensdag 22 april 2020 @ 19:33:
[...]


Nee nog niet, maar dat ligt denk ik meer aan het feit dat ik een Solax inverter heb. Krijg er met geen mogelijkheid een verbinding naartoe.
Ik krijg morgen hetzelfde spul binnen dus ik hoop dat ik weekend het ding heb werken.
Volgens die webshop is het hetzelfde ding als degene die hier succesvol is gebruikt.
Ik laat het weten!

Deze signature is om volstrekt onduidelijke redenen verwijderd. PVOutput


Acties:
  • 0 Henk 'm!

  • Pino112
  • Registratie: November 2007
  • Laatst online: 18:55
Ja dat kan ook nog als het via RS485 echt niet gaat lukken. Had ook al mailcontact met Solax zelf, een of andere engineer uit China die antwoordt dat het ook via een API kan. Ja dat was mijn vraag niet, toch bijzonder aangezien in de diverse handleidingen staat dat RS485 gewoon moet kunnen.

Dan moet ik voor de cloud alleen die Wifi-dongle nog hebben.

Acties:
  • 0 Henk 'm!

  • DRuw
  • Registratie: November 2009
  • Laatst online: 18-08 20:36

DRuw

Bacardi Bat on Ice:)

@Pino112 ik heb nu hetzelfde spul als jij heb waarschijnlijk maar de converter is wel anders.
Die andere heeft automatisch RX/TX duplex switcher (dmv 74HC040) wordt lastig met onze RE/DE anders zou deze HOOG/LAAG gemaakt moeten worden met een extra regel in de software.
Quote van domoticx:)
Is dit makkelijk te doen @CodeIT ?

Deze signature is om volstrekt onduidelijke redenen verwijderd. PVOutput


Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
Kan iemand mij helpen met het uitlezen van een AEG omvormer. AEG AS-IR01 series. Er zit een WiFi stick bij en via een ip adres kan ik inloggen in de omvormer.

Acties:
  • 0 Henk 'm!

  • DRuw
  • Registratie: November 2009
  • Laatst online: 18-08 20:36

DRuw

Bacardi Bat on Ice:)

Verrek, na mijn kast open te hebben gemaakt nergens die busaansluiting te vinden en mijn wifi zit gewoon vastgesoldeerd aan de printplaat.
Tot zover mijn nodemcu met converter die ik helemaal klaar had liggen.
Moet nu toch een pi worden via USB vrees ik.
Man ik baal.
Ik heb dus een goodwe gw4200ds die er dus in meerdere uitvoeringen schijnt te zijn...

Deze signature is om volstrekt onduidelijke redenen verwijderd. PVOutput


Acties:
  • 0 Henk 'm!

  • maykoga
  • Registratie: Juni 2009
  • Laatst online: 31-08 17:47
Hoe kun je gemakkelijk je 3 fase spanningen en stromen, verbruiken vanuit je P1 loggen? Kan dat op seconde basis?

Doe je dit met een arduino of raspberry pi het liefst? Waar vind ik goede handleidingen?

Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

maykoga schreef op maandag 27 april 2020 @ 22:53:
Hoe kun je gemakkelijk je 3 fase spanningen en stromen, verbruiken vanuit je P1 loggen? Kan dat op seconde basis?

Doe je dit met een arduino of raspberry pi het liefst? Waar vind ik goede handleidingen?
Daar is een heel topic voor: Slimme meter uitlezen via P1-poort

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
Hoe kan ik een AEG omvormer uitlezen. Niet via de app, maar zelf de gegevens ergens opslaan. Er zit een WiFi stick aan. Ik kan in de webinterface van de omvormer komen.

Acties:
  • 0 Henk 'm!

  • ZwarteIJsvogel
  • Registratie: Juni 2008
  • Laatst online: 14-09 12:25

ZwarteIJsvogel

Zuid-Limburg

Inverter schreef op dinsdag 28 april 2020 @ 19:29:
Hoe kan ik een AEG omvormer uitlezen. Niet via de app, maar zelf de gegevens ergens opslaan. Er zit een WiFi stick aan. Ik kan in de webinterface van de omvormer komen.
https://github.com/mlooise/aeg-inverter-monitor

Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
Kun je in het kort uitleggen hoe ik dit moet installeren? Node.js staat al op mijn Windows PC.

Acties:
  • 0 Henk 'm!

  • ZwarteIJsvogel
  • Registratie: Juni 2008
  • Laatst online: 14-09 12:25

ZwarteIJsvogel

Zuid-Limburg

Inverter schreef op woensdag 29 april 2020 @ 18:53:
Kun je in het kort uitleggen hoe ik dit moet installeren? Node.js staat al op mijn Windows PC.
Geen idee. Ik gebruik het zelf niet. Die link had ik toevallig nog ergens staan.

Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

Inverter schreef op woensdag 29 april 2020 @ 18:53:
[...]

Kun je in het kort uitleggen hoe ik dit moet installeren? Node.js staat al op mijn Windows PC.
Het is geen Node.js maar een Node-RED flow die gebruik lijkt te maken van Modbus. Dan moet je eigenlijk even opzoeken welke modbus registers de AEG gebruikt en dan kan je de programmeertaal van je voorkeur gebruiken.

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
Ik denk dat ik het hier maar bij laat. Erg ingewikkeld allemaal. Ik dacht dat hier misschien wel iemand is die he5 in Jip en Janneke taal kan uitleggen.

Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
Misschien dat de ontwikkelaar MLOOISE wil reageren.

Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
Ik heb inmiddels Node-RED dashboard op mijn PC. En nu?

Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@Inverter hamburger - manage pallette - install

en dan een voor een de volgende: (staat ook op die pagina https://github.com/mlooise/aeg-inverter-monitor)
node-red-contrib-modbus
node-red-contrib-moment
node-red-contrib-time-range-switch
node-red-dashboard
installeren.

En dan kopieer je de tekst: (raw)
https://github.com/mloois...b/develop/monitor-aeg.txt

en hamburger menu - import - de tekst - import

Dan zul je nog wat aan moeten passen in het ip adres van de server die je vind in de subflow (links boven en dubbel klikken) en dan op bijv. get 5790 dubbelklikken om het ip adres van de server te kunnen wijzigen. (achter host)

En pv output alle gegevens invullen (apikey en systemid van je systeem in pvoutput) in de flow.
En dan deploy

Suc6.
Ik heb geen AEG dus ik kan het niet testen. (en welkom op tweakers, waar ze verwachten dat je zelf eerst dingen uitzoekt en dan pas vragen gaat stellen als je er niet uitkomt. ;) )

[ Voor 19% gewijzigd door AUijtdehaag op 29-04-2020 21:02 ]

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
Ik ga het morgen eens proberen. Kijken of het lukt. Je hoort van mij. Alvast bedankt voor de medewerking.

Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
AUijtdehaag schreef op woensdag 29 april 2020 @ 20:53:
@Inverter hamburger - manage pallette - install

en dan een voor een de volgende: (staat ook op die pagina https://github.com/mlooise/aeg-inverter-monitor)
node-red-contrib-modbus
node-red-contrib-moment
node-red-contrib-time-range-switch
node-red-dashboard
installeren.

En dan kopieer je de tekst: (raw)
https://github.com/mloois...b/develop/monitor-aeg.txt

en hamburger menu - import - de tekst - import

Dan zul je nog wat aan moeten passen in het ip adres van de server die je vind in de subflow (links boven en dubbel klikken) en dan op bijv. get 5790 dubbelklikken om het ip adres van de server te kunnen wijzigen. (achter host)

En pv output alle gegevens invullen (apikey en systemid van je systeem in pvoutput) in de flow.
En dan deploy

Suc6.
Ik heb geen AEG dus ik kan het niet testen. (en welkom op tweakers, waar ze verwachten dat je zelf eerst dingen uitzoekt en dan pas vragen gaat stellen als je er niet uitkomt. ;) )
Ik ben zover dat ik het ip adres moet aanpassen. Hoe sla ik dit nu op want als ik dashboard afsluit en de volgende keer open ben ik alles kwijt.

Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@Inverter Deploy?

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
Gelukt. Hoe kan ik het programma testen en waar kan ik het resultaat, de data, zien.

Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

Inverter schreef op donderdag 30 april 2020 @ 09:22:
[...]

Gelukt. Hoe kan ik het programma testen en waar kan ik het resultaat, de data, zien.
De trigger van de code is elke vijf minuten. Dus na vijf minuten zou je data moeten zien in je pvoutput omgeving.

Wellicht handig om wat Node-RED tutorials te bekijken? YouTube: Intro to Node-RED: Part 1 Fundamentals

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
En een debug erachter plaatsen waar je wat wilt uitlezen, om te kijken of er wel data door gaat.

[ Voor 21% gewijzigd door AUijtdehaag op 30-04-2020 09:33 ]

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
Ik zie data voorbijkomen. Dus het werkt wel. Nog niet naar PV output. Dat moet ik nog goed instellen. Me registreren bij PV output. Volgens het programma zou ik de gegevens ook grafisch op mijn pc kunnen zien. Hoe moet dit. Ik ben jullie dankbaar voor de tips.

Acties:
  • +2 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
Ik heb het inmiddels voor elkaar dat het werkt en er gegevens naar PV Ouput gaan.

Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@Inverter Nou volgende stap is zo eentje met emmc ubuntu (linux) kaartje.
Dan kan die windows desktop ook weer uit.

(heb er 2 besteld en er kwam nog 59 euro douane kosten achteraan :'( )

[ Voor 27% gewijzigd door AUijtdehaag op 30-04-2020 11:36 ]

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
Grafisch zie ik nu ook wat. Iedereen bedankt voor de medewerking en tips. Wil ik nog wat weten dan weet ik jullie te vinden.

Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
Ik krijg na een aantal minuten de volgende meldingen. Wat kan er aan de hand zijn?

30 Apr 13:58:54 - [warn] [modbus-getter:Get 5790(16)] Modbus Failure On State sending Get More About It By Logging
30 Apr 13:58:54 - [warn] [modbus-getter:Get 5704(20)] Modbus Failure On State sending Get More About It By Logging
30 Apr 13:58:54 - [warn] [modbus-getter:Get 5776(14)] Modbus Failure On State sending Get More About It By Logging
30 Apr 13:58:54 - [warn] [modbus-client:invter] sequential dequeue command not possible
30 Apr 13:58:55 - [warn] [modbus-client:invter] sequential dequeue command not possible

Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
De @Inverter heeft slechte wifi?

[ Voor 18% gewijzigd door AUijtdehaag op 30-04-2020 14:31 ]

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
De omvormer is voorzien van een wifi stick. Deze zend een eigen WiFi netwerk uit, genaamd AEG. Mijn MacBook heb ik verbonden met dit WiFi punt. Vanuit mijn MacBook ga ik bedraad naar mijn router. Na enige minuten gaat het dan mis. Ben ik alleen verbonden met het AEG WiFi dan blijft het programma draaien. Er wordt dan natuurlijk niets naar PVoutput gestuurd, maar dat is begrijpelijk. En dan nog een andere vraag, kan ik de data ook naar een Excel bestand of zoiets sturen.

[ Voor 88% gewijzigd door Inverter op 30-04-2020 20:31 ]


Acties:
  • 0 Henk 'm!

  • Proc
  • Registratie: December 2002
  • Laatst online: 22:52

Proc

Grand Admiral

@mkleinman

Het is al een behoorlijk tijdje geleden, maar in 2018 had je genoemd dat je een aantal gegevens nodig had om de gegevens van een (destijds) nog niet ondersteunde SAJ omvormer, die in de vorm van een csv bestand aangeleverd kunnen worden, te verwerken in jsunnyreports.

Als ik het goed begrepen heb, zijn die gewenste gegevens 1) de datum, 2) tijd in 24 uurs notatie in uren, minuten en seconden en 3) het actueel geleverde vermogen in W.

Ik had daar wat vragen over;

a) zijn dit alle gegevens die je nodig hebt
b) wat zou de tijdspanne tussen twee metingen moeten zijn (is bijvoorbeeld 5 seconden een goede waarde?)
c) is alleen lezen van het bestand voldoende (dus geen schrijf rechten bijvoorbeeld)
d) kun je misschien een voorbeeld van zo'n csv bestand beschikbaar maken zodat ik er een beter beeld bij krijg?

[ Voor 3% gewijzigd door Proc op 01-05-2020 13:09 ]


Acties:
  • 0 Henk 'm!

  • mkleinman
  • Registratie: Oktober 2001
  • Laatst online: 22:50

mkleinman

8kWp, WPB, ELGA 6

Topicstarter
Proc schreef op vrijdag 1 mei 2020 @ 13:07:
@mkleinman

Het is al een behoorlijk tijdje geleden, maar in 2018 had je genoemd dat je een aantal gegevens nodig had om de gegevens van een (destijds) nog niet ondersteunde SAJ omvormer, die in de vorm van een csv bestand aangeleverd kunnen worden, te verwerken in jsunnyreports.

Als ik het goed begrepen heb, zijn die gewenste gegevens 1) de datum, 2) tijd in 24 uurs notatie in uren, minuten en seconden en 3) het actueel geleverde vermogen in W.

Ik had daar wat vragen over;

a) zijn dit alle gegevens die je nodig hebt
b) wat zou de tijdspanne tussen twee metingen moeten zijn (is bijvoorbeeld 5 seconden een goede waarde?)
c) is alleen lezen van het bestand voldoende (dus geen schrijf rechten bijvoorbeeld)
d) kun je misschien een voorbeeld van zo'n csv bestand beschikbaar maken zodat ik er een beter beeld bij krijg?
Ik heb inderdaad nodig: DatumTijd + vermogen in W of opgewekte hoeveelheid in Wh of kWh op dat tijdstip. Aan de hand van die twee kan ik jSR laten werken.

Tijdspanne tussen twee metingen kan van alles zijn tussen 1 seconde en 5 minuten voor grafieken. Waarbij een interval van 1 minuut wat mij betreft meer dan prima is. Dan heb je maximaal 1440 meetpunten per dag.

Het meeste eenvoudige voor mij zou zijn als je dit formaat gebruikt: Bestandsnaam yyyy-MM-dd.csv

Inhoud in de CSV:

datumtijd in yyyy-MM-dd hh24:mi:ss formaat
opbrengst in W

code:
1
2
3
4
5
6
7
8
9
10
11
2015-09-01 7:33:22;0
2015-09-01 7:57:19;1
2015-09-01 8:33:56;1
2015-09-01 8:36:45;11
2015-09-01 8:38:25;18
2015-09-01 8:39:39;24
2015-09-01 8:40:47;26
2015-09-01 8:41:51;28
2015-09-01 8:42:53;29
2015-09-01 8:44:03;26
2015-09-01 8:46:27;12

Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.


Acties:
  • +1 Henk 'm!

  • Deshmir
  • Registratie: Februari 2012
  • Laatst online: 21:51
Misschien iets voor de topic start, voor alle mensen die een growatt hebben.

Via de dataloger kan je register 4 uitlezen en aanpassen.
Register 4 is de interval settings van je data (deze staat bij mij standaard op 5 en is niet aan te passen via de management.html pagina).

Nu heb ik eindelijk gevonden wat het wachtwoord is om hierbij te kunnen.
Inloggen op server.growatt.com, dan "all devices"
Dan "data logger settings" => Advanced set => Register 4 => Read
Nu heb je een wachtwoord nodig; dit is een standaard wachtwoord: inverterYYYYMMDD (waarbij je dus current day invult, vandaag dus growatt20200501).
Doe nu Register 4, value 1 en druk op Yes, Yes to confirm.
Als je nu naar je lokale growatt url gaat zie je bij System Management dat de Data Interval nu op 1 minuut staat.

Vooral mooi voor de mensen die het in domoticz oid loggen.
De status op server.growatt.com blijft op 5 min staan, maar de export xlsx is op 1 minuut (voor zover ik heb begrepen).

[ Voor 0% gewijzigd door Deshmir op 16-07-2020 07:52 . Reden: nieuwe key ]


Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
Hoe kan ik dit bestand via node-red laten aanmaken?

Acties:
  • 0 Henk 'm!

  • Inverter
  • Registratie: April 2020
  • Laatst online: 29-05-2023
AUijtdehaag schreef op woensdag 29 april 2020 @ 20:53:
@Inverter hamburger - manage pallette - install

en dan een voor een de volgende: (staat ook op die pagina https://github.com/mlooise/aeg-inverter-monitor)
node-red-contrib-modbus
node-red-contrib-moment
node-red-contrib-time-range-switch
node-red-dashboard
installeren.

En dan kopieer je de tekst: (raw)
https://github.com/mloois...b/develop/monitor-aeg.txt

en hamburger menu - import - de tekst - import

Dan zul je nog wat aan moeten passen in het ip adres van de server die je vind in de subflow (links boven en dubbel klikken) en dan op bijv. get 5790 dubbelklikken om het ip adres van de server te kunnen wijzigen. (achter host)

En pv output alle gegevens invullen (apikey en systemid van je systeem in pvoutput) in de flow.
En dan deploy

Suc6.
Ik heb geen AEG dus ik kan het niet testen. (en welkom op tweakers, waar ze verwachten dat je zelf eerst dingen uitzoekt en dan pas vragen gaat stellen als je er niet uitkomt. ;) )
Ik wil de data naar een CSV bestand sturen ipv naar PVoutput. Kun je uitleggen hoedje moet. En dan gescheiden door komma’s.

Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@Inverter
Node-RED - grafisch 'programmeren' (bijv. voor domotica)
Ik ben ook maar hobbyist.

[ Voor 83% gewijzigd door AUijtdehaag op 01-05-2020 20:44 ]

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • Bockelaar
  • Registratie: Juli 2001
  • Laatst online: 21:20
Deshmir schreef op vrijdag 1 mei 2020 @ 16:16:
Misschien iets voor de topic start, voor alle mensen die een growatt hebben.

Via de dataloger kan je register 4 uitlezen en aanpassen.
Register 4 is de interval settings van je data (deze staat bij mij standaard op 5 en is niet aan te passen via de management.html pagina).

Nu heb ik eindelijk gevonden wat het wachtwoord is om hierbij te kunnen.
Inloggen op server.growatt.com, dan "all devices"
Dan "data logger settings" => Advanced set => Register 4 => Read
Nu heb je een wachtwoord nodig; dit is een standaard wachtwoord: inverterYYYYMMDD (waarbij je dus current day invult, vandaag dus inverter20200501).
Doe nu Register 4, value 1 en druk op Yes, Yes to confirm.
Als je nu naar je lokale growatt url gaat zie je bij System Management dat de Data Interval nu op 1 minuut staat.

Vooral mooi voor de mensen die het in domoticz oid loggen.
De status op server.growatt.com blijft op 5 min staan, maar de export xlsx is op 1 minuut (voor zover ik heb begrepen).
hah, gaaf. Ik loop al ruim 3 jaar te zoeken naar info en opties mbt growatt en logging. Ik doe het nu nog steeds op de oude manier via (ooit, niet meer werkende 123-zonne-energie) die ook in dit topic wordt genoemd: https://gathering.tweakers.net/forum/list_messages/1892055

Inmiddels moet er toch al wat anders zijn hoop ik? Ik heb nog niet iets gevonden wat ik snap iig :)

Remember: A CRAY is the only computer that runs an endless loop in just 4 hours...


Acties:
  • +1 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

Inverter schreef op vrijdag 1 mei 2020 @ 20:40:
[...]


Ik wil de data naar een CSV bestand sturen ipv naar PVoutput. Kun je uitleggen hoedje moet. En dan gescheiden door komma’s.
Zou je jezelf er niet eens wat in gaan verdiepen? Het lijkt er op alsof je van alles aangereikt wilt krijgen zonder zelf eerst wat te gaan proberen.
Een simpele Google search levert al wat sites op:
https://cookbook.nodered.org/basic/generate-csv
YouTube: Node-Red -Guide to Using The CSV Node

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • GoEV6
  • Registratie: Oktober 2000
  • Laatst online: 21:05
Iemand nog tips om mijn Growatt omvormer weer te kunnen loggen via de app en web via wifi?

Alles werkte tot dat ik een nieuwe Experia Box van KPN kreeg.Wat ik al heb gebrobeerd:

- omvormer herstart
- wifi module gereset
- android en ios app gebrobeerd
- wifi via Experiabox en via andere router en accespoint verbonden. Alles via 2.4 ghz omdat dat alleen wordt ondersteund.
- datalogger via het portaal verwijderd.

Ik krijg de Wifi stick op geen enkele manier verbonden met het internet.....

Acties:
  • 0 Henk 'm!

  • Deshmir
  • Registratie: Februari 2012
  • Laatst online: 21:51
@GoEV6 kan je hem wel intern benaderen?
En wat geeft hij daar aan bij de Server Status?

Acties:
  • 0 Henk 'm!

  • GoEV6
  • Registratie: Oktober 2000
  • Laatst online: 21:05
Deshmir schreef op zaterdag 2 mei 2020 @ 12:18:
@GoEV6 kan je hem wel intern benaderen?
En wat geeft hij daar aan bij de Server Status?
Wat bedoel je met intern benaderen?

De connection status is lost.

Acties:
  • 0 Henk 'm!

  • Deshmir
  • Registratie: Februari 2012
  • Laatst online: 21:51
@GoEV6 intern = naar het lokale IP.
Als je dat kan benaderen zit er dus niks mis met je lokale netwerk.
Lijkt dus niet door je modem/router te komen, heb je port forwarding open gezet?

Acties:
  • 0 Henk 'm!

  • GoEV6
  • Registratie: Oktober 2000
  • Laatst online: 21:05
Deshmir schreef op zaterdag 2 mei 2020 @ 14:38:
@GoEV6 intern = naar het lokale IP.
Als je dat kan benaderen zit er dus niks mis met je lokale netwerk.
Lijkt dus niet door je modem/router te komen, heb je port forwarding open gezet?
Dank voor je hulp. Ik kwam er niet uit. Heb hem nu aangesloten met een UTP kabel en dat werkt :)

Acties:
  • 0 Henk 'm!

  • Blackraven
  • Registratie: November 2007
  • Laatst online: 13-09 17:26
Deshmir schreef op vrijdag 1 mei 2020 @ 16:16:
Misschien iets voor de topic start, voor alle mensen die een growatt hebben.

Via de dataloger kan je register 4 uitlezen en aanpassen.
Register 4 is de interval settings van je data (deze staat bij mij standaard op 5 en is niet aan te passen via de management.html pagina).

Nu heb ik eindelijk gevonden wat het wachtwoord is om hierbij te kunnen.
Inloggen op server.growatt.com, dan "all devices"
Dan "data logger settings" => Advanced set => Register 4 => Read
Nu heb je een wachtwoord nodig; dit is een standaard wachtwoord: inverterYYYYMMDD (waarbij je dus current day invult, vandaag dus inverter20200501).
Doe nu Register 4, value 1 en druk op Yes, Yes to confirm.
Als je nu naar je lokale growatt url gaat zie je bij System Management dat de Data Interval nu op 1 minuut staat.

Vooral mooi voor de mensen die het in domoticz oid loggen.
De status op server.growatt.com blijft op 5 min staan, maar de export xlsx is op 1 minuut (voor zover ik heb begrepen).
Als je de wifi stick in access point modus zet en verbinding maakt (door kort met een pen o.i.d. in het gaatje te prikken), kun je die interval gewoon via de settings webpagina veranderen. Ik heb het destijds gelijk bij installatie gedaan, samen met het wifi wachtwoord ingevuld.
(Ik kwam bij de AP-modus terecht omdat ik via de app m'n wachtwoord niet in de wifi-dongle kreeg, toen zag ik de interval update daar ook staan...)
Maar mooi om te horen dat er meerdere wegen naar Rome leiden. :)

Ik gebruik deze plugin om de data terug naar Domoticz te krijgen:
https://github.com/sincze/Domoticz-Growatt-Webserver-Plugin
Inderdaad interval van 1 minuut, dat is niet zichtbaar op de Growatt website (5 minuten), wel in Domoticz.

[ Voor 6% gewijzigd door Blackraven op 02-05-2020 17:03 . Reden: plugin link ]

WP: ME PUHZ-SW75YAA+EHST20D-VM2C2+ESP | EVSE: SmartEVSE v2 | PV: 11kWp Growatt


Acties:
  • +1 Henk 'm!

  • FrankJ91
  • Registratie: September 2010
  • Laatst online: 21-08 04:04
Hallo,

Momenteel meet ik mijn elektriciteits- gas- en waterverbruik via Home Assistant en deze stuurt het door naar Grafana die er wat moois van laat zien. Komende donderdag krijg ik echter zonnepanelen die mijn huidige monitor volgens mij volledig in de war zullen schoppen. Ik kan natuurlijk niet meer volledig vertrouwen op de slimme meters Power Consumption. Hierdoor zullen de grafieken van mijn stroomverbruik die ik nu zie in Grafana niet meer realistisch zijn.

Hieronder een overzicht van mijn Grafana op dit moment:
Afbeeldingslocatie: https://tweakers.net/i/8ruDOfRJzhOlOSuWD8cDzkQZLeA=/800x/filters:strip_icc():strip_exif()/f/image/HzWq3bvl32v9Z3ko9VQB04pQ.jpg?f=fotoalbum_large

Hoe kan ik ervoor zorgen dat ik bijvoorbeeld het huidige stroomverbruik in huis nog steeds kan meten ongeacht wat de zonnepanelen voor vervuiling brengen? Kloppen de onderstaande berekeningen en is dit alles ook een beetje betrouwbaar uit te meten uit de GoodWe omvormer of loopt het niet synchroon me de slimme meter dat ik verkeerde resultaten in Grafana te zien krijg? Zie ik misschien nog iets over mijn hoofd? (https://gathering.tweakers.net/forum/list_messages/1799239
Ook ben ik wel benieuwd naar jullie dashboards. Moet zelf nog even bedenken hoe ik mijn zonnepanelen in Grafana kan verwerken bij de bestaande grafiekjes, of juist helemaal los...

Beschikbare data:
Omvormer:
Hoeveel stroom geef ik aan het huis in watt

Slimme Meter:
Hoeveel stroom lever ik terug aan het net (Huidig aantal watt 1-0:2.7.0.255 -P)
Hoeveel stroom neem ik op van het net (Huidig aantal watt 1-0:1.7.0.255 +P)

Momenteel verbruik in huis berekenen binnen Home Assistant:
1. Als mometeel terugleveren slimme meter stil staat (1-0:2.7.0.255 (-P) == 0), dan is momenteel verbruik huis alles wat omvormer registreert plus alles wat slimme meter registreert in consumptie bij +P.
2. Als momenteel terugleveren slimme meter loopt (1-0:2.7.0.255 (-P) != 0), dan is momenteel verbruik huis alles wat omvormer registreert min wat slimme meter registreert bij teruglopen in -P.

Alvast bedankt :)

[ Voor 4% gewijzigd door FrankJ91 op 02-05-2020 21:25 ]


Acties:
  • +1 Henk 'm!

  • wizzopa
  • Registratie: September 2003
  • Laatst online: 22:34
FrankJ91 schreef op zaterdag 2 mei 2020 @ 21:10:
Hallo,

Momenteel meet ik mijn elektriciteits- gas- en waterverbruik via Home Assistant en deze stuurt het door naar Grafana die er wat moois van laat zien. Komende donderdag krijg ik echter zonnepanelen die mijn huidige monitor volgens mij volledig in de war zullen schoppen. Ik kan natuurlijk niet meer volledig vertrouwen op de slimme meters Power Consumption. Hierdoor zullen de grafieken van mijn stroomverbruik die ik nu zie in Grafana niet meer realistisch zijn.

Hieronder een overzicht van mijn Grafana op dit moment:
[Afbeelding]

Hoe kan ik ervoor zorgen dat ik bijvoorbeeld het huidige stroomverbruik in huis nog steeds kan meten ongeacht wat de zonnepanelen voor vervuiling brengen? Kloppen de onderstaande berekeningen en is dit alles ook een beetje betrouwbaar uit te meten uit de GoodWe omvormer of loopt het niet synchroon me de slimme meter dat ik verkeerde resultaten in Grafana te zien krijg? Zie ik misschien nog iets over mijn hoofd? (https://gathering.tweakers.net/forum/list_messages/1799239
Ook ben ik wel benieuwd naar jullie dashboards. Moet zelf nog even bedenken hoe ik mijn zonnepanelen in Grafana kan verwerken bij de bestaande grafiekjes, of juist helemaal los...

Beschikbare data:
Omvormer:
Hoeveel stroom geef ik aan het huis in watt

Slimme Meter:
Hoeveel stroom lever ik terug aan het net (Huidig aantal watt 1-0:2.7.0.255 -P)
Hoeveel stroom neem ik op van het net (Huidig aantal watt 1-0:1.7.0.255 +P)

Momenteel verbruik in huis berekenen binnen Home Assistant:
1. Als mometeel terugleveren slimme meter stil staat (1-0:2.7.0.255 (-P) == 0), dan is momenteel verbruik huis alles wat omvormer registreert plus alles wat slimme meter registreert in consumptie bij +P.
2. Als momenteel terugleveren slimme meter loopt (1-0:2.7.0.255 (-P) != 0), dan is momenteel verbruik huis alles wat omvormer registreert min wat slimme meter registreert bij teruglopen in -P.

Alvast bedankt :)
Heel simpel in de kamer aan de muur. https://i.imgur.com/S6FJ6jP.jpg 😉

PV- 8530Wp..... SWW- Atlantic 200….. WP- Daikin 3,5kW….. Foto’s.....


Acties:
  • 0 Henk 'm!

  • FrankJ91
  • Registratie: September 2010
  • Laatst online: 21-08 04:04
Haha, heb je goed voor elkaar! Zo te zien maak je dus ook onderscheid tussen Totaal en Verbruik. Zijn dat die 2 lijngrafiekjes die je erop ziet (kan het net niet lezen)? Dan maak ik misschien 1 lijngrafiek in Grafana die inderdaad onder en boven de 0 Kw kan voor het totale en 1 lijngrafiek waar wel mijn normale verbruik op staat.

Misschien moet ik ook maar gewoon een losse serie van mijn dashboard maken die ik aan de muur kan hangen. Ben misschien een beetje doorgeschoten met wat ik allemaal wil monitoren op 1 pagina. Dan is een uitgebreide versie op de laptop en een versie voor aan de muur wel wat beter... Ooit wel eens rond gezocht, maar twijfelde nog over het aantal inch en het netjes wegwerken van de tablet/kabels.

Acties:
  • +1 Henk 'm!

  • wizzopa
  • Registratie: September 2003
  • Laatst online: 22:34
FrankJ91 schreef op zaterdag 2 mei 2020 @ 21:59:
[...]


Haha, heb je goed voor elkaar! Zo te zien maak je dus ook onderscheid tussen Totaal en Verbruik. Zijn dat die 2 lijngrafiekjes die je erop ziet (kan het net niet lezen)? Dan maak ik misschien 1 lijngrafiek in Grafana die inderdaad onder en boven de 0 Kw kan voor het totale en 1 lijngrafiek waar wel mijn normale verbruik op staat.

Misschien moet ik ook maar gewoon een losse serie van mijn dashboard maken die ik aan de muur kan hangen. Ben misschien een beetje doorgeschoten met wat ik allemaal wil monitoren op 1 pagina. Dan is een uitgebreide versie op de laptop en een versie voor aan de muur wel wat beter... Ooit wel eens rond gezocht, maar twijfelde nog over het aantal inch en het netjes wegwerken van de tablet/kabels.
Ik kan een keuze maken, hij staat meestal op totaal hier wordt de richting van de stroom in het huis getoond. Als ik veel stroom van de pv heb is het getal negatief, smorgens en savonds is dat positief. Bij de stand verbruik laat hij het momentane verbruik zien. Maar ook kan bv de airco, de pv, of water verbruik er voorzetten.

Alles in bijna realtime en onafhankelijk van de ferraris of straks de digitale meter. Ook gaat alle data richting Pvoutput. Wat jij gemaakt ziet er prachtig uit, maar bij de eerste aanblik toch ook weer erg druk eigenlijk input overload😉

PV- 8530Wp..... SWW- Atlantic 200….. WP- Daikin 3,5kW….. Foto’s.....


Acties:
  • +2 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

FrankJ91 schreef op zaterdag 2 mei 2020 @ 21:10:
Hoe kan ik ervoor zorgen dat ik bijvoorbeeld het huidige stroomverbruik in huis nog steeds kan meten ongeacht wat de zonnepanelen voor vervuiling brengen?
Ik haal al mijn data via Node-RED op. Daar start een timer elke 10 seconden een proces dat tegelijkertijd mijn SMA via modbus uitleest en mijn P1 meter via een python script. Ik ben dus in controle wanneer het uitlezen gebeurt en dat dit zo goed als gelijktijdig gebeurt.

Wat ik doe is een enkel cijfer genereren uit mijn P1 meter dat de netto elektriciteit consumptie uit het net vertegenwoordigd. Dit is dus positief als ik afneem of negatief als ik teruglever. Dan reken ik mijn interne consumptie uit door de generatie van mijn SMA daar bij op te tellen.

Dus is mijn netto consumptie -2000 en wekt mijn SMA +3000 op dan is mijn interne consumptie dus 1000.

Datzelfde doe ik met verbruik in kWh. Ik verreken eerst terugleveren en afnemen om de netto consumptie van het net te hebben. Dan tel ik daar weer mijn SMA productie bij op en dan heb ik mijn netto interne consumptie.
Dus is mijn netto consumptie -2000kWh en mijn SMA productie 3000kWh dan is mijn interne consumptie 5000kWh.

Natuurlijk kan je stellen dat een paar seconde tussen De twee metingen irrelevant is op lange termijn, en dat is natuurlijk ook zo omdat je toch gaat middelen per x minuten, maar toch vind ik het veel netter om dit zoveel mogelijk tegelijk te doen.

De uitkomsten van de berekening alsmede alle losse waarden worden naar InfluxDB gestuurd. Staat op een SSD dus meer dan genoeg opslag om alles jarenlang te bewaren. Grafana kan wel rekenen maar moet dat elke keer weer doen als je data op haalt, zeker wanneer je naar langere termijnen kijkt. Node-RED rekent het in microseconden uit met JavaScript voor het wegschrijven. En ik heb toch 10 seconden tussen metingen om alles uit te rekenen. Liever daar wat verliezen zodat Grafana lekker vlot is.


Ik heb trouwens wel drie Grafana dashboard. Eentje die gericht is op dagelijks gebruik (so far today) en eentje gericht op X periode waar data per dag te zien is. Dan kan je veel meer informatie kwijt die bij elkaar hoort. Dat en mijn dashboard is gericht op een pc monitor dus wat kleinere panels.

[ Voor 21% gewijzigd door Tsurany op 02-05-2020 22:58 ]

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • maykoga
  • Registratie: Juni 2009
  • Laatst online: 31-08 17:47
Beste Tweakers,

Doel:
Ik wil graag een aantal dingen monitoren / loggen in huis, dit op een dashboard weergeven, en hier acties op uitvoeren
  • Elektriciteits gebruik (P1-poort met bijv Youless of Arduino of RaspPi?) evt: 3fase spanningen
  • Temperatuur en relatieve vochtigheid in huis (losse sensors)
  • CV aanvoer en retour temperatuur
  • PV vermogen (SolarEdge API)
Welk log device?
a) Een Arduino gebruiken om de temperatuur en/of P1-poort te loggen?
b) RaspberryPi 3 / 4 gebruiken en daar op draaien:c) een Netduino Plus 2 langskomen op tweakers om te loggen met codeplex

Data voor langere tijd opslaan en dit in een dashboard weergeven. Automations uitvoeren om bijv mijn water boiler aan te laten gaan als ik veel PV opwek heb. Wat voor dashboard? Bijv Google data studio (dat is wel extern), of Grafana, of iets wat op de raspPI draait?

Ik heb al veel onderzocht en gegoogled, maar wil graag van mensen met ervaring horen wat een goede combinatie is en wat goed op elkaar werkt.

(Ik heb zelf nog geen ervaring met Raspberry pi's)

Wat ik al heb is:
- YouLessLS120 icm enelogic.nl
- SolarEdge home energy meter
- PVOutput.com icm SolarEdge API
- Philips Hue lampen
- Synology NAS

(by the way: in welk forum kan ik dit het best vragen? Ik vond geen algemeen 'home logging' forum op tweakers)

[ Voor 12% gewijzigd door maykoga op 02-05-2020 23:22 ]


Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

@maykoga een RaspberryPi met Node-RED, MQTT, InfluxDB en Grafana kan dat allemaal.
Zoek even op mijn naam hier voor mijn Node-RED flow als basis voor P1 en zonnepanelen. Dan per sensor een aparte flow die de data via MQTT binnen krijgt van sensoren. Bijvoorbeeld een ESP8266 met temp en humidity sensor we op.

Ik vind zelf Node-RED ideaal omdat je met elk systeem of device kan communiceren via MQTT, ModBus of HTTP. En het kan ook scripts aanroepen dus als je ergens een Python script voor hebt kan dat gewoon geïntegreerd worden.

Je kan ook eenvoudig uitstapjes maken. Publiceer bijvoorbeeld huidig stroomverbruik op MQTT en een andere flow kan dat weer uitlezen om acties uit te voeren. Als het in Node-RED zit kan je eigenlijk doen wat je wilt.

Maar ik kom zelf ook uit de software integratie wereld dus dat maakt dit ook erg vertrouwd.

[ Voor 47% gewijzigd door Tsurany op 02-05-2020 23:18 ]

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • maykoga
  • Registratie: Juni 2009
  • Laatst online: 31-08 17:47
@Tsurany dank voor je antwoord, losse ESP8266 als sensors is een goed idee!

Welke Raspberry raad je aan?

Ik ben best bereid €10-20 meer te betalen als ik daardoor meerdere jaren vooruit kan en veel opslag heb voor data

[ Voor 36% gewijzigd door maykoga op 02-05-2020 23:24 ]


Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

Ik zou de middelste RaspberryPi 4 nemen. Prima prijs en genoeg geheugen om flink wat tegelijk te draaien. SSD erbij voor opslag, betrouwbaarder dan een MicroSD kaartje.

Kost wel even wat maar dan kan je heel lang vooruit. Mijne staat in de meterkast met SSD in losse behuizing aan een dubbele Ikea USB stekker.

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • AUijtdehaag
  • Registratie: Oktober 2006
  • Niet online
@maykoga Je kan ook eens naar een odroid c4 kijken.
Die zijn ook net uit.
Plaatje
Linkje spec.

Ik heb er 2 laten komen uit zuid korea, compleet met kastje, voedingadapter en 64 Gb Emmc geheugen (linux) Dan heb je een erg compacte SBC en geen gedoe met sd kaartjes of ssd's/hdd's en erg energiezuinig.
Ik verwacht ook nog een mooie aluminium case voor de C4.

Ik heb zelf Pi'3 (met hdd) draaien, odroid N2 en nu dus ook odroid C4.
Doen het allemaal prima, maar de Pi3 is inmiddels 5 jaar...

Edit: voor PV en opslag van warmwater gebruik ik dit:
AUijtdehaag in "Overtollige stroom gebruiken voor warmwater"
Op een TA EZ3 kun je ook meerdere sensoren (temp+RV+dauwpunt+druk, 2x s0pulse van kWh meter of pulse van watermeter aansluiten via oa. analoge ingangen, dl bus en can bus en uitlezen via json (via de CMI)

Misschien een tip: zorg voor systemen die niet afhankelijk zijn van elkaar. TA werkt helemaal op zichzelf maar kan wel uitgelezen worden. Probeer cloud based dingen te voorkomen. (alhoewel heb ik ook netatmo)
Een zwave of shelly achter een schakelaar bijvoorbeeld, werkt ook nog als de wifi uitvalt of de zwave stick..
Ik gebruik voornamelijk node-red, influxdb en grafana, domoticz en dsmr reader via mqtt.
Modbus RTU (kWh meters) en TCP (SMA), Meterbus voor kamstrup en kWh meters, can-bus en dl-bus voor EZ3 en sensoren. P1 slimme meter en een pulsgever op de watermeter.

@Tsurany Er waren wat usb en zwave problemen met de Pi4. Is dat inmiddels opgelost?

[ Voor 89% gewijzigd door AUijtdehaag op 03-05-2020 08:31 ]

PVOutput Github - Div ESP TK: MHI - Clack - Marstek


Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

AUijtdehaag schreef op zondag 3 mei 2020 @ 07:37:
@Tsurany Er waren wat usb en zwave problemen met de Pi4. Is dat inmiddels opgelost?
Voor zover ik kan zien is er enkel een workaround, een USB hub gebruiken en hopen dat het werkt. Schijnt dat het komt omdat die USB stick zich niet aan de USB standaarden houd, ook niet getest en gecertificeerd is, en het dus niet de schuld van de RaspberryPi is.

Maar als je die echt wilt gebruiken is een RaspberryPi 3 een betere keuze wellicht.

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

  • Moffin
  • Registratie: Augustus 2003
  • Laatst online: 14-09 10:30
Mooi hoor. Ikzelf stoei elke keer met het in slaap gaan van mijn tablet. Ik heb een windows tablet (die nooit naar 10 is geupgrade) . Hoe heb jij dit georganiseerd?

[ pvoutput | 5760 wp @ O 45° - Z 10° - W 45°]

Pagina: 1 ... 41 ... 48 Laatste