-
-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IMPROVEMENT: Grid Voltage/Current/Frequency #27
Comments
HI Thanks for sharing! Great to know this is also an possibility, if i am correct the web does provide this info, but not in a structured api. For now there is no reason for me to implement this. The portal can be found on the inverter portal->realtime monitor https://fop.saj-electric.com/saj/cloudMonitor/deviceInfo/findRawdataPageList |
Hi, Such feature will be great! |
I will keep it open, feel free to create a pull request if you can workout the code. When things quiet down here i might have another look at it |
I'm currently developing a little bit on this integration. |
I don't find that cloudmonitor link anymore, I think they removed it. |
@faanskit how did you get that api link from the APP? As I want to check those calls to implement them maybe in the code. |
I intercepted the APP traffic from an (old) ipad using mitmproxy. Reason for using an old ipad was that it's possible to install your certificates to allow to sniff https traffic. |
eSolar_test.zip Please take note that the parameter HTH/Marcus |
Ok that is how you captured the https traffic, gonna check if this also exist for android as I'm not owning an apple device. Thx for the code, I will have a look at it. |
i am still able to find it using the web. It is hidden away for sure. (model: R5-3K-S1) https://fop.saj-electric.com/saj/cloudMonitor/deviceInfo/toRealDataPage?devicesn=XXXXXXXXXXX got there by going to: Plant->plantlist |
Ok thanks to show me where I can find that data. I might look into it but it's currently very busy here. |
Dumping the code for this, made for a parallel integration (#45). Some rewrite to match this integration is obviously required, but here goes:
|
Hey @djansen1987 and @robshot , I just want to raise a "warning" using the https://fop.saj-electric.com/saj/cloudMonitor/deviceInfo/findRawdataPageList API. This API does not give access to the current data, it merely provides information about the last reported meter value. This API is obtaining historical values. As soon as the inverter stops to generate power, this API is "stuck" with the last reported value. Therefore, from the point when the system went off-line, i.e. In the APP, at this stage - the system reports N/A. /Marcus |
Makes sense, this might be different for a sec or H1 installation as this would stay online. Thanks for all the feedback |
The WEB portal for eSolar does not provide the Grid information via its API. However, the APP utilized other API's from which additional information can be obtain.
The app does not use session cookies, but a
token
anduserUid
is required. To obtain the token, login with this endpoint and the password hashed with MD5.To obtain additional data, use this request. Take note that
DeviceSN
was already fetched with/getPlantDetailChart2
or/getPlantDetailInfo
This will produce the following output:
r/s/t GridVolt,GridCurr,Freq corresponds to the Grid output for the tree different phases.
The following endpoints used by the APP are fairly straight forward, but mostly redundant from the ones used by the portal and this integration:
The following endpoints used by the APP still needs to be figured out:
They appear to be using a SHA1 to create the
signature
, but I cannot reproduce it. Likely some salt is added by the app. I am clueless wrt. to reverse engineering apps, so I'm not sure I'll succeed. The app seems to be written in Kotlin, which makes it even harder to figure out (for me at least).If my time allows, I'll add the code a provide it as a pull request. For now, I just wanted to offer my findings for anyone to pick up.
The text was updated successfully, but these errors were encountered: