SMA-Net Protokoll hacken (RS485,YASDI)

Allgemein über Datenlogger, Kommunikation, DFÜ

Moderator: Mod-Team

 

0.00 (0 Bewertungen)

Re: SMA-Net Protokoll hacken (RS485,YASDI)

Beitragvon uweklatt » 25.07.2018, 15:38

Hallo Verlierer,

compiliert Dir doch YASDI für den ESP32...
Dann hast Du eine garantiert funktionierende Lösung.
https://www.heiko-pruessing.de/projects ... hnical.php

Tschau
Uwe
Kochrezepte ohne Ende... Uwe's Kochbuch - Sun-Watch Logger
SB3300TL-HC + 21 x Kyocera KD180 (3,78KWp), 45°/160°/97xxx
Benutzeravatar
uweklatt
Forumsinventar
Forumsinventar
 
Beiträge: 1232
Registriert: 28.02.2008, 22:09
Wohnort: 97xxx
PV-Anlage [kWp]: 3,78
Info: Betreiber

Re: SMA-Net Protokoll hacken (RS485,YASDI)

Beitragvon verlierer » 10.10.2018, 17:59

So ich hab jetzt mal einen kompakten Datenlogger zusammengebaut:

https://youtu.be/CLueBZ08vSQ
49€ SMA Datenlogger (GSM + WiFi + LoRa + Bluetooth + TFT + Lipo)

In der Datenstruktur hab noch kleiner Fehler korrigiert:
Code: Alles auswählen
typedef struct __attribute((__packed__))
{
  uint16_t  iFrom = 0;
  uint16_t  iTo = 0;
  uint8_t   iControl = 0;
  uint8_t   iPaketCounter = 0;
  uint8_t   iCmd = 0;
 
  uint16_t  iMask1;
  uint8_t   iMask2;
  uint16_t  iCount;
 
  uint32_t iTime;
  uint32_t iTimeOffset;
  uint16_t iUpv;
  uint16_t iUpvS;
  uint16_t iIpv;
  uint16_t iIpvS;
  uint16_t iUac;
  uint16_t iFac;
  uint16_t iPac = 0;
  uint16_t iZac;

  uint16_t iDDac;
  uint16_t iRiso;
  uint16_t iUacSrr;
  uint16_t iFacSrr;
  uint16_t iZacSrr;
  uint16_t iIZac;
  uint16_t iTKK;
  uint16_t i8;
  uint16_t i9;
  uint16_t i10;
  uint16_t i11;
  uint16_t i12;
  uint16_t i13;
  uint16_t i14;
  uint16_t i15;
  uint16_t i16;
  uint16_t i17;

  uint32_t iEtotal = 0;
  uint32_t iHtotal;
  uint32_t iNetOn;
  uint32_t iErrorCount;
  uint32_t iSnr;

  uint16_t i18;

  uint8_t iState;
  uint8_t iError;
  uint16_t i19;
  uint16_t i20;
} Inverter;

uint32_t Swap32(uint32_t i)
{
  uint8_t* p = (uint8_t*)&i;
  return ((uint32_t)p[3]<<24) +((uint32_t)p[2]<<16) +((uint32_t)p[1]<<8) +((uint32_t)p[0]);
}


Wäre schön wenn sich mal langsam ein paar Betreiber mit alten SMA Wechselrichtern melden würden :-)

das Roland und Dankeschön.
Benutzeravatar
verlierer
Vielschreiber
Vielschreiber
 
- Threadstarter -
 
Beiträge: 172
Registriert: 25.06.2007, 11:33
Wohnort: Bayern
PV-Anlage [kWp]: 26,7
Info: Betreiber

Re: SMA-Net Protokoll hacken (RS485,YASDI)

Beitragvon uweklatt » 10.10.2018, 18:20

Hallo verlierer,

Dir ist aber schon klar, das Deine Variante nur mit einem spezilelen WR-Typ und da auch nur mit einer bestimmten Softwareversion funktioniert?

Das SMA-Protokoll arbeitet mit einer Parameterliste, die je nach WR unterschiedlich ist.
Statische Strukturen funktionieren dann nur bei einem einzigen Modell...

Wenn Du mehrere WR-Typen unterstützen möchtest, musst Du die Liste auslesen und dann entsprechend das Empfangspaket parsen...

Tschau
Uwe

P.S. Was ist an Linux "schlecht"?
Kochrezepte ohne Ende... Uwe's Kochbuch - Sun-Watch Logger
SB3300TL-HC + 21 x Kyocera KD180 (3,78KWp), 45°/160°/97xxx
Benutzeravatar
uweklatt
Forumsinventar
Forumsinventar
 
Beiträge: 1232
Registriert: 28.02.2008, 22:09
Wohnort: 97xxx
PV-Anlage [kWp]: 3,78
Info: Betreiber

Re: SMA-Net Protokoll hacken (RS485,YASDI)

Beitragvon verlierer » 10.10.2018, 18:43

Naja ich werde das Teil nächste Woche statt an meinen drei SMC8000TL an zwei SB3300 testen.
Die Sende-Befehle sind eigentlich an alle SMA Wechselreichter, die dieses Protokoll noch unterstützen, die gleichen.
Vielleicht antworten sie mit einer anderen Struct. Aber da dürften sich (laut SmaNet Referenz) auch nur die mir eh schon unbekannten Felder ändern. Das sollte sich leicht anpassen lassen.
Sprich wenn der Datenlogger mit den Wechselrichtern und robosolar.de verbunden ist, kann ich mir die Antworten hochschicken lassen, und neue Firmeware für meinen Datenlogger runterladen.

Ich strebe übrigens für andere Anlagen gar nicht wirklich RS485 an, weil wieder Fehlerquelle und teure PiggyBags nötig. Die SMA Wechselrichter haben alle eine RS232 eingebaut. Also gehe ich lieber über I2C Bus zu einem billigen Arduino Nano im Wechselrichter-Raum den ich als I2C slave programmiert habe, von dem aus gehe ich dann mit sechs oder mehr software-Seriellen Ports über die paar Meter direkt in die Wechselrichter.
Dann kann diese kleine I2C Box auch noch billigen Temperatur/Feuchtigkeitssensor, Bewegungsalarm, etz. enthalten.

Für neuere Wechselrichter könnte der Datenlogger auch per Bluetooth auf die WR zugreifen. Ist das Protokoll inzwischen gehackt ?

Wie im Video geplappert, hab ich das Ding auch nur für meine Wechselrichter gebastelt.
Aber mit jedem Betreiber, der gerne mit machen würde
verdoppelt sich meine Freude, das Projekt weiter auszubauen.
Also der Zeitaufwand spielt das keine so große Rolle.

Denn Zeit ist Freude.

Und nur alleine.. verliert man.. immer.
Benutzeravatar
verlierer
Vielschreiber
Vielschreiber
 
- Threadstarter -
 
Beiträge: 172
Registriert: 25.06.2007, 11:33
Wohnort: Bayern
PV-Anlage [kWp]: 26,7
Info: Betreiber

Re: SMA-Net Protokoll hacken (RS485,YASDI)

Beitragvon leojesse » 11.10.2018, 07:03

verlierer hat geschrieben:Und da hier ja zu 99% immer nur Besserwisser ihr Bestes zum Besten geben, können die jetzt bitte links posten.


Hallo Roland,

Habe ich auch festgestellt. Jede Menge Miesepeter und Missionare Ihrer heiligen Meinung hier. Am Ende des Tages kriegen sich noch alle in die Haare. Fast schon Trollcharakter der immer selber Leute. Deshalb lese ich auch eigentlich nur und schreibe fast nie.

Du hast da wirklich ein interessantes Projekt am Wickel! Auch ich interessiere mich für eine Überwachung meiner SMAs via ESP8266. Leider fehlt mit komplett die Zeit und auch das Können, mich mit der "Bitpopelei" zu beschäftigen. Wenn Du also mit dem ESP32 / Arduino / Arduino IDE arbeitest dürfte das hin-und hermigrieren eigentlich nur wenig Aufwand bedeuten.

Berichte bitte weiter! Ich bin gespannt wo die Reise hingeht und welcher Kommunikationsweg sich als der Beste herausstellt.
Gerne würde ich auch Deine Ergebnisse selber mal ausprobieren :-)

Viele Grüße!
Solar? Na klar!

LeoJesse
Benutzeravatar
leojesse
Öfters hier
Öfters hier
 
Beiträge: 19
Registriert: 20.04.2018, 08:11
PV-Anlage [kWp]: 13
Speicher [kWh]: 2
Info: Betreiber

Re: SMA-Net Protokoll hacken (RS485,YASDI)

Beitragvon verlierer » 11.10.2018, 09:24

*freu* :-)

Ja ich kann den Code für ESP8266 fit machen, Einen NodeMCU + TFT + RS485 auf Steckbrett testen und Dir dann nächste Woche inkl. ArduinoIDE-Code zum Selbstkostenpreis zuschicken.
Wenn Du keine Fernüberwachung brauchst, kannst Du auf die Batterie verzichten und hast vielleicht eh wlan.
Da ESP8266 "nur" 160 kB Ram hat statt den 512kb vom ESP32, müsste ich die Vollauflösung (10 Sekunden) auf ein paar Stunden statt dem ganzen Tag beschränken.
Hab auch noch zwei SMA rs485 piggybags rumliegen, die ich Dir für günstig verkaufen könnte.

Da es bei der Hardware aber ja nicht um die 20 Euro gehen sollte, wäre mir die Universal-Lösung BT+WLAN+GSM+LORA am liebsten.

Ich kann den Code bei github auch openSource stellen. Mag aber nicht wenn sich das Projekt gleich zu Anfang in alle Winde verteilt und wir nicht alle auf ein Ziel hinarbeiten.

So böse waren die Neinsager in diesem Thread bis jetzt gar nicht, *liebwink* :-)
Und es stimmt schon, dass die smaNet Referenz viele Commandos zur Wechselrichter-Suche und Adresszuweisung etz. kennt. Ich hatte bei meiner Anlage (und den zwei SB3300 meines Bekannten) ja erst mit Notebook den SunnyExplorer dran und hab darüber die Wechselrichter erfasst. Dabei sind denen vielleicht erst ihre rs485 Adressen 1, 2 und 3 zugewiesen worden. Wenn ich meine Box also an frische Anlage hängen und die Daten von WR 1 haben will, dann antwortet vermutlich gar keiner. Also da müsste noch Code her, der diese Initialisierung vornimmt. Wobei es durchaus sinnvoll ist, mit 1 Euro usb-rs485 die Funktionsfähigkeit der rs485 Verkabelung erst mal mit dem SunnyExplorer zu testen.

Ich hatte auch mal Netz-Service hier die die Grenzwerte für AC-Spannung und Frequenzphase anpassen mussten. Die haben sich über mein Notebook gefreut, beim SunnyExplorer einfach ihr streng geheimes Systemadmin-passwort eingegeben, und meine WR über mein Notebook auf den neusten Stand gebracht.

Da ich aber ja auch träume, über Arduino-Nano-I2C-Slave per rs232 direkt auf die einzelnen WR zu gehen, bräuchte ich den ganzen Adressierungsquatsch wohl gar nicht, da an einer rs232 ja immer nur ein WR hängt.

Nochmal zum ESP32, hier video von einem ESP32-Bluetooth projekt von mir: https://youtu.be/6qlxn9-mYZs

Ein Android app zu programmieren ist einfacher als das TFT-Display ;-)
Benutzeravatar
verlierer
Vielschreiber
Vielschreiber
 
- Threadstarter -
 
Beiträge: 172
Registriert: 25.06.2007, 11:33
Wohnort: Bayern
PV-Anlage [kWp]: 26,7
Info: Betreiber

Re: SMA-Net Protokoll hacken (RS485,YASDI)

Beitragvon leojesse » 12.10.2018, 08:11

verlierer hat geschrieben:
Ja ich kann den Code für ESP8266 fit machen, Einen NodeMCU + TFT + RS485 auf Steckbrett testen und Dir dann nächste Woche inkl. ArduinoIDE-Code zum Selbstkostenpreis zuschicken.

-> Das wäre ein guter Start. Du bekommst eine PM.

verlierer hat geschrieben:Hab auch noch zwei SMA rs485 piggybags rumliegen, die ich Dir für günstig verkaufen könnte.

Da es bei der Hardware aber ja nicht um die 20 Euro gehen sollte, wäre mir die Universal-Lösung BT+WLAN+GSM+LORA am liebsten.

-> Ein Piggy Back habe ich für den ersten Anlauf noch herumliegen. Danke trotzdem.
-> Ich denke, die WLAN-Lösung ist für alle die praktikabelste.

verlierer hat geschrieben:Ich kann den Code bei github auch openSource stellen. Mag aber nicht wenn sich das Projekt gleich zu Anfang in alle Winde verteilt und wir nicht alle auf ein Ziel hinarbeiten.

-> Erstmal gucken, dass mehrere Leute den Code zum Laufen bekommen und welche Schwierigkeiten sich ergeben haben bevor man einen (evtl. optimierten) Code bereitstellt. Sonst kommt gleich evtl. zu viel Frust auf wenn die Erwartungshaltung via Github unendlich groß ist.

verlierer hat geschrieben:Wobei es durchaus sinnvoll ist, mit 1 Euro usb-rs485 die Funktionsfähigkeit der rs485 Verkabelung erst mal mit dem SunnyExplorer zu testen.

-> alleine das wäre ein Video Wert :-)

verlierer hat geschrieben:Da ich aber ja auch träume, über Arduino-Nano-I2C-Slave per rs232 direkt auf die einzelnen WR zu gehen, bräuchte ich den ganzen Adressierungsquatsch wohl gar nicht, da an einer rs232 ja immer nur ein WR hängt.

-> Ja, auch ein cooler Gedanke! Gerade für Leute die kein Geld ausgeben wollen das Richtige. Allerdings finde ich, das gerade RS485 mit der hohen Fehlersicherheit, den großen möglichen Kabellängen und vor allem ALLE Wechselrichter an 2-4 Strippen (Daten + Versorgung) hängen können als großen Vorteil.
Die Adressierung ist bestimmt eine weitere Hürde, aber ich denke schon ganz wichtig...

Zum Testen habe ich hier einen SB3000 und einen SB5000TL-20 zur Verfügung :-) Im Moment finde ich nur 1 Piggy Back wieder aber für den ersten Anlauf kann ich schonmal starten. :-)

Um den Code für kleinere Controller (RAM) fit zu machen könnte man die Auflösung durchaus verlängern. Wer braucht schon alle 10 Sekunden auf einem Minidisplay? ;-)

Hast Du ausser den Aktualwerten auch schon versucht Zählerregister, Strangspannungen, Ströme, Netzfrequenz,... herauszuholen?

Ich bin gespannt, wer sich hier noch mit dranhängt!
Solar? Na klar!

LeoJesse
Benutzeravatar
leojesse
Öfters hier
Öfters hier
 
Beiträge: 19
Registriert: 20.04.2018, 08:11
PV-Anlage [kWp]: 13
Speicher [kWh]: 2
Info: Betreiber

Re: SMA-Net Protokoll hacken (RS485,YASDI)

Beitragvon verlierer » 24.10.2018, 14:58

leojesse hat geschrieben:
verlierer hat geschrieben:Da ich aber ja auch träume, über Arduino-Nano-I2C-Slave per rs232 direkt auf die einzelnen WR zu gehen, bräuchte ich den ganzen Adressierungsquatsch wohl gar nicht, da an einer rs232 ja immer nur ein WR hängt.

-> Ja, auch ein cooler Gedanke! Gerade für Leute die kein Geld ausgeben wollen das Richtige. Allerdings finde ich, das gerade RS485 mit der hohen Fehlersicherheit, den großen möglichen Kabellängen und vor allem ALLE Wechselrichter an 2-4 Strippen (Daten + Versorgung) hängen können als großen Vorteil.
Die Adressierung ist bestimmt eine weitere Hürde, aber ich denke schon ganz wichtig...

I2C schafft zur Not auch 100 Meter und an diese 4 Adern kann man direkt Temperatur/Feuchte Sensoren, IO, 8xRelay, etz. hängen.
Und das RS232 Protokoll sollte einfacher sein. Bei rs485 sendet man zuerst einen Befehl mit der aktuellen unix time, und dann speichern die WR still für sich die aktuellen werte unter dieser Zeit. Danach ruft man die WR einzeln mit dieser Timestamp ab und erhält so von allen WR die Leistungswerte zu exakt der selben Zeit.
Eigentlich unnötig. Mit dem Arduino I2C-Slave könnte ich von jedem WR die Werte direkt abfragen.
Wer was zu dem RS232 Protokoll sagen kann, immer zu. Ich weiß nur dass ich damals 2007 die RS485 Kommunikation noch nicht zum Laufen bringen konnte und dann der WR-Verkäufer so lieb war mir per Eilversand das teure RS232 Kabel für einen Tag zu schicken. Damit und dem SunnyExplorer konnte ich spielend leicht die 3 SMC8000TL auf Powerguard einstellen.

leojesse hat geschrieben:Um den Code für kleinere Controller (RAM) fit zu machen könnte man die Auflösung durchaus verlängern. Wer braucht schon alle 10 Sekunden auf einem Minidisplay? ;-)


Ja aber das ist genau so unerforschtes Territorium dass ich schon mit meinem kompakten http://www.robosolar.de erkunden möchte. Kein Datenlogger liefert derzeit 10 Sekunden Kurven ? Also denkt jeder dass das auch zu nichts taugt.
Bei der Auflösung würde man aber sehen, wie schnell sich einzelne Strings nach einer Wolke abkühlen, etz.

Und wenn man abends von der Arbeit kommt möchte man vielleicht doch sehen, wie sich die Strings morgens bei Sonnenaufgang verhalten haben.

Also ich hab durch http://www.robosolar.de schon so einiges über meine Anlage gelernt..

leojesse hat geschrieben:Hast Du ausser den Aktualwerten auch schon versucht Zählerregister, Strangspannungen, Ströme, Netzfrequenz,... herauszuholen?
Ich bin gespannt, wer sich hier noch mit dranhängt!


Hab doch die gehackte Daten-Struktur angegeben.
Klar will ich auch Fehlermeldungen und LeitungsWiderstände hochladen.

Hier 4 Minuten Video von dem Nachbau meines Datenloggers ohne GSM:
https://www.youtube.com/watch?v=f88Ak3dl7xA
Benutzeravatar
verlierer
Vielschreiber
Vielschreiber
 
- Threadstarter -
 
Beiträge: 172
Registriert: 25.06.2007, 11:33
Wohnort: Bayern
PV-Anlage [kWp]: 26,7
Info: Betreiber

Re: SMA-Net Protokoll hacken (RS485,YASDI)

Beitragvon leojesse » 26.10.2018, 08:12

verlierer hat geschrieben:I2C schafft zur Not auch 100 Meter und an diese 4 Adern kann man direkt Temperatur/Feuchte Sensoren, IO, 8xRelay, etz. hängen.

-> I²C ist für die platineninterne Kommunikation geschaffen und mag keine langen Leitungen da die Leitungskapazität hier ausschlaggebend ist. 100m ist ein absoluter Glücksfall das es mal geklappt hat. Die Frage ist hierbei, wie lange im 24/7 Betrieb wurde es getestet? 1 Woche ? 1 Monat?
I²C ist störempfindlich. In der Industrie oder auch bei anderen Datenloggern oder WR-Herstellern wird niemals mit I²C außerhalb eines Gerätes gearbeitet.

-> RS485 sollte das Mittel der Wahl sein.
Solar? Na klar!

LeoJesse
Benutzeravatar
leojesse
Öfters hier
Öfters hier
 
Beiträge: 19
Registriert: 20.04.2018, 08:11
PV-Anlage [kWp]: 13
Speicher [kWh]: 2
Info: Betreiber

Re: SMA-Net Protokoll hacken (RS485,YASDI)

Beitragvon verlierer » 28.10.2018, 19:02

leojesse hat geschrieben:
verlierer hat geschrieben:-> RS485 sollte das Mittel der Wahl sein.

Ah pass auf dass Du nicht zu den Nein-Sagern wechselst ;-)
RS485 ist bewährt aber auch alt Und keiner will mehr heute Kabel verlegen.
Wenn die Anlage nicht mehr als 100 kW hat, liegen die WR dicht genug beisammen, um sie mit rs232 und ein paar Software-Serials direkt auszulesen.
Und wenn die GSM Daten-Sim nur 1 Euro im Jahr kostet..

Hab jetzt doch eine fertiges Teil für Dich gelötet und sogar wackeliges Gehäuse gedruckt. Den Bewegungsmelder hab ich inzwischen auch hin bekommen.

http://www.youtube.com/watch?v=eMXMqkBwpmY

Hab das Teil heute abend bei meinem Nachbarn an die RS485 gehängt, über welche der SunnyExplorer zwei SB3300 abfragt.
Wenn wir viel Glück haben, tauchen morgen ab Sonnenaufgang dort alle 5 Minuten neue logs auf: http://robosoft.de/test.txt
Hab da grad eine kostenlose http://www.netzclub.net sim drinne.

Da ich den Datenlogger erst im Dunkeln angeschlossen habe, konnte ich halt nichts testen.
Nachbar ist tagsüber arbeiten und abends ist es ja nun schon früh dunkel.

Werde ihn Montag oder Dienstag abend abholen und kann ihn dann an Dich verschicken.

Derzeit hört der Datenlogger nur still zu.
Das Netbook mit dem SunnyExplorer läuft also noch und fragt die zwei WR ab.
Mein Datenlogger liest aber alle Pakete mit und identifiziert die Antworten der WR.
Drum könnten morgen schon logs per gsm ins Netz geschickt werden.

das Roland
Ideen immer zu mir :-)
Ausreden woanders hin :-(
Benutzeravatar
verlierer
Vielschreiber
Vielschreiber
 
- Threadstarter -
 
Beiträge: 172
Registriert: 25.06.2007, 11:33
Wohnort: Bayern
PV-Anlage [kWp]: 26,7
Info: Betreiber

VorherigeNächste

Zurück zu Datenlogger



Ähnliche Beiträge


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste