[Ovmsdev] Android App beta
Chris van der Meijden
chris at arachnon.de
Mon Oct 10 02:22:50 HKT 2022
It compiled and runs without troubles, but I needed to build with
gradlew build -x lint
Am Sonntag, dem 09.10.2022 um 19:16 +0200 schrieb Michael Balzer:
> Chris, Michael, thanks for tests & feedback.
>
> Code changes so far are now in the hub:
> https://github.com/openvehicles/Open-Vehicle-Android/commit/c23b3dbd772bdae7e82601797cd3a71c2623a78c
>
> This has become a very large commit, and it mixes some version update
> changes that became necessary & deprecation fixes I should have kept
> separate, but cannot disentangle now.
>
> Some things still to do for the release, most notably removing UI
> interaction from the service. So if any other stuff shall be added to
> the next release, tell me & go ahead preparing that.
>
> Regards,
> Michael
>
>
> Am 09.10.22 um 17:09 schrieb Chris van der Meijden:
>
> I tested the new build. Everything is working fine for me.
>
> I think it is a good idea to restrict the respond to only
> action.COMMAND and leave SendCommand for background operation.
>
>
> Am Sonntag, dem 09.10.2022 um 16:05 +0200 schrieb Michael Balzer:
>
> > Chris, Michael,
> >
> > new builds with the announced new security scheme:
> > * https://dexters-web.de/f/tw-beta/OpenVehicleApp-22100901-release.apk
> > * https://dexters-web.de/f/tw-beta/OpenVehicleApp-22100901-debug.apk
> > This adds a new API key authorization to both Intent interfaces.
> > The API key is automatically generated on App launch, and can be
> > viewed, copied and regenerated from the general options page.
> > It can be used for both command intents by passing in as extra
> > "apikey", allowing to omit the vehicle password. The vehicle id is
> > now also optional on both interfaces, if omitted the current
> > vehicle will be used. To change the car you can either pass the
> > vehicle password or the apikey along with the vehicle id.
> > So with am, you can now use:
> > * am broadcast -a com.openvehicles.OVMS.SendCommand -e apikey … -e
> > command "stat"
> > * am start -a com.openvehicles.OVMS.action.COMMAND -e apikey … -e
> > command "stat"
> > The second guarantees the activity is started, so the response will
> > be visible.
> > I'll probably restrict displaying the response to action.COMMAND in
> > the next build, so SendCommand will be for background operations
> > while action.COMMAND is for interactive uses.
> > Android 10 (API 29) has a new limitation for displaying results
> > (starting UI activities) from a service
> > (https://developer.android.com/guide/components/activities/background-starts
> > ), so that works only by chance now anyway.
> >
> > Regards,
> > Michael
> >
> >
> > Am 09.10.22 um 12:45 schrieb Chris van der Meijden:
> >
> > Hi Michael,
> >
> > thank you for your response. As always of great help :-)
> >
> > Good that you could find a possible security risc concerning the
> > credentials.
> >
> > Regards
> >
> > Chris
> >
> >
> > Am Sonntag, dem 09.10.2022 um 10:53 +0200 schrieb Michael Balzer:
> >
> >
> > > Chris,
> > >
> > > AFAIK you need to have an adb connection or a rooted Android to
> > > use "am", so not suitable as a general way to call OVMS commands.
> > >
> > > With your (rooted) Lineageos you should be able to use it like
> > > this:
> > >
> > > am broadcast -a com.openvehicles.OVMS.SendCommand -e
> > > sel_vehicleid xxx -e sel_server_password xxx -e msg_command
> > > "7,stat"
> > >
> > > And I missed mentioning I also added support for user command
> > > syntax to "SendCommand", so you can now alternatively do
> > >
> > > am broadcast -a com.openvehicles.OVMS.SendCommand -e
> > > sel_vehicleid xxx -e sel_server_password xxx -e command "stat"
> > >
> > > Playing with am, I found out…
> > >
> > > am start -n com.openvehicles.OVMS/.api.CommandActivity -a
> > > com.openvehicles.OVMS.action.COMMAND -e command "stat"
> > >
> > > …actually works to trigger the new command receiver. I thought
> > > restricting the new receiver to app-internal intents would be
> > > possible, but it apparently isn't. That bothers me, it means any
> > > App could issue a command without knowing the credentials or an
> > > auth key and without a previous explicit user interaction to
> > > allow this.
> > >
> > > So I need to add a credentials check to the new action, which
> > > means you will need to reinstall all bookmarks / shortcut
> > > assignments. Please wait with complex setups until I've added
> > > that.
> > >
> > > Regards,
> > > Michael
> > >
> > >
> > >
> > > Am 08.10.22 um 19:30 schrieb Chris van der Meijden:
> > >
> > > I have been playing with the "SH" function of KWGT and tried to
> > > send a broadcast over the shell, like adb:
> > >
> > > 'am broadcast -a com.whereismywifeserver.intent.TEST --es
> > > sms_body "test from adb"'
> > >
> > > That did not work, there where "rights" issues.
> > >
> > > I took a look at the commands documentation. I will play a bit
> > > with that.
> > >
> > > Thanx for explaining!
> > >
> > >
> > > Am Samstag, dem 08.10.2022 um 18:54 +0200 schrieb Michael Balzer:
> > >
> > >
> > >
> > > > Chris,
> > > >
> > > > "com.openvehicles.OVMS.SendCommand" is the old command action,
> > > > it's still supported and should work the same way as before,
> > > > except there are some new extras in the response intent.
> > > >
> > > > The "SendCommand" interface is raw MP function level, that's
> > > > why you need to prefix "7," for text commands (7 = execute text
> > > > command). Other MP commands work just the same way as raw
> > > > commands, e.g. "20,<pin>" will lock the car if supported.
> > > > (https://docs.openvehicles.com/en/latest/protocol_v2/commands.html
> > > > )
> > > >
> > > > The newly added command intent action is
> > > > "com.openvehicles.OVMS.action.COMMAND", it just takes one extra
> > > > "command", which takes the command just as entered in the
> > > > notification page. See help there for the syntax, text commands
> > > > can be given as in the shell, to send the above MP lock
> > > > command, you'd enter "#20,<pin>". This action currently always
> > > > sends the command to the currently selected vehicle.
> > > >
> > > > KWGT doesn't support sending intents, that's why I've done all
> > > > this.
> > > >
> > > > To call a stored command from KWGT, set a suitable element's
> > > > touch handler to "start shortcut". After clicking on that
> > > > action, you can open a selector. It will show the list of
> > > > shortcut providers installed including the OVMS App now. Click
> > > > on the OVMS entry, then select the command from the list of
> > > > stored commands.
> > > >
> > > > Regards,
> > > > Michael
> > > >
> > > >
> > > > Am 08.10.22 um 17:54 schrieb Chris van der Meijden:
> > > >
> > > > Hi Michael
> > > >
> > > > I just installed the release apk on my degoogled Lineageos
> > > > 19.1.
> > > >
> > > > Installation went without any troubles. I tested the broadcast
> > > > with my fireplace app via webinent:
> > > >
> > > > action: 'com.openvehicles.OVMS.SendCommand',
> > > > extras: {
> > > > sel_vehicleid: vid,
> > > > sel_server_password: pwd,
> > > > msg_command: '7,climatecontrol on'
> > > > }
> > > >
> > > > It works still fine and I can see the response dialog in the
> > > > OVMS app.
> > > >
> > > > I don't understand the "MP function". Do you have an example
> > > > for for i.e. "climatecontrol on" via Buttons in KWGT? I'd love
> > > > to test that :-)
> > > >
> > > > And do you know if there is a way to send intent broadcasts
> > > > with KWGT? I tried with a "GLOBALE", but I could not get that
> > > > to work.
> > > >
> > > > Regards
> > > >
> > > > Chris
> > > >
> > > >
> > > > Am Samstag, dem 08.10.2022 um 15:37 +0200 schrieb Michael
> > > > Balzer:
> > > >
> > > >
> > > >
> > > >
> > > > > New test build:
> > > > > * https://dexters-web.de/f/tw-beta/OpenVehicleApp-22100801-release.apk
> > > > > * https://dexters-web.de/f/tw-beta/OpenVehicleApp-22100801-debug.apk
> > > > >
> > > > > This includes major extensions & code rewrites, I think I'll
> > > > > bump the version to 4.0 when releasing this to Google Play.
> > > > >
> > > > > Main goal & outcome of this effort: command bookmarks.
> > > > >
> > > > > The App now offers stored commands (see notifications tab).
> > > > > Stored commands can be pinned to the launcher and selected
> > > > > from third party Apps like KWGT as shortcuts to execute on
> > > > > triggers / actions.
> > > > >
> > > > > So this enabled custom widgets to include buttons triggering
> > > > > car commands.
> > > > >
> > > > > Commands are given using the user syntax, i.e. don't need the
> > > > > MP function prefix. You can still call an MP function by
> > > > > using the user syntax, i.e. "#…".
> > > > >
> > > > > Command responses are shown as a dialog with a timeoout of 5
> > > > > seconds unless you hold it by touching or begin scrolling a
> > > > > long response. If the App is paused it will be resumed and
> > > > > switch to the notifications page (which keeps a record of all
> > > > > commands & responses). If the App isn't running, only the
> > > > > response dialog is shown on the launcher.
> > > > >
> > > > > All this of course needs the service to be enabled & allow
> > > > > commands to be sent.
> > > > >
> > > > > Command responses are also broadcasted now, so KWGT et al can
> > > > > receive them -- but they will currently need to know the
> > > > > command sent previously and copy command responses if they
> > > > > need to keep them, I don't know if KWGT can do that
> > > > > (Automagic can). KWGT seems to only have a simple variable
> > > > > storage model.
> > > > >
> > > > > I think about extending the ApiService to keep a command
> > > > > queue so the broadcast can at least carry the command, the
> > > > > response is supposedly produced for. Unfortunately the MP API
> > > > > cannot guarantee this, as it doesn't currently return a copy
> > > > > of the original command or a command ID reference with the
> > > > > response, so this would at best be a guess. Not sure if users
> > > > > actually need this.
> > > > >
> > > > >
> > > > > Note: I haven't pushed the code changes to github yet, I'd
> > > > > first like to get some test feedback. I've tested this on
> > > > > Android 6, 7, 11 & 13, but not on any degoogled Androids.
> > > > >
> > > > > Regards,
> > > > > Michael
> > > > >
> > > > >
> > > > > Am 26.09.22 um 17:26 schrieb Chris van der Meijden:
> > > > >
> > > > > For an includable example it would be nice if we could send
> > > > > the vehicle image from the OVMS app to KWGT.
> > > > >
> > > > > You can assign "Activities" to the "Touch" event on an image.
> > > > > Would be cool if that works, so we can start the remote
> > > > > climate control similar to how I do that with my OVMS-
> > > > > Fireplace app:
> > > > >
> > > > > https://github.com/devmarxx/OVMS-Fireplace
> > > > >
> > > > >
> > > > > Am Montag, dem 26.09.2022 um 13:56 +0200 schrieb Michael
> > > > > Balzer:
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > > Nice, please go ahead if you want to create an includable
> > > > > > example widget :-)
> > > > > >
> > > > > > I've found out you can also use progress bars to display
> > > > > > values, enable formula input on the "step" & set the
> > > > > > formular to e.g. $br(ovms, car_soc)$.
> > > > > >
> > > > > > Works, although I need to convert all car model values to
> > > > > > strings for KWGT. Btw, I also need to unroll the TPMS
> > > > > > arrays, they are split into a "_cnt" & "_<n>" variables. I
> > > > > > need to add an info on this to the wiki.
> > > > > >
> > > > > > I haven't found out how to send a broadcast from KWGT yet,
> > > > > > is that possible? That would enable creating command
> > > > > > shortcuts & buttons as with Automagic.
> > > > > >
> > > > > > Regards,
> > > > > > Michael
> > > > > >
> > > > > >
> > > > > >
> > > > > > Am 26.09.22 um 12:13 schrieb Chris van der Meijden:
> > > > > >
> > > > > > Correction:
> > > > > >
> > > > > > $br(ovms, sel_vehicle_label)$
> > > > > >
> > > > > > Am Montag, dem 26.09.2022 um 12:05 +0200 schrieb Chris van
> > > > > > der Meijden:
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > > I like the new KWGT Widget feature:
> > > > > > >
> > > > > > >
> > > > > > > Above is the Tesla Widget of our Model 3, beneath that my
> > > > > > > OVMS KWGT widget of our VW e-UP.
> > > > > > >
> > > > > > > I had to allow "Passing data to other apps". The syntax
> > > > > > > for getting the intent variables to text in KWGT is i.e.
> > > > > > >
> > > > > > > $br(ovms, car_sel_vehicle_label)$
> > > > > > >
> > > > > > > Other variables can be found here:
> > > > > > > https://github.com/openvehicles/Open-Vehicle-Android/wiki/Update-Broadcast-Intent-data
> > > > > > >
> > > > > > > The image is local on the filesystem of the phone and
> > > > > > > does not come by intent.
> > > > > > >
> > > > > > >
> > > > > > > Am Sonntag, dem 25.09.2022 um 16:23 +0200 schrieb Michael
> > > > > > > Balzer:
> > > > > > > No, icon can only be 0 from the else branch, in that case
> > > > > > > it shall fall back to the default image.
> > > > > > >
> > > > > > > But I've meanwhile found (I think) your maps/track crash,
> > > > > > > commit is already in the hub. The checkbox handler didn't
> > > > > > > check if the map object is initialized.
> > > > > > >
> > > > > > > https://github.com/openvehicles/Open-Vehicle-Android/blob/master/OpenVehicleApp/src/main/java/com/openvehicles/OVMS/ui/FragMap.java#L319
> > > > > > >
> > > > > > > Regards,
> > > > > > > Michael
> > > > > > >
> > > > > > >
> > > > > > > Am 25.09.22 um 15:46 schrieb Chris van der Meijden:
> > > > > > >
> > > > > > > Just guessing, but does
> > > > > > >
> > > > > > > int icon;
> > > > > > >
> > > > > > > in MyGcmListenerService.java at line 132
> > > > > > >
> > > > > > > not need to be initialized like
> > > > > > >
> > > > > > > int icon = 0;
> > > > > > >
> > > > > > > now you use
> > > > > > >
> > > > > > > .setSmallIcon((icon != 0) ? icon :
> > > > > > > R.drawable.map_car_default)
> > > > > > >
> > > > > > > at line 150 now?
> > > > > > >
> > > > > > > As the images and the Google stuff are related to that
> > > > > > > integer it made me thinking ...
> > > > > > >
> > > > > > >
> > > > > > > Am Sonntag, dem 25.09.2022 um 11:52 +0200 schrieb Michael
> > > > > > > Balzer:
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > > Chris,
> > > > > > > >
> > > > > > > > that's not a crash log, that's just a warning.
> > > > > > > >
> > > > > > > > On that warning: the App requests
> > > > > > > > android.permission.ACCESS_FINE_LOCATION by it's
> > > > > > > > manifest. Maybe with LineageOS you need to manually
> > > > > > > > give it that permission?
> > > > > > > >
> > > > > > > > A crash log has class "E" (error) and includes an
> > > > > > > > exception and a backtrace, for an example see:
> > > > > > > > https://issuetracker.google.com/issues/201308676#comment4
> > > > > > > >
> > > > > > > > On the crash: maybe it's because you don't have the
> > > > > > > > Google components, not sure if FragMap can handle that.
> > > > > > > >
> > > > > > > > The forum post relates to /e/OS … maybe I need some
> > > > > > > > emulator images running alternative Androids now…
> > > > > > > >
> > > > > > > > Regards,
> > > > > > > > Michael
> > > > > > > >
> > > > > > > >
> > > > > > > > Am 25.09.22 um 11:40 schrieb Chris van der Meijden:
> > > > > > > >
> > > > > > > > Hey Michael,
> > > > > > > >
> > > > > > > > this is from logcat when I change "Track vehicle" and
> > > > > > > > the app crashes:
> > > > > > > >
> > > > > > > > 09-25 11:16:01.410 1710 1839 W BroadcastQueue:
> > > > > > > > Permission Denial: receiving Intent {
> > > > > > > > act=android.intent.action.SERVICE_STATE flg=0x1000010
> > > > > > > > (has extras) } to ProcessRecord{8dcdd54
> > > > > > > > 2053:com.android.systemui/u0a148} (pid=2053, uid=10148)
> > > > > > > > requires android.permission.ACCESS_FINE_LOCATION due to
> > > > > > > > sender android (uid 1001)
> > > > > > > >
> > > > > > > > I saw now, that this crash also happens in the
> > > > > > > > production app.
> > > > > > > >
> > > > > > > > The widget is running well. I will keep the app running
> > > > > > > > for while and will see if it stays stable.
> > > > > > > >
> > > > > > > > Regards
> > > > > > > >
> > > > > > > > Chris
> > > > > > > >
> > > > > > > > Am Samstag, dem 24.09.2022 um 23:02 +0200 schrieb
> > > > > > > > Michael Balzer:
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > > Chris,
> > > > > > > > >
> > > > > > > > > thanks for testing. A crash log would help on any
> > > > > > > > > crashes you see. Btw, I don't bump the revision until
> > > > > > > > > the actual release build.
> > > > > > > > >
> > > > > > > > > Crashes related to the car image don't occur
> > > > > > > > > immediately, it sometimes takes hours of use before
> > > > > > > > > it happens. When it does, clearing the App cache
> > > > > > > > > fixes the crash for another random period.
> > > > > > > > >
> > > > > > > > > Speed optimization was one goal. What about the
> > > > > > > > > widget?
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > Michael
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > Am 24.09.22 um 22:43 schrieb Chris van der Meijden:
> > > > > > > > >
> > > > > > > > > Hey Michael,
> > > > > > > > >
> > > > > > > > > I just installed the "release" Version on LineageOS
> > > > > > > > > 19.1 (Android 12) without Google components.
> > > > > > > > >
> > > > > > > > > The vehicle setup was without any troubles. I could
> > > > > > > > > select the yellow VW e-UP image without crashing.
> > > > > > > > >
> > > > > > > > > The App version is set wrong under "Vehicle info"
> > > > > > > > > (3.19.1, 2021122401).
> > > > > > > > >
> > > > > > > > > Everything seems to be faster than before.
> > > > > > > > >
> > > > > > > > > When I change the checkbox on "Track vehicle" under
> > > > > > > > > "Position" the App crashes. But after a new start of
> > > > > > > > > the app the value of the checkbox has changed.
> > > > > > > > >
> > > > > > > > > Perhaps this first impression is of some help.
> > > > > > > > >
> > > > > > > > > Regards
> > > > > > > > >
> > > > > > > > > Chris
> > > > > > > > >
> > > > > > > > > Am Samstag, dem 24.09.2022 um 20:10 +0200 schrieb
> > > > > > > > > Michael Balzer:
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > > Everyone,
> > > > > > > > > >
> > > > > > > > > > I'm currently working on the next Android release
> > > > > > > > > > including KustomWidget support and a native app
> > > > > > > > > > widget based on the old Automagic gauge widget.
> > > > > > > > > >
> > > > > > > > > > Automagic has been dead for some time now, and it
> > > > > > > > > > keeps crashing on Androids >= 7.
> > > > > > > > > >
> > > > > > > > > > My changes so far are in the hub, APK builds are
> > > > > > > > > > available here:
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > * https://dexters-web.de/f/tw-beta/OpenVehicleApp-22092401-release.apk
> > > > > > > > > > * debug build for extended logging: https://dexters-web.de/f/tw-
> > > > > > > > > > beta/OpenVehicleApp-22092401-debug.apk
> > > > > > > > > >
> > > > > > > > > > There's an issue with the App related to Android >=
> > > > > > > > > > 10 though, which I haven't found yet. It's been
> > > > > > > > > > reported in the forum:
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > * https://www.openvehicles.com/node/3410
> > > > > > > > > > I could use some help with that, I've got no idea
> > > > > > > > > > other than blaming Android.
> > > > > > > > > > I've seen the effect in my emulator tests, and it
> > > > > > > > > > seems to occur more frequently with non-roadster
> > > > > > > > > > images.
> > > > > > > > > >
> > > > > > > > > > Regards,
> > > > > > > > > > Michael
> > > > > > > > > >
> > > > > > > > > > _______________________________________________
> > > > > > > > > > OvmsDev mailing list
> > > > > > > > > > OvmsDev at lists.openvehicles.com
> > > > > > > > > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > _______________________________________________
> > > > > > > > > OvmsDev mailing list
> > > > > > > > > OvmsDev at lists.openvehicles.com
> > > > > > > > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > > > > > > > >
> > > > > > > > > _______________________________________________
> > > > > > > > > OvmsDev mailing list
> > > > > > > > > OvmsDev at lists.openvehicles.com
> > > > > > > > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > > > > > > >
> > > > > > > >
> > > > > > > > _______________________________________________
> > > > > > > > OvmsDev mailing list
> > > > > > > > OvmsDev at lists.openvehicles.com
> > > > > > > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > > > > > > >
> > > > > > > > _______________________________________________
> > > > > > > > OvmsDev mailing list
> > > > > > > > OvmsDev at lists.openvehicles.com
> > > > > > > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > > > > > >
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > OvmsDev mailing list
> > > > > > > OvmsDev at lists.openvehicles.com
> > > > > > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > OvmsDev mailing list
> > > > > > > OvmsDev at lists.openvehicles.com
> > > > > > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > > > > > >
> > > > > > > _______________________________________________
> > > > > > > OvmsDev mailing list
> > > > > > > OvmsDev at lists.openvehicles.com
> > > > > > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > > > > >
> > > > > >
> > > > > > _______________________________________________
> > > > > > OvmsDev mailing list
> > > > > > OvmsDev at lists.openvehicles.com
> > > > > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > > > > >
> > > > > > _______________________________________________
> > > > > > OvmsDev mailing list
> > > > > > OvmsDev at lists.openvehicles.com
> > > > > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > OvmsDev mailing list
> > > > > OvmsDev at lists.openvehicles.com
> > > > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > > > >
> > > > > _______________________________________________
> > > > > OvmsDev mailing list
> > > > > OvmsDev at lists.openvehicles.com
> > > > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > > >
> > > >
> > > > _______________________________________________
> > > > OvmsDev mailing list
> > > > OvmsDev at lists.openvehicles.com
> > > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > > >
> > > > _______________________________________________
> > > > OvmsDev mailing list
> > > > OvmsDev at lists.openvehicles.com
> > > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > >
> > >
> > > _______________________________________________
> > > OvmsDev mailing list
> > > OvmsDev at lists.openvehicles.com
> > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> > >
> > > _______________________________________________
> > > OvmsDev mailing list
> > > OvmsDev at lists.openvehicles.com
> > > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> >
> >
> > _______________________________________________
> > OvmsDev mailing list
> > OvmsDev at lists.openvehicles.com
> > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
> >
> > _______________________________________________
> > OvmsDev mailing list
> > OvmsDev at lists.openvehicles.com
> > http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>
>
> _______________________________________________
> OvmsDev mailing list
> OvmsDev at lists.openvehicles.com
> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>
> _______________________________________________
> OvmsDev mailing list
> OvmsDev at lists.openvehicles.com
> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20221009/cf4fb9b5/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kustomwidget-eup.png
Type: image/png
Size: 151962 bytes
Desc: not available
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20221009/cf4fb9b5/attachment-0001.png>
More information about the OvmsDev
mailing list