[App][Pro] SlimLaden voor Marstek - inclusief local API

goedemiddag, ik heb me lilygo bordjes binnen sinds aantal dagen. even een hele domme vraag want ik probeer het eea te leren maar voor mij is deze materie nog behoorlijk wat stappen te moeilijk. ik heb geen HA, als ik het stappenplan van het modbus verhaal op tweakers wil volgen heb ik denk ik HA nodig of is dat niet het geval? ik heb python gedownload daarop esphome geinstalleerd en daar ben ik nu. waar vind ik nu esphome en hoe kan ik daar mappen aanmaken en bestanden aanpassen? :see_no_evil_monkey:

2. Zorg dat in de ESP Home map ook de secrets.yaml staat met je Wifi gegevens.

vervolgens is ESPhomebuilder ook een HA addon volgens mij.

ik probeer deze uitleg te volgen, is dat de juiste en kun je me misschien een klein beetje op weg helpen

Je hebt geen HA nodig. Ik dacht in eerste instantie dat het wel nodig was maar met een pc kan het ook gewoon :slightly_smiling_face:

Installeren esphome:

Daarna een lilygo-rs485.yaml maken. (ik heb 3 verschillende: lilygo-rs485-a.yaml, lilygo-rs485-b.yaml en lilygo-rs485-c.yaml waarin de prefix anders staat)

Als laatste uitvoeren op de commandprompt: esphome run lilygo-rs485.yaml

ja ik heb die esphome inderdaad geinstalleerd via python maar ik loop een beetje vast in de volgende stappen aangezien het mijn wereld helaas nog niet is:

heb echt geen idee wat er mee bedoeld wordt:

2. Zorg dat in de ESP Home map ook de secrets.yaml staat met je Wifi gegevens.

  1. Maak in ESPHome Builder een nieuw device lilygo-rs485 met als type ESP32

  2. Negeer de melding over de encryption key dit doen we bij stap 6.

  3. Kies Skip om de installatie over te slaan.

Ik heb dat hier gedaan volgens mij: https://web.esphome.io/

oke top, die site ziet er iets overzichtelijker uit, ik installeer die esphome “prepare for first use” op mijn lily go en vanaf daar kan ik de rest aanpassen?

Ja klopt. Als je mijn app wilt gebruiken dan moet je wel een stukje toevoegen aan de yaml, voor werking met MQTT. De yaml moet je aanpassen in een geschikte app. Of bijvoorbeeld via de command line met nano. Staat hier ergens wel beschreven.

Ik heb mijn app behoorlijk aangepast. Je kunt in de eerste post alles lezen hoe de app nu werkt. [App][Pro] SlimLaden voor Marstek - Stuur je Marstek Venus slim aan (NL)

Belangrijkste aanpassingen:

  • Ik heb de interne mqtt broker eruit gehaald
  • De app is van 20MB naar een kleine 2MB gegaan
  • De soc wordt nu opgehaald met mqtt >>> hij vindt dus niet meer zelf de batterij
    • (Er zit nog wel een flow in om de soc te vullen mocht je geen Lilygo hebben)
  • Tibber-prijzen toegevoegd middels een API
    • (Opvallend….andere leveranciers hebben geen API?)

Maar dan echt iets super gaafs:

Ik heb een nieuw device toegevoegd. Hierin wordt per uur aangegeven/berekend wat het verwachte verbruik is. En het mooie is dat het model ZELFLEREND is. Ik heb dit zelf nog niet getest, maar ik kon niet langer wachten :slight_smile: om dit uit te leveren.

In het kort wat ik gedaan heb:

  • ChatGPT gevraagd om mijn data te analyseren:

    • Hij heeft voor mij uitgereken wat ik gemiddeld per dag aan stroom verbruik
    • Ook kon hij aangeven hoeveel meer Wh ik ga gebruiken als de temperatuur buiten 1 graad kouder is dan 18 graden. Deze zogenaamde graaddagen haal ik op in mijn app.
    • Stel je verbruikt gemiddeld 10.000Wh per dag (Niet gemiddeld, maar sowieso) + ik gebruik per graad kouder buiten 500Wh meer => dan is het totale verbruik op een dag van 15 graden => 10.000 + 500*3 = 11.500wh op een dag.
    • Vervolgens heb ik CHatGPT gevraagd om een goede verdeling over de dag te maken. Dit gebeurt op basis van fracties => Elk uur krijgt een getal tussen de 0 - 1, zodat het totaal aan Wh weer je dagverbruik is (=11.500Wh).

Deze verbruiken per uur worden gebruik in de strategie “Nul op de meter”. Op de tijdlijn kan je precies zien hoe hij aan de waarden komt. (Op de tijdlijn zie je ook nog even de commando’s richting de batterij, leek me ook handig voor jullie, voor de test periode)

Tot slot leuk om nog te vermelden. In de strategie “ Dynamisch” worden de 2 goedkoopste uren gezocht om te laden en de twee duurste om te ontladen. Stel de batterij is al halfvol bij de start van de 2 uur laden, maar het 2e uur laden is goedkoper, dan gaat hij het eerste uur (bijna) niet laden.

Afijn….de app is nog steeds wel in beta-fase…..laat weten waar je nog tegenaan loopt. ( je kan daarvoor het beste de “suggest” knop bij de app in de App Store gebruiken)

1 Like

Aldus ChatGPT (Eigenlijk Claude Sonnet):

:brain: Adaptief Verbruik Learning Systeem

:white_check_mark: Wat er is geïmplementeerd:

  1. UsageLearning Class (lib/usage-learning.js)
  • Logt werkelijk vs voorspeld verbruik per uur
  • Berekent adaptieve fracties op basis van historische data
  • Houdt rekening met seizoenen en weekdag/weekend patronen
  • Slaat data persistent op in JSON bestanden
  1. EnergyUsageDevice Updates
  • Integreert het learning systeem
  • Automatische dagelijkse updates (om 02:00)
  • Methoden voor handmatige controle
  • Persistent opslag van geleerde fracties
  1. Flow Cards
  • force_learning_update: Handmatig fracties bijwerken
  • show_learning_stats: Toon leer-statistieken
  • log_actual_usage: Handmatig verbruik loggen

:bullseye: Hoe het werkt:

  1. Data Verzameling: device.logActualUsage(hour, actualWh, predictedWh)
  2. Learning: Dagelijks om 02:00 worden fracties bijgesteld
  3. Aanpassingen: Seizoenen, weekdag/weekend, en error-patronen worden meegenomen
  4. Persistence: Fracties worden opgeslagen in app.json en data bestanden
1 Like

@Roedi_de_Lion: Ik heb nog wel een vraag over hoe je straks met meerdere batterijen om gaat. :thinking:
Ik kan ze alle drie wel op een eigen fase zetten, maar dan heb je heel veel verlies.
Nu gebruik ik een accu en zodra deze leeg is schakel ik die uit en de volgende in.
Laden doe ik alle drie tegelijk op 1650W. Dan zijn ze precies binnen 3 uur vol.

he Roedi, ja ik heb de lilygo puur gekocht om jouw app te proberen, leek me leuk in homey!

heb ik vanuit de tweakers marstek modbus pagina de hele yaml nodig voor jouw app of kan ik ook alleen esphome installeren met onderstaande yaml:

mqtt: broker: “192.168.x.x” # IP van je Homey port: 1883 username: “je_username” password: “je_password” topic_prefix: “marstek” discovery: false

De gehele yaml en het stukje mqtt toevoegen.

Ik heb dat stukje vlak onder die uitgesterde apikey gezet.

he Roedi,

ik heb de liygo-rs485.yaml gedownload van de github hier heb ik het mqtt stukje toegevoegd met mijn gegevens en het HA key verwijderd.

op web.esphome.io heb ik esphome geinstalleerd een de wifi geconfigureerd.

vervolgend heb ik in cmd de yaml uitgevoerd en op de lilygo laten zetten.

is dit nu genoeg of heb ik iets over het hoofd gezien, er zijn zoveel comments met berichten van mensen en verschillende mogelijkheden voor deze app dat ik eventjes niet meer weet wat nodig is.

ik heb hem tevens aangesloten op de batterij nu maar er gaat geen lampje of iets branden op de lily is dit correct? hoe kan ik verder snel zien of alles correct werkt?

thnx voor alle info!

ja zonder HA is het echt even zoeken voor me hoe dit nu op een goede manier te doen.

ik heb via https://web.esphome.io/ esphome geinstalleerd op de lilygo en kon daar ook wifi configureren ( neem aan dat dit ipv secrets yaml is)? vervolgens heb ik op github die tweakers yaml gedownload en daar die mqtt regels aan toegevoegd ( HA apy gedeelte verwijderd, leek mij zonder ha niet nodig). vervolgens heb in in esphome cmd die yaml geladen en op de lilygo gezet.

nu ben ik een beetje in de war en heb ik alles nu goed gedaan of heb ik een foutje gemaakt?

kan ik ergens ook controleren dat het goed of niet goed is ? als ik hem ter test aan de marstek hang via die kabel gaat er ook nergens een lampje branden of iets op die lilygo.

Ga ik over nadenken. Deze had ik niet scherp nog. Ik heb zelf maar één batterij.

Vraagje. Waarom is er heel veel verlies op aparte groepen?

Was nog even een werkje, maar ik hoop zo te kunnen helpen:

ESPHome Installatie en Gebruik (voor marstek.yaml)

Hier staan mijn yaml en secret (ik zou de wifi wel echt met secret doen, was bij toen een probleem als ik het in de yaml had staan)

Marstek yaml files

1. Vereisten

Zorg dat Python 3.9 of hoger is geïnstalleerd:


python3 --version

Installeer ESPHome via pip:


pip3 install esphome

2. Projectmap aanmaken


mkdir marstek-project

cd marstek-project

Zet hierin de bestanden:

  • marstek.yaml

  • secrets.yaml

3. secrets.yaml bewerken

Voorbeeld:


wifi_ssid: "ZijneWiFi"

wifi_password: "SuperGeheimWachtwoord"

Controleer dat marstek.yaml deze regels bevat:


wifi:

ssid: !secret wifi_ssid

password: !secret wifi_password

4. LilyGo aansluiten

macOS/Linux:


ls /dev/cu.usb*

Windows:

Bekijk de COM-poort via Apparaatbeheer.

5. Compileren en flashen


esphome run marstek.yaml

6. Logs bekijken


esphome logs marstek.yaml

of via IP-adres:


esphome logs 192.168.178.xxx

7. Klaar voor gebruik

De LilyGo stuurt nu MQTT-data naar Homey.

PS: Bij de Marstek versie 2, moet de kabel voor de Ground en nog eentje worden omgedraaid begreep ik.

geweldig! ik wilde er nu even snel mee aan de slag maar heb vanmiddag meer tijd!

de yaml link naar github werkt niet, pagina niet gevonden als ik er op klik

versie 2 heb ik onderstaand plaatje aangehouden:

en zo aangesloten:

Voor versie 2 moet je deze aansluiting gebruiken:

Ik heb versie 1 en versie 2. Bij versie 1 is de GND de onderste, maar bij versie 2 is dat de 3e van boven. (op de connector is GND bij V1, zwart en bij V2 blauw)
Bij mij zijn het groene en oranje kastje versie 1 en het blauwe kastje versie 1

Ahhh thnx!! Mijn +\- zitten dan niet goed idd heb de onderste 2 gepakt ipv de 3e en onderste

De link naar de yaml: MarstekVenus-LilygoRS485/lilygo-rs485.yaml at main · Superduper1969/MarstekVenus-LilygoRS485 · GitHub

Dit heb ik als eerste stuk in de yaml voor mijn eerste accu (A). Bij de andere kun je A vervangen door B en door C.

esphome:
  name: lilygo-rs485-a
  friendly_name: LILYGO RS485 A
  min_version: 2024.11.0
  name_add_mac_suffix: false
  #http://lilygo-rs485-a/

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:
  # level: VERY_VERBOSE
  
# Enable Home Assistant API
api:
  password: ""

ota:
  - platform: esphome
    password: "Vul-hier-een-wachtwoord-in"

wifi:
  ssid: "Vul-hier-je-wifi-naam-in"
  password: "Vul-hier-je-wifi-wachtwoord-in"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Lilygo-Rs485-A Fallback Hotspot"
    password: "Vul-hier-een-wachtwoord-in"

web_server:
  port: 80

mqtt:
  broker: Vul-hier-het-ip-adres-van-je-Homey-in
  port: 1883
  username: "Vul-hier-de-mqtt-user-in"
  password: "Vul-hier-het-mqtt-wachtwoord-in"
  topic_prefix: "marsteka"
  discovery: false

# Set pins required for LilyGo T-CAN485 board