<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
New builds:<br>
<ul>
<li><span style="color: rgb(0, 0, 0); font-family: ui-monospace,
"Cascadia Mono", "Segoe UI Mono",
"Source Code Pro", "Roboto Mono", Hack,
"Liberation Mono", Menlo, Monaco, Consolas,
monospace, monospace; font-size: 12px; font-style: normal;
font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: 400; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255,
255, 248); text-decoration-thickness: initial;
text-decoration-style: initial; text-decoration-color:
initial; display: inline !important; float: none;"><a class="moz-txt-link-freetext" href="https://dexters-web.de/f/tw-beta/OpenVehicleApp-22101601-release.apk">https://dexters-web.de/f/tw-beta/OpenVehicleApp-22101601-release.apk</a></span></li>
<li><span style="color: rgb(0, 0, 0); font-family: ui-monospace,
"Cascadia Mono", "Segoe UI Mono",
"Source Code Pro", "Roboto Mono", Hack,
"Liberation Mono", Menlo, Monaco, Consolas,
monospace, monospace; font-size: 12px; font-style: normal;
font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: 400; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255,
255, 248); text-decoration-thickness: initial;
text-decoration-style: initial; text-decoration-color:
initial; display: inline !important; float: none;"><a class="moz-txt-link-freetext" href="https://dexters-web.de/f/tw-beta/OpenVehicleApp-22101601-debug.apk">https://dexters-web.de/f/tw-beta/OpenVehicleApp-22101601-debug.apk</a></span></li>
</ul>
<p>This also fixes the feature & parameter bug, but major change
is the command activity & service rework.</p>
<p>Command shortcuts now also work without the service enabled, i.e.
start the service on demand. This even works reasonably fast.<br>
</p>
<p>I've removed all UI activities from the service, so this should
now basically work the same way on all Android versions.</p>
<p>The command activity now also supports queueing, multiple
commands can be sent to it at once. It will execute them in
series, with each result being shown for 5 seconds or according to
user interaction. On commands returning multiple rows, only the
first 10-15 will be shown.</p>
<p>Command intent extras for action
com.openvehicles.OVMS.action.COMMAND are now:</p>
<pre style="background-color:#ffffff;color:#080808;font-family:'JetBrains Mono',monospace;font-size:9,8pt;"><font face="monospace">* Intent extras expected/supported:
* - vehicleid (optional)
* - apikey or (with vehicleid) password
* - title (optional)
* - command (optional, no command means only change the car)
*
* Commands need to be in user input syntax:
* - MMI/USSD commands: prefix "*", example: "*100#"
* - Modem commands: prefix "@", example: "@ATI"
* - MP MSG commands: prefix "#", example: "#31"
* - Text commands: everything else, example: "stat"</font><span style="color: rgb(140, 140, 140);"></span><span style="color:#8c8c8c;font-style:italic;">
</span></pre>
<p></p>
<br>
Changes are on github, tests & feedback are welcome.<br>
<br>
If you've added command bookmarks somewhere before, you may need to
delete and recreate them to see the title in the UI.<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
<div class="moz-cite-prefix">Am 09.10.22 um 22:11 schrieb Michael
Balzer:<br>
</div>
<blockquote type="cite"
cite="mid:5fc6b4f4-49f7-05d2-9777-a6ee136298b3@expeedo.de">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<br>
<div class="moz-cite-prefix">Am 09.10.22 um 20:40 schrieb van der
Meijden, Chris:<br>
</div>
<blockquote type="cite"
cite="mid:7C852916-C740-4E34-996B-D53DBFEBB4A8@arachnon.de">
<meta http-equiv="content-type" content="text/html;
charset=UTF-8">
Features and Parameters are not showing. Clicking there brings
me to Messages.<br>
</blockquote>
Oops, yes, confirmed.<br>
<br>
<blockquote type="cite"
cite="mid:7C852916-C740-4E34-996B-D53DBFEBB4A8@arachnon.de"><br>
Starting in landscape and then turning to portrait is fixed :-)<br>
</blockquote>
Nothing changed with the old ScaleLayout, it's on my list, but
with low priority.<br>
<br>
So I don't think it's fixed, was working sometimes before.<br>
<br>
<br>
<blockquote type="cite"
cite="mid:7C852916-C740-4E34-996B-D53DBFEBB4A8@arachnon.de"><br>
<br>
<div class="gmail_quote">Am 9. Oktober 2022 20:22:50 MESZ
schrieb Chris van der Meijden <a
class="moz-txt-link-rfc2396E"
href="mailto:chris@arachnon.de" moz-do-not-send="true"><chris@arachnon.de></a>:
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
0.8ex; border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;">
<div>It compiled and runs without troubles, but I needed to
build with</div>
<div><br>
</div>
<div>
<div>gradlew build -x lint</div>
</div>
<div><br>
</div>
<div><br>
</div>
<div>Am Sonntag, dem 09.10.2022 um 19:16 +0200 schrieb
Michael Balzer:</div>
<blockquote type="cite" style="margin:0 0 0 .8ex;
border-left:2px #729fcf solid;padding-left:1ex">
<div> Chris, Michael, thanks for tests & feedback.<br>
<br>
Code changes so far are now in the hub:<br>
</div>
<div><a class="moz-txt-link-freetext"
href="https://github.com/openvehicles/Open-Vehicle-Android/commit/c23b3dbd772bdae7e82601797cd3a71c2623a78c"
moz-do-not-send="true">https://github.com/openvehicles/Open-Vehicle-Android/commit/c23b3dbd772bdae7e82601797cd3a71c2623a78c</a><br>
<br>
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.<br>
<br>
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.<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
</div>
<div class="moz-cite-prefix">Am 09.10.22 um 17:09 schrieb
Chris van der Meijden:<br>
</div>
<div>
<meta http-equiv="content-type" content="text/html;
charset=UTF-8">
</div>
<div>I tested the new build. Everything is working fine
for me.</div>
<div><br>
</div>
<div>I think it is a good idea to restrict the respond to
only action.COMMAND and leave SendCommand for background
operation.</div>
<div><br>
</div>
<div><br>
</div>
<div>Am Sonntag, dem 09.10.2022 um 16:05 +0200 schrieb
Michael Balzer:</div>
<div> <br>
</div>
<blockquote type="cite" style="margin:0 0 0 .8ex;
border-left:2px #729fcf solid;padding-left:1ex">
<div> Chris, Michael,<br>
<br>
new builds with the announced new security scheme:<br>
</div>
<div> </div>
<ul>
<li><span style="color: rgb(0, 0, 0); font-family:
ui-monospace, "Cascadia Mono",
"Segoe UI Mono", "Source Code
Pro", "Roboto Mono", Hack,
"Liberation Mono", Menlo, Monaco,
Consolas, monospace, monospace; font-size: 12px;
font-style: normal; font-variant-ligatures:
normal; font-variant-caps: normal; font-weight:
400; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows:
2; word-spacing: 0px; -webkit-text-stroke-width:
0px; background-color: rgb(238, 238, 238);
text-decoration-thickness: initial;
text-decoration-style: initial;
text-decoration-color: initial; display: inline
!important; float: none;"><a
class="moz-txt-link-freetext"
href="https://dexters-web.de/f/tw-beta/OpenVehicleApp-22100901-release.apk"
moz-do-not-send="true">https://dexters-web.de/f/tw-beta/OpenVehicleApp-22100901-release.apk</a></span></li>
<li><span style="color: rgb(0, 0, 0); font-family:
ui-monospace, "Cascadia Mono",
"Segoe UI Mono", "Source Code
Pro", "Roboto Mono", Hack,
"Liberation Mono", Menlo, Monaco,
Consolas, monospace, monospace; font-size: 12px;
font-style: normal; font-variant-ligatures:
normal; font-variant-caps: normal; font-weight:
400; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows:
2; word-spacing: 0px; -webkit-text-stroke-width:
0px; background-color: rgb(255, 255, 248);
text-decoration-thickness: initial;
text-decoration-style: initial;
text-decoration-color: initial; display: inline
!important; float: none;"><a
class="moz-txt-link-freetext"
href="https://dexters-web.de/f/tw-beta/OpenVehicleApp-22100901-debug.apk"
moz-do-not-send="true">https://dexters-web.de/f/tw-beta/OpenVehicleApp-22100901-debug.apk</a></span></li>
</ul>
<p>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.</p>
<p>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.<br>
</p>
<div> So with am, you can now use:<br>
</div>
<div> </div>
<ul>
<li><font face="monospace">am broadcast -a
com.openvehicles.OVMS.SendCommand -e apikey … -e
command "stat"</font></li>
<li><font face="monospace">am start -a
com.openvehicles.OVMS.action.COMMAND -e apikey …
-e command "stat"</font><br>
</li>
</ul>
<p>The second guarantees the activity is started, so the
response will be visible.<br>
</p>
<p>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.<br>
</p>
<div> Android 10 (API 29) has a new limitation for
displaying results (starting UI activities) from a
service (<a class="moz-txt-link-freetext"
href="https://developer.android.com/guide/components/activities/background-starts"
moz-do-not-send="true">https://developer.android.com/guide/components/activities/background-starts</a>),
so that works only by chance now anyway.<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
</div>
<div class="moz-cite-prefix">Am 09.10.22 um 12:45
schrieb Chris van der Meijden:<br>
</div>
<div>
<meta http-equiv="content-type" content="text/html;
charset=UTF-8">
</div>
<div>Hi Michael,</div>
<div><br>
</div>
<div>thank you for your response. As always of great
help :-)</div>
<div><br>
</div>
<div>Good that you could find a possible security risc
concerning the credentials.</div>
<div><br>
</div>
<div>Regards</div>
<div><br>
</div>
<div>Chris</div>
<div><br>
</div>
<div><br>
</div>
<div>Am Sonntag, dem 09.10.2022 um 10:53 +0200 schrieb
Michael Balzer:</div>
<div> <br>
</div>
<div> <br>
</div>
<blockquote type="cite" style="margin:0 0 0 .8ex;
border-left:2px #729fcf solid;padding-left:1ex">
<div> Chris,<br>
<br>
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.<br>
<br>
With your (rooted) Lineageos you should be able to
use it like this:<br>
<br>
<font face="monospace">am broadcast -a
com.openvehicles.OVMS.SendCommand -e sel_vehicleid
xxx -e sel_server_password xxx -e msg_command
"7,stat"</font><br>
<br>
And I missed mentioning I also added support for
user command syntax to "SendCommand", so you can now
alternatively do<br>
<br>
<font face="monospace">am broadcast -a
com.openvehicles.OVMS.SendCommand -e sel_vehicleid
xxx -e sel_server_password xxx -e command "stat"</font><br>
<br>
Playing with am, I found out…<br>
<br>
<font face="monospace">am start -n
com.openvehicles.OVMS/.api.CommandActivity -a
com.openvehicles.OVMS.action.COMMAND -e command
"stat"</font><br>
<br>
…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.<br>
<br>
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.<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
<br>
</div>
<div class="moz-cite-prefix">Am 08.10.22 um 19:30
schrieb Chris van der Meijden:<br>
</div>
<div>
<meta http-equiv="content-type" content="text/html;
charset=UTF-8">
</div>
<div>I have been playing with the "SH" function of
KWGT and tried to send a broadcast over the shell,
like adb:</div>
<div><br>
</div>
<div style="orphans: auto; widows: auto;"><span
style="font-family: inherit; font-size:
var(--fs-body1); font-style: inherit;
font-variant-caps: inherit; white-space: inherit;
color: var(--highlight-color); orphans: 2; widows:
2; background-color: var(--highlight-bg);">'am
broadcast -</span><span class="hljs-selector-tag"
style="font-family: inherit; font-size: 13px;
font-style: inherit; font-variant-caps: inherit;
white-space: inherit; color:
var(--highlight-keyword); orphans: 2; widows: 2;
margin: 0px; padding: 0px; border: 0px;
font-variant-ligatures: inherit;
font-variant-position: inherit;
font-variant-numeric: inherit;
font-variant-alternates: inherit;
font-variant-east-asian: inherit; font-stretch:
inherit; line-height: inherit; vertical-align:
baseline; box-sizing: inherit;">a</span><span
style="font-family: inherit; font-size:
var(--fs-body1); font-style: inherit;
font-variant-caps: inherit; white-space: inherit;
color: var(--highlight-color); orphans: 2; widows:
2; background-color: var(--highlight-bg);"> com</span><span
class="hljs-selector-class" style="font-family:
inherit; font-size: 13px; font-style: inherit;
font-variant-caps: inherit; white-space: inherit;
color: var(--highlight-keyword); orphans: 2;
widows: 2; margin: 0px; padding: 0px; border: 0px;
font-variant-ligatures: inherit;
font-variant-position: inherit;
font-variant-numeric: inherit;
font-variant-alternates: inherit;
font-variant-east-asian: inherit; font-stretch:
inherit; line-height: inherit; vertical-align:
baseline; box-sizing: inherit;">.whereismywifeserver</span><span
class="hljs-selector-class" style="font-family:
inherit; font-size: 13px; font-style: inherit;
font-variant-caps: inherit; white-space: inherit;
color: var(--highlight-keyword); orphans: 2;
widows: 2; margin: 0px; padding: 0px; border: 0px;
font-variant-ligatures: inherit;
font-variant-position: inherit;
font-variant-numeric: inherit;
font-variant-alternates: inherit;
font-variant-east-asian: inherit; font-stretch:
inherit; line-height: inherit; vertical-align:
baseline; box-sizing: inherit;">.intent</span><span
class="hljs-selector-class" style="font-family:
inherit; font-size: 13px; font-style: inherit;
font-variant-caps: inherit; white-space: inherit;
color: var(--highlight-keyword); orphans: 2;
widows: 2; margin: 0px; padding: 0px; border: 0px;
font-variant-ligatures: inherit;
font-variant-position: inherit;
font-variant-numeric: inherit;
font-variant-alternates: inherit;
font-variant-east-asian: inherit; font-stretch:
inherit; line-height: inherit; vertical-align:
baseline; box-sizing: inherit;">.TEST </span><span
class="hljs-attr" style="font-family: inherit;
font-size: 13px; font-style: inherit;
font-variant-caps: inherit; white-space: inherit;
color: var(--highlight-attribute); orphans: 2;
widows: 2; margin: 0px; padding: 0px; border: 0px;
font-variant-ligatures: inherit;
font-variant-position: inherit;
font-variant-numeric: inherit;
font-variant-alternates: inherit;
font-variant-east-asian: inherit; font-stretch:
inherit; line-height: inherit; vertical-align:
baseline; box-sizing: inherit;">--es</span><span
style="font-family: inherit; font-size:
var(--fs-body1); font-style: inherit;
font-variant-caps: inherit; white-space: inherit;
color: var(--highlight-color); orphans: 2; widows:
2; background-color: var(--highlight-bg);">
sms_body "test </span><span
class="hljs-selector-tag" style="font-family:
inherit; font-size: 13px; font-style: inherit;
font-variant-caps: inherit; white-space: inherit;
color: var(--highlight-keyword); orphans: 2;
widows: 2; margin: 0px; padding: 0px; border: 0px;
font-variant-ligatures: inherit;
font-variant-position: inherit;
font-variant-numeric: inherit;
font-variant-alternates: inherit;
font-variant-east-asian: inherit; font-stretch:
inherit; line-height: inherit; vertical-align:
baseline; box-sizing: inherit;">from</span><span
style="font-family: inherit; font-size:
var(--fs-body1); font-style: inherit;
font-variant-caps: inherit; white-space: inherit;
color: var(--highlight-color); orphans: 2; widows:
2; background-color: var(--highlight-bg);"> adb"'</span></div>
<div><br>
</div>
<div>That did not work, there where "rights" issues.</div>
<div><br>
</div>
<div>I took a look at the commands documentation. I
will play a bit with that.</div>
<div><br>
</div>
<div>Thanx for explaining!</div>
<div><br>
</div>
<div><br>
</div>
<div>Am Samstag, dem 08.10.2022 um 18:54 +0200 schrieb
Michael Balzer:</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<blockquote type="cite" style="margin:0 0 0 .8ex;
border-left:2px #729fcf solid;padding-left:1ex">
<div> Chris,<br>
<br>
"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.<br>
<br>
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. (<a class="moz-txt-link-freetext"
href="https://docs.openvehicles.com/en/latest/protocol_v2/commands.html"
moz-do-not-send="true">https://docs.openvehicles.com/en/latest/protocol_v2/commands.html</a>)<br>
<br>
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.<br>
<br>
KWGT doesn't support sending intents, that's why
I've done all this.<br>
<br>
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.<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
</div>
<div class="moz-cite-prefix">Am 08.10.22 um 17:54
schrieb Chris van der Meijden:<br>
</div>
<div>
<meta http-equiv="content-type"
content="text/html; charset=UTF-8">
</div>
<div>Hi Michael</div>
<div><br>
</div>
<div>I just installed the release apk on my
degoogled Lineageos 19.1.</div>
<div><br>
</div>
<div>Installation went without any troubles. I
tested the broadcast with my fireplace app via
webinent:</div>
<div><br>
</div>
<div>action: 'com.openvehicles.OVMS.SendCommand',</div>
<div>extras: { </div>
<div> sel_vehicleid: vid,</div>
<div> sel_server_password: pwd,</div>
<div> msg_command: '7,climatecontrol on'</div>
<div> }</div>
<div><br>
</div>
<div>It works still fine and I can see the response
dialog in the OVMS app.</div>
<div><br>
</div>
<div>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 :-)</div>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>Regards</div>
<div><br>
</div>
<div>Chris</div>
<div><br>
</div>
<div><br>
</div>
<div>Am Samstag, dem 08.10.2022 um 15:37 +0200
schrieb Michael Balzer:</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<blockquote type="cite" style="margin:0 0 0 .8ex;
border-left:2px #729fcf solid;padding-left:1ex">
<div> New test build:<br>
</div>
<div> </div>
<ul>
<li><span style="color: rgb(0, 0, 0);
font-family: ui-monospace, "Cascadia
Mono", "Segoe UI Mono",
"Source Code Pro", "Roboto
Mono", Hack, "Liberation
Mono", Menlo, Monaco, Consolas,
monospace, monospace; font-size: 12px;
font-style: normal; font-variant-ligatures:
normal; font-variant-caps: normal;
font-weight: 400; letter-spacing: normal;
orphans: 2; text-align: start; text-indent:
0px; text-transform: none; white-space:
normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px;
background-color: rgb(255, 255, 248);
text-decoration-thickness: initial;
text-decoration-style: initial;
text-decoration-color: initial; display:
inline !important; float: none;"><a
class="moz-txt-link-freetext"
href="https://dexters-web.de/f/tw-beta/OpenVehicleApp-22100801-release.apk"
moz-do-not-send="true">https://dexters-web.de/f/tw-beta/OpenVehicleApp-22100801-release.apk</a></span></li>
<li><span style="color: rgb(0, 0, 0);
font-family: ui-monospace, "Cascadia
Mono", "Segoe UI Mono",
"Source Code Pro", "Roboto
Mono", Hack, "Liberation
Mono", Menlo, Monaco, Consolas,
monospace, monospace; font-size: 12px;
font-style: normal; font-variant-ligatures:
normal; font-variant-caps: normal;
font-weight: 400; letter-spacing: normal;
orphans: 2; text-align: start; text-indent:
0px; text-transform: none; white-space:
normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px;
background-color: rgb(255, 255, 248);
text-decoration-thickness: initial;
text-decoration-style: initial;
text-decoration-color: initial; display:
inline !important; float: none;"><a
class="moz-txt-link-freetext"
href="https://dexters-web.de/f/tw-beta/OpenVehicleApp-22100801-debug.apk"
moz-do-not-send="true">https://dexters-web.de/f/tw-beta/OpenVehicleApp-22100801-debug.apk</a></span><span
style="color: rgb(0, 0, 0); font-family:
ui-monospace, "Cascadia Mono",
"Segoe UI Mono", "Source Code
Pro", "Roboto Mono", Hack,
"Liberation Mono", Menlo, Monaco,
Consolas, monospace, monospace; font-size:
12px; font-style: normal;
font-variant-ligatures: normal;
font-variant-caps: normal; font-weight: 400;
letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px;
text-transform: none; white-space: normal;
widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px;
background-color: rgb(255, 255, 248);
text-decoration-thickness: initial;
text-decoration-style: initial;
text-decoration-color: initial; display:
inline !important; float: none;"></span></li>
</ul>
<div> <br>
This includes major extensions & code
rewrites, I think I'll bump the version to 4.0
when releasing this to Google Play.<br>
<br>
Main goal & outcome of this effort: command
bookmarks.<br>
<br>
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.<br>
<br>
So this enabled custom widgets to include
buttons triggering car commands.<br>
<br>
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. "#…".<br>
<br>
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.<br>
<br>
All this of course needs the service to be
enabled & allow commands to be sent.<br>
<br>
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.<br>
<br>
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.<br>
<br>
<br>
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.<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
</div>
<div class="moz-cite-prefix">Am 26.09.22 um 17:26
schrieb Chris van der Meijden:<br>
</div>
<div>
<meta http-equiv="content-type"
content="text/html; charset=UTF-8">
</div>
<div>For an includable example it would be nice if
we could send the vehicle image from the OVMS
app to KWGT.</div>
<div><br>
</div>
<div>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:</div>
<div><br>
</div>
<div><a
href="https://github.com/devmarxx/OVMS-Fireplace"
moz-do-not-send="true"
class="moz-txt-link-freetext">https://github.com/devmarxx/OVMS-Fireplace</a></div>
<div><br>
</div>
<div><br>
</div>
<div>Am Montag, dem 26.09.2022 um 13:56 +0200
schrieb Michael Balzer:</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<blockquote type="cite" style="margin:0 0 0 .8ex;
border-left:2px #729fcf solid;padding-left:1ex">
<div> Nice, please go ahead if you want to
create an includable example widget :-)<br>
<br>
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)$.<br>
<br>
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.<br>
<br>
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.<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
<br>
</div>
<div class="moz-cite-prefix">Am 26.09.22 um
12:13 schrieb Chris van der Meijden:<br>
</div>
<div>
<meta http-equiv="content-type"
content="text/html; charset=UTF-8">
</div>
<div>Correction:</div>
<div><br>
</div>
<div>$br(ovms, <span style="color: rgb(36, 41,
47); font-family: -apple-system,
BlinkMacSystemFont, "Segoe UI",
Helvetica, Arial, sans-serif, "Apple
Color Emoji", "Segoe UI
Emoji"; font-size: 16px; orphans: 2;
widows: 2; background-color: rgb(246, 248,
250);">sel_vehicle_label)$</span></div>
<div><br>
</div>
<div>Am Montag, dem 26.09.2022 um 12:05 +0200
schrieb Chris van der Meijden:</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<blockquote type="cite" style="margin:0 0 0
.8ex; border-left:2px #729fcf
solid;padding-left:1ex">
<div>I like the new KWGT Widget feature:</div>
<div><br>
</div>
<div><img
src="cid:part1.H9gIrSW7.Sa8hpPEL@expeedo.de"
class="" moz-do-not-send="true"
width="600px" height="492px"></div>
<div><br>
</div>
<div>Above is the Tesla Widget of our Model 3,
beneath that my OVMS KWGT widget of our VW
e-UP.</div>
<div><br>
</div>
<div>I had to allow "Passing data to other
apps". The syntax for getting the intent
variables to text in KWGT is i.e.</div>
<div><br>
</div>
<div>$br(ovms, car_sel_vehicle_label)$</div>
<div><br>
</div>
<div>Other variables can be found here:</div>
<div><a
href="https://github.com/openvehicles/Open-Vehicle-Android/wiki/Update-Broadcast-Intent-data"
moz-do-not-send="true"
class="moz-txt-link-freetext">https://github.com/openvehicles/Open-Vehicle-Android/wiki/Update-Broadcast-Intent-data</a></div>
<div><br>
</div>
<div>The image is local on the filesystem of
the phone and does not come by intent.</div>
<div><br>
</div>
<div><br>
</div>
<div>Am Sonntag, dem 25.09.2022 um 16:23 +0200
schrieb Michael Balzer:</div>
<div> No, icon can only be 0 from the else
branch, in that case it shall fall back to
the default image.<br>
<br>
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.<br>
<br>
</div>
<div><a class="moz-txt-link-freetext"
href="https://github.com/openvehicles/Open-Vehicle-Android/blob/master/OpenVehicleApp/src/main/java/com/openvehicles/OVMS/ui/FragMap.java#L319"
moz-do-not-send="true">https://github.com/openvehicles/Open-Vehicle-Android/blob/master/OpenVehicleApp/src/main/java/com/openvehicles/OVMS/ui/FragMap.java#L319</a><br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
</div>
<div class="moz-cite-prefix">Am 25.09.22 um
15:46 schrieb Chris van der Meijden:<br>
</div>
<div>
<meta http-equiv="content-type"
content="text/html; charset=UTF-8">
</div>
<div>Just guessing, but does </div>
<div><br>
</div>
<div>int icon;</div>
<div><br>
</div>
<div>in <a
title="OpenVehicleApp/src/main/java/com/openvehicles/OVMS/receiver/MyGcmListenerService.java"
class="Link--primary Truncate-text"
href="https://github.com/devmarxx/Open-Vehicle-Android/commit/3c13100a6a25257fe694be3050a1b76ca2b6fb44#diff-c13198cb33bb355f600c37f8889cedcb72346835dbb7e357c031c57aba424487"
style="box-sizing: border-box;
background-color: rgb(246, 248, 250);
min-width: 1ch; max-width: fit-content;
overflow: hidden; text-overflow: ellipsis;
white-space: nowrap; font-family:
ui-monospace, SFMono-Regular, "SF
Mono", Menlo, Consolas,
"Liberation Mono", monospace;
font-size: 12px; font-variant-ligatures:
normal; orphans: 2; widows: 2; color:
var(--color-accent-fg) !important;"
moz-do-not-send="true">MyGcmListenerService.java</a> at
line 132</div>
<div><br>
</div>
<div>not need to be initialized like</div>
<div><br>
</div>
<div>int icon = 0;</div>
<div><br>
</div>
<div>now you use</div>
<div><br>
</div>
<div>
<div><span style="color: rgb(36, 41, 47); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; background-color: rgb(230, 255, 236); text-decoration-thickness: initial;">.</span><span class="pl-en" style="box-sizing: border-box; color: var(--color-prettylights-syntax-entity); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; background-color: rgb(230, 255, 236); text-decoration-thickness: initial;">setSmallIcon</span><span style="color: rgb(36, 41, 47); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; background-color: rgb(230, 255, 236); text-decoration-thickness: initial;">(</span><span class="x x-first x-last" style="box-sizing: border-box; border-radius: 0.2em; color: rgb(36, 41, 47); background-color: var(--color-diff-blob-addition-word-bg); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; text-decoration-thickness: initial;">(</span><span class="pl-s1" style="box-sizing: border-box; color: rgb(36, 41, 47); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; background-color: rgb(230, 255, 236); text-decoration-thickness: initial;">icon</span><span class="x x-first" style="box-sizing: border-box; border-top-left-radius: 0.2em; border-bottom-left-radius: 0.2em; color: rgb(36, 41, 47); background-color: var(--color-diff-blob-addition-word-bg); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; text-decoration-thickness: initial;"> != </span><span class="pl-c1 x" style="box-sizing: border-box; color: rgb(36, 41, 47); background-color: var(--color-diff-blob-addition-word-bg); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; text-decoration-thickness: initial;">0</span><span class="x" style="box-sizing: border-box; color: rgb(36, 41, 47); background-color: var(--color-diff-blob-addition-word-bg); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; text-decoration-thickness: initial;">) ? </span><span class="pl-s1 x" style="box-sizing: border-box; color: rgb(36, 41, 47); background-color: var(--color-diff-blob-addition-word-bg); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; text-decoration-thickness: initial;">icon</span><span class="x" style="box-sizing: border-box; color: rgb(36, 41, 47); background-color: var(--color-diff-blob-addition-word-bg); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; text-decoration-thickness: initial;"> : </span><span class="pl-smi x" style="box-sizing: border-box; color: rgb(36, 41, 47); background-color: var(--color-diff-blob-addition-word-bg); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; text-decoration-thickness: initial;">R</span><span class="x" style="box-sizing: border-box; color: rgb(36, 41, 47); background-color: var(--color-diff-blob-addition-word-bg); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; text-decoration-thickness: initial;">.</span><span class="pl-s1 x" style="box-sizing: border-box; color: rgb(36, 41, 47); background-color: var(--color-diff-blob-addition-word-bg); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; text-decoration-thickness: initial;">drawable</span><span class="x" style="box-sizing: border-box; color: rgb(36, 41, 47); background-color: var(--color-diff-blob-addition-word-bg); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; text-decoration-thickness: initial;">.</span><span class="pl-s1 x x-last" style="box-sizing: border-box; border-top-right-radius: 0.2em; border-bottom-right-radius: 0.2em; color: rgb(36, 41, 47); background-color: var(--color-diff-blob-addition-word-bg); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; text-decoration-thickness: initial;">map_car_default</span><span style="color: rgb(36, 41, 47); font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; font-variant-ligatures: normal; orphans: 2; white-space: pre; widows: 2; background-color: rgb(230, 255, 236); text-decoration-thickness: initial;">)</span></div>
</div>
<div><br>
</div>
<div>at line 150 now?</div>
<div><br>
</div>
<div>As the images and the Google stuff are
related to that integer it made me thinking
...</div>
<div><br>
</div>
<div><br>
</div>
<div>Am Sonntag, dem 25.09.2022 um 11:52 +0200
schrieb Michael Balzer:</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<blockquote type="cite" style="margin:0 0 0
.8ex; border-left:2px #729fcf
solid;padding-left:1ex">
<div> Chris,<br>
<br>
that's not a crash log, that's just a
warning.<br>
<br>
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?<br>
<br>
A crash log has class "E" (error) and
includes an exception and a backtrace, for
an example see: <a
class="moz-txt-link-freetext"
href="https://issuetracker.google.com/issues/201308676#comment4"
moz-do-not-send="true">https://issuetracker.google.com/issues/201308676#comment4</a><br>
<br>
On the crash: maybe it's because you don't
have the Google components, not sure if
FragMap can handle that.<br>
<br>
The forum post relates to /e/OS … maybe I
need some emulator images running
alternative Androids now…<br>
<br>
Regards,<br>
Michael<br>
<br>
<br>
</div>
<div class="moz-cite-prefix">Am 25.09.22 um
11:40 schrieb Chris van der Meijden:<br>
</div>
<div>
<meta http-equiv="content-type"
content="text/html; charset=UTF-8">
</div>
<div>Hey Michael,</div>
<div><br>
</div>
<div>this is from logcat when I change
"Track vehicle" and the app crashes:</div>
<div><br>
</div>
<div>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)</div>
<div><br>
</div>
<div>I saw now, that this crash also happens
in the production app.</div>
<div><br>
</div>
<div>The widget is running well. I will keep
the app running for while and will see if
it stays stable.</div>
<div><br>
</div>
<div>Regards</div>
<div><br>
</div>
<div>Chris</div>
<div><br>
</div>
<div>Am Samstag, dem 24.09.2022 um 23:02
+0200 schrieb Michael Balzer:</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<blockquote type="cite" style="margin:0 0 0
.8ex; border-left:2px #729fcf
solid;padding-left:1ex">
<div> Chris,<br>
<br>
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.<br>
<br>
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.<br>
<br>
Speed optimization was one goal. What
about the widget?<br>
<br>
Thanks,<br>
Michael<br>
<br>
<br>
</div>
<div class="moz-cite-prefix">Am 24.09.22
um 22:43 schrieb Chris van der Meijden:<br>
</div>
<div>
<meta http-equiv="content-type"
content="text/html; charset=UTF-8">
</div>
<div>Hey Michael,</div>
<div><br>
</div>
<div>I just installed the "release"
Version on LineageOS 19.1 (Android 12)
without Google components.</div>
<div><br>
</div>
<div>The vehicle setup was without any
troubles. I could select the yellow VW
e-UP image without crashing.</div>
<div><br>
</div>
<div>The App version is set wrong under
"Vehicle info" (3.19.1, 2021122401).</div>
<div><br>
</div>
<div>Everything seems to be faster than
before.</div>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<div>Perhaps this first impression is of
some help.</div>
<div><br>
</div>
<div>Regards</div>
<div><br>
</div>
<div>Chris</div>
<div><br>
</div>
<div>Am Samstag, dem 24.09.2022 um 20:10
+0200 schrieb Michael Balzer:</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<div> <br>
</div>
<blockquote type="cite" style="margin:0 0
0 .8ex; border-left:2px #729fcf
solid;padding-left:1ex">
<div> Everyone,<br>
<br>
I'm currently working on the next
Android release including KustomWidget
support and a native app widget based
on the old Automagic gauge widget.<br>
<br>
Automagic has been dead for some time
now, and it keeps crashing on Androids
>= 7.<br>
<br>
My changes so far are in the hub, APK
builds are available here:<br>
</div>
<div><br>
</div>
<div><br>
</div>
<div> </div>
<ul>
<li><a class="moz-txt-link-freetext"
href="https://dexters-web.de/f/tw-beta/OpenVehicleApp-22092401-release.apk"
moz-do-not-send="true">https://dexters-web.de/f/tw-beta/OpenVehicleApp-22092401-release.apk</a></li>
<li>debug build for extended logging:
<a class="moz-txt-link-freetext"
href="https://dexters-web.de/f/tw-beta/OpenVehicleApp-22092401-debug.apk"
moz-do-not-send="true">https://dexters-web.de/f/tw-beta/OpenVehicleApp-22092401-debug.apk</a></li>
</ul>
<div> <br>
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:<br>
</div>
<div><br>
</div>
<div><br>
</div>
<div> </div>
<ul>
<li><a class="moz-txt-link-freetext"
href="https://www.openvehicles.com/node/3410"
moz-do-not-send="true">https://www.openvehicles.com/node/3410</a></li>
</ul>
<p>I could use some help with that, I've
got no idea other than blaming
Android.<br>
</p>
<div> I've seen the effect in my
emulator tests, and it seems to occur
more frequently with non-roadster
images.<br>
<br>
Regards,<br>
Michael<br>
<br>
</div>
<pre><div>_______________________________________________</div></pre>
<pre><div>OvmsDev mailing list</div></pre>
<pre><div><a href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a></div></pre>
<pre><div><a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true" class="moz-txt-link-freetext">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></div></pre>
</blockquote>
<div><br>
</div>
<div><span></span></div>
<div> <br>
<fieldset
class="moz-mime-attachment-header"></fieldset>
</div>
<pre>_______________________________________________</pre>
<pre>OvmsDev mailing list</pre>
<pre><a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a></pre>
<pre><a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></pre>
<div> <br>
</div>
<pre><div>_______________________________________________</div></pre>
<pre><div>OvmsDev mailing list</div></pre>
<pre><div><a href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a></div></pre>
<pre><div><a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true" class="moz-txt-link-freetext">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></div></pre>
</blockquote>
<div><br>
</div>
<div><span></span></div>
<div> <br>
<fieldset
class="moz-mime-attachment-header"></fieldset>
</div>
<pre>_______________________________________________</pre>
<pre>OvmsDev mailing list</pre>
<pre><a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a></pre>
<pre><a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></pre>
<div> <br>
</div>
<pre><div>_______________________________________________</div></pre>
<pre><div>OvmsDev mailing list</div></pre>
<pre><div><a href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a></div></pre>
<pre><div><a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true" class="moz-txt-link-freetext">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></div></pre>
</blockquote>
<div><br>
</div>
<div><span></span></div>
<div> <br>
<fieldset class="moz-mime-attachment-header"></fieldset>
</div>
<pre>_______________________________________________</pre>
<pre>OvmsDev mailing list</pre>
<pre><a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a></pre>
<pre><a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></pre>
<div> <br>
</div>
<pre><div>_______________________________________________</div></pre>
<pre><div>OvmsDev mailing list</div></pre>
<pre><div><a href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a></div></pre>
<pre><div><a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true" class="moz-txt-link-freetext">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></div></pre>
<div><br>
</div>
<div><span></span></div>
<div>_______________________________________________<br>
</div>
<div>OvmsDev mailing list<br>
</div>
<div><a
href="mailto:OvmsDev@lists.openvehicles.com"
moz-do-not-send="true"
class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a><br>
</div>
<div><a
href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev"
moz-do-not-send="true"
class="moz-txt-link-freetext">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a><br>
</div>
</blockquote>
<div><br>
</div>
<div><span></span></div>
<div> <br>
<fieldset class="moz-mime-attachment-header"></fieldset>
</div>
<pre>_______________________________________________</pre>
<pre>OvmsDev mailing list</pre>
<pre><a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a></pre>
<pre><a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></pre>
<div> <br>
</div>
<pre><div>_______________________________________________</div></pre>
<pre><div>OvmsDev mailing list</div></pre>
<pre><div><a href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a></div></pre>
<pre><div><a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true" class="moz-txt-link-freetext">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></div></pre>
</blockquote>
<div><br>
</div>
<div><span></span></div>
<div> <br>
<fieldset class="moz-mime-attachment-header"></fieldset>
</div>
<pre>_______________________________________________</pre>
<pre>OvmsDev mailing list</pre>
<pre><a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a></pre>
<pre><a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></pre>
<div> <br>
</div>
<pre><div>_______________________________________________</div></pre>
<pre><div>OvmsDev mailing list</div></pre>
<pre><div><a href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a></div></pre>
<pre><div><a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true" class="moz-txt-link-freetext">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></div></pre>
</blockquote>
<div><br>
</div>
<div><span></span></div>
<div> <br>
<fieldset class="moz-mime-attachment-header"></fieldset>
</div>
<pre>_______________________________________________</pre>
<pre>OvmsDev mailing list</pre>
<pre><a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a></pre>
<pre><a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></pre>
<div> <br>
</div>
<pre><div>_______________________________________________</div></pre>
<pre><div>OvmsDev mailing list</div></pre>
<pre><div><a href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a></div></pre>
<pre><div><a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true" class="moz-txt-link-freetext">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></div></pre>
</blockquote>
<div><br>
</div>
<div><span></span></div>
<div> <br>
<fieldset class="moz-mime-attachment-header"></fieldset>
</div>
<pre>_______________________________________________</pre>
<pre>OvmsDev mailing list</pre>
<pre><a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a></pre>
<pre><a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></pre>
<div> <br>
</div>
<pre><div>_______________________________________________</div></pre>
<pre><div>OvmsDev mailing list</div></pre>
<pre><div><a href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a></div></pre>
<pre><div><a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true" class="moz-txt-link-freetext">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></div></pre>
</blockquote>
<div><br>
</div>
<div><span></span></div>
<div> <br>
<fieldset class="moz-mime-attachment-header"></fieldset>
</div>
<pre>_______________________________________________</pre>
<pre>OvmsDev mailing list</pre>
<pre><a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a></pre>
<pre><a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></pre>
<div> <br>
</div>
<pre><div>_______________________________________________</div></pre>
<pre><div>OvmsDev mailing list</div></pre>
<pre><div><a href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a></div></pre>
<pre><div><a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true" class="moz-txt-link-freetext">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></div></pre>
</blockquote>
<div><br>
</div>
<div><span></span></div>
<div> <br>
<fieldset class="moz-mime-attachment-header"></fieldset>
</div>
<pre>_______________________________________________</pre>
<pre>OvmsDev mailing list</pre>
<pre><a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a></pre>
<pre><a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a></pre>
<div> <br>
</div>
<pre><div>_______________________________________________
</div></pre>
<pre><div>OvmsDev mailing list
</div></pre>
<pre><div><a href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true" class="moz-txt-link-freetext">OvmsDev@lists.openvehicles.com</a>
</div></pre>
<pre><div><a href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true" class="moz-txt-link-freetext">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</div></pre>
</blockquote>
<div><br>
</div>
<div><span></span></div>
</blockquote>
</div>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:OvmsDev@lists.openvehicles.com" moz-do-not-send="true">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev" moz-do-not-send="true">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26</pre>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
OvmsDev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:OvmsDev@lists.openvehicles.com">OvmsDev@lists.openvehicles.com</a>
<a class="moz-txt-link-freetext" href="http://lists.openvehicles.com/mailman/listinfo/ovmsdev">http://lists.openvehicles.com/mailman/listinfo/ovmsdev</a>
</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26</pre>
</body>
</html>