[Ovmsdev] Doubs in implementation with nodejs.
Michael Balzer
dexter at expeedo.de
Sat Aug 6 18:12:51 HKT 2022
I've added a PR to fix the usage example:
https://github.com/birkir/ovms-client/pull/14
Mark, I suggest adding a fork to the OVMS account.
Regards,
Michael
Am 06.08.22 um 11:34 schrieb Michael Balzer:
> Gregg,
>
> I've had a look at that module
> (https://github.com/birkir/ovms-client): the example code is wrong. As
> you didn't post any of your actual code, I can only assume you try to
> base your code on that example.
>
> First of all, the connect() call is running asynchronously, and you
> must not send commands until the "connected" event has been emitted.
>
> Second & more importantly for your command application, the send()
> method does not work as shown in the example ("send('stat')"). You
> need to construct the actual MP command for send.
>
> Third & finally, you need to subscribe to the "commandReceived" event
> if you want to receive the results (instead of parsing the "raw"
> messages yourself).
>
> Here's a complete working example code using that module sending both
> a shell and a lock command:
>
> const { OVMSClient } = require('ovms-client');
>
> // host, port, vehicle id, password
> const client = new OVMSClient('ovms.dexters-web.de', 6867, 'xxx',
> 'xxx');
>
> // connect
> client.connect();
>
> // subscribe to command responses:
> client.on('commandReceived', response => {
> let [ command, result, message ] = response.split(',');
> console.log('*** response: command', command, "result", result);
> if (message) {
> console.log(message.replace(/\r/g, String.fromCharCode(10)));
> }
> });
>
> client.on('connected', callback => {
>
> // send shell command
> console.log('*** send command: 7,stat');
> client.send('7,stat');
>
> // send lock command (with PIN 1234)
> console.log('*** send command: 20,1234');
> client.send('20,1234');
>
> });
>
>
> Example run:
>
> balzer at leela:~/ovms/nodejs> DEBUG=* node test.js
> OVMS connected to socket +0ms
> OVMS Server authentication OK. +17ms
> OVMS RX: MP-S 0 gKmpSDl8krIShUcPcIYFHO N6LiQqThPvJEUvvQV4f8Kg==
> +1ms
> *** send command: 7,stat
> *** send command: 20,1234
> *** response: command 7 result 0
> Not charging
> SOC: -
> Ideal range: 0km
> CAC: 120.0Ah
>
> *** response: command 20 result 1
> ^C
>
>
> Note: command 20 returned "failed" (result 1) here, because the test
> module on my bench cannot lock a car.
>
> This was the module log for that session:
>
> I (2192998) ovms-server-v2: Incoming Msg: MP-0 Z1
> I (2192998) ovms-server-v2: One or more peers have connected
> I (2193008) ovms-server-v2: Incoming Msg: MP-0 C7,stat
> I (2193008) ovms-server-v2: Send MP-0 c7,0,Not charging|SOC:
> -|Ideal range: 0km|CAC: 120.0Ah
> I (2193048) ovms-server-v2: Incoming Msg: MP-0 C20,1234
> I (2193048) v-vweup: CommandLock
> I (2193048) ovms-server-v2: Send MP-0 c20,1
>
>
> So the module is actually working nicely, it's just got a poor usage
> example.
>
> Be aware the module does not yet support TLS encryption though, you
> should add that before actually using it.
>
> Regards,
> Michael
>
>
> Am 04.08.22 um 06:05 schrieb gregg hansen:
>> Just to be sure, we’ll set some time frames and I’ll park the car
>>
>> On Wed, Aug 3, 2022 at 11:03 PM Mark Webb-Johnson
>> <mark at webb-johnson.net> wrote:
>>
>> Gregg,
>>
>> I checked for August 2022, ET225567 I find (redacted as necessary):
>>
>> 2022-08-04 03:34:52.589231 UTC info OVMS::Server::ApiV2: #10
>> A ET225567 rx msg C 20,
>> 2022-08-04 03:34:52.590298 UTC info OVMS::Server::ApiV2: #10
>> A ET225567 cmd req for ET225567 (queue now 10)
>> 2022-08-04 03:34:52.590552 UTC info OVMS::Server::ApiV2: #25
>> C ET225567 tx msg C 20,
>> 2022-08-04 03:34:55.185066 UTC info OVMS::Server::ApiV2: #25
>> C ET225567 rx msg c 20,0
>> 2022-08-04 03:34:55.185657 UTC info OVMS::Server::ApiV2: #25
>> C ET225567 cmd rsp to #10 for ET225567 (queue now )
>> 2022-08-04 03:34:55.185739 UTC info OVMS::Server::ApiV2: #10
>> A ET225567 tx msg c 20,0
>>
>>
>> No way of knowing if that was from the app or the library, but
>> the message sequence is correct and the command was acknowledged
>> by the car as successfully executed. Command #20 is ‘lock car’.
>>
>> Regards, Mark
>>
>>> On 4 Aug 2022, at 11:36 AM, gregg hansen <gregg at rabbitev.com> wrote:
>>>
>>> If there is a better library to try let me know. We tried a
>>> couple before we landed on that one.
>>>
>>> We only test with one vehicle - ET225567
>>>
>>> This is my fleet vehicle, so there’s a decent chance it will be
>>> in use.
>>>
>>> Tomorrow we’ll try some tests and send some timestamps
>>>
>>> On Wed, Aug 3, 2022 at 10:31 PM Mark Webb-Johnson
>>> <mark at webb-johnson.net> wrote:
>>>
>>> Gregg,
>>>
>>> OK. That is clearer. At a glance, the library seems ok, but
>>> I haven’t worked with that one previously, or even knew of it.
>>>
>>> Can you let me know a vehicle ID, and UTC timestamp, of one
>>> of your connections and attempted unlocks? I can then check
>>> the server logs.
>>>
>>> Or let me know vehicle ID, try it now, and I can monitor.
>>>
>>> Regards, Mark.
>>>
>>>
>>>> On 4 Aug 2022, at 11:21 AM, gregg hansen
>>>> <gregg at rabbitev.com> wrote:
>>>>
>>>> This is the library we are using it encrypt some data and
>>>> use the MP commands to call some functionalities to the car
>>>> with this we retrieve some data like the battery status.
>>>>
>>>> NPM Lib
>>>> https://www.npmjs.com/package/ovms-client?activeTab=readme
>>>> Github
>>>> https://github.com/birkir/ovms-client
>>>> (in the Github is an instruction that explains how does the
>>>> library works)
>>>>
>>>> It has a function to send shell commands like 'stat'
>>>> commands, but when we send a command looks like the car is
>>>> receiving the command but it seems like the car gets the
>>>> commands but does not interact with it.
>>>>
>>>> There is other function that allows us to send raw data to
>>>> the car that is the MP commands, but in this case when I
>>>> send a Raw command this don't connect with the car and its
>>>> stock loading waiting for a response that is never returned.
>>>>
>>>> I have been trying to make a script that lets me connect to
>>>> the car, but I only could connect to the ovms-server that
>>>> let us make the connection with the car, but I can not set
>>>> the carId and password on that socket to make the
>>>> connection to the car.
>>>>
>>>> We are using OVMS v2 in the cars.
>>>>
>>>> Thanks for your help and we are going to be glad to read
>>>> you answers
>>>>
>>>> On Wed, Aug 3, 2022 at 10:07 PM Mark Webb-Johnson
>>>> <mark at webb-johnson.net> wrote:
>>>>
>>>> Gregg,
>>>>
>>>> We really need to know exactly what he is doing, and
>>>> with what protocols.
>>>>
>>>> From the way you seem to describe it, you:
>>>>
>>>> 1. Have a custom app, in react native
>>>> 2. You have a custom server, in NodeJS
>>>> 3. You presumably have some custom protocol/api
>>>> between your app and server
>>>> 4. Your NodeJS server is talking to the OVMS server
>>>> using your own implementation of v2 protocol
>>>>
>>>>
>>>> Is that correct? If so, then #4 is the only issue. The
>>>> V2 protocol is fairly well documented, here:
>>>>
>>>> https://docs.openvehicles.com/en/latest/protocol_v2/index.html
>>>>
>>>>
>>>> It is proprietary and the initial negotiation is
>>>> complicated, but if you have established the crypto
>>>> connection and received the data, then you have done
>>>> the hard part. Issuing commands should be easy.
>>>>
>>>> In v2 protocol, locking/unlocking is performed via the
>>>> “C” command.
>>>>
>>>> Probably easiest to look at the sample code in the iOS
>>>> or Android Apps to see how that is done. For iOS, see:
>>>>
>>>> https://github.com/openvehicles/Open-Vehicle-iOS/blob/master/OpenVehicleApp/ovms/ovmsAppDelegate.m
>>>>
>>>> (The commandIssue method, and how it is called)
>>>>
>>>>
>>>> Regards, Mark.
>>>>
>>>>> On 3 Aug 2022, at 11:03 PM, gregg hansen
>>>>> <gregg at rabbitev.com> wrote:
>>>>>
>>>>> Pablo has not been able to access the list. He is
>>>>> getting authentication errors, so while he works
>>>>> through that I thought I would answer for him...
>>>>>
>>>>> "The MP commands are the raw data I am trying to
>>>>> send to the car to open and close the car."
>>>>>
>>>>> The devices are using the V2 server, so I think fixed
>>>>> MP commands make the most sense. Pablo is trying to
>>>>> figure out how to make that work, and so far has not
>>>>> been successful.
>>>>>
>>>>>
>>>>>
>>>>> On Sun, Jul 31, 2022 at 2:26 AM Michael Balzer
>>>>> <dexter at expeedo.de> wrote:
>>>>>
>>>>> Pablo,
>>>>>
>>>>> a bit more information on how you connect to the
>>>>> car would be helpful here.
>>>>>
>>>>> Arbitrary remote shell command execution is
>>>>> supported by the module's HTTP API (/api/execute),
>>>>> the module's SSH server, the "V2 protocol" server
>>>>> via MP command 7 and any "V3" (MQTT) server via
>>>>> the /client/command topic scheme. Plus there's a
>>>>> secondary (non-standard) HTTP command API
>>>>> available on my server ovms.dexters-web.de
>>>>> <http://ovms.dexters-web.de/> (public API of my
>>>>> custom web shell).
>>>>>
>>>>> Lock & unlock are also available as fixed MP
>>>>> commands (20,22) on a V2 server, along with a set
>>>>> of other standard App calls. These do not run via
>>>>> the shell but translate to direct internal execution.
>>>>>
>>>>> Command execution has not yet been implemented for
>>>>> the "V2" server's HTTP API. But you can of course
>>>>> implement that if you use that API.
>>>>>
>>>>> Docs:
>>>>>
>>>>> * https://docs.openvehicles.com/en/latest/components/ovms_webserver/docs/index.html#authorization
>>>>> * https://docs.openvehicles.com/en/latest/userguide/console.html#ssh-console
>>>>> * https://docs.openvehicles.com/en/latest/protocol_v2/commands.html#execute-sms-command
>>>>> o https://docs.openvehicles.com/en/latest/protocol_v2/commands.html#lock-car
>>>>> o https://docs.openvehicles.com/en/latest/protocol_v2/commands.html#unlock-car
>>>>> * http://lists.openvehicles.com/pipermail/ovmsdev/2018-July/012641.html
>>>>> * http://lists.openvehicles.com/pipermail/ovmsdev/2018-July/012696.html
>>>>> * https://docs.openvehicles.com/en/latest/protocol_httpapi/requests.html#not-yet-implemented
>>>>>
>>>>> Which one are you referring to?
>>>>>
>>>>> Regards,
>>>>> Michael
>>>>>
>>>>>
>>>>> Am 29.07.22 um 19:28 schrieb Pablo Cabrera:
>>>>>> Hello OVMS team, we are currently working with an
>>>>>> implementation with OVMS in a react native app
>>>>>> with a NodeJS back-end.
>>>>>> Currently we can connect with the cars and rescue
>>>>>> some data like the status of the battery or GPS
>>>>>> location, but now we need to send commands to
>>>>>> lock and unlock the cars from the same app, when
>>>>>> we send a command I get a response that the
>>>>>> command is received in the car, but the command
>>>>>> is not executed in the bash.
>>>>>>
>>>>>> I don't know if you can send me more info
>>>>>> about how to make the car receive bash
>>>>>> commands from remote connections, or how can I
>>>>>> send it from the NodeJs server into the bash of
>>>>>> the car.
>>>>>>
>>>>>> Thanks for your time and help.
>>>>>>
>>>>>> _______________________________________________
>>>>>> OvmsDev mailing list
>>>>>> OvmsDev at lists.openvehicles.com
>>>>>> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>>>>>
>>>>> --
>>>>> Michael Balzer *Helkenberger Weg 9 * D-58256 Ennepetal <https://www.google.com/maps/search/Helkenberger+Weg+9+*+D-58256+Ennepetal?entry=gmail&source=g>
>>>>> Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
>>>>>
>>>>> _______________________________________________
>>>>> OvmsDev mailing list
>>>>> OvmsDev at lists.openvehicles.com
>>>>> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> RabbitEV
>>>>> Driving Electric Cars
>>>>> RabbitEV.com <http://rabbitev.com/>
>>>>> _______________________________________________
>>>>> 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
>
> --
> Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
> Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
>
> _______________________________________________
> OvmsDev mailing list
> OvmsDev at lists.openvehicles.com
> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20220806/580c26be/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 203 bytes
Desc: OpenPGP digital signature
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20220806/580c26be/attachment-0001.sig>
More information about the OvmsDev
mailing list