Git Product home page Git Product logo

fiatchamp's Introduction

image FiatChamp πŸš—

Connect your FIAT, Jeep, Ram, Dodge, AlfaRomeo car πŸš— or truck 🚚 to Home Assistant. Needs a vehicle with enabled uconnect services and valid account.

  • Fiat: Works βœ…
  • Jeep: Works βœ…
  • Ram: Experimental ⚠️
  • Dodge: Unknown β›”
  • AlfaRomeo: Unknown β›”

I have created this addon for my own car πŸš— (new Fiat Icon 500e) and its the only one i can test it with. Work in progress so expect some bugs 🐞. πŸ˜…

Example dashboard using sensors and entities provided by this addon:

image

Prerequisites πŸ“ƒ

  • Official Home Assistant MQTT Addon (recommended) running or external mqtt broker. Broker must be connected to Home Assistant MQTT integration.

image

It looks like there are different uconnect services. Make sure your car works with one of the following uconnect sites. Older vehicles that only uses mopar.com do not seem to work.

Features βœ”οΈ

  • Imports values like battery level πŸ”‹, tyre pressure β€πŸ’¨, odometer ⏲ etc. into Home Assistant.
  • Multiple Brands: Fiat, Jeep, Ram, Dodge, AlfraRomeo
  • Supports multiple cars on the same account. πŸš™πŸš—πŸš•
  • Location tracking.🌍
  • Home Assistant zones (home 🏠, work 🏦 etc.) support.
  • Uses the same data source as the official app πŸ“±.
  • Remote commands (open doors πŸšͺ, switch air conditioner 🧊 on , ...) are supported since version 2.0. Some commands may not work with all cars. Available commands are:
    • "UpdateLocation" (updates gps location of the car)
    • "RefreshBatteryStatus" (refresh battery level %)
    • "DeepRefresh" (same as "RefreshBatteryStatus")
    • "Blink" (blink lights)
    • "ChargeNOW" (starts charging)
    • "Trunk" (open/close trunk lock)
    • "DoorLock" (open/close doors. See: "EnableDangerousCommands" option.)
    • "HVAC" (turn on the temperature preconditioning in the car. the official app does not support turning preconditioning off πŸ˜… See: "EnableDangerousCommands" option.)
  • Convert km to miles option.

What doesn't work (yet)? ❌

  • Eco Reports (statistics). I could not find any API yet. The official app shows it so in theory it should be accessible.

What will NEVER work? ❌

  • Things the fiat api does not support. Like real time tracking or adjusting the music volume. Maybe they add some new features in the future.

How to install πŸ› οΈ

Home Assistant OS or Supervised

Follow the official docs:

https://www.home-assistant.io/addons/

Short version:

  • Switch on "Advanced Mode" in your users profile. (if you haven't already)
  • Go to Settings -> Add-ons -> ADD-ON STORE
  • Top right three dots. Add repo. https://github.com/wubbl0rz/FiatChamp
  • Top right three dots. Check for updates.
  • Refresh Page. (F5)
  • Store should show this repo now and you can install the addon.

Standalone ( NOT RECOMMENDED ⚠️ )

When using Home Assistant as self managed docker container (like in this issue #22) you can use FiatChamp in standalone mode. You need to update the container yourself and export all the needed environment variables. This is for advanced users only. The supervisor token can be generated on the the user profile page inside home assistant (Long-Lived Access Tokens).

docker compose example:

version: "3.9"                                                                                                                                     
services:
  FiatChamp:
    image: ghcr.io/wubbl0rz/image-amd64-fiat-champ:3.0.4
    environment:
      - 'STANDALONE=True'
      - '[email protected]'
      - 'FiatChamp_FiatPw=123456'
      - 'FiatChamp_FiatPin=9999'
      - 'FiatChamp_SupervisorToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI5NGFmMGJhZTFjYTQ0ODk2YWEzYjgzMGI5YmE4NGQxNiIsImlhdCI6MTY3MDA3Mjc
      - 'FiatChamp_StartDelaySeconds=1'
      - 'FiatChamp_Region=Europe'
      - 'FiatChamp_Brand=Fiat'
      - 'FiatChamp_CarUnknownLocation=Unknown'
      - 'FiatChamp_ConvertKmToMiles=False'
      - 'FiatChamp_MqttUser=mqtt'
      - 'FiatChamp_MqttPw=123456'
      - 'FiatChamp_MqttServer=192.168.2.132'
      - 'FiatChamp_MqttPort=1883'

Options / Usage

You dont have to configure MQTT. At startup the Addon will automatically connect to your Home Assistant MQTT Broker.

  • PIN is only needed if you want to send commands to your car. Its the same PIN used by the official app or website.
  • Use DEBUG carefully. It will dump many informations to the log including session tokens and sensitive informations.
  • Automatic refresh of location and battery level may drain your battery a bit more. The car have to wakeup some parts, read new values and sent them back. This will get executed every "Refresh interval" and at every command even if your car is not at home. Recommendation: Better use a Home Assistant automation instead. I have setup an automation that is triggered by plugging in the charger cable and then updates the battery level (by calling DeepRefresh) every 15 minutes until its 100% or charger is disconnected. ( see here for screenshots of my automations #4 (comment) )
  • Only set "Dangerous commands" if you want to use unoffical commands that are not present in the the official app.
  • Mqtt override can be used if you want to utilize an external mqtt broker. You do not need this if you are using the official home assistant mqtt addon.

FAQ πŸ™‹

Where is the data ?

inside the mqtt integration (click on "devices"). after a successful run there should be a new entry named "car" or the nickname you gave the car on the website.

image

if not then check the error logs output of the addon.

Why is location not working.

it should work. have a look at the attributes. main status depends on the zones you configured in home assistant. when the car is within the radius of a predefined zone at will show the zone name as location. otherwise status "away" or a custom string.

What is DeepRefresh ? How to update my battery charging πŸ”‹ level % ?

DeepRefresh is the "fiat language" for battery status update. The car sents only relatively rarely battery charging level % updates. If thats too slow for you press the "RefreshBatteryStatus" or "DeepRefresh" button (or call it in an automation) and the car should immediately update and sent back its current battery charging level %.

image

fiatchamp's People

Contributors

cgraf avatar mrmugame avatar philipp-meier avatar wubbl0rz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fiatchamp's Issues

Command to stop charging

Hi I am using your addon with much satisfaction of my Home Assistant. I would like to ask you if it was possible to use the reverse command to the chargeNow. I would like to run a command that interrupts the charge. Thank you in advance for any response

Km to Miles

Not really an issue, (love the add on!) but would be nice to be able to toggle km or miles ?

Problem Trying to Connect to Jeep

I see this in the logs:

[04:06:34 WRN] Error connecting to the FIAT API. 
This can happen from time to time. Retrying in 15 minutes.
[04:06:34 INF] ERROR: Response could not be deserialized to JSON: GET https://channels.sdpr-02.fcagcv.com/v4/accounts/<some_blob>/vehicles?stage=ALL
[04:06:34 INF] STATUS: 200
[04:06:34 INF] RESPONSE: { // valid json from here

Those messages are from this code, clearly. What I notice is that the structure of the json printed here is:

{
    "userid": "<some_blob>",
    "version": 1673484085289,
    "vehicles": [
# the elements in this list seem to have the correct schema, based on a quick reading of the parsing code...

Is this line expecting the json to be an array at the top level? This is an object with a vehicles member. Is anyone else seeing this problem?

Also are there any instructions how to build & test this project locally?

HA 2024 Compatibility

I got warning attached the morning after updating HA Core to 2023.7.3.
It looks as if both FiatChamp and FiatUConnect will give problems next year.
HA Warning

Polling minutes

If I want to modify the 15 min polling in a docker container, which is the launch environment variable name I have to set?

Stop charging?

Thank you for the excellent integration (2022 Fiat 500e).

I can start charging but there is no way to stop it from HA or from the Android App (unless I have missed something).

In the Android App I can successfully stop charging by editing the 'active' schedule times, but I cannot see a control for that in HA. Since it's in the Android App, could you add the ability to amend the schedule start/stop times and switch them from 'true' to 'false' in the HA integration?

I would like to be able to do this so that I can automate charging from our solar panels. It would also be nice to be able to change the charge level, but that's not available in the Android App so is presumably impossible from HA.

Ian

Mqtt only

Hello,
Thank you for your brilliant work.
Is there a way to use it only with MQTT in standalone mode ?
I'm not using HA and i don't want to run it just for your addon.
Thanks for all.

(external) Mqtt without username and password is no longer working with latest release

All I get is:

[21:50:23] ERROR: Got unexpected response from the API: Service not enabled
Unhandled exception. Microsoft.Extensions.Options.OptionsValidationException: DataAnnotation validation failed for 'AppConfig' members: 'MqttUser' with the error: 'The MqttUser field is required.'.; DataAnnotation validation failed for 'AppConfig' members: 'MqttPw' with the error: 'The MqttPw field is required.'.
   at Microsoft.Extensions.Options.OptionsFactory`1.Create(String name)
   at Microsoft.Extensions.Options.OptionsMonitor`1.<>c__DisplayClass10_0.<Get>b__0()
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.get_Value()
   at Microsoft.Extensions.Options.OptionsCache`1.GetOrAdd(String name, Func`1 createOptions)
   at Microsoft.Extensions.Options.OptionsMonitor`1.Get(String name)
   at Microsoft.Extensions.DependencyInjection.OptionsBuilderExtensions.<>c__DisplayClass0_1`1.<ValidateOnStart>b__1()
   at Microsoft.Extensions.DependencyInjection.ValidationHostedService.StartAsync(CancellationToken cancellationToken)
--- End of stack trace from previous location ---
   at Microsoft.Extensions.DependencyInjection.ValidationHostedService.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Program.<Main>$(String[] args) in /home/runner/work/FiatChamp/FiatChamp/FiatChampAddon/FiatClient/Program.cs:line 39
   at Program.<Main>(String[] args)
/run.sh: line 29:   167 Aborted                 (core dumped) ./FiatChamp

It was working fine in the release before the latest version. Now it seems at least the user name is obligatory which does not work in my case (not using username and password).

Installation w/ Containerized Home Assistant

Hi! I'm still pretty new to the Home Assistant ecosystem. The installation instructions say to install via Add-Ons. I'm running Home Assistant in a container, so the add-on system isn't available. Would it still be possible to install FiatChamp? I'm assuming I could spin it up in a separate adjacent container like I do zwave-js-ui and esphome, yea?

I'd like to give this a go and test it against a Ram truck, if possible.

fiatchamp does not work in a standalone container

HI
Congratulations for the excellent work.
I would like to migrate home assistant from the supervised version (where it works perfectly) to the one that uses containers.
Unfortunately I can't if I can't get Fiatchamp to work
I tried using the example configuration. I generated the token but I get this error:

ERROR: Call failed. Resource temporarily unavailable (supervisor:80): GET http://supervisor/core/api/states

see logs attached

Thanks in advance

portainer.fiatchamp.log

_FiatChamp_logs.txt

Originally posted by @marcobto58 in #22 (comment)

Tiny Issue (decimal places)

Is it possible to drop the amount of decimal places coming in ? 136.7014 is a little overkill :) perhaps just one would be sufficient ?

And once again, thank you for such an awesome integration !!

Sensors etc. not being created

I've tried everything now but although I get the add on running, it does not create any sensors, devices etc.

My log says the following:

s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
===== CONFIG ===== 
{
  "FiatUser": "heregoesmyusername",
  "FiatPw": "********",
  "FiatPin": "****",
  "MqttServer": "core-mosquitto",
  "MqttPort": 1883,
  "MqttUser": "addons",
  "MqttPw": "****************************************************************",
  "RefreshInterval": 15,
  "AutoRefreshLocation": true,
  "AutoRefreshBattery": true,
  "EnableDangerousCommands": false,
  "DevMode": false
}
FETCH DATA... 10/16/2022 10:47:54
SEND COMMAND: DEEPREFRESH
COMMAND: DEEPREFRESH SUCCESSFUL
SEND COMMAND: VF
COMMAND: VF SUCCESSFUL
REFRESH SESSION
REFRESH SESSION
REFRESH SESSION
REFRESH SESSION

I've reinstalled the add-on already, restarted home assistant over and over again -> nothing. My home assistant is the native home assistant image running on a raspberry pi. I'm using version 2022.10.4.

Lock/Unlock and Climate switch

In my opinion it would be more user friendly to convert the climate and lock/unlock entity to buttons instead of switches.
The API reports wrong data/doesn't report at all sometimes.

Example: I tried to use the climate entity - without experimental features though. So disabling it via the switch would be useless anyway. Also once you switched it on it doesn't switch back to off after 15 minutes or once you enter the car.

In addition to it my Fiat also has connectivity issues sometimes (I don't know if this is a general issue with the 500e) so it doesn't execute climate commands sometimes. Maybe we are able to wait for successful execution and send the command again after some waiting period? At least it works within the app (couldn't enable A/C on first try, just wait for error popup and press climate again - works 90% of the time).

Jeep Wrangler 4xe (eu version)

Hi. Great work, but seems like Jeep doesnt work. This is the output i get when i try to use it:

s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
[17:35:26] ERROR: Got unexpected response from the API: Service not enabled
Unhandled exception. System.InvalidOperationException: Failed to convert configuration value at 'MqttPort' to type 'System.Int32'.
---> System.ArgumentException: is not a valid value for Int32. (Parameter 'value')
---> System.IndexOutOfRangeException: Index was outside the bounds of the array.
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
--- End of inner exception stack trace ---
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.ComponentModel.TypeConverter.ConvertFromInvariantString(String text)
at Microsoft.Extensions.Configuration.ConfigurationBinder.TryConvertValue(Type type, String value, String path, Object& result, Exception& error)
--- End of inner exception stack trace ---
at Microsoft.Extensions.Configuration.ConfigurationBinder.BindInstance(Type type, Object instance, IConfiguration config, BinderOptions options)
at Microsoft.Extensions.Configuration.ConfigurationBinder.GetPropertyValue(PropertyInfo property, Object instance, IConfiguration config, BinderOptions options)
at Microsoft.Extensions.Configuration.ConfigurationBinder.BindProperty(PropertyInfo property, Object instance, IConfiguration config, BinderOptions options)
at Microsoft.Extensions.Configuration.ConfigurationBinder.BindNonScalar(IConfiguration configuration, Object instance, BinderOptions options)
at Microsoft.Extensions.Configuration.ConfigurationBinder.BindInstance(Type type, Object instance, IConfiguration config, BinderOptions options)
at Microsoft.Extensions.Configuration.ConfigurationBinder.Get(IConfiguration configuration, Type type, Action1 configureOptions) at Microsoft.Extensions.Configuration.ConfigurationBinder.Get[T](IConfiguration configuration, Action1 configureOptions)
at Microsoft.Extensions.Configuration.ConfigurationBinder.Get[T](IConfiguration configuration)
at Program.

$(String[] args) in /home/runner/work/FiatChamp/FiatChamp/FiatChampAddon/FiatClient/Program.cs:line 25
at Program.(String[] args)
/run.sh: line 26: 172 Aborted (core dumped) ./FiatChamp
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

Update failed

Update to version 2.0.6 failed with error:

Failed to to call /store/addons/d6ed25d9_fiat_champ/update - COPY failed: file not found in build context or excluded by .dockerignore: stat FiatClient/build/amd64/: file does not exist

Post commands failing with 403

Hi. Are the POST commands still working for you? All POST commands are failing for me with 403. PIN is correct though. I turned on dangerous commands in config as well.

e.g. Blink command
[21:05:58 INF] SEND COMMAND HBLF:
[21:05:58 DBG] {
"Expiry": 600000,
"Token": "...."
}
[21:05:59 ERR] Command: HBLF ERROR. Maybe wrong pin?
[21:05:59 DBG] Flurl.Http.FlurlHttpException: Call failed with status code 403 (Forbidden): POST https://channels.sdpr-01.fcagcv.com/v1/accounts/..../vehicles/..../remote
at Flurl.Http.FlurlRequest.HandleExceptionAsync(FlurlCall call, Exception ex, CancellationToken token)
at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, CancellationToken cancellationToken, HttpCompletionOption completionOption)
at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, CancellationToken cancellationToken, HttpCompletionOption completionOption)
at Flurl.Http.ResponseExtensions.ReceiveJson[T](Task`1 response)
at FiatChamp.FiatClient.SendCommand(String vin, String command, String pin, String action) in /home/runner/work/FiatChamp/FiatChamp/FiatChampAddon/FiatClient/FiatClient.cs:line 556
at Program.<>c__DisplayClass0_0.<<

$>g__TrySendCommand|1>d.MoveNext() in /home/runner/work/FiatChamp/FiatChamp/FiatChampAddon/FiatClient/Program.cs:line 264

Thanks

Units

So i cant seem to get miles for the range etc .... its stuck on km - have tried toggling the force km to miles but its still in km. Any ideas would be greatly appreciated as i love this integration !

Kw used

Hi, thanks for the work you've done. Really great. I wanted to know if there is any value related to the power used or total power loaded. Thank you

500e blink

THANK YOU for this integration!!

Do blinking for the neuer 500 (MJ22/500e) work?

My 2 cents for optimizing:

Entiity position should be a device_tracker.
Sensors for units could a attribute in the entity.
Tire information should one entity per tire with all attributes.
Battery could change the icon on status if the sensor type is battery, so the icon belongs to the SOC. And with the information of charging or discharging the icon could even animated: "device_class: battery"
If you change the door switch to a lock you have only one state: "entriegeln" if the door is closed and "verriegeln" if it is open

Thanks a lot!

Error on FIAT APIand MQTT

Hello,
I'm trying to set up the integration using a standalone container. I've launched the container with the following variables:

version: "3.9"
services:
FiatChamp:
image: ghcr.io/wubbl0rz/image-amd64-fiat-champ:latest
environment:
- 'STANDALONE=True'
- 'FiatChamp_FiatUser=xxxxxx'
- 'FiatChamp_FiatPw=xxxxx'
- 'FiatChamp_FiatPin=xxxx'
- 'FiatChamp_SupervisorToken=XXXXXXXXXXXXXXXXXXX'
- 'FiatChamp_StartDelaySeconds=1'
- 'FiatChamp_Region=Europe'
- 'FiatChamp_Brand=Jeep'
- 'FiatChamp_CarUnknownLocation=Unknown'
- 'FiatChamp_ConvertKmToMiles=False'
- 'FiatChamp_MqttUser=mqtt'
- 'FiatChamp_MqttPw=xxxxxx'
- 'FiatChamp_MqttServer=192.168.0.91'
- 'FiatChamp_MqttPort=1883'
- 'TZ=Europe/Rome'
- 'FiatChamp_HomeAssistantUrl=http://192.168.0.91:8123'

After sping up the container I got two problems:

  • WRN] Error connecting to the FIAT API. (but the car is found - It's a JEEP)
  • Mqtt connection failed

'''[14:44:42 INF] Now fetching new data...
[14:44:51 INF] FOUND CAR: ZAXXXXXXXXXXXXXXXXX
[14:45:02 WRN] Error connecting to the FIAT API.
This can happen from time to time. Retrying in 15 minutes.
[14:45:02 INF] Fetching COMPLETED. Next update in 15 minutes.
[14:46:22 INF] Mqtt connection failed: System.OperationCanceledException: The operation was canceled.
at System.Threading.CancellationToken.ThrowOperationCanceledException()
at System.Threading.CancellationToken.ThrowIfCancellationRequested()
at System.Net.Sockets.Socket.g__WaitForConnectWithCancellation|281_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
at MQTTnet.Implementations.CrossPlatformSocket.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
at MQTTnet.Implementations.MqttTcpChannel.ConnectAsync(CancellationToken cancellationToken)
at MQTTnet.Adapter.MqttChannelAdapter.ConnectAsync(CancellationToken cancellationToken)
at MQTTnet.Client.MqttClient.ConnectAsync(MqttClientOptions options, CancellationToken cancellationToken)
at MQTTnet.Client.MqttClient.ConnectAsync(MqttClientOptions options, CancellationToken cancellationToken)
at MQTTnet.Extensions.ManagedClient.ManagedMqttClient.ReconnectIfRequiredAsync(CancellationToken cancellationToken)
[14:46:50 INF] REFRESH SESSION
[14:48:07 INF] Mqtt connection failed: System.OperationCanceledException: The operation was canceled.
at System.Threading.CancellationToken.ThrowOperationCanceledException()
at System.Threading.CancellationToken.ThrowIfCancellationRequested()
at System.Net.Sockets.Socket.g__WaitForConnectWithCancellation|281_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
at MQTTnet.Implementations.CrossPlatformSocket.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
at MQTTnet.Implementations.MqttTcpChannel.ConnectAsync(CancellationToken cancellationToken)
at MQTTnet.Adapter.MqttChannelAdapter.ConnectAsync(CancellationToken cancellationToken)
at MQTTnet.Client.MqttClient.ConnectAsync(MqttClientOptions options, CancellationToken cancellationToken)
at MQTTnet.Client.MqttClient.ConnectAsync(MqttClientOptions options, CancellationToken cancellationToken)
at MQTTnet.Extensions.ManagedClient.ManagedMqttClient.ReconnectIfRequiredAsync(CancellationToken cancellationToken)'''

I tested from inside the container the reachability of HA and MQTT and it's ok. HA is integrated with MQTT with no problem.
Is there anything I'm missing?

Thank you

Build failed

s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
The build failed. Fix the build errors and run again.
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped
/root/.dotnet/sdk/7.0.100-rc.1.22431.12/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(267,5): warning NETSDK1187: Package Cocona 2.0.3 has a resource with the locale 'ja-jp'. This locale has been normalized to the standard format 'ja-JP' to prevent casing issues in the build. Consider notifying the package author about this casing issue. [/FiatClient/FiatChamp.csproj]
/root/.dotnet/sdk/7.0.100-rc.1.22431.12/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(267,5): warning NETSDK1187: Package Cocona 2.0.3 has a resource with the locale 'ko-kr'. This locale has been normalized to the standard format 'ko-KR' to prevent casing issues in the build. Consider notifying the package author about this casing issue. [/FiatClient/FiatChamp.csproj]
/root/.dotnet/sdk/7.0.100-rc.1.22431.12/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(267,5): warning NETSDK1187: Package Cocona.Core 2.0.3 has a resource with the locale 'ja-jp'. This locale has been normalized to the standard format 'ja-JP' to prevent casing issues in the build. Consider notifying the package author about this casing issue. [/FiatClient/FiatChamp.csproj]
/root/.dotnet/sdk/7.0.100-rc.1.22431.12/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(267,5): warning NETSDK1187: Package Cocona.Core 2.0.3 has a resource with the locale 'ko-kr'. This locale has been normalized to the standard format 'ko-KR' to prevent casing issues in the build. Consider notifying the package author about this casing issue. [/FiatClient/FiatChamp.csproj]

No vehicles returned - RAM

Trying to get this up and running with a RAM 1500.

No errors in the debug log, but this does show up

[10:12:14 DBG] {
  "Userid": "XXXXXX",
  "Version": 1690940726109,
  "Vehicles": []
}
[10:12:14 INF] Fetching COMPLETED. Next update in 15 minutes.

I can logon to https://connect.ramtrucks.com/ and see the commands I've issued from the app, however there is nothing on that site that allows me to control my truck, outside of setting up a PIN for alexa/google.

Alfa Romeo Giulietta.

Does not work for Alfa Romeo Giulietta.
image
s6-rc: info: service s6rc-oneshot-runner: starting s6-rc: info: service s6rc-oneshot-runner successfully started s6-rc: info: service fix-attrs: starting s6-rc: info: service fix-attrs successfully started s6-rc: info: service legacy-cont-init: starting s6-rc: info: service legacy-cont-init successfully started s6-rc: info: service legacy-services: starting s6-rc: info: service legacy-services successfully started [18:48:40 INF] { "FiatUser": "to***************", "FiatPw": "************", "FiatPin": "", "MqttServer": "core-mosquitto", "MqttPort": 1883, "MqttUser": "addons", "MqttPw": "****************************************************************", "RefreshInterval": 15, "CarUnknownLocation": "away", "SupervisorToken": "****************************************************************************************************************", "HomeAssistantUrl": "http://supervisor/core", "AutoRefreshLocation": false, "AutoRefreshBattery": false, "EnableDangerousCommands": false, "ConvertKmToMiles": false, "DevMode": false, "UseFakeApi": false, "Debug": false } [18:48:40 INF] Now fetching new data... [18:48:41 INF] Mqtt connection successful [18:48:45 INF] Fetching COMPLETED. Next update in 15 minutes. [18:50:45 INF] REFRESH SESSION [18:52:45 INF] REFRESH SESSION [18:54:45 INF] REFRESH SESSION [18:56:45 INF] REFRESH SESSION [18:58:45 INF] REFRESH SESSION [19:00:45 INF] REFRESH SESSION

RAM Truck

I'm having an issue with this HA plugin. I am not able to login - it says

[13:11:28 INF] Mqtt connection successful [13:11:30 ERR] System.Exception: Authentication failed. 403042 Forbidden Invalid LoginID

I'm assuming this is because of the URLs/sites being different between Fiat/Jeep/RAM? Do you happen to know what the RAM URL is, as I'm sure this is my mopar.com login.

Thanks!

No Devices and No Entities listed in MQTT

I don't have any of my car entries listed in MQTT. I've uninstalled and reinstalled both MQTT and the FiatChamp add-ons. I don't see any error messages in the logs. I've "tested" MQTT which appears to work.

My MQTT log shows:
2023-05-18 12:09:11: Received PINGREQ from FiatChamp
2023-05-18 12:09:11: Sending PINGRESP to FiatChamp
2023-05-18 12:09:26: Received PINGREQ from FiatChamp
2023-05-18 12:09:26: Sending PINGRESP to FiatChamp
2023-05-18 12:09:42: Received PINGREQ from FiatChamp
2023-05-18 12:09:42: Sending PINGRESP to FiatChamp
2023-05-18 12:09:57: Received PINGREQ from FiatChamp
2023-05-18 12:09:57: Sending PINGRESP to FiatChamp

My FiatChamp log shows:
[12:12:00 DBG] {
"id_token": "xxxxxx,
"CallId": "xxxxxx",
"ErrorCode": 0,
"ErrorDetails": null,
"ErrorMessage": null,
"ApiVersion": 2,
"StatusCode": 200,
"StatusReason": "OK",
"Time": "2023-05-18T16:11:58.353+00:00"
}

There's nothing that appears as far as I can tell in the HA log.
Home Assistant 2023.5.3
Supervisor 2023.04.1
Operating System 10.1
Frontend 20230503.3 - latest

Am I missing something?

Entities

In the official application, we can see if the windows (driver and passenger), the doors, the trunk are closed or open. But I don't have any entities that give me this information...

Pressure units kpa -> psi

I note that there is a flag to switch units from km to miles. Is there a way to switch pressure units from kpa to psi?
I am a novice user of homeassistant but an experienced (old!) programmer so any help would be appreciated,
For the record my vehicle is a Jeep.

EDIT

Never mind, I discovered templates so can modify the values myself.

Door lock status

Hey, I just wanted to let you know, that the current lock status of doors and trunks can be retrieved over the API with a get request and the following uri: https://channels.sdpr-01.fcagcv.com/v1/accounts/{UserID}/vehicles/{VIN}/remote/status

The response looks something like this:
{'doors': {'rightRear': {'status': 'LOCKED'}, 'driver': {'status': 'LOCKED'}, 'passenger': {'status': 'LOCKED'}, 'leftRear': {'status': 'LOCKED'}}, 'evRunning': {'status': 'OFF'}, 'trunk': {'status': 'LOCKED'}, 'timestamp': 1684063864842}

The status is not only being updated when using the command functions in the app but also when using the physical remote. My skills are not proficient enough to integrate a function for this, but maybe if there is anyone interested in retrieving the lock state this might help a little.

Timestamps Fiat 500e which format ?

Hi,

I get timestamps from my Fiat 500e such as car_evInfo_timestamp = 1678431056968.
Could anyone advise me what format that is and how I could show it in HA in a way, a human could understand ?

Thanks

Wolfgang

Commands for Jeep

Hello again!

I can't stay away. I guess I'd like to working on Jeep commands. It is clear that many/most for Fiat don't work for Jeep. I've been looking at a bit of output and debug, and am starting to understand a few things. It looks like you have all of the interesting Fiat commands documented in FiatCommand.cs. These correspond to the surfaced HA controls.

DEEPREFRESH = DeepRefresh
VF = Location update
HBLF = Battery refresh ?
CNOW = ChargeNow
ROPRECOND = HVAC On?
ROPRECOND_OFF = HVAC Off?
ROTRUNKUNLOCK = Trunk unlock
ROTRUNKLOCK = Trunk lock
RDU = Door unlock
RDL = Door lock

I don't see any of your Fiat "services" output anywhere, but some of the commands you list here seem to correspond to the Jeep services listed in the vehicle output.

        {
          "vehicleCapable": true,
          "service": "VF",
          "serviceEnabled": true
        },
...
        {
          "vehicleCapable": true,
          "service": "RDU",
          "serviceEnabled": true
        },
        {
          "vehicleCapable": true,
          "service": "RDL",
          "serviceEnabled": true
        },
...
        {
          "vehicleCapable": true,
          "service": "HBLF",
          "serviceEnabled": true
        },
...
        {
          "vehicleCapable": true,
          "service": "CNOW",
          "serviceEnabled": true
        },

This would indicate that all of theses are available commands for the Jeep. HVAC and Trunk controls are not listed anywhere in the vehicle services.

Is it possible to suppress surfacing those controls in HA if the service does not exist for the vehicle?

For the services that are listed as "true" for Jeep, I'm getting some errors. For RDU (remote door unlock) for example:

[15:47:23 INF] SEND COMMAND RDU: 
[15:47:26 ERR] Command: RDU ERROR. Maybe wrong pin?
[15:47:26 DBG] Flurl.Http.FlurlHttpException: Call failed with status code 403 (Forbidden): POST https://mfa.fcl-01.fcagcv.com/v1/accounts/<removed>/ignite/pin/authenticate
   at Flurl.Http.FlurlRequest.HandleExceptionAsync(FlurlCall call, Exception ex, CancellationToken token)
   at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, CancellationToken cancellationToken, HttpCompletionOption completionOption)
   at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, CancellationToken cancellationToken, HttpCompletionOption completionOption)
   at Flurl.Http.ResponseExtensions.ReceiveJson[T](Task`1 response)
   at FiatChamp.FiatClient.SendCommand(String vin, String command, String pin, String action) in /home/runner/work/FiatChamp/FiatChamp/FiatChampAddon/FiatClient/FiatClient.cs:line 529
   at Program.<>c__DisplayClass0_0.<<<Main>$>g__TrySendCommand|1>d.MoveNext() in /home/runner/work/FiatChamp/FiatChamp/FiatChampAddon/FiatClient/Program.cs:line 259

Same error for RDL (remote door lock).

Same error for DEEPREFRESH. It appears that RefreshBatteryStatus button simply pushes DeepRefresh under the hood. Seems superfluous to have two buttons surfaced in HA that are called different things and do the same things. I know your docs say DeepRefresh is the same as RefreshBatteryStatus, but actually it seems to be the reverse, and you might as well remove one if they do the same thing. I'm kind of curious what happens if you send HBLF for battery refresh instead of DEEPREFRESH.

Error is a little different for VF (location update):

[15:55:20 INF] SEND COMMAND VF: 
[15:55:21 ERR] Command: VF ERROR. Maybe wrong pin?
[15:55:21 DBG] Flurl.Http.FlurlHttpException: Call failed with status code 403 (Forbidden): POST https://mfa.fcl-01.fcagcv.com/v1/accounts/<removed>/ignite/pin/authenticate
   at Flurl.Http.FlurlRequest.HandleExceptionAsync(FlurlCall call, Exception ex, CancellationToken token)
   at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, CancellationToken cancellationToken, HttpCompletionOption completionOption)
   at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, CancellationToken cancellationToken, HttpCompletionOption completionOption)
   at Flurl.Http.ResponseExtensions.ReceiveJson[T](Task`1 response)
   at FiatChamp.FiatClient.SendCommand(String vin, String command, String pin, String action) in /home/runner/work/FiatChamp/FiatChamp/FiatChampAddon/FiatClient/FiatClient.cs:line 552
   at Program.<>c__DisplayClass0_0.<<<Main>$>g__TrySendCommand|1>d.MoveNext() in /home/runner/work/FiatChamp/FiatChamp/FiatChampAddon/FiatClient/Program.cs:line 271

I do have the PIN set, and dangerous commands enabled, so like you said, they may be a missing or incorrect API key, since it is producing 403.

I can tell you that the services that are available in the Jeep iPhone app are:

Unlock Doors = RDU
Lock Doors = RDL
Start Engine = REON (remote engine on)?
Cancel Engine = REOFF (remote engine off)?
Honk Horn = VHS (vehicle horn sound maybe)?

I don't have access to the Android app, so I probably won't be able to capture the real commands for these. I gotta say that I'm intrigued by the 63 services that are enumerated as being true for this vehicle. Maybe some are just standard informational stuff that is already being returned. Definitely needs some documentation. Hard keeping Pandora's box closed on these...

invalid loginID or password - :(

Hello friends)!

I would like to congratulate the team or the lone wolf responsible for the project! It will be amazing to be able to count on my Fiat information directly on my HA interface!

Unfortunately I haven't been able to take advantage of the project yet due to a silly authentication error.

I'm forwarding the log to possible support or even to report a possible bug.


s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
[20:50:48 INF] Delay start for seconds: 1
[20:50:49 INF] {
"FiatUser": "mm******************",
"FiatPw": "",
"FiatPin": "",
"MqttServer": "core-mosquitto",
"MqttPort": 1883,
"MqttUser": "addons",
"MqttPw": "
",
"RefreshInterval": 15,
"CarUnknownLocation": "away",
"SupervisorToken": "
********************************************************",
"Brand": "Fiat",
"Region": "America",
"HomeAssistantUrl": "http://supervisor/core",
"StartDelaySeconds": 1,
"AutoRefreshLocation": true,
"AutoRefreshBattery": true,
"EnableDangerousCommands": true,
"ConvertKmToMiles": false,
"DevMode": false,
"UseFakeApi": false,
"Debug": true
}
[20:50:49 DBG] {
"FiatUser": "HIDE",
"FiatPw": "HIDE",
"FiatPin": "HIDE",
"MqttServer": "core-mosquitto",
"MqttPort": 1883,
"MqttUser": "addons",
"MqttPw": "HIDE",
"RefreshInterval": 15,
"CarUnknownLocation": "away",
"SupervisorToken": "HIDE",
"Brand": 0,
"Region": 1,
"HomeAssistantUrl": "http://supervisor/core",
"StartDelaySeconds": 1,
"AutoRefreshLocation": true,
"AutoRefreshBattery": true,
"EnableDangerousCommands": true,
"ConvertKmToMiles": false,
"DevMode": false,
"UseFakeApi": false,
"Debug": true
}
[20:50:49 INF] Now fetching new data...
[20:50:50 INF] Mqtt connection successful
[20:50:51 DBG] {
"CallId": "HIDE",
"ErrorCode": 0,
"ErrorDetails": null,
"ErrorMessage": null,
"ApiVersion": 2,
"StatusCode": 200,
"StatusReason": "OK",
"Time": "2022-12-09T23:50:50.954+00:00"
}
[20:50:51 DBG] {
"UID": null,
"SessionInfo": null,
"CallId": "HIDE",
"ErrorCode": 403042,
"ErrorDetails": "invalid loginID or password",
"ErrorMessage": "Invalid LoginID",
"ApiVersion": 2,
"StatusCode": 403,
"StatusReason": "Forbidden",
"Time": "2022-12-09T23:50:51.858+00:00"
}
[20:50:51 ERR] System.Exception: Authentication failed. 403042 Forbidden Invalid LoginID
at FiatResponse.ThrowOnError(String message) in /home/runner/work/FiatChamp/FiatChamp/FiatChampAddon/FiatClient/FiatResponse.cs:line 31
at FiatChamp.FiatClient.Login() in /home/runner/work/FiatChamp/FiatChamp/FiatChampAddon/FiatClient/FiatClient.cs:line 436
at FiatChamp.FiatClient.LoginAndKeepSessionAlive() in /home/runner/work/FiatChamp/FiatChamp/FiatChampAddon/FiatClient/FiatClient.cs:line 384
at Program.<>c__DisplayClass0_0.<<

$>b__0>d.MoveNext() in /home/runner/work/FiatChamp/FiatChamp/FiatChampAddon/FiatClient/Program.cs:line 72
[20:50:52 INF] Fetching COMPLETED. Next update in 15 minutes.


It may have to do with my authentication that used to be a social login through Gmail and I simply reset the password and registered a new one via email.

Authentication via myuconnect.fiat.com works perfectly!

Thanks for your help and congratulations again on the amazing project!

Multiple Cars

hi,
I successfully installed the addon and configured my Jeep. Now I would like to add a second Jeep but I don't know how to do it. Can you give me any advice?

h

FiatChamp Refresh Interval always 15 minutes

Whatever Refresh Interval I set in the FiatChamp AddOn Configuration, the actual refresh interval is always 15minutes and the log always includes:
"Fetching COMPLETED. Next update in 15 minutes."
It is important not to send a Refresh Command to a Fiat 500e frequently as each refresh takes significant energy from the car's 12V battery.
Thus my practice is to ensure that Force Refresh Battery Status is false in FiatChamp configuration and to rely on an HA Automation to issue a Refresh command to the car when needed.
The FiatChamp Refresh Interval being stuck at 15 minutes means that there can be a significant delay of car data being updated in HA. For me, 15minutes delay is common and in extreme situations can be near 30minutes.
Ideally, I would wish set the FiatChamp Refresh Interval to 1 minute so that data is rarely more than a minute stale

Resource temporarily unavailable while fetching Data

I got this Output while Starting the Addon:

s6-rc: info: service legacy-services successfully started
FETCH DATA... 09/14/2022 19:17:00
Flurl.Http.FlurlHttpException: Call failed. Resource temporarily unavailable (loginmyuconnect.fiat.com:443): GET https://loginmyuconnect.fiat.com/accounts.webSdkBootstrap?apiKey=XXXXXX
 ---> System.Net.Http.HttpRequestException: Resource temporarily unavailable (loginmyuconnect.fiat.com:443)
 ---> System.Net.Sockets.SocketException (11): Resource temporarily unavailable
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
   at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|281_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(QueueItem queueItem)
   at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
   at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, CancellationToken cancellationToken, HttpCompletionOption completionOption)
   --- End of inner exception stack trace ---
   at Flurl.Http.FlurlRequest.HandleExceptionAsync(FlurlCall call, Exception ex, CancellationToken token)
   at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, CancellationToken cancellationToken, HttpCompletionOption completionOption)
   at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, CancellationToken cancellationToken, HttpCompletionOption completionOption)
   at Flurl.Http.ResponseExtensions.ReceiveJson[T](Task`1 response)
   at FiatClient.Login() in /FiatClient/FiatClient.cs:line 33
   at Program.<>c.<<<Main>$>b__0_0>d.MoveNext() in /FiatClient/Program.cs:line 54

Maybe you should expect this to happen. I'm not sure why this is happening, but maybe someone will experience the same issue. The following data fetch seems to work. Maybe it is only the first one after starting the Addon

SupervisorToken in standalone mode

Hi and thanks for the awesome work!

I am having trouble with my standalone install, looks like my car gets found but if I don't specify the URL of my hass server, it defaults to:

http://supervisor/core/api/states

If I specify it adding it to the env variables, I get a 401 as api/states is protected.

Is it possible to generate a token to grant access to HASS standalone?

Cheers,

Thomas

Stop charging

Thank you so much for writing this addin.
Is there an option to stop charging (eg when the charging level has reached 80%)
And perhaps you xould post the automation you mentioned after the charging has started?

help Needed

I am rather new with home assistant

I tried to get this to work but when I start i get this error on the Master release

Do i need to install something before ? Running HassOS on RPI4

[10:20:29] ERROR: Got unexpected response from the API: Service not enabled
Unhandled exception. System.InvalidOperationException: Failed to convert configuration value at 'MqttPort' to type 'System.Int32'.
---> System.ArgumentException: is not a valid value for Int32. (Parameter 'value')
---> System.IndexOutOfRangeException: Index was outside the bounds of the array.
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
--- End of inner exception stack trace ---
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.ComponentModel.TypeConverter.ConvertFromInvariantString(String text)
at Microsoft.Extensions.Configuration.ConfigurationBinder.TryConvertValue(Type type, String value, String path, Object& result, Exception& error)
--- End of inner exception stack trace ---
at Microsoft.Extensions.Configuration.ConfigurationBinder.BindInstance(Type type, Object instance, IConfiguration config, BinderOptions options)
at Microsoft.Extensions.Configuration.ConfigurationBinder.GetPropertyValue(PropertyInfo property, Object instance, IConfiguration config, BinderOptions options)
at Microsoft.Extensions.Configuration.ConfigurationBinder.BindProperty(PropertyInfo property, Object instance, IConfiguration config, BinderOptions options)
at Microsoft.Extensions.Configuration.ConfigurationBinder.BindNonScalar(IConfiguration configuration, Object instance, BinderOptions options)
at Microsoft.Extensions.Configuration.ConfigurationBinder.BindInstance(Type type, Object instance, IConfiguration config, BinderOptions options)
at Microsoft.Extensions.Configuration.ConfigurationBinder.Get(IConfiguration configuration, Type type, Action1 configureOptions) at Microsoft.Extensions.Configuration.ConfigurationBinder.Get[T](IConfiguration configuration, Action1 configureOptions)
at Microsoft.Extensions.Configuration.ConfigurationBinder.Get[T](IConfiguration configuration)
at Program.

$(String[] args) in /home/runner/work/FiatChamp/FiatChamp/FiatChampAddon/FiatClient/Program.cs:line 29
at Program.(String[] args)
/run.sh: line 33: 192 Aborted (core dumped) ./FiatChamp

Thx in advance

mqtt update failed and device not present

hi, thanks for the project. I have a problem. I entered all the data and everything seems to be correct but I can't find my car, a jeep, in the mqtt devices. I installed it 2 days ago and yesterday I took the car and the uconnect app is updated to yesterday. Can you tell me where am I wrong? I have Official Home Assistant MQTT Addon. A thousand thanks

image

image

image

No success on new install

Hello,

This looks really cool, but I'm not able to get a successful response. Not sure if there is a way to tell if the problem is on my end or somewhere else. Logging in to Uconnect works fine with my credentials.

[09:38:49 INF] Now fetching new data...
[09:38:49 INF] Mqtt connection successful
[09:38:50 DBG] {
  "CallId": "<removed>",
  "ErrorCode": 0,
  "ErrorDetails": null,
  "ErrorMessage": null,
  "ApiVersion": 2,
  "StatusCode": 200,
  "StatusReason": "OK",
  "Time": "2022-12-02T15:38:50.432+00:00"
}
[09:38:50 DBG] {
  "UID": "<removed>",
  "SessionInfo": {
    "login_token": "<removed>"
  },
  "CallId": "<removed>",
  "ErrorCode": 0,
  "ErrorDetails": null,
  "ErrorMessage": null,
  "ApiVersion": 2,
  "StatusCode": 200,
  "StatusReason": "OK",
  "Time": "2022-12-02T15:38:50.88+00:00"
}
[09:38:51 DBG] {
  "id_token": "<removed>,
  "CallId": "<removed>",
  "ErrorCode": 0,
  "ErrorDetails": null,
  "ErrorMessage": null,
  "ApiVersion": 2,
  "StatusCode": 200,
  "StatusReason": "OK",
  "Time": "2022-12-02T15:38:51.003+00:00"
}
[09:38:51 DBG] {
  "IdentityId": "<removed>",
  "Token": "<removed>"
}
[09:38:52 WRN] Error connecting to the FIAT API. 
This can happen from time to time. Retrying in 15 minutes.
[09:38:52 DBG] Response could not be deserialized to JSON: GET https://channels.sdpr-02.fcagcv.com/v4/accounts/<removed>/vehicles?stage=ALL
[09:38:52 INF] Fetching COMPLETED. Next update in 15 minutes.

Login auth error

[21:09:01 ERR] System.Exception: Authentication failed. 403042 Forbidden Invalid LoginID

I have a dodge, I know this is considered experimental but I'd like to put in development time to get this working.

Is an email address for the account a valid LoginID ?? Or is there another parameter I should be using?

Considerable Success but Some Issues with FiatChamp

Great work with FiatChamp, wubbl0rz!

I've been struggling to control the charging of my La Prima for over a year.
My solar system includes a GivEnergy hybrid inverter and 8.2kW domestic battery and a Zappi2 charger.
I was unable to control the car's charging as I would wish until I realised last week that FiatChamp was available.
I’m now using FiatChamp in conjunction with myenergi and GivEnergy integrations to great effect.
I charge the car overnight up to a manually entered SoC threshold.
In the daytime, I initiate charging if the domestic battery's SoC exceeds a high threshold and to cease charging if it drops below a second lower threshold.

There do seem to be some anomalies when using FiatChamp with my April 2021 La Prima, which I believe has all software updates up to about 6 months ago.

The drain on the car’s 12V when BatteryRefresh is set true is a concern. To offset this effect, I tried setting the refresh interval to a high number, however FiatChamp seems to effect refreshes every 15minutes whatever number is set in its configuration.

To reduce the 12V battery drain, I have chosen to set Force Refresh Battery Status false and have my HA automations request a battery refresh just at times when the car’s SoC is needed by them.

Today, just after I’d gone for a short drive throughout which FiatChamp was reporting valid data, FiatChamp has started logging β€˜Wrong Pin?’ following each BatteryRefresh attempt. The Fiat iPhone app is still working fine with my normal pin. I’ve tried everything on HA including a re-install of FiatChamp to no avail. The Fiat System must have got confused. Hopefully, it will sort itself out.

I’m finding that the car’s battery charging level is reported as Level_2 whatever is selected in the car. I’d really like FiatChamp to be able to manage the car’s charging level. Perhaps the Fiat API doesn’t permit this.

I will be getting a new Alfa Romeo Giulia soon and I’d like FiatChamp to collect both cars’ data without having to restart FiatChamp each time after changing β€˜Brand’ from Fiat to Alfa Romeo and vice versa.

Since HA 2023.5.x ValueError

Logger: homeassistant.components.mqtt.models
Source: components/sensor/__init__.py:583 
Integration: MQTT (documentation, issues) 
First occurred: 18:44:21 (91 occurrences) 
Last logged: 20:16:38

Exception raised when updating state of sensor.car_vehicleinfo_tripsinfo_trips_array_1_totalelectricdistance_value, topic: 'homeassistant/sensor/ZFAEFAC41NX0_car_vehicleInfo_tripsInfo_trips_array_1_totalElectricDistance_value/state' with payload: b'null'
Exception raised when updating state of sensor.car_vehicleinfo_tripsinfo_trips_array_1_totaldistance_value, topic: 'homeassistant/sensor/ZFAEFAC41NX0_car_vehicleInfo_tripsInfo_trips_array_1_totalDistance_value/state' with payload: b'null'
Exception raised when updating state of sensor.car_vehicleinfo_tripsinfo_trips_array_1_energyused_value, topic: 'homeassistant/sensor/ZFAEFAC41NX050548_car_vehicleInfo_tripsInfo_trips_array_1_energyUsed_value/state' with payload: b'null'
Exception raised when updating state of sensor.car_vehicleinfo_tripsinfo_trips_array_1_averageenergyused_value, topic: 'homeassistant/sensor/ZFAEFAC41NX0car_vehicleInfo_tripsInfo_trips_array_1_averageEnergyUsed_value/state' with payload: b'null'
Exception raised when updating state of sensor.car_vehicleinfo_tripsinfo_trips_array_1_totalhybriddistance_value, topic: 'homeassistant/sensor/ZFAEFAC41NX0car_vehicleInfo_tripsInfo_trips_array_1_totalHybridDistance_value/state' with payload: b'null'
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 579, in state
    numerical_value = int(value)
ValueError: invalid literal for int() with base 10: 'null'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/mqtt/models.py", line 270, in process_write_state_requests
    entity.async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 585, in async_write_ha_state
    self._async_write_ha_state()
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 649, in _async_write_ha_state
    state = self._stringify_state(available)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 591, in _stringify_state
    if (state := self.state) is None:
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 583, in state
    raise ValueError(
ValueError: Sensor sensor.car_vehicleinfo_tyrepressure_array_0_pressure_value has device class None, state class None unit kPa and suggested precision None thus indicating it has a numeric value; however, it has the non-numeric value: null (<class 'str'>)

Device class should be pressure

same or similar problem here:

robinostlund/homeassistant-volkswagencarnet#474

Car Location not Updating

I don't know if it's a user error or working as designed

but it seems that the map of my fiat is not updating on the map .

In the addon I made update location 15 minutes but it always marks the same spot.

Do I need to create a special config

I also push the button update location , but still nothing

2020 Jeep Gladiator not authenticating

Just throwing this here as the integration says Jeeps should be supported.

I've verified my credentials, but still get:
System.Exception: Authentication failed. 403042 Forbidden Invalid LoginID

Error connecting

Since some days I'm getting a connection error. I haven't changed anything in configuration or password. Is something changed or it's on my end?

[15:38:56 WRN] Error connecting to https://authz.sdpr-01.fcagcv.com/v2/cognito/identity/token. Result: Forbidden. Retrying in 00:00:01 [15:38:57 WRN] Error connecting to https://authz.sdpr-01.fcagcv.com/v2/cognito/identity/token. Result: Forbidden. Retrying in 00:00:02 [15:39:00 WRN] Error connecting to https://authz.sdpr-01.fcagcv.com/v2/cognito/identity/token. Result: Forbidden. Ret

Willingness to Add Chrysler Vehicles

Hi,
Love this add-on - any openness to adding Chrysler vehicles to the mix - would love to be able to monitor my 22 Pacifica - but the core login is directly through MOPAR (https://www.mopar.com/en-us/sign-in.html) or via the uconnect app. Not sure if this a deal breaker - but would be willing to act as a tester, just a little lost with the best way to explore and get access to the API.

Option to prefix entity names with car name

Hi @wubbl0rz,

Thank you very much for this addon, the times using the iobroker integration will end soon.πŸ˜†

The possibility to prefix entity names with e.g. the car name, will help when you have multiple cars or even if you have only one car it makes the entities easier to find in home assistant, especially those with more generic names like button.blink etc.
Also this option will regroup the entities under the set prefix/car name.

Here an example:
button.blink (without the option set) => button.myhappycar_blink (with the option set)

I will provide a pull request in the next days with a code suggestion if this change is appreciated.

Best regards,
CyberDNS

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.