Fronius symo inverter input for second dc channel not working

Hello

With the new channels of the fronius binding github it should be possible to read out each dc channel of the inverter individually. I just tested this channels on the fronius symo 8.2-3-M, which has two individual MPPT-tracker and therfore also two individual inputs. In the inverter control panel you can see for eache channel the current, voltage and power. But when I add an item to one of the additional dc channels (2/3) the responde is always 0.

Does this feature already support the symo inverter with the datamanager 2.0 or does it at this stage only support the Gen24 inverter as mentioned in this topic:

Thank for your advices.

Best regards

Nicolas

If I’m not mistaken, this is only available from a gen24 (or maybe hybrid - unconfirmed), and not available in symo non hybrid.

Hey Jim

According the solar API reference documentation see Fronius Solar API (JSON) those endpoints should be supported by the datamanager 2.0. But in the documentation its not explict decleared if this is a gen24 feature…
solarApiv1.json (62.4 KB)

Does anybody else have any experience with the mppt2 values of the Symo inverters?

Try doing a http request to the inverter from your browser and post the output here.

I too have the same issue. I was hopeful of getting this information with the upgrade but unfortunately not. I have a Symo as well.

As you can see the response of the http-request “GetInverterRealTimeData” has currently no secondary IDC data:

2022-07-06 10:58:00.401 [INFO ] [utomation.script.ui.solarApi_request] - Http responde: {
   "Body" : {
      "Data" : {
         "DAY_ENERGY" : {
            "Unit" : "Wh",
            "Value" : 14132
         },
         "DeviceStatus" : {
            "ErrorCode" : 0,
            "LEDColor" : 2,
            "LEDState" : 0,
            "MgmtTimerRemainingTime" : -1,
            "StateToReset" : false,
            "StatusCode" : 7
         },
         "FAC" : {
            "Unit" : "Hz",
            "Value" : 49.990000000000002
         },
         "IAC" : {
            "Unit" : "A",
            "Value" : 18.920000000000002
         },
         "IDC" : {
            "Unit" : "A",
            "Value" : 14.859999999999999
         },
         "PAC" : {
            "Unit" : "W",
            "Value" : 4390
         },
         "TOTAL_ENERGY" : {
            "Unit" : "Wh",
            "Value" : 181816.01999999999
         },
         "UAC" : {
            "Unit" : "V",
            "Value" : 232.59999999999999
         },
         "UDC" : {
            "Unit" : "V",
            "Value" : 334.39999999999998
         },
         "YEAR_ENERGY" : {
            "Unit" : "Wh",
            "Value" : 181816
         }
      }
   },
   "Head" : {
      "RequestArguments" : {
         "DataCollection" : "CommonInverterData",
         "DeviceClass" : "Inverter",
         "DeviceId" : "1",
         "Scope" : "Device"
      },
      "Status" : {
         "Code" : 0,
         "Reason" : "",
         "UserMessage" : ""
      },
      "Timestamp" : "2022-07-06T10:58:00+02:00"
   }
}

I just tested several other requests but couldn’t figure out, where the desired data fields are. On the Fronius solar Web portal under the menu Analysis/Historie the channel is available as MPPT1 / MPPT2.

Could a request of Archive Data ( URL/GetArchiveData.cgi ) return the desired fields? Do you have any experience?

With URL/GetArchiveData.cgi we can access the desired data field.
You just have to specify the desired channel and time range and then the response is as follow:

2022-07-08 11:39:02.078 [INFO ] [utomation.script.ui.solarApi_request] - Http responde: {
        "Body" :
        {
                "Data" :
                {
                        "inverter/1" :
                        {
                                "Data" :
                                {
                                        "Current_DC_String_2" :
                                        {
                                                "Unit" : "A",
                                                "Values" :
                                                {
                                                        "60" : 6.4900000000000002
                                                },
                                                "_comment" : "channelId=131586"
                                        },
                                        "Voltage_DC_String_2" :
                                        {
                                                "Unit" : "V",
                                                "Values" :
                                                {
                                                        "60" : 224.40000000000001
                                                },
                                                "_comment" : "channelId=131585"
                                        }
                                },
                                "DeviceType" : 123,
                                "End" : "2022-07-08T11:38:59+02:00",
                                "NodeType" : 97,
                                "Start" : "2022-07-08T11:34:00+02:00"
                        }
                }
        },
        "Head" :
        {
                "RequestArguments" :
                {
                        "Channel" :
                        [
                                "Current_DC_String_2",
                                "Voltage_DC_String_2"
                        ],
                        "EndDate" : "2022-07-09T11:38:59+02:00",
                        "HumanReadable" : "True",
                        "Scope" : "System",
                        "SeriesType" : "Detail",
                        "StartDate" : "2022-07-08T11:34:00+02:00"
                },
                "Status" :
                {
                        "Code" : 0,
                        "ErrorDetail" :
                        {
                                "Nodes" : []
                        },
                        "Reason" : "",
                        "UserMessage" : ""
                },
                "Timestamp" : "2022-07-08T11:39:02+02:00"
        }
}

Now I’m struggling to acces the returned data by parsing as json object, see my code:

this.HTTPX = (this.HTTPX === undefined) ? Java.type('org.openhab.core.model.script.actions.HTTP'):this.HTTPX;
var solarPower = items.getItem("solarApi");
var IP = "192.168.1.7";
var now = time.ZonedDateTime.now();
var before =time.ZonedDateTime.now().minusMinutes(5);
console.log("before: "+before);


// get data from fronius datamanager

if (this.baseURL){
  //let content = '?Scope=Device&DeviceId=1&DataCollection=CommonInverterData';
  //let responde = this.HTTPX.sendHttpGetRequest("http://"+IP+this.baseURL+"GetInverterRealtimeData.cgi"+content,3000)
  let content = '?Scope=System&StartDate='+before+'&EndDate='+now+'&Channel=Current_DC_String_2&Channel=Voltage_DC_String_2';
  let responde = this.HTTPX.sendHttpGetRequest("http://"+IP+this.baseURL+"GetArchiveData.cgi"+content,3000)
  let json = JSON.parse(responde);
  console.log("Http responde as json: "+json.Body.Data["inverter/1"].Data.Voltage_DC_String_2.Values[0]);
if(json.Data === undefined){
     console.log("Http responde: "+responde);
   }
} else{ // Get baseURL
  let version = this.HTTPX.sendHttpGetRequest("http://"+IP+"/solar_api/GetAPIVersion.cgi",5000);
  let response = JSON.parse(version);
  this.baseURL = response.BaseURL;
  console.log("Http responde: "+this.baseURL);
}

how can i access the field Values[0] when the key always changes (see example above 60 ) ?

Thanx for your advices

1 Like

Good find! I believe that value is the offset in seconds since your given StartDate, at which the inverter recorded its data sample that falls within the given time range (between StartDate and EndDate)

So you’d just loop through the values and get what you can.

I think this would be a useful addition to the binding. I’m not sure whether the binding should just fill in the data from GetArchiveData when the inverterdata doesn’t provide dc(current|voltage)2 and return the values on inverterdatachannelidc2 and inverterdatachanneludc2 channels? That would make the binding interface more seamless, or provide a separate thing for archivedata ? Currently I’m leaning more towards the first option for simplicity’s sake.

Hi JimT
It‘s been a while since my last post. Thx for your hint with the the loop function for extracting the response.
I discovered that the data of all historic values is also available on the fronius solarweb platform without any boundaries. So if you navigate to analyse than Historisch you can select all desired historic values to get an insight of your plant.
In my case the simple http request as described above does the job and I‘m wondering if there are many use cases wich can profit from this additional functionality in the bindning.
If you still are up to include the historic data request in the binding I would recommend to include it in the existing thing, as you mentioned it makes it more seamless…
I m also available for any support in documentation if you need and add an example of the historical http request.
I figured out that the current dc(current|voltage)1 values of a fronius symo is the sum of all mppt‘s ( dc1 & dc2 in my case) . Maybe this soulf be mentioned somewhere.
Best regards and thx for this good working binding!
Nicolas