Opbrengst zonnepanelen (SolarEdge) als notificatie op telefoon

Nu de zon weer volop gaat schijnen is het interessant om te zien hoeveel de SolarEdge zonnepanelen opgebracht hebben. Met onderstaand script krijgt je dagelijks een notificatie op je telefoon met de opbrengst en rendement van de huidige dag, maand en jaar.

Benodigdheden

Maak eerst in Domoticz een virtuele Percentage-sensor aan. De naam mag je zelf kiezen, noteer wel het IDX van de sensor. Ga vervolgens naar de website van SolarEdge om de API en siteID te achterhalen. Nadat je bent ingelogd klik je op “Admin” en vervolgens op “Site toegang”. In dit scherm kun je een API sleutel aanmaken:

SolardEdge script

Het script haalt via de SolarEdge API het aantal opgewekte kW’s per dag/maand/jaar op. Tevens wordt er gekeken hoeveel licht-uren er in een dag/maand/jaar zitten. Deze licht-uren worden gebruikt om het rendement per periode uit te rekenen.

In het script hoef je slechts regel 4 t/m 10 aan te passen (de overige regels moet je niet wijzigen!). Sla het scripts vervolgens op met de naam solaredge.php in de folder /home/pi/domoticz/scripts/php/

Cronjob

Om ervoor te zorgen dat het script iedere dag (om 22.15 uur) uitgevoerd wordt moeten we een cronjob aanmaken. Geef in te terminal onderstaande in:


En voeg onderstaande regel toe:


Sluit het bestand af met CTRL-X, dan Y en tot slot ENTER. De aanpassing is nu opgeslagen in het bestand en het script zal iedere dag om 22.15 uur uitgevoerd worden. Je krijgt, via Domoticz, een notificatie op je telefoon als onderstaand:

 

Note: het redement zal nooit 100% zijn, aangezien in het script wordt gekeken hoe laat de zon opkomt en ondergaat. De zon zal dus nooit continue in de juiste hoek op de zonnepanelen schijnen. Ik schat dat een rendement van zo’n 45%-50% het maximaal haalbare zal zijn.

 

6 gedachten over “Opbrengst zonnepanelen (SolarEdge) als notificatie op telefoon

  • 21 februari 2021 om 20:05
    Permalink

    Leuk om te lezen. Ik heb zelf een script in DzEvents gemaakt dat iedere dag bij zonsondergang aangeeft via een Telegram bot hoeveel er geproduceerd is met mijn SolarEdge en wat dat in eurootjes is.. En om 23.59 komt daar nog een melding bij wat de totale gas & electriteitskosten zijn van die dag incl saldering.

    En heb vorig jaar een dummy meter opgevoerd die een 10kW batterij moet voorstellen. Iedere minuut wordt er gekeken of de batterij geladen of ontladen moet/kan worden, ben benieuwd wat er aan het einde van 2021 voor beeld is ontstaan 🙂 Zou blijf je een beetje bezig…

    Beantwoorden
    • 11 november 2021 om 12:33
      Permalink

      Hoi Alwin,

      zou je het script kunnen delen?
      Wil het ook graag proberen.

      Beantwoorden
  • 11 november 2021 om 18:20
    Permalink

    Welk script bedoel je ? Die van de batterij of die van de TelegramBot ?

    Beantwoorden
  • 13 november 2021 om 18:58
    Permalink

    Voor de telegram notificatie heb ik een paar dingen gedaan:
    ik heb een script global_data, daar heb ik onderstaand ingezet om een makkelijke functie aan te roepen en enkele globale variabelen te zetten
    —-
    return{
    helpers = {
    sendtelegram = function(dz, msg)
    dz.notify(‘Update’, msg, dz.PRIORITY_NORMAL, dz.SOUND_NONE,”, dz.NSS_TELEGRAM)
    end,

    euro = function(dz, eur)
    local splittedResult = dz.utils.stringSplit(eur,’.’)
    eurTekst = splittedResult[1] .. ‘ Euro en ‘ .. splittedResult[2] .. ‘ cent’
    return eurTekst
    end
    },
    data = {
    notifiedZon = { initial = 0 },
    mijlpaal = { initial = 10 },
    notifiedVerbruik = { initial = 0 },
    Welterusten = { initial = off }
    }
    }

    ik heb een script gemaakt dat kijkt naar de opgewekte stroom en bij een mijlpaal (eenheid 10kWh uit de globale variabele) een alert stuurt
    return {
    on = {
    devices = {
    ‘Opbrengst kWh’
    }
    },
    execute = function(dz, device)
    — variabelen definieren
    local notified = dz.globalData.notifiedZon
    local mijlpaal = dz.globalData.mijlpaal + notified
    local actueel = device.counterToday

    — reset de dagcounter indien nodig
    if ((notified > 0) and (actueel = mijlpaal) and (notified < mijlpaal)) then dz.helpers.sendtelegram(dz, 'Zonnepanelen mijlpaal: '..mijlpaal..'kWh!') dz.globalData.notifiedZon = mijlpaal end end } In de instellingen van Domoticz heb ik bij Notifications de telegram optie ingesteld. In telegram maak je een bot aan en een chatgroep waar de bot inzit en waar jouw account inzit. Het was een beetje googlen hoe je van de groep een chatID achterhaalt: zie ook https://stackoverflow.com/questions/32423837/telegram-bot-how-to-get-a-group-chat-id

    Je kunt ook zelf telegram aanroepen via een weburl, dat doe ik als ik een plaatje wil meesturen. Zo heb ik ingesteld dat als de deurbel ingedrukt wordt er een foto van mn foscam camera gericht op de voordeur via telegram naar mij wordt gestuurd. Dat doe ik middels een commando dat ik ook heb opgenomen in global_data als functie sendphoto. Onderstaand de belangrijkste regel daaruit.
    os.execute(‘curl -s -X POST https://api.telegram.org/bot&#039; ..VariabeleTok .. ‘/sendPhoto?chat_id=’ .. chatId .. ‘ -F photo=@’ .. photofile .. ‘ -F caption=”‘ ..realcaption..'” &’)
    os.execute(“sleep 1”)
    Ik heb meerdere foscam camera’s in domoticz gekoppeld die ik met die ene functie kan aanroepen.

    Beantwoorden

Laat een antwoord achter aan Alwin Reactie annuleren

Het e-mailadres wordt niet gepubliceerd.