-
-
Notifications
You must be signed in to change notification settings - Fork 78
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
Issues in broadcasting powerdata 2 Rouvy (adjust ModelNumber_FE) #184
Comments
When studying the way my stages power meter does it, i got the following impression:
(Sorry for formatting errors, dont know exactly why this happen, working remote now) |
@cyclingflow I will study the issue shortly |
Referring to D00001086_ANT+Device_Profile-_Bicycle_Power_Rev_5.1.pdf
I agree that the current implementation is incorrect, since EventCounter is incremented also for the interleaved messages (and AccumulatedPower is not). I think there should be a separate counter to decide for interleaving, independant of the EventCounter which is incremented only when the AccumulatedPower is calculated AND msgPage16_PowerOnly is sent. Note that the same construct exists in FE-C. |
Question: why do you not broadcast power when power=0? |
I have reviewed antCTRL.py, antFE.py, antHRM.py, antPWR.py and antCSC.py
I will test myself tomorrow, perhaps you want to take a look as well. Branch: 4.2-Quality-upgrade |
To be precise: I should be always broadcasting, just not updating the event counter and accumulated power. I did this because it clearly is the way my stages power meter is performing right now. I did not have access to the official specs, it required a registration with manual review. My perception of the mechanism:
|
Good you did, i did not get around to it yet. I'll take a look and update my version,
At first i did not understand what you mean, but now i do, and I agree. Would be nicer, including the fact that it means that the receiving end will receive 'factory information' after connection (after a short period of time), even if you do not immediately start pedaling. As a side-note: i don't think many power meters worry about this, because they stop broadcasting anyway when you stop pedaling, to save battery power. |
w.r.t. Rouvy: the power dips have always been there (and we know why now), but the power spikes started around 15 nov. Possibly related to an update of Rouvy AR only. I'm not sure Rouvy Workouts has it, because i do not see it during workouts. It is a bit difficult to keep track off, because i have the impression that when you start Rouvy AR through Rouvy Workouts, it uses the workouts connection, and if you start Rouvy AR directly, it uses a little bit different connection interface. Anyway, it seems to be gone now, with the update of the 'reset' mechanism. |
I just took a look at the current updated antPWR.py I was under the impression that broadcast was called every quarter second, whether interleaving or not, and therefore you are effectively 'polling' power every quarter second. |
That's why I copied the ANTdefinition in the comment: for each increment of the EventCount the message must be broadcasted. I must say, the interleaving was always a bot misterious for me; that's why I reread the ANT profile definitions today. I think it should be done as coded now - I will test tomorrow. |
That is correct. The power-message is only sent when there is NO interleave message. Only one message is sent per call. |
This is compliant with antHRM. All I did there is rename the variable into Interleave for consistency |
Of course interested in further advise regarding implementation of the ANTdefinition |
Thx for the explanation. I understand now. So, it seems to me, the standard either does something slightly irregular to cumulative power (and may be one should adjust when receiving), or we might be required to broadcast interleave messages at other times. I noticed that the event counter of my stages power meter also sometimes increases by more than one, so it did not worry me: |
N.B. @WouterJD : i got type errors in antFE and antPWR w.r.t. the &= 0xff statements. Easy to correct. |
I assume because they're not int?🤔 |
tricky business, understanding these protocols. |
For now i can say:
|
I will do a test this evening, repeating the same ride as before to see whether something changed. |
The channel period is 8182 (rather than 8192) counts, that is actually slightly more than 4Hz. Many power meters can also be switched to 8Hz mode (e.g. my Edge 520 automatically does that when it connects to the Vector pedals). But a receiver set to 4Hz shouldn't see those. |
I very much prefer to implement according specification, unless proven it must be done otherwise Instead of reverse engineering a specific ANT-implementation (who says it's implement ed correctly) |
Yes, agreed. I was just explaining why you would see more than 1 page per quarter second occasionally. This should be the same for any compliant device (8182 period is in the specification). It also means you will have an occasional tx fail (missing data) when you try to send a new one exactly every 0.25s. But messages get lost sometimes anyway, so it should not cause any real problems. It is still interesting to see what others have done (also how the ANT+ simulator does it). Because sometimes the specification is not quite clear or we might have missed something. |
That would be my point. I'm not convinced i catch all pages i should from my bike meter, and wonder we send enough. The FE spec includes a duration (accumulated time), the power/cadence not. I might have missed it. |
I would not dare to say so. But they do have ANT certification, FortiusAnt does not. :-)
Yep, and the experience of the users is, FortiusAnt 'works' with several VR software variations. So it's just about a few details or quirks. |
I absolutely agree on what is said; existing certified devices can teach how it should be - perhaps to properly understand the spec. And while cycling I realized there is another improvement to be made (in antPWR.py and antFE.py: because |
I did a test-ride today, same ride as some days ago and it felt a lot better. Let's proceed in improving the profiles. |
good point |
FortiusANT.2020-12-28 19-11-58.txt I have looked at the Rouvy-ride from today and it shows some special occurences:
Maximum jumps experienced:
Of course this gives sudden changes in requested power; although I did not experience it as too disturbing. I'm curious how you guys look at this. |
Awkward. What route? Some are much worse than the official ones. However, most changes of those changes I wont feel. Anything below zero gives very slight changes, and I have adjusted it such |
As a side note: i have experienced that changing the type of FE-C you send to Rouvy AR, changes the scaling |
That is interesting. We could send different trainer types depending on the brake connected so people get some automatic scaling without the "-G" option. E.g. maybe "Flow Smart" if we detect a magnetic brake. We would need some more data on the scaling function for different IDs. |
@switchabl you refer to Who can provide a list of modelnumbers? |
ModelNumber_FE = 2900 # Tacx Flux (S) Smart= 2900 what i have used so far trial and error, based upon the tacx numbers :-) |
I somehow thought @totalreverse had a list, but apparently not. Tacx Flow Smart would be particularly interesting. If they have implemented that, that could work well for all magnetic brakes. My guess would be ModelNumber_FE = 2240, but I have no way to check. |
i was just checking. it works does not work |
I just also have taken a look at the grade re-scaling: no difference in Rouvy AR between 2240 Flow Smart or 2900 Flux Smart: So perhaps choosing between NEO for motor brakes and Flux for magnetic brakes -depending upon the brake type connected - would be sufficient for most users in Rouvy AR. I'll do a full ride with flow smart selected in AR to see if anything else seems to be affected. |
Hi Wouter, Any idea when the incorrect power values, which appear in Rouvy, will be solved? Thanks for keeping up the good work! |
Thanks Wouter. The power issues in Rouvy are gone with the test version! Once again : nice work! |
Thanks for confirmation; I will close issue. |
* #184 Power in Rouvy issue * #173 Version 4.0 Communicates Much Higher Power vs. 3.8 * #184 Power in Rouvy issue #2 * #184 Power in Rouvy issue #2 * #184 Power in Rouvy issue #3 * Fortius Antifier v4.2 test IV * Fortius Antifier v5.1 test I * Fortius Antifier v5.1 test II * Fortius Antifier v5.1 test IIb * #201 * #201 * Fortius Antifier v5.1 test III * heart -> Heart2 * heart -> Heart2 * heart* -> heart.jpg * Fortius Antifier v5.1 test IV * Fortius Antifier v5.1 test V * Fortius Antifier v5.1 test VI * Fortius Antifier v5.1
Over the last weaks i noticed regular dips in power display at Rouvy without such dips in ForitusAnt. Moreover, less frequent i also noted high power spikes (say 4000-5000 watt).
I initially studied the logs and json logs but could not find evidence of an error. At the same time , i was working at receiving and logging my external bike power meter in the json log, and using accumulated power.
Suddenly i realized, this might be connected to the reason for the issues i experienced: the way accumulated power is calculated in AntPWR.py
(issues and solution below)
The text was updated successfully, but these errors were encountered: