Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

get_vehicleinfo return html error page that prompts me to enter a PIN #673

Closed
kagehisa opened this issue Nov 17, 2023 · 2 comments
Closed

Comments

@kagehisa
Copy link

kagehisa commented Nov 17, 2023

Describe the bug
I recently updated to the latest PSA Car Controller version provided by pip. I redid the user configuration and the otp configuration. So far everything wored fine. I could get the values via get request and the REST integration in my Home Assistant worked fine with the provided values.
After a a few hours Home Assistant confronted me with the issue that all the values provided by the PSA Car Controller are not numerical. So I tried a request with curl http://localhost:5000/get_vehicleinfo/<myVIN> and it provided me with the following output (long code snippet):

<!doctype html>
<html lang=en>
  <head>
    <title>ValueError: &#39;x&#39; must be finite, check for nan or inf values
 // Werkzeug Debugger</title>
    <link rel="stylesheet" href="?__debugger__=yes&amp;cmd=resource&amp;f=style.css">
    <link rel="shortcut icon"
        href="?__debugger__=yes&amp;cmd=resource&amp;f=console.png">
    <script src="?__debugger__=yes&amp;cmd=resource&amp;f=debugger.js"></script>
    <script>
      var CONSOLE_MODE = false,
          EVALEX = true,
          EVALEX_TRUSTED = true,
          SECRET = "ADuh5MOqun6oDzLpZtOZ";
    </script>
  </head>
  <body style="background-color: #fff">
    <div class="debugger">
<h1>ValueError</h1>
<div class="detail">
  <p class="errormsg">ValueError: &#39;x&#39; must be finite, check for nan or inf values
</p>
</div>
<h2 class="traceback">Traceback <em>(most recent call last)</em></h2>
<div class="traceback">
  <h3></h3>
  <ul><li><div class="frame" id="frame-547321302592">
  <h4>File <cite class="filename">"/usr/local/lib/python3.9/dist-packages/flask/app.py"</cite>,
      line <em class="line">1484</em>,
      in <code class="function">full_dispatch_request</code></h4>
  <div class="source library"><pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">        </span>try:</pre>
<pre class="line before"><span class="ws">            </span>request_started.send(self, _async_wrapper=self.ensure_sync)</pre>
<pre class="line before"><span class="ws">            </span>rv = self.preprocess_request()</pre>
<pre class="line before"><span class="ws">            </span>if rv is None:</pre>
<pre class="line current"><span class="ws">                </span>rv = self.dispatch_request()</pre>
<pre class="line after"><span class="ws">        </span>except Exception as e:</pre>
<pre class="line after"><span class="ws">            </span>rv = self.handle_user_exception(e)</pre>
<pre class="line after"><span class="ws">        </span>return self.finalize_request(rv)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def finalize_request(</pre></div>
</div>

<li><div class="frame" id="frame-547321302480">
  <h4>File <cite class="filename">"/usr/local/lib/python3.9/dist-packages/flask/app.py"</cite>,
      line <em class="line">1469</em>,
      in <code class="function">dispatch_request</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">            </span>and req.method == &#34;OPTIONS&#34;</pre>
<pre class="line before"><span class="ws">        </span>):</pre>
<pre class="line before"><span class="ws">            </span>return self.make_default_options_response()</pre>
<pre class="line before"><span class="ws">        </span># otherwise dispatch to the handler for that endpoint</pre>
<pre class="line before"><span class="ws">        </span>view_args: dict[str, t.Any] = req.view_args  # type: ignore[assignment]</pre>
<pre class="line current"><span class="ws">        </span>return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws">    </span>def full_dispatch_request(self) -&gt; Response:</pre>
<pre class="line after"><span class="ws">        </span>&#34;&#34;&#34;Dispatches the request and on top of that performs request</pre>
<pre class="line after"><span class="ws">        </span>pre and postprocessing as well as HTTP exception catching and</pre>
<pre class="line after"><span class="ws">        </span>error handling.</pre></div>
</div>

<li><div class="frame" id="frame-547321302368">
  <h4>File <cite class="filename">"/usr/local/lib/python3.9/dist-packages/psa_car_controller/web/view/views.py"</cite>,
      line <em class="line">180</em>,
      in <code class="function">get_vehicle_info</code></h4>
  <div class="source library"><pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws"></span>@app.route(&#39;/get_vehicleinfo/&lt;string:vin&gt;&#39;)</pre>
<pre class="line before"><span class="ws"></span>def get_vehicle_info(vin):</pre>
<pre class="line before"><span class="ws">    </span>from_cache = int(request.args.get(&#39;from_cache&#39;, 0)) == 1</pre>
<pre class="line before"><span class="ws">    </span>response = app.response_class(</pre>
<pre class="line current"><span class="ws">        </span>response=json.dumps(APP.myp.get_vehicle_info(vin, from_cache).to_dict(), default=str),</pre>
<pre class="line after"><span class="ws">        </span>status=200,</pre>
<pre class="line after"><span class="ws">        </span>mimetype=&#39;application/json&#39;</pre>
<pre class="line after"><span class="ws">    </span>)</pre>
<pre class="line after"><span class="ws">    </span>return response</pre>
<pre class="line after"><span class="ws"></span> </pre></div>
</div>

<li><div class="frame" id="frame-547321302704">
  <h4>File <cite class="filename">"/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/psa_client.py"</cite>,
      line <em class="line">109</em>,
      in <code class="function">get_vehicle_info</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">                </span>try:</pre>
<pre class="line before"><span class="ws">                    </span>res = self.api().get_vehicle_status(car.vehicle_id, extension=[&#34;odometer&#34;])</pre>
<pre class="line before"><span class="ws">                    </span>if res is not None:</pre>
<pre class="line before"><span class="ws">                        </span>car.status = res</pre>
<pre class="line before"><span class="ws">                        </span>if self._record_enabled:</pre>
<pre class="line current"><span class="ws">                            </span>self.record_info(car)</pre>
<pre class="line after"><span class="ws">                        </span>return res</pre>
<pre class="line after"><span class="ws">                </span>except (ApiException, InvalidHeader) as ex:</pre>
<pre class="line after"><span class="ws">                    </span>logger.error(&#34;get_vehicle_info: ApiException: %s&#34;, ex, exc_info_debug=True)</pre>
<pre class="line after"><span class="ws">            </span>car.status = res</pre>
<pre class="line after"><span class="ws">        </span>return res</pre></div>
</div>

<li><div class="frame" id="frame-547321302816">
  <h4>File <cite class="filename">"/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/psa_client.py"</cite>,
      line <em class="line">205</em>,
      in <code class="function">record_info</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">            </span>try:</pre>
<pre class="line before"><span class="ws">                </span>charging_status = electric_energy_status.charging.status</pre>
<pre class="line before"><span class="ws">                </span>charging_mode = electric_energy_status.charging.charging_mode</pre>
<pre class="line before"><span class="ws">                </span>charging_rate = electric_energy_status.charging.charging_rate</pre>
<pre class="line before"><span class="ws">                </span>autonomy = electric_energy_status.autonomy</pre>
<pre class="line current"><span class="ws">                </span>Charging.record_charging(car, charging_status, charge_date, level, latitude, longitude,</pre>
<pre class="line after"><span class="ws">                                         </span>self.country_code,</pre>
<pre class="line after"><span class="ws">                                         </span>charging_mode, charging_rate, autonomy, mileage)</pre>
<pre class="line after"><span class="ws">                </span>logger.debug(&#34;charging_status:%s &#34;, charging_status)</pre>
<pre class="line after"><span class="ws">            </span>except AttributeError as ex:</pre>
<pre class="line after"><span class="ws">                </span>logger.error(&#34;charging status not available from api&#34;)</pre></div>
</div>

<li><div class="frame" id="frame-547321302928">
  <h4>File <cite class="filename">"/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/charging.py"</cite>,
      line <em class="line">90</em>,
      in <code class="function">record_charging</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">                </span>charge_just_finished = last_charge.stop_at is None</pre>
<pre class="line before"><span class="ws">            </span>except (TypeError, AttributeError):</pre>
<pre class="line before"><span class="ws">                </span>logger.debug(&#34;battery table is probably empty :&#34;, exc_info=True)</pre>
<pre class="line before"><span class="ws">                </span>charge_just_finished = False</pre>
<pre class="line before"><span class="ws">            </span>if charge_just_finished:</pre>
<pre class="line current"><span class="ws">                </span>co2_per_kw = Ecomix.get_co2_per_kw(last_charge.start_at, charge_date, latitude, longitude, country_code)</pre>
<pre class="line after"><span class="ws">                </span>consumption_kw = (level - last_charge.start_level) / 100 * car.battery_power</pre>
<pre class="line after"><span class="ws">                </span>last_charge.end_level = level</pre>
<pre class="line after"><span class="ws">                </span>last_charge.co2 = co2_per_kw</pre>
<pre class="line after"><span class="ws">                </span>last_charge.kw = consumption_kw</pre>
<pre class="line after"><span class="ws">                </span>last_charge.stop_at = charge_date</pre></div>
</div>

<li><div class="frame" id="frame-547321311296">
  <h4>File <cite class="filename">"/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/ecomix.py"</cite>,
      line <em class="line">121</em>,
      in <code class="function">get_co2_per_kw</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">            </span>return country_code</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">    </span>@staticmethod</pre>
<pre class="line before"><span class="ws">    </span>def get_co2_per_kw(start: datetime, end: datetime, latitude, longitude, country_code_default):</pre>
<pre class="line before"><span class="ws">        </span>co2_per_kw = None</pre>
<pre class="line current"><span class="ws">        </span>country_code = Ecomix.get_country(latitude, longitude, country_code_default)</pre>
<pre class="line after"><span class="ws">        </span>if country_code is None:</pre>
<pre class="line after"><span class="ws">            </span>return None</pre>
<pre class="line after"><span class="ws">        </span>if Ecomix.co2_signal_key is not None:</pre>
<pre class="line after"><span class="ws">            </span>co2_per_kw = Ecomix.get_co2_from_signal_cache(start, end, country_code)</pre>
<pre class="line after"><span class="ws">        </span>elif country_code == &#39;FR&#39;:</pre></div>
</div>

<li><div class="frame" id="frame-547321311408">
  <h4>File <cite class="filename">"/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/ecomix.py"</cite>,
      line <em class="line">108</em>,
      in <code class="function">get_country</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">        </span>return mean(co2_per_kw)</pre>
<pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">    </span>@staticmethod</pre>
<pre class="line before"><span class="ws">    </span>def get_country(latitude, longitude, country_code_default):</pre>
<pre class="line before"><span class="ws">        </span>try:</pre>
<pre class="line current"><span class="ws">            </span>location = reverse_geocode.search([(latitude, longitude)])[0]</pre>
<pre class="line after"><span class="ws">            </span>country_code = location[&#34;country_code&#34;]</pre>
<pre class="line after"><span class="ws">            </span>return country_code</pre>
<pre class="line after"><span class="ws">        </span>except (UnicodeDecodeError, IndexError):</pre>
<pre class="line after"><span class="ws">            </span>logger.error(&#34;Can&#39;t find country for %s %s&#34;, latitude, longitude)</pre>
<pre class="line after"><span class="ws">            </span># return None</pre></div>
</div>

<li><div class="frame" id="frame-547321311632">
  <h4>File <cite class="filename">"/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py"</cite>,
      line <em class="line">122</em>,
      in <code class="function">search</code></h4>
  <div class="source library"><pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws"></span>def search(coordinates):</pre>
<pre class="line before"><span class="ws">    </span>&#34;&#34;&#34;Search for closest known locations to these coordinates</pre>
<pre class="line before"><span class="ws">    </span>&#34;&#34;&#34;</pre>
<pre class="line before"><span class="ws">    </span>gd = GeocodeData()</pre>
<pre class="line current"><span class="ws">    </span>return gd.query(coordinates)</pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"></span> </pre>
<pre class="line after"><span class="ws"></span>if __name__ == &#39;__main__&#39;:</pre>
<pre class="line after"><span class="ws">    </span># test some coordinate lookups</pre>
<pre class="line after"><span class="ws">    </span>city1 = -37.81, 144.96</pre></div>
</div>

<li><div class="frame" id="frame-547321311744">
  <h4>File <cite class="filename">"/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py"</cite>,
      line <em class="line">54</em>,
      in <code class="function">query</code></h4>
  <div class="source library"><pre class="line before"><span class="ws">        </span>&#34;&#34;&#34;</pre>
<pre class="line before"><span class="ws">        </span>try:</pre>
<pre class="line before"><span class="ws">            </span>distances, indices = self.tree.query(coordinates, k=1)</pre>
<pre class="line before"><span class="ws">        </span>except ValueError as e:</pre>
<pre class="line before"><span class="ws">            </span>logging.info(&#39;Unable to parse coordinates: {}&#39;.format(coordinates))</pre>
<pre class="line current"><span class="ws">            </span>raise e</pre>
<pre class="line after"><span class="ws">        </span>else:</pre>
<pre class="line after"><span class="ws">            </span>results = [self.locations[index] for index in indices]</pre>
<pre class="line after"><span class="ws">            </span>for result in results:</pre>
<pre class="line after"><span class="ws">                </span>result[&#39;country&#39;] = self.countries.get(result[&#39;country_code&#39;], &#39;&#39;)</pre>
<pre class="line after"><span class="ws">            </span>return results</pre></div>
</div>

<li><div class="frame" id="frame-547321311856">
  <h4>File <cite class="filename">"/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py"</cite>,
      line <em class="line">51</em>,
      in <code class="function">query</code></h4>
  <div class="source library"><pre class="line before"><span class="ws"></span> </pre>
<pre class="line before"><span class="ws">    </span>def query(self, coordinates):</pre>
<pre class="line before"><span class="ws">        </span>&#34;&#34;&#34;Find closest match to this list of coordinates</pre>
<pre class="line before"><span class="ws">        </span>&#34;&#34;&#34;</pre>
<pre class="line before"><span class="ws">        </span>try:</pre>
<pre class="line current"><span class="ws">            </span>distances, indices = self.tree.query(coordinates, k=1)</pre>
<pre class="line after"><span class="ws">        </span>except ValueError as e:</pre>
<pre class="line after"><span class="ws">            </span>logging.info(&#39;Unable to parse coordinates: {}&#39;.format(coordinates))</pre>
<pre class="line after"><span class="ws">            </span>raise e</pre>
<pre class="line after"><span class="ws">        </span>else:</pre>
<pre class="line after"><span class="ws">            </span>results = [self.locations[index] for index in indices]</pre></div>
</div>

<li><div class="frame" id="frame-547321312080">
  <h4>File <cite class="filename">"_ckdtree.pyx"</cite>,
      line <em class="line">795</em>,
      in <code class="function">scipy.spatial._ckdtree.cKDTree.query</code></h4>
  <div class="source "></div>
</div>
</ul>
  <blockquote>ValueError: &#39;x&#39; must be finite, check for nan or inf values
</blockquote>
</div>

<div class="plain">
    <p>
      This is the Copy/Paste friendly version of the traceback.
    </p>
    <textarea cols="50" rows="10" name="code" readonly>Traceback (most recent call last):
  File &#34;/usr/local/lib/python3.9/dist-packages/flask/app.py&#34;, line 1484, in full_dispatch_request
    rv = self.dispatch_request()
  File &#34;/usr/local/lib/python3.9/dist-packages/flask/app.py&#34;, line 1469, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File &#34;/usr/local/lib/python3.9/dist-packages/psa_car_controller/web/view/views.py&#34;, line 180, in get_vehicle_info
    response=json.dumps(APP.myp.get_vehicle_info(vin, from_cache).to_dict(), default=str),
  File &#34;/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/psa_client.py&#34;, line 109, in get_vehicle_info
    self.record_info(car)
  File &#34;/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/psa_client.py&#34;, line 205, in record_info
    Charging.record_charging(car, charging_status, charge_date, level, latitude, longitude,
  File &#34;/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/charging.py&#34;, line 90, in record_charging
    co2_per_kw = Ecomix.get_co2_per_kw(last_charge.start_at, charge_date, latitude, longitude, country_code)
  File &#34;/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/ecomix.py&#34;, line 121, in get_co2_per_kw
    country_code = Ecomix.get_country(latitude, longitude, country_code_default)
  File &#34;/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/ecomix.py&#34;, line 108, in get_country
    location = reverse_geocode.search([(latitude, longitude)])[0]
  File &#34;/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py&#34;, line 122, in search
    return gd.query(coordinates)
  File &#34;/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py&#34;, line 54, in query
    raise e
  File &#34;/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py&#34;, line 51, in query
    distances, indices = self.tree.query(coordinates, k=1)
  File &#34;_ckdtree.pyx&#34;, line 795, in scipy.spatial._ckdtree.cKDTree.query
ValueError: &#39;x&#39; must be finite, check for nan or inf values
</textarea>
</div>
<div class="explanation">
  The debugger caught an exception in your WSGI application.  You can now
  look at the traceback which led to the error.  <span class="nojavascript">
  If you enable JavaScript you can also use additional features such as code
  execution (if the evalex feature is enabled), automatic pasting of the
  exceptions and much more.</span>
</div>
      <div class="footer">
        Brought to you by <strong class="arthur">DON'T PANIC</strong>, your
        friendly Werkzeug powered traceback interpreter.
      </div>
    </div>

    <div class="pin-prompt">
      <div class="inner">
        <h3>Console Locked</h3>
        <p>
          The console is locked and needs to be unlocked by entering the PIN.
          You can find the PIN printed out on the standard output of your
          shell that runs the server.
        <form>
          <p>PIN:
            <input type=text name=pin size=14>
            <input type=submit name=btn value="Confirm Pin">
        </form>
      </div>
    </div>
  </body>
</html>

<!--

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/flask/app.py", line 1484, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.9/dist-packages/flask/app.py", line 1469, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/web/view/views.py", line 180, in get_vehicle_info
    response=json.dumps(APP.myp.get_vehicle_info(vin, from_cache).to_dict(), default=str),
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 109, in get_vehicle_info
    self.record_info(car)
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 205, in record_info
    Charging.record_charging(car, charging_status, charge_date, level, latitude, longitude,
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/charging.py", line 90, in record_charging
    co2_per_kw = Ecomix.get_co2_per_kw(last_charge.start_at, charge_date, latitude, longitude, country_code)
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/ecomix.py", line 121, in get_co2_per_kw
    country_code = Ecomix.get_country(latitude, longitude, country_code_default)
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/ecomix.py", line 108, in get_country
    location = reverse_geocode.search([(latitude, longitude)])[0]
  File "/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py", line 122, in search
    return gd.query(coordinates)
  File "/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py", line 54, in query
    raise e
  File "/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py", line 51, in query
    distances, indices = self.tree.query(coordinates, k=1)
  File "_ckdtree.pyx", line 795, in scipy.spatial._ckdtree.cKDTree.query
ValueError: 'x' must be finite, check for nan or inf values

I can visit the info page just fine and see the last tour info and the current charge status but getting values via the API fails...

To Reproduce
Steps to reproduce the behavior:

  1. Executed Command: curl http://localhost:5000/get_vehicleinfo/ on the host tunning the psa car controller
  2. Does it persist after restarting the program? Yes.
  3. Does it persist after recreate config by going to http://server_address:port/config? Yes.

Environment (please complete the following information):

  • OS: Raspbian on a Raspberry 3B+
  • Opel Corsa e
  • Application version:PSACC 3.1.0
  • Log from http://server_address:port/log and browser console log
/1b78e80feaf566ce48f45061a2d1fdeed17443d6114fa9c6a2356042edbc85850a09d835217fd41a84d5cadc440ff45c8c55c7876b3b4688660b587174a79f39e1c36ab2e13063a03e4b3525bd60c218c438ddec2ffbf0ca2ddd4ac573807e09d/status?profile=endUser"},"vehicle":{"href":"https://api.groupe-psa.com/connectedcar/v4/user/vehicles/1b78e80feaf566ce48f45061a2d1fdeed17443d6114fa9c6a2356042edbc85850a09d835217fd41a84d5cadc440ff45c8c55c7876b3b4688660b587174a79f39e1c36ab2e13063a03e4b3525bd60c218c438ddec2ffbf0ca2ddd4ac573807e09d"}},"preconditioning":{"airConditioning":{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","status":"Disabled","programs":[{"enabled":false,"slot":1,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":2,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":3,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":4,"recurrence":"Daily","start":"PT0S"}]}},"energies":[{"createdAt":"2023-09-07T12:06:31Z","type":"Fuel","subType":"FossilEnergy","autonomy":0,"extension":{"fuel":{"consumptions":{"total":0}}}},{"createdAt":"2023-11-17T17:20:59Z","type":"Electric","subType":"ElectricEnergy","level":70,"autonomy":222,"extension":{"electric":{"battery":{"load":{"createdAt":"2023-11-17T17:20:59Z","capacity":36672,"residual":23008}},"charging":{"plugged":true,"status":"Disconnected","remainingTime":"PT0S","chargingRate":0,"chargingMode":"No","nextDelayedTime":"PT0S"}}}}],"preconditionning":{"airConditioning":{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","status":"Disabled","programs":[{"enabled":false,"slot":1,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":2,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":3,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":4,"recurrence":"Daily","start":"PT0S"}]}},"energy":[{"createdAt":"2023-09-07T12:06:31Z","updatedAt":"2023-09-07T12:06:31Z","type":"Fuel","autonomy":0},{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","type":"Electric","level":70,"autonomy":222,"charging":{"plugged":true,"status":"Disconnected","remainingTime":"PT0S","chargingRate":0,"chargingMode":"No","nextDelayedTime":"PT0S"}}]}
2023-11-17 18:37:02,262 :: DEBUG :: vin:VXKUHZKXZP4189578 longitude:None latitude:None date:2023-11-17 17:20:59+00:00 mileage:1282.0 level:70.0 charge_date:2023-11-17 17:20:59+00:00 level_fuel:None moving:None
2023-11-17 18:37:02,267 :: DEBUG :: position already saved
2023-11-17 18:37:02,270 :: DEBUG :: No abrp token provided
2023-11-17 18:37:02,274 :: INFO :: Unable to parse coordinates: [(None, None)]
2023-11-17 18:37:08,661 :: INFO :: <Request 'http://192.168.2.20:5000/charge_control?vin=VXKUHZKXZP4189578&?always_check=true' [GET]>
2023-11-17 18:38:08,662 :: INFO :: <Request 'http://192.168.2.20:5000/charge_control?vin=VXKUHZKXZP4189578&?always_check=true' [GET]>

Is there anythin else I can look at? Or anything to provide some more help to solve this problem?

@kagehisa
Copy link
Author

Here is some more of the web log output, since the first post would have been too long otherwise.

2023-11-17 19:18:57,449 :: DEBUG :: position already saved
2023-11-17 19:18:57,451 :: DEBUG :: No abrp token provided
2023-11-17 19:18:57,455 :: INFO :: Unable to parse coordinates: [(None, None)]
2023-11-17 19:18:57,456 :: ERROR :: refresh_vehicle_info: 
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 126, in __refresh_vehicle_info
    self.get_vehicle_info(car.vin)
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 109, in get_vehicle_info
    self.record_info(car)
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 205, in record_info
    Charging.record_charging(car, charging_status, charge_date, level, latitude, longitude,
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/charging.py", line 90, in record_charging
    co2_per_kw = Ecomix.get_co2_per_kw(last_charge.start_at, charge_date, latitude, longitude, country_code)
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/ecomix.py", line 121, in get_co2_per_kw
    country_code = Ecomix.get_country(latitude, longitude, country_code_default)
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/ecomix.py", line 108, in get_country
    location = reverse_geocode.search([(latitude, longitude)])[0]
  File "/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py", line 122, in search
    return gd.query(coordinates)
  File "/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py", line 54, in query
    raise e
  File "/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py", line 51, in query
    distances, indices = self.tree.query(coordinates, k=1)
  File "_ckdtree.pyx", line 795, in scipy.spatial._ckdtree.cKDTree.query
ValueError: 'x' must be finite, check for nan or inf values
2023-11-17 19:18:58,088 :: INFO :: save config change
2023-11-17 19:19:03,313 :: DEBUG :: response body: {"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","engines":[{"type":"Thermic","extension":{"thermic":{"coolant":{"temp":215},"oil":{"temp":215},"air":{"temp":215}}},"createdAt":"2023-09-07T12:06:13Z"}],"ignition":{"createdAt":"2023-11-17T17:20:59Z","type":"Stop"},"battery":{"voltage":85,"createdAt":"2023-11-17T17:20:59Z"},"privacy":{"createdAt":"2023-11-17T17:20:59Z","state":"None"},"service":{"createdAt":"2023-09-07T11:54:14Z","type":"Electric"},"environment":{"luminosity":{"createdAt":"2023-11-17T17:20:59Z","day":false},"air":{"createdAt":"2023-11-17T17:20:59Z","temp":3.5}},"odometer":{"createdAt":"2023-11-17T17:20:59Z","mileage":1282},"_links":{"self":{"href":"https://api.groupe-psa.com/connectedcar/v4/user/vehicles/1b78e80feaf566ce48f45061a2d1fdeed17443d6114fa9c6a2356042edbc85850a09d835217fd41a84d5cadc440ff45c8c55c7876b3b4688660b587174a79f39e1c36ab2e13063a03e4b3525bd60c218c438ddec2ffbf0ca2ddd4ac573807e09d/status?profile=endUser"},"vehicle":{"href":"https://api.groupe-psa.com/connectedcar/v4/user/vehicles/1b78e80feaf566ce48f45061a2d1fdeed17443d6114fa9c6a2356042edbc85850a09d835217fd41a84d5cadc440ff45c8c55c7876b3b4688660b587174a79f39e1c36ab2e13063a03e4b3525bd60c218c438ddec2ffbf0ca2ddd4ac573807e09d"}},"preconditioning":{"airConditioning":{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","status":"Disabled","programs":[{"enabled":false,"slot":1,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":2,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":3,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":4,"recurrence":"Daily","start":"PT0S"}]}},"energies":[{"createdAt":"2023-09-07T12:06:31Z","type":"Fuel","subType":"FossilEnergy","autonomy":0,"extension":{"fuel":{"consumptions":{"total":0}}}},{"createdAt":"2023-11-17T17:20:59Z","type":"Electric","subType":"ElectricEnergy","level":70,"autonomy":222,"extension":{"electric":{"battery":{"load":{"createdAt":"2023-11-17T17:20:59Z","capacity":36672,"residual":23008}},"charging":{"plugged":true,"status":"Disconnected","remainingTime":"PT0S","chargingRate":0,"chargingMode":"No","nextDelayedTime":"PT0S"}}}}],"preconditionning":{"airConditioning":{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","status":"Disabled","programs":[{"enabled":false,"slot":1,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":2,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":3,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":4,"recurrence":"Daily","start":"PT0S"}]}},"energy":[{"createdAt":"2023-09-07T12:06:31Z","updatedAt":"2023-09-07T12:06:31Z","type":"Fuel","autonomy":0},{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","type":"Electric","level":70,"autonomy":222,"charging":{"plugged":true,"status":"Disconnected","remainingTime":"PT0S","chargingRate":0,"chargingMode":"No","nextDelayedTime":"PT0S"}}]}
2023-11-17 19:19:03,325 :: DEBUG :: vin:VXKUHZKXZP4189578 longitude:None latitude:None date:2023-11-17 17:20:59+00:00 mileage:1282.0 level:70.0 charge_date:2023-11-17 17:20:59+00:00 level_fuel:None moving:None
2023-11-17 19:19:03,331 :: DEBUG :: position already saved
2023-11-17 19:19:03,334 :: DEBUG :: No abrp token provided
2023-11-17 19:19:03,338 :: INFO :: Unable to parse coordinates: [(None, None)]
2023-11-17 19:19:08,661 :: INFO :: <Request 'http://192.168.2.20:5000/charge_control?vin=VXKUHZKXZP4189578&?always_check=true' [GET]>
2023-11-17 19:20:01,194 :: DEBUG :: response body: {"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","engines":[{"type":"Thermic","extension":{"thermic":{"coolant":{"temp":215},"oil":{"temp":215},"air":{"temp":215}}},"createdAt":"2023-09-07T12:06:13Z"}],"ignition":{"createdAt":"2023-11-17T17:20:59Z","type":"Stop"},"battery":{"voltage":85,"createdAt":"2023-11-17T17:20:59Z"},"privacy":{"createdAt":"2023-11-17T17:20:59Z","state":"None"},"service":{"createdAt":"2023-09-07T11:54:14Z","type":"Electric"},"environment":{"luminosity":{"createdAt":"2023-11-17T17:20:59Z","day":false},"air":{"createdAt":"2023-11-17T17:20:59Z","temp":3.5}},"odometer":{"createdAt":"2023-11-17T17:20:59Z","mileage":1282},"_links":{"self":{"href":"https://api.groupe-psa.com/connectedcar/v4/user/vehicles/1b78e80feaf566ce48f45061a2d1fdeed17443d6114fa9c6a2356042edbc85850a09d835217fd41a84d5cadc440ff45c8c55c7876b3b4688660b587174a79f39e1c36ab2e13063a03e4b3525bd60c218c438ddec2ffbf0ca2ddd4ac573807e09d/status?profile=endUser"},"vehicle":{"href":"https://api.groupe-psa.com/connectedcar/v4/user/vehicles/1b78e80feaf566ce48f45061a2d1fdeed17443d6114fa9c6a2356042edbc85850a09d835217fd41a84d5cadc440ff45c8c55c7876b3b4688660b587174a79f39e1c36ab2e13063a03e4b3525bd60c218c438ddec2ffbf0ca2ddd4ac573807e09d"}},"preconditioning":{"airConditioning":{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","status":"Disabled","programs":[{"enabled":false,"slot":1,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":2,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":3,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":4,"recurrence":"Daily","start":"PT0S"}]}},"energies":[{"createdAt":"2023-09-07T12:06:31Z","type":"Fuel","subType":"FossilEnergy","autonomy":0,"extension":{"fuel":{"consumptions":{"total":0}}}},{"createdAt":"2023-11-17T17:20:59Z","type":"Electric","subType":"ElectricEnergy","level":70,"autonomy":222,"extension":{"electric":{"battery":{"load":{"createdAt":"2023-11-17T17:20:59Z","capacity":36672,"residual":23008}},"charging":{"plugged":true,"status":"Disconnected","remainingTime":"PT0S","chargingRate":0,"chargingMode":"No","nextDelayedTime":"PT0S"}}}}],"preconditionning":{"airConditioning":{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","status":"Disabled","programs":[{"enabled":false,"slot":1,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":2,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":3,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":4,"recurrence":"Daily","start":"PT0S"}]}},"energy":[{"createdAt":"2023-09-07T12:06:31Z","updatedAt":"2023-09-07T12:06:31Z","type":"Fuel","autonomy":0},{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","type":"Electric","level":70,"autonomy":222,"charging":{"plugged":true,"status":"Disconnected","remainingTime":"PT0S","chargingRate":0,"chargingMode":"No","nextDelayedTime":"PT0S"}}]}
2023-11-17 19:20:01,206 :: DEBUG :: vin:VXKUHZKXZP4189578 longitude:None latitude:None date:2023-11-17 17:20:59+00:00 mileage:1282.0 level:70.0 charge_date:2023-11-17 17:20:59+00:00 level_fuel:None moving:None
2023-11-17 19:20:01,211 :: DEBUG :: position already saved
2023-11-17 19:20:01,214 :: DEBUG :: No abrp token provided
2023-11-17 19:20:01,218 :: INFO :: Unable to parse coordinates: [(None, None)]
2023-11-17 19:20:08,661 :: INFO :: <Request 'http://192.168.2.20:5000/charge_control?vin=VXKUHZKXZP4189578&?always_check=true' [GET]>
2023-11-17 19:20:55,379 :: DEBUG :: refresh_vehicle_info: precedent task still alive
2023-11-17 19:20:55,382 :: DEBUG :: refresh_vehicle_info
2023-11-17 19:20:55,985 :: DEBUG :: response body: {"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","engines":[{"type":"Thermic","extension":{"thermic":{"coolant":{"temp":215},"oil":{"temp":215},"air":{"temp":215}}},"createdAt":"2023-09-07T12:06:13Z"}],"ignition":{"createdAt":"2023-11-17T17:20:59Z","type":"Stop"},"battery":{"voltage":85,"createdAt":"2023-11-17T17:20:59Z"},"privacy":{"createdAt":"2023-11-17T17:20:59Z","state":"None"},"service":{"createdAt":"2023-09-07T11:54:14Z","type":"Electric"},"environment":{"luminosity":{"createdAt":"2023-11-17T17:20:59Z","day":false},"air":{"createdAt":"2023-11-17T17:20:59Z","temp":3.5}},"odometer":{"createdAt":"2023-11-17T17:20:59Z","mileage":1282},"_links":{"self":{"href":"https://api.groupe-psa.com/connectedcar/v4/user/vehicles/1b78e80feaf566ce48f45061a2d1fdeed17443d6114fa9c6a2356042edbc85850a09d835217fd41a84d5cadc440ff45c8c55c7876b3b4688660b587174a79f39e1c36ab2e13063a03e4b3525bd60c218c438ddec2ffbf0ca2ddd4ac573807e09d/status?profile=endUser"},"vehicle":{"href":"https://api.groupe-psa.com/connectedcar/v4/user/vehicles/1b78e80feaf566ce48f45061a2d1fdeed17443d6114fa9c6a2356042edbc85850a09d835217fd41a84d5cadc440ff45c8c55c7876b3b4688660b587174a79f39e1c36ab2e13063a03e4b3525bd60c218c438ddec2ffbf0ca2ddd4ac573807e09d"}},"preconditioning":{"airConditioning":{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","status":"Disabled","programs":[{"enabled":false,"slot":1,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":2,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":3,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":4,"recurrence":"Daily","start":"PT0S"}]}},"energies":[{"createdAt":"2023-09-07T12:06:31Z","type":"Fuel","subType":"FossilEnergy","autonomy":0,"extension":{"fuel":{"consumptions":{"total":0}}}},{"createdAt":"2023-11-17T17:20:59Z","type":"Electric","subType":"ElectricEnergy","level":70,"autonomy":222,"extension":{"electric":{"battery":{"load":{"createdAt":"2023-11-17T17:20:59Z","capacity":36672,"residual":23008}},"charging":{"plugged":true,"status":"Disconnected","remainingTime":"PT0S","chargingRate":0,"chargingMode":"No","nextDelayedTime":"PT0S"}}}}],"preconditionning":{"airConditioning":{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","status":"Disabled","programs":[{"enabled":false,"slot":1,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":2,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":3,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":4,"recurrence":"Daily","start":"PT0S"}]}},"energy":[{"createdAt":"2023-09-07T12:06:31Z","updatedAt":"2023-09-07T12:06:31Z","type":"Fuel","autonomy":0},{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","type":"Electric","level":70,"autonomy":222,"charging":{"plugged":true,"status":"Disconnected","remainingTime":"PT0S","chargingRate":0,"chargingMode":"No","nextDelayedTime":"PT0S"}}]}
2023-11-17 19:20:56,006 :: DEBUG :: vin:VXKUHZKXZP4189578 longitude:None latitude:None date:2023-11-17 17:20:59+00:00 mileage:1282.0 level:70.0 charge_date:2023-11-17 17:20:59+00:00 level_fuel:None moving:None
2023-11-17 19:20:56,015 :: DEBUG :: position already saved
2023-11-17 19:20:56,030 :: DEBUG :: No abrp token provided
2023-11-17 19:20:56,042 :: INFO :: Unable to parse coordinates: [(None, None)]
2023-11-17 19:20:56,043 :: ERROR :: refresh_vehicle_info: 
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 126, in __refresh_vehicle_info
    self.get_vehicle_info(car.vin)
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 109, in get_vehicle_info
    self.record_info(car)
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/psa_client.py", line 205, in record_info
    Charging.record_charging(car, charging_status, charge_date, level, latitude, longitude,
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/charging.py", line 90, in record_charging
    co2_per_kw = Ecomix.get_co2_per_kw(last_charge.start_at, charge_date, latitude, longitude, country_code)
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/ecomix.py", line 121, in get_co2_per_kw
    country_code = Ecomix.get_country(latitude, longitude, country_code_default)
  File "/usr/local/lib/python3.9/dist-packages/psa_car_controller/psacc/application/ecomix.py", line 108, in get_country
    location = reverse_geocode.search([(latitude, longitude)])[0]
  File "/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py", line 122, in search
    return gd.query(coordinates)
  File "/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py", line 54, in query
    raise e
  File "/usr/local/lib/python3.9/dist-packages/reverse_geocode/__init__.py", line 51, in query
    distances, indices = self.tree.query(coordinates, k=1)
  File "_ckdtree.pyx", line 795, in scipy.spatial._ckdtree.cKDTree.query
ValueError: 'x' must be finite, check for nan or inf values
2023-11-17 19:21:08,662 :: INFO :: <Request 'http://192.168.2.20:5000/charge_control?vin=VXKUHZKXZP4189578&?always_check=true' [GET]>
2023-11-17 19:22:02,334 :: DEBUG :: response body: {"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","engines":[{"type":"Thermic","extension":{"thermic":{"coolant":{"temp":215},"oil":{"temp":215},"air":{"temp":215}}},"createdAt":"2023-09-07T12:06:13Z"}],"ignition":{"createdAt":"2023-11-17T17:20:59Z","type":"Stop"},"battery":{"voltage":85,"createdAt":"2023-11-17T17:20:59Z"},"privacy":{"createdAt":"2023-11-17T17:20:59Z","state":"None"},"service":{"createdAt":"2023-09-07T11:54:14Z","type":"Electric"},"environment":{"luminosity":{"createdAt":"2023-11-17T17:20:59Z","day":false},"air":{"createdAt":"2023-11-17T17:20:59Z","temp":3.5}},"odometer":{"createdAt":"2023-11-17T17:20:59Z","mileage":1282},"_links":{"self":{"href":"https://api.groupe-psa.com/connectedcar/v4/user/vehicles/1b78e80feaf566ce48f45061a2d1fdeed17443d6114fa9c6a2356042edbc85850a09d835217fd41a84d5cadc440ff45c8c55c7876b3b4688660b587174a79f39e1c36ab2e13063a03e4b3525bd60c218c438ddec2ffbf0ca2ddd4ac573807e09d/status?profile=endUser"},"vehicle":{"href":"https://api.groupe-psa.com/connectedcar/v4/user/vehicles/1b78e80feaf566ce48f45061a2d1fdeed17443d6114fa9c6a2356042edbc85850a09d835217fd41a84d5cadc440ff45c8c55c7876b3b4688660b587174a79f39e1c36ab2e13063a03e4b3525bd60c218c438ddec2ffbf0ca2ddd4ac573807e09d"}},"preconditioning":{"airConditioning":{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","status":"Disabled","programs":[{"enabled":false,"slot":1,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":2,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":3,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":4,"recurrence":"Daily","start":"PT0S"}]}},"energies":[{"createdAt":"2023-09-07T12:06:31Z","type":"Fuel","subType":"FossilEnergy","autonomy":0,"extension":{"fuel":{"consumptions":{"total":0}}}},{"createdAt":"2023-11-17T17:20:59Z","type":"Electric","subType":"ElectricEnergy","level":70,"autonomy":222,"extension":{"electric":{"battery":{"load":{"createdAt":"2023-11-17T17:20:59Z","capacity":36672,"residual":23008}},"charging":{"plugged":true,"status":"Disconnected","remainingTime":"PT0S","chargingRate":0,"chargingMode":"No","nextDelayedTime":"PT0S"}}}}],"preconditionning":{"airConditioning":{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","status":"Disabled","programs":[{"enabled":false,"slot":1,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":2,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":3,"recurrence":"Daily","start":"PT0S"},{"enabled":false,"slot":4,"recurrence":"Daily","start":"PT0S"}]}},"energy":[{"createdAt":"2023-09-07T12:06:31Z","updatedAt":"2023-09-07T12:06:31Z","type":"Fuel","autonomy":0},{"createdAt":"2023-11-17T17:20:59Z","updatedAt":"2023-11-17T17:20:59Z","type":"Electric","level":70,"autonomy":222,"charging":{"plugged":true,"status":"Disconnected","remainingTime":"PT0S","chargingRate":0,"chargingMode":"No","nextDelayedTime":"PT0S"}}]}
2023-11-17 19:22:02,355 :: DEBUG :: vin:VXKUHZKXZP4189578 longitude:None latitude:None date:2023-11-17 17:20:59+00:00 mileage:1282.0 level:70.0 charge_date:2023-11-17 17:20:59+00:00 level_fuel:None moving:None
2023-11-17 19:22:02,365 :: DEBUG :: position already saved
2023-11-17 19:22:02,370 :: DEBUG :: No abrp token provided
2023-11-17 19:22:02,377 :: INFO :: Unable to parse coordinates: [(None, None)]

@kagehisa
Copy link
Author

kagehisa commented Nov 23, 2023

Ok, if I append ?from_cache=1 to the request I get no error message but pretty old data. So my guess is that Stellantis is not always filling up all the fields for a request and this causes the check for nan or inf values message.

Is there a chance to see what Stellantis delivers as answer to a request? Some kind of log or debug level I can set?

flobz added a commit that referenced this issue Jan 14, 2024
@flobz flobz closed this as completed in 5e09221 Jan 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant