-
Notifications
You must be signed in to change notification settings - Fork 7
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
Update re firmware 3.003.02 #1
Comments
The benefit of reverse-engineering official application is that these docs are supposed to be as accurate as the official Android application. How recent is the firmware? Latest Android app is 0.4.5, which is a bit newer than 0.4.3 I was looking at. It apparently now supports a few more devices and Pocket WiFi+LAN and Pocket WiFi+4G that didn't exist before. So I might have to look and update things here again. |
Mine were installed September 2022, both with v3 firmware out of the box as far as I know. Here's the API response from the mini (with inverter IDs partly obscured): and the information section from the Hybrid G4 for comparison: |
Hi folks, well done. I'm working too on this evil inverter (type 15). By now I can 100% confirm Data[18] is battery current charge in %. |
@jefft4 did you try official Android app with local WiFi connection and did it show correct data for you on X1 Mini 2.0?
It is already documented as |
I've never tried the SolaX Android app with local wi-fi; wasn't aware it could do that! The Android app in cloud mode shows me an aggregated view of my two inverters - as with the cloud app, sometimes it's a bit incorrect because the two inverters report to the cloud at different times. SolaX really could be smarter about that! |
On last page "Account" there is "Local" button, it allows you to connect to Inverter directly without Internet connection or anything like that. We use API that that feature is using. I suspect, official app will not work properly for you (I don't see how it would in their code), but I had an idea in squishykid/solax#108 (comment) on how to handle it. On the other hand, if it does NOT work, you can report this to Solax (they were quite responsive over email) and once they fix the app, we can follow their footsteps. |
This any help? This is the code from my NodeRed flow that extracts the key data elements for the Hybrid.
|
I have no problem getting data from the X1 mini; it's just the detection of the mini by this integration that wasn't working; that seemed to be caused by a change in the 'Information' array. I guess that the app is using the same API that we can get on the local wi-fi access point @ IP 5.8.8.8. With the recent firmware versions, the same data is also presented at http://<LAN_IP>/optType=ReadRealTimeData&pwd=<dongle_ID>. |
No, there is nothing in there that is not already in this repo. What I need to know is whether Android app can show the data from it or not.
Repeating information that is already in this repo isn't that helpful, but checking Android app and reporting to Solax if it doesn't work would be VERY helpful. |
It's just as well I'm not easily offended by people being snarky in posts online! My offer of the NR flow was to @npmdnl, not to you; your response to that was unnecessary and the tone was dismissive and somewhat rude. Being polite would have cost you 2 more seconds; saying nothing would have saved you 60. The smiley at the end doesn't change the tone. Now to what you wanted: The local connection from the Android app to the X1 mini v2 appears to be fine; the two pieces of data that it reports, the PV power and AC power, are close enough to the values I get from the ReadRealTimeData endpoint that any variation is just timing. App reports version 4.2.6. I hope that helps you :-) Also - I notice you mention in your main readme that you left out the battery serial number because yours reports garbage. For my Hybrid G4, it's a simple text string in information[2] and it's correct. Might be worth noting those inverters that we know do report it properly. |
Didn't mean to be rude, sorry if it came across that way, just wanted to keep conversation on topic here.
I'm surprised, is this the version of Android app? Can you post link to Google Play?
|
That's what it says inside the app. I've just checked for updates and there is one available... that's dated 12 June; play store says it's 0.4.6, app now says 4.2.7. I guess SolaX is as good with version numbering as it is with documentation and consistent data design!! 😆
Where did you think the battery serial(s) might be stored in Data[], based on the app code? If I know where to start looking, I'll check if it's reliable for at least this inverter. Not that I care about serial numbers, but it's nice to be complete! I've also got a new entity on the main flow diagram in the new app, 'Meter'. Looks like that's to handle the mysterious delta that they label 'other generation' in the cloud app. I think it's just what we'd call in Finance, a 'reconciling item' - i.e., a calculated number to plug a gap 😉 so I doubt it maps to a Data[] element but that value always bugged me so I'll briefly check again. |
Okay, so we are looking at the same version. Any chance you can look into what requests the app is making? There might be something the app is doing outside of JS that I can't see, though I doubt that. Knowing what endpoints they query in which order would be really helpful. https://play.google.com/store/apps/details?id=com.emanuelef.remote_capture should work, especially because it is unencrypted HTTP.
According to source code this is how (apparently just for Data2): getSN([Data[157], Data[158], Data[159], Data[160], Data[161], Data[162], Data[163]]) With the function being this: function getSN(e) {
for (var t = "", r = "", a = "", l = 0; l < 7; l++) {
r =
0 == this.comm.bit8high(1, e[l])
? "0"
: String.fromCharCode(bit8high(1, e[l])) + "";
a = 0 == this.comm.bit8low(1, e[l])
? "0"
: String.fromCharCode(bit8low(1, e[l])) + "";
t += r + a;
return t
}
function bit8low(e, t) {
var a = t % 256;
return 1 == e ? a : 0 == e ? a < 128 ? a : a - 256 : void 0
}
function bit8high(e, t) {
var a = parseInt(t / 256);
return 1 == e ? a : 0 == e ? a < 128 ? a : a - 256 : void 0
} I didn't bother rewriting it in more readable form, but hopefully you get the idea. |
Hi,
Great information :-) I'm trying to see if I can work out from the cloud portal and its API, what any of the other data items from my inverters are and add those to the lists. I can see some battery type and version info in solaxcloud, which I expect will be in the API response somewhere.
Meanwhile, one update for you: I've checked the 'Information' array from my inverters (X1 Hybrid G4 & X1 mini 2.0):
I guess that 'ver' will now need to be included in the logic to determine what data is in each position.
The text was updated successfully, but these errors were encountered: