Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin für Fronius Symo Wechselrichter

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • chrisi
    antwortet
    Danke
    Du verwendest das Kostal Plugin mit einem Fronius WR?
    Hast du dem WR eine fixe IP verpasst?

    Einen Kommentar schreiben:


  • jonny7792
    antwortet
    Zitat von chrisi Beitrag anzeigen
    Ist zwar schon älter, aber gibt es da mittlerweile was?
    Ja die folgende logic mit dem Kostal Plugin


    Code:
    #!/usr/bin/env python3
    # queryurl.py
    
    import requests
    import json
    
    def find(element, json):
        keys = element.split('.')
        rv = json
        for key in keys:
            rv = rv[key]
        return rv
    
    kostal_ip = "192.168.1.26"
    kostal_url = "http://"+kostal_ip+"/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CommonInverterData"
    
    # Map JSON entries to items:
    json2items = {
        'Body.Data.DAY_ENERGY.Value' : 'PV.Fronius.Tagesertrag',
        'Body.Data.PAC.Value'        : 'PV.Fronius.Momentan',
        'Body.Data.YEAR_ENERGY.Value': 'PV.Fronius.Jahresertrag',
        'Body.Data.IDC.Value': 'PV.Fronius.IDC',
        'Body.Data.UDC.Value': 'PV.Fronius.UDC',
        }
    
    # ----------------------------------------
    sample="""{ "Body" : { "Data" : { "DAY_ENERGY" : { "Unit" : "Wh", "Value" : 159.19999999999999 }, "DeviceStatus" : { "ErrorCode" : 0, "LEDColor" : 2, "LEDState" : 0, "MgmtTimerRemainingTime" : -1, "StateToReset" : false, "StatusCode" : 7 }, "FAC" : { "Unit" : "Hz", "Value" : 50 }, "IAC" : { "Unit" : "A", "Value" : 1.2 }, "IDC" : { "Unit" : "A", "Value" : 0.68999999999999995 }, "PAC" : { "Unit" : "W", "Value" : 111 }, "TOTAL_ENERGY" : { "Unit" : "Wh", "Value" : 4552750 }, "UAC" : { "Unit" : "V", "Value" : 237.19999999999999 }, "UDC" : { "Unit" : "V", "Value" : 193.40000000000001 }, "YEAR_ENERGY" : { "Unit" : "Wh", "Value" : 77647.699999999997 } } }, "Head" : { "RequestArguments" : { "DataCollection" : "CommonInverterData", "DeviceClass" : "Inverter", "DeviceId" : "1", "Scope" : "Device" }, "Status" : { "Code" : 0, "Reason" : "", "UserMessage" : "" }, "Timestamp" : "2019-02-07T10:43:11+01:00" } }"""
    
    if kostal_ip:
        logger.debug("Abfragen von {} ".format(kostal_url))
        r = requests.get(kostal_url)
        data = r.json()
    else:
        logger.debug("Keine IP vorhanden, benutze Musterdaten")
        data=json.loads(sample)
    
    for k in json2items:
        try:
            value = find(k, data)
            itempath= json2items[k]
            logger.debug("{} mit Wert {} wird gemappt auf {}".format(k, value, itempath))
            item = sh.return_item(itempath)
            if item is not None:
                item(value)
            else:
                logger.debug("Item {} existiert nicht".format(itempath))    
        except KeyError:
            logger.debug("{} wurde nicht gefunden".format(k))
        except NameError:
            logger.debug("Item {} konnte nicht zugewiesen werden".format(itempath))

    Einen Kommentar schreiben:


  • chrisi
    antwortet
    Ist zwar schon älter, aber gibt es da mittlerweile was?

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo,

    der URL-Aufruf sieht so aus, als ob das fetch_url kann.


    Wo das Problem ist bzw. was Du ändern musst, kann Dir nur Dein Debuglog sagen.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • MarkusG
    antwortet
    Hallo,

    Danke für den TIP.

    Mit sh.tools.fetch_url hab ich es noch nicht zum laufen gebracht.

    Was bis jetzt funktioniert ist dieser Code.

    Code:
    import urllib.request
    import json
    
    request = urllib.request.Request("http://192.168.8.181/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceId=1&DataCollection=CommonInverterData")  
    response = urllib.request.urlopen(request)
    encoding = response.info().get_param('charset', 'utf8')
    data = json.loads(response.read().decode(encoding))
    
    day_energy = data["Body"]["Data"]["DAY_ENERGY"]["Value"]
    
    day_energy_kwh = (day_energy / 1000)
    sh.bungalow.pv.day_energy(day_energy_kwh)
    Wie müsste ich den Code ändern damit es auch mit sh.tools.fetch_url funktioniert ?

    LG Markus

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo,

    mir ist nichts dazu bekannt.
    Das könntest Du für den Anfang auch als kleine Logik implementieren. Einfach mit fetch_url holen und als JSON parsen.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • MarkusG
    hat ein Thema erstellt Plugin für Fronius Symo Wechselrichter

    Plugin für Fronius Symo Wechselrichter

    Hallo,

    ich würde gerne einige Daten meiner PV Anlage in Smartvisu visualisieren.
    Folgende Werte bekomme ich über eine Webabfrage.

    PHP-Code:
    {
        
    "Head" : {
            
    "RequestArguments" : {
                
    "DataCollection" "CommonInverterData",
                
    "DeviceClass" "Inverter",
                
    "DeviceId" "1",
                
    "Scope" "Device"
            
    },
            
    "Status" : {
                
    "Code" 0,
                
    "Reason" "",
                
    "UserMessage" ""
            
    },
            
    "Timestamp" "2015-05-25T14:02:10+02:00"
        
    },
        
    "Body" : {
            
    "Data" : {
                
    "DAY_ENERGY" : {
                    
    "Value" 13307,
                    
    "Unit" "Wh"
                
    },
                
    "FAC" : {
                    
    "Value" 49.96,
                    
    "Unit" "Hz"
                
    },
                
    "IAC" : {
                    
    "Value" 16.89,
                    
    "Unit" "A"
                
    },
                
    "IDC" : {
                    
    "Value" 8.6,
                    
    "Unit" "A"
                
    },
                
    "PAC" : {
                    
    "Value" 3916,
                    
    "Unit" "W"
                
    },
                
    "TOTAL_ENERGY" : {
                    
    "Value" 1221454,
                    
    "Unit" "Wh"
                
    },
                
    "UAC" : {
                    
    "Value" 232.1,
                    
    "Unit" "V"
                
    },
                
    "UDC" : {
                    
    "Value" 467,
                    
    "Unit" "V"
                
    },
                
    "YEAR_ENERGY" : {
                    
    "Value" 1221454,
                    
    "Unit" "Wh"
                
    },
                
    "DeviceStatus" : {
                    
    "StatusCode" 7,
                    
    "MgmtTimerRemainingTime" : -1,
                    
    "ErrorCode" 0,
                    
    "LEDColor" 2,
                    
    "LEDState" 0,
                    
    "StateToReset" false
                
    }
            }
        }

    Würde das ganze gerne über eine Plugin lösen.
    Hat hier jemand schon was vergleichbares gemacht ?

    LG Markus
Lädt...
X