Toegang krijgen tot de OMNI API

merstro
Runner-up
Runner-up
Berichten: 12
Lid geworden op: 22 feb 2018, 19:54

Goed werk! Iemand een idee of we dat client_secret gewoon kunnen publiceren?
ST2 2016 - 983wh
Gebruikersavatar
Stromeur
Admin | Forum Supporter
Admin | Forum Supporter
Netherlands
Berichten: 22829
Lid geworden op: 15 mei 2017, 20:18
Locatie: Friesland
Merk SP: Stromer ST3 PINION SE

Ik weet niet of hier regelgeving over bestaat. Als iemand dit wel weet, dan is input van harte welkom.

Kan sowieso zijn dat Stromer bij mij komt klagen als je dit publiceert. We zijn volledig onafhankelijk, maar ik probeer de relatie tussen ons als Stromer community en Stromer zelf wel open en goed te houden. Dus svp niet boos op mij worden als Stromer mij vraagt om e.e.a. te verwijderen en ik daar gehoor aan geef. Het is niet voor niets dat ze de API zelf niet vrijgeven.

Uiteraard is alles wat jullie hier doen en wat anderen misschien ook willen gaan proberen geheel op eigen risico.

Als we dit zo kunnen afspreken, dan vind ik het prima.
Stromer ST1 X 2017 - Stromer ST2 S 2018 - Klever X ALPHA 45 2021 - Stromer ST3 PINON 2023
TimB
Runner-up
Runner-up
Berichten: 13
Lid geworden op: 19 apr 2018, 08:31

merstro schreef: 05 okt 2018, 21:23 Goed werk! Iemand een idee of we dat client_secret gewoon kunnen publiceren?
Misschien staat ze bij Stromer wel open voor wat 3rd party gepruts? Ik zie in elk geval een hoop mogelijkheden.
joost
Expert
Expert
Netherlands
Berichten: 102
Lid geworden op: 23 dec 2017, 21:53
Locatie: Dordrecht
Merk SP: Stromer ST3

O wat fijn dat jullie er verder ingedoken zijn. Net even met mitmproxy gekeken en zag nu direct de client_secret staan. weet niet hoe ik vorige keer heb zitten slapen.

Ben zelf van plan om via Node-red of Homeassistant de boel te koppelen zodat ik push notifications kan krijgen wanneer de accu vol is.
🇳🇱 Stromer ST3 2020 Deep Black 🚀
Bodyfloat
Gebruikersavatar
Stromeur
Admin | Forum Supporter
Admin | Forum Supporter
Netherlands
Berichten: 22829
Lid geworden op: 15 mei 2017, 20:18
Locatie: Friesland
Merk SP: Stromer ST3 PINION SE

TimB schreef: 06 okt 2018, 11:36
merstro schreef: 05 okt 2018, 21:23 Goed werk! Iemand een idee of we dat client_secret gewoon kunnen publiceren?
Misschien staat ze bij Stromer wel open voor wat 3rd party gepruts? Ik zie in elk geval een hoop mogelijkheden.
Stromer is gevestigd in een redelijk ivoren toren, maar ik weet 100% zeker dat als je de juiste mensen bij Stromer benadert met een goed doortimmerde pitch, dat ze de deur niet dicht gooien.
Stromer ST1 X 2017 - Stromer ST2 S 2018 - Klever X ALPHA 45 2021 - Stromer ST3 PINON 2023
merstro
Runner-up
Runner-up
Berichten: 12
Lid geworden op: 22 feb 2018, 19:54

Ik inmiddels heb een nachtje de api bevraagd om te kijken of dat werkt. De eerste bevindingen:

de rcvts lijk de received timestamp te zijn, het tijdstip waarop de stromer server de data vanaf de fiets heeft gekregen, in een unix timestamp (seconden sinds 1-1-1970). Soms is deze waarde in UTC, en soms in lokale tijd. Behoorlijk vreemd, maar deze springt dus steeds heen en weer. Mogelijk heeft dit met wel/niet beschikbaar zijn van GPS ontvangst te maken, moet ik nog verder uitzoeken.

Ik had de fiets iedere 5 minuten gepolst, (niet zo heel boeiend als die toch uit staat). De meeste data was constant, maar de temperatuur zag je een beetje verlopen. maar daarmee zag ik de power_on_cycles steeds verder oplopen. Blijkbaar veroorzaakt het continu polsen dus ook heel veer power_on_cycles. Geen idee of dit erg is, maar heb het toch maar even teruggeschroefd naar 1x per uur.

Verder kwamen zowel de motor als de batterij temperatuur soms met hele hoge waarden (meestal 17-19 graden, maar soms ook 3280 (waarschijnlijk 2^15/10, oftwel maximale waarde van en 16bits signed integer met 0.1 graad nauwkeurigheid)

Ik ga proberen uit te zoeken of ik de fiets vaker kan checken als deze gebruikt wordt, en minder vaan als die stil staat.
ST2 2016 - 983wh
joost
Expert
Expert
Netherlands
Berichten: 102
Lid geworden op: 23 dec 2017, 21:53
Locatie: Dordrecht
Merk SP: Stromer ST3

@Merstro zie je tijdens het laden ook de battery_SOC waarde omhoog gaan. Gebruik nu de nodeJS code om te pollen maar krijg dezelfde outdated waardes als in de app. Had gehoopt door het pollen de Stromer wakker te schudden zoals bij jou lukt. Of werkt dat alleen als hij niet aan de lader hangt.
🇳🇱 Stromer ST3 2020 Deep Black 🚀
Bodyfloat
TimB
Runner-up
Runner-up
Berichten: 13
Lid geworden op: 19 apr 2018, 08:31

joost schreef: 08 okt 2018, 22:07 @Merstro zie je tijdens het laden ook de battery_SOC waarde omhoog gaan. Gebruik nu de nodeJS code om te pollen maar krijg dezelfde outdated waardes als in de app. Had gehoopt door het pollen de Stromer wakker te schudden zoals bij jou lukt. Of werkt dat alleen als hij niet aan de lader hangt.
Idem hier. Ik zie ook de outdated waardes en kan er nog steeds 2x per dag naar gaan kijken :D
merstro
Runner-up
Runner-up
Berichten: 12
Lid geworden op: 22 feb 2018, 19:54

Aan de state call kan je ``"?cached=true`" danwel ``"?cached=false`" doorgeven. Zonder caching schudt de stromer wakker. En als je hem wakker schudt, dan klopt de rcvts niet, die is dan ineens in lokale tijd ipv UTC. Als de stromer aan staat dan stuurt ie uit zichzelf updates, dus dan krijd je ook met "?cached=true" gewon verse data. IK pols nu continu (iedere 5 minuten) met "?cached=true", en dan zie ik wat er met de fiets gebeurd als die aan staat. Om te checken of die oplaadt, moet ik daarnaast nog af en toe een niet cached check doen, totdat de accu vol is.
ST2 2016 - 983wh
rvaneijk
Veteraan
Veteraan
Netherlands
Berichten: 560
Lid geworden op: 10 sep 2017, 10:41
Locatie: Rotterdam

merstro schreef: 04 okt 2018, 11:05 Ik heb het inmiddels even uitgezocht met een beetje python code:
(...)

Code: Selecteer alles

import json
endpoint="bike/"
bike = call_api(access_token, endpoint)
print('bike:', json.dumps(bike, indent=True))


bike = call_api(access_token, endpoint="bike/")
endpoint = f'bike/{bike["bikeid"]}/state/'
params = {'cached':'false'}
state = call_api(access_token, endpoint, params)
print('state:', json.dumps(state, indent=True))

bike: {
 "bikeid": ***,
 "biketype": "ST2",
 "color": "silver",
 "hardware": "omniinterface",
 "bikemodel": "ST2",
 "nickname": "***",
 "size": "sport 20"
}
state: {
 "battery_SOC": 40,
 "suiversion": "3.4.2.1",
 "bike_speed": 0.0,
 "tntversion": "3.5",
 "trip_time": 81401,
 "light_on": 255,
 "average_speed_trip": 34.9,
 "trip_distance": 788.5,
 "average_speed_total": 34.1,
 "motor_temp": 16.0,
 "average_energy_consumption": 141,
 "power_on_cycles": 670,
 "total_time": 318409,
 "atmospheric_pressure": 0,
 "battery_temp": 24.0,
 "battery_health": 95,
 "total_distance": 3013.6,
 "assistance_level": 0,
 "rcvts": 1538643543,
 "theft_flag": false,
 "lock_flag": true,
 "total_energy_consumption": 42594
}

Zelf jammer genoeg nog geen tijd genomen om in de dataflow te duiken.

Ik ben wel heel benieuwd of er geen geolocatiegegevens over de lijn gaan.

Heb je nog lat/lon's gezien op de lijn of calls in de app naar de geolocatie API?

Verzoek: zou je de mitmdump op een netwerkschijfje willen plaatsen of op een andere manier met me kunnen delen?
Plaats reactie