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, 16: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: 1231
Registriert: 28.02.2008, 23:09
Wohnort: 97xxx
PV-Anlage [kWp]: 3,78
Info: Betreiber

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

Beitragvon verlierer » 10.10.2018, 18: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: 166
Registriert: 25.06.2007, 12:33
Wohnort: Bayern
PV-Anlage [kWp]: 26,7
Info: Betreiber

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

Beitragvon uweklatt » 10.10.2018, 19: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: 1231
Registriert: 28.02.2008, 23:09
Wohnort: 97xxx
PV-Anlage [kWp]: 3,78
Info: Betreiber

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

Beitragvon verlierer » 10.10.2018, 19: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: 166
Registriert: 25.06.2007, 12:33
Wohnort: Bayern
PV-Anlage [kWp]: 26,7
Info: Betreiber

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

Beitragvon leojesse » 11.10.2018, 08: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: 17
Registriert: 20.04.2018, 09:11
PV-Anlage [kWp]: 13
Speicher [kWh]: 2
Info: Betreiber

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

Beitragvon verlierer » 11.10.2018, 10: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: 166
Registriert: 25.06.2007, 12:33
Wohnort: Bayern
PV-Anlage [kWp]: 26,7
Info: Betreiber

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

Beitragvon leojesse » 12.10.2018, 09: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: 17
Registriert: 20.04.2018, 09:11
PV-Anlage [kWp]: 13
Speicher [kWh]: 2
Info: Betreiber

Vorherige

Zurück zu Datenlogger



Ähnliche Beiträge


Wer ist online?

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