homebridge-fordpass
homebridge-fordpass copied to clipboard
[Feature Request]: can we control the other door (van door) ?
Enhancement of issue
the plugin is amazing and work perfect, but you can open/close only the 2 doors.
Solution
With fordpass app you can also open the van door (i have a fordtransit camper), is there a way to add also the "alternative" door to control to? thank you
Alternatives
No response
Additional Context
No response
Hi! I'm sure there is a way to add this but unfortunately I cannot test it or see the network calls to hook it up since I do not have a camper.
Is there a way that I can do it for you? Maybe with wire shark? Could you you guide me to intercept the api call?
Take a look at #143. It has all the info you need for getting the calls.
From what you linked I found:
hoodDoor: [Object], tailgateDoor: [Object], innerTailgateDoor: [Object]
Could it be considered the tailgatedoor
It could. But [Object]
holds information that I would need to make it work.
Cause it seems it has been translate like the charging door on the back(tail)
Ford's API is not very consistent. I would prefer to see what is in [Object]
to make the changes as opposed to "shooting in the dark" based on another part of the API.
Anyway is there a way that your plugin once connected to the fordpass account could read what it can be done? For example I can't turn on and off the engine, but I can read oil, adblue and of course open/close van doors and also that "backdoor"
Anyway is there a way that your plugin once connected to the fordpass account could read what it can be done? For example I can't turn on and off the engine, but I can read oil, adblue and of course open/close van doors and also that "backdoor"
The plugin can see all of this info but it doesn't utilize all of it. The plugin still has to play within the boundaries of Homebridge and since there is no official "oil" accessory for HomeKit, it is not implemented. The "backdoor" could be considered a lock accessory. I just don't know what the network call looks like for that particular section.
It's really like shooting in the dark 😅 but couldn't be so simple like trigger that "name" instead of the one you use for lock the vehicle. There is no way (also with phisical key) to lock this door (only by locking the entire vehicle) but it can be individualy open (also no way to check its status). The doubt is if its tailgatedoor or innertailgatedoor
I watched https://github.com/Brandawg93/homebridge-fordpass/issues/143 but really do not understand how to inspect what's into [object]
I watched https://github.com/Brandawg93/homebridge-fordpass/issues/143 but really do not understand how to inspect what's into [object]
It takes a bit of development work to be able to see it. If you follow the numbered steps there and add console.log
where the other person did, it should show you what we're looking for.
i managed to did so now i can see this: lockStatus: { value: 'UNLOCKED', status: 'CURRENT', timestamp: '08-21-2021 14:12:47' }, alarm: { value: 'NOTSET', status: 'CURRENT', timestamp: '08-21-2021 14:12:47' }, PrmtAlarmEvent: { value: 'Null', status: 'CURRENT', timestamp: '08-21-2021 14:12:47' }, odometer: { value: 1049, status: 'CURRENT', timestamp: '08-21-2021 14:12:47' }, fuel: { fuelLevel: 44.891448, distanceToEmpty: 313.3, status: 'CURRENT', timestamp: '08-21-2021 14:12:47' }, gps: { latitude: '43.4999200', longitude: '11.1043467', gpsState: 'UNSHIFTED', status: 'LAST_KNOWN', timestamp: '06-29-2021 12:39:06' }, remoteStart: { remoteStartDuration: 10, remoteStartTime: 0, status: 'CURRENT', timestamp: '08-21-2021 14:12:47' }, remoteStartStatus: { value: 0, status: 'CURRENT', timestamp: '08-21-2021 14:12:47' }, battery: { batteryHealth: [Object], batteryStatusActual: [Object] }, oil: { oilLife: 'STATUS_GOOD', oilLifeActual: 99, status: 'CURRENT', timestamp: '08-21-2021 14:12:47' }, tirePressure: { value: 'STATUS_GOOD', timestamp: '08-21-2021 14:12:46' }, authorization: 'AUTHORIZED', TPMS: { tirePressureByLocation: [Object], tirePressureSystemStatus: [Object], dualRearWheel: [Object], leftFrontTireStatus: [Object], leftFrontTirePressure: null, rightFrontTireStatus: [Object], rightFrontTirePressure: null, outerLeftRearTireStatus: [Object], outerLeftRearTirePressure: null, outerRightRearTireStatus: [Object], outerRightRearTirePressure: null, innerLeftRearTireStatus: [Object], innerLeftRearTirePressure: null, innerRightRearTireStatus: [Object], innerRightRearTirePressure: null, recommendedFrontTirePressure: [Object], recommendedRearTirePressure: [Object] }, firmwareUpgInProgress: { value: false, timestamp: '08-01-2021 19:14:13' }, deepSleepInProgress: { value: false, timestamp: '08-01-2021 19:14:13' }, ccsSettings: { timestamp: '08-21-2021 12:20:43', location: 1, vehicleConnectivity: 1, vehicleData: 1, drivingCharacteristics: -1, contacts: -1 }, lastRefresh: '08-21-2021 14:12:46', lastModifiedDate: '08-21-2021 14:12:47', serverTime: '08-21-2021 14:13:45', batteryFillLevel: null, elVehDTE: null, hybridModeStatus: null, chargingStatus: null, plugStatus: null, chargeStartTime: null, chargeEndTime: null, preCondStatusDsply: null, chargerPowertype: null, batteryPerfStatus: null, outandAbout: { value: 'PwPckOffTqNotAvailable', status: 'CURRENT', timestamp: '08-21-2021 14:12:47' }, batteryChargeStatus: null, dcFastChargeData: null, windowPosition: null, doorStatus: { rightRearDoor: [Object], leftRearDoor: [Object], driverDoor: [Object], passengerDoor: [Object], hoodDoor: [Object], tailgateDoor: [Object], innerTailgateDoor: [Object] }, ignitionStatus: { value: 'Off', status: 'CURRENT', timestamp: '08-21-2021 14:12:47' }, batteryTracLowChargeThreshold: null, battTracLoSocDDsply: null, dieselSystemStatus: { exhaustFluidLevel: [Object], filterSoot: [Object], ureaRange: [Object], metricType: [Object], filterRegenerationStatus: [Object] } }, version: '4.0.0', status: 200 }
this output is after open the "back" door, but now how to manage it? the only different when close is:
lockStatus: { value: 'LOCKED',
so how to get deeper informational data under: doorStatus: { rightRearDoor: [Object], leftRearDoor: [Object], driverDoor: [Object], passengerDoor: [Object], hoodDoor: [Object], tailgateDoor: [Object], innerTailgateDoor: [Object] ? to see if it can see what is open and control it?
This data could be also useful to have in homekit:
gps: { latitude: '43.4999200', longitude: '11.1043467',
tirePressure: { value: 'STATUS_GOOD',
oil: { oilLife: 'STATUS_GOOD', oilLifeActual: 99,
distanceToEmpty: 313.3,
so how to get deeper informational data under:
doorStatus: {
rightRearDoor: [Object], leftRearDoor: [Object], driverDoor: [Object], passengerDoor: [Object], hoodDoor: [Object], tailgateDoor: [Object], innerTailgateDoor: [Object]
?
to see if it can see what is open and control it?
console.log(data.tailgateDoor);
Thank you, I will try!
i get this error while compiling with npm run build:
src/fordpass.ts:63:14 - error TS2304: Cannot find name 'data'.
63 console.log(data.tailgateDoor); ~~~~
src/fordpass.ts:64:14 - error TS2304: Cannot find name 'data'.
64 console.log(data.innerTailgateDoor); ~~~~
I'm not sure what the variable was called. Just add .tailDoor
to the end of it.
i didn't understand what you mean, also with .tailDoor, do not work:
src/fordpass.ts:63:14 - error TS2304: Cannot find name 'data'.
63 console.log(data.tailDoor);
tried without success also with:
src/fordpass.ts:63:14 - error TS1135: Argument expression expected.
63 console.log(.tailDoor); ~
i have also tried with:
src/fordpass.ts:63:21 - error TS2339: Property 'tailDoor' does not exist on type 'AxiosResponse
'. 63 console.log(result.tailDoor); ~~~~~~~~
now i'm really shooting in the dark ;( cause i don't know the logic on behind this string, what it expect to point to ?
Whoops...autocorrect got me. console.log(result.tailgateDoor)
.
sorry but it give me error too:
src/fordpass.ts:63:21 - error TS2339: Property 'tailgateDoor' does not exist on type 'AxiosResponse
63 console.log(result.tailgateDoor); ~~~~~~~~~~~~
Found 1 error.
@Brandawg93 any idea on how to check that door? thank you
I did some digging into this. The tailgateDoor
is most likely the status of the door, but it isn't the action. In other words, the plugin could see if the door is open/closed but can't tell the door to open/close. If the Fordpass app can control the door then there is a way, but it would take a much more advanced way of debugging to see it (mitmproxy). Unfortunately, since I don't have a camper, I can't debug it myself.
Thank you @Brandawg93, i have never used mitmproxy software, but it seems like a wireshark. Anyway i can control the tailgateDoor via app, i don't think it can intercept query/httpcall in the network if the source is another device in LAN, or am i wrong? if so i need to have the mitmproxy installed on the device that make the httpcall to intercept it, right?
the question is, if i install mitmproxy on an raspberry in my lan (it can be installed via github) and i trigger the door via my smartphone (same lan) i could see the call? if so, how could i have to set the mitmproxy to intercept that call, by filtering the destination directed to ford's server? how could you will do? thank you
It works like a proxy so it can do it..
You would need to install a profile on your phone. When you trigger the call, your RPi will see what the call and parameters were. It's how I created the plugin in the first place. 😃