Open Source Datenlogger.

Ich hatte mir schon lange mal vorgenommen, einen kleinen Datenlogger für mein Model S zu entwickeln, der einfach periodisch alle Daten abfragt und diejenigen, die sich seit der letzten Abfrage verändert haben, ausgibt.
Der Riesenvorteil gegenüber kommerziellen Lösungen ist, dass ich niemandem meine „my Tesla“ credentials geben muss und dass ich alle Parameter selbst festlegen kann.
Erstaunlicherweise geht das mit dem teslajson Python Modul sehr leicht und ich konnte eine erste voll funktionsfähige Version mit wenigen Zeilen Python code entwickeln.

Hat jemand von Euch Interesse an so einem Datenlogger, mag ihn mal ausprobieren und mir Rückmeldungen geben, was man verbessern sollte?

Voraussetzung: Du musst wissen, wie man auf einem Computer Deiner Wahl zwei Umgebungsvariablen setzt und ein Python Programm ausführt. Auf dem Computer muss natürlich Python mit teslajson Modul installiert sein.
Ein raspberry pi eignet sich zum Beispiel hervorragend.
Edit: Da jetzt doch danach gefragt wurde, habe ich es eben auf einem raspberry kurz ausprobiert.

Die folgenden Schritte habe ich ausgeführt:

  1. eine root shell in /tmp gestartet:
    cd /tmp
    sudo sh

  2. die Python setuptools mit apt-get installiert:
    apt-get install python-setuptools

  3. das teslajson Paket heruntergeladen, ausgepackt und installiert:
    wget github.com/gglockner/teslajson/ … master.zip
    unzip master.zip
    cd teslajson-master
    python setup.py install

  4. die root shell beendet:
    exit

  5. Den Quelltext meines loggers auf „log_all_data.py“ abgelegt.

  6. Die beiden Umgebunsvariablen gesetzt und den logger probeweise gestartet:
    export TESLA_EMAIL=cko@my_provider.de
    export TESLA_PASSWORD=my_secret_password
    python log_all_data.py

Wenn das problemlos funktioniert (sieh man daran, dass jetzt alle bekannten
states angezeigt werden), kann man es mit ^C wieder abbrechen
und den log dauerhaft in eine Datei umlenken, zum Beispiel mit
python log_all_data.py >> tesla.log

Den log kann man in einer anderen shell auf dem raspi verfolgen mit
tail -f tesla.log

Hier der Quelltext der aktuellen Version:

""" log_all_data.py - log all Tesla data available via the JSON REST API.

    This tool requests all known state data for the first vehicle
    that is found for the myTesla credentials configured via
    the environment variables TESLA_EMAIL and TESLA_PASSWORD
    in dynamic intervals.
    While the drive state changes it is polled in a tight loop.
    The poll interval increases when nothing has changed
    and decreases otherwise.

    All changed data are shown in plain text on stdout.

    Please note that the use of the Tesla REST API in general
    and the use of this software in particular is not endorsed by Tesla.
    You use this software at your own risk.
    The author does not take responsibility for anything related
    to the use of this software.

    See http://tff-forum.de/viewtopic.php?f=58&t=17286 for more info.
"""

import os
import sys
import time
import urllib2

import teslajson


class StateMonitor(object):
    """ Monitor all Tesla states."""
    def __init__(self, tesla_email, tesla_password):
        self.requests = ("charge_state", "climate_state", "drive_state",
                         "gui_settings", "vehicle_state")
        self.priority_requests = {1: ("drive_state", ),
                                  2: ("drive_state", ),
                                  4: ("charge_state", "drive_state", )}
        self.old_values = dict([(r, {}) for r in self.requests])

        connection = teslajson.Connection(tesla_email, tesla_password)
        self.vehicle = connection.vehicles[0]

    def wake_up(self):
        """ Request wake up of car. """
        delay = 1
        while True:
            try:
                result = self.vehicle.wake_up()["response"]
                print "\nwake_up %s:" % time.ctime()
                for element in sorted(result):
                    print "   %s=%s" % (element, result[element])
                return
            except (KeyError, urllib2.HTTPError, urllib2.URLError) as details:
                delay *= 2
                print "\nError:", time.ctime(), details
                print "Waiting %d seconds before retrying." % delay
                time.sleep(delay)

    def request_state_group(self, request):
        """ Request and process one group of Tesla states. """
        header_printed = False
        any_change = False
        result = self.vehicle.data_request(request)
        for element in sorted(result):
            if element not in ("timestamp", "gps_as_of"):
                old_value = self.old_values[request].get(element, '')
                new_value = result[element]
                if ((old_value == '') or 
                    ((new_value is not None) and (new_value != old_value))):
                    if not header_printed:
                        timestamp = None
                        if "timestamp" in result:
                            timestamp = result["timestamp"] / 1000
                        print "\n%s %s:" % (request, time.ctime(timestamp))
                        header_printed = True
                        any_change = True
                    print "   %s=%s" % (element, new_value)
                    self.old_values[request][element] = new_value
        return any_change

    def check_states(self, interval):
        """ Check all Tesla states. """
        any_change = False
        for request in self.priority_requests.get(interval, self.requests):
            try:
                if self.request_state_group(request):
                    any_change = True
                    if request == "drive_state":
                        interval = 1
            except (urllib2.HTTPError, urllib2.URLError) as details:
                print "\nError:", time.ctime(), details
                return -1  # re-initialize.
        if any_change:
            if interval > 1:
                interval /= 2
        else:
            if interval < 8192:
                interval *= 2
        return interval


if __name__ == "__main__":
    state_monitor = StateMonitor(os.environ["TESLA_EMAIL"],
                                 os.environ["TESLA_PASSWORD"])
    poll_interval = -1

while True:
    if poll_interval > 1:
        time.sleep(poll_interval - time.time() % poll_interval)
    elif poll_interval < 0:
        state_monitor.wake_up()
        poll_interval = 1
    poll_interval = state_monitor.check_states(poll_interval)
    sys.stdout.flush()

Edit: neue Version fängt „HTTP Error 500: Internal Server Error“ ab.
Edit: Neue Version mit dynamischen poll Intervallen.
Edit: Neue Version mit kontinuierlichem monitoring des drive_state beim Fahren.
Edit: Anleitung für raspberry.
Edit: Neue Version, die „None“ Werte unterdrückt und Netzwerkfehler besser behandelt.

Cool!

habs mal am laufen. Mal sehn was so alles kommt.
Mal sehn ob ich es so anpassen kann das es mir die (für mich!) wichtigen Daten ins fhem schreibt.

Ich habe das alles mit openHAB und Grafana realisiert. Da muss man gar nichts mehr selbst programmieren. Vielleicht kann man das openHAB Tesla Binding auch für FHEM anpassen.

Apropos OpenHab2 datenlogger:

tff-forum.de/viewtopic.php?f=58&t=16954&start=0

Einige Werte scheinen ständig zu fluktuieren, obwohl das Auto seit gestern still in der Garage steht:

climate_state Mon Jul  3 14:41:48 2017:
   left_temp_direction=-272
   right_temp_direction=-272

climate_state Mon Jul  3 14:42:02 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

charge_state Mon Jul  3 14:42:11 2017:
   battery_range=210.04
   est_battery_range=125.94
   ideal_battery_range=168.48

climate_state Mon Jul  3 14:42:12 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:42:21 2017:
   battery_range=210.06
   est_battery_range=125.95
   ideal_battery_range=168.5

climate_state Mon Jul  3 14:42:22 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

charge_state Mon Jul  3 14:42:31 2017:
   battery_range=210.04
   est_battery_range=125.94
   ideal_battery_range=168.48

climate_state Mon Jul  3 14:42:32 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:42:41 2017:
   battery_range=209.62
   est_battery_range=125.95
   ideal_battery_range=168.15

climate_state Mon Jul  3 14:42:42 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

charge_state Mon Jul  3 14:42:51 2017:
   battery_range=210.06
   ideal_battery_range=168.5

climate_state Mon Jul  3 14:42:53 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

climate_state Mon Jul  3 14:43:02 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

charge_state Mon Jul  3 14:43:11 2017:
   battery_range=209.62
   ideal_battery_range=168.15

climate_state Mon Jul  3 14:43:12 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:43:21 2017:
   battery_range=210.04
   est_battery_range=125.94
   ideal_battery_range=168.48

climate_state Mon Jul  3 14:43:22 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

climate_state Mon Jul  3 14:43:32 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:43:41 2017:
   battery_range=209.61
   ideal_battery_range=168.14

climate_state Mon Jul  3 14:43:42 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

charge_state Mon Jul  3 14:43:51 2017:
   battery_range=209.62
   est_battery_range=125.95
   ideal_battery_range=168.15

climate_state Mon Jul  3 14:43:52 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

climate_state Mon Jul  3 14:44:22 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

climate_state Mon Jul  3 14:44:32 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

climate_state Mon Jul  3 14:44:42 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

charge_state Mon Jul  3 14:44:51 2017:
   battery_range=209.61
   est_battery_range=125.94
   ideal_battery_range=168.14

climate_state Mon Jul  3 14:44:52 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

climate_state Mon Jul  3 14:45:02 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

charge_state Mon Jul  3 14:45:12 2017:
   battery_range=209.62
   est_battery_range=125.95
   ideal_battery_range=168.15

climate_state Mon Jul  3 14:45:13 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:45:21 2017:
   battery_range=209.61
   est_battery_range=125.94
   ideal_battery_range=168.14

climate_state Mon Jul  3 14:45:22 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

climate_state Mon Jul  3 14:45:32 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:45:41 2017:
   battery_range=209.62
   est_battery_range=125.95
   ideal_battery_range=168.15

climate_state Mon Jul  3 14:45:42 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

climate_state Mon Jul  3 14:45:52 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:46:01 2017:
   battery_range=209.61
   est_battery_range=125.94
   ideal_battery_range=168.14

climate_state Mon Jul  3 14:46:02 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

climate_state Mon Jul  3 14:46:12 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:46:31 2017:
   battery_range=209.62
   est_battery_range=125.95
   ideal_battery_range=168.15

charge_state Mon Jul  3 14:46:52 2017:
   battery_range=209.61
   est_battery_range=125.94
   ideal_battery_range=168.14

charge_state Mon Jul  3 14:47:01 2017:
   battery_range=209.62
   est_battery_range=125.95
   ideal_battery_range=168.15

climate_state Mon Jul  3 14:47:02 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

charge_state Mon Jul  3 14:47:11 2017:
   battery_range=209.61
   est_battery_range=125.94
   ideal_battery_range=168.14

climate_state Mon Jul  3 14:47:13 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:47:21 2017:
   battery_range=209.62
   est_battery_range=125.67
   ideal_battery_range=168.15

climate_state Mon Jul  3 14:47:22 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

climate_state Mon Jul  3 14:47:33 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:47:41 2017:
   battery_range=209.61
   est_battery_range=125.94
   ideal_battery_range=168.14

climate_state Mon Jul  3 14:47:42 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

charge_state Mon Jul  3 14:47:51 2017:
   battery_range=209.62
   est_battery_range=125.67
   ideal_battery_range=168.15

climate_state Mon Jul  3 14:47:52 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:48:01 2017:
   battery_range=209.61
   est_battery_range=125.94
   ideal_battery_range=168.14

climate_state Mon Jul  3 14:48:02 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

charge_state Mon Jul  3 14:48:11 2017:
   battery_range=209.62
   est_battery_range=125.95
   ideal_battery_range=168.15

climate_state Mon Jul  3 14:48:12 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:48:21 2017:
   est_battery_range=125.67

climate_state Mon Jul  3 14:48:22 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

climate_state Mon Jul  3 14:48:32 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:48:42 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 14:48:51 2017:
   battery_range=209.62
   ideal_battery_range=168.15
Error: Mon Jul  3 14:49:05 2017 HTTP Error 500: Internal Server Error

charge_state Mon Jul  3 14:50:21 2017:
   battery_range=209.61
   ideal_battery_range=168.14

climate_state Mon Jul  3 14:50:22 2017:
   left_temp_direction=-272
   right_temp_direction=-272

charge_state Mon Jul  3 14:50:31 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 14:50:41 2017:
   battery_range=209.61
   ideal_battery_range=168.14

climate_state Mon Jul  3 14:50:42 2017:
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:50:51 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 14:51:12 2017:
   battery_range=209.61
   ideal_battery_range=168.14

charge_state Mon Jul  3 14:51:31 2017:
   battery_range=209.19
   ideal_battery_range=167.8

climate_state Mon Jul  3 14:51:32 2017:
   inside_temp=23.4
   left_temp_direction=-275
   right_temp_direction=-275

charge_state Mon Jul  3 14:51:41 2017:
   battery_range=209.61
   ideal_battery_range=168.14

climate_state Mon Jul  3 14:51:42 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

climate_state Mon Jul  3 14:51:52 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

charge_state Mon Jul  3 14:52:01 2017:
   battery_range=209.19
   ideal_battery_range=167.8

climate_state Mon Jul  3 14:52:02 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:52:31 2017:
   battery_range=209.61
   ideal_battery_range=168.14

charge_state Mon Jul  3 14:52:41 2017:
   battery_range=209.19
   ideal_battery_range=167.8

climate_state Mon Jul  3 14:52:43 2017:
   left_temp_direction=-272
   right_temp_direction=-272

charge_state Mon Jul  3 14:52:51 2017:
   battery_range=209.61
   ideal_battery_range=168.14

climate_state Mon Jul  3 14:52:52 2017:
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:53:01 2017:
   battery_range=209.19
   ideal_battery_range=167.8

climate_state Mon Jul  3 14:53:02 2017:
   inside_temp=23.4

climate_state Mon Jul  3 14:53:12 2017:
   inside_temp=23.3

climate_state Mon Jul  3 14:53:22 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

climate_state Mon Jul  3 14:53:33 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

climate_state Mon Jul  3 14:53:42 2017:
   inside_temp=23.4
   left_temp_direction=-275
   right_temp_direction=-275

climate_state Mon Jul  3 14:53:52 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:54:01 2017:
   battery_range=209.61
   ideal_battery_range=168.14

charge_state Mon Jul  3 14:54:11 2017:
   battery_range=209.19
   ideal_battery_range=167.8

climate_state Mon Jul  3 14:54:12 2017:
   inside_temp=23.4
   left_temp_direction=-275
   right_temp_direction=-275

charge_state Mon Jul  3 14:54:21 2017:
   battery_range=209.61
   ideal_battery_range=168.14

climate_state Mon Jul  3 14:54:22 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:54:31 2017:
   battery_range=209.19
   ideal_battery_range=167.8

climate_state Mon Jul  3 14:54:32 2017:
   inside_temp=23.4

climate_state Mon Jul  3 14:54:43 2017:
   inside_temp=23.3
   left_temp_direction=-272
   right_temp_direction=-272
Error: Mon Jul  3 14:54:55 2017 HTTP Error 500: Internal Server Error

climate_state Mon Jul  3 14:55:58 2017:
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:56:21 2017:
   battery_range=209.17
   ideal_battery_range=167.79

climate_state Mon Jul  3 14:56:22 2017:
   inside_temp=23.4
   left_temp_direction=-275
   right_temp_direction=-275

charge_state Mon Jul  3 14:56:31 2017:
   battery_range=209.19
   ideal_battery_range=167.8

climate_state Mon Jul  3 14:56:32 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

climate_state Mon Jul  3 14:56:42 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

climate_state Mon Jul  3 14:56:52 2017:
   inside_temp=23.3
   left_temp_direction=-272
   right_temp_direction=-272

charge_state Mon Jul  3 14:57:02 2017:
   est_battery_range=125.4

climate_state Mon Jul  3 14:57:03 2017:
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:57:11 2017:
   est_battery_range=125.67

climate_state Mon Jul  3 14:57:22 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

charge_state Mon Jul  3 14:57:31 2017:
   est_battery_range=125.4

climate_state Mon Jul  3 14:57:32 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

climate_state Mon Jul  3 14:57:42 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

charge_state Mon Jul  3 14:57:51 2017:
   battery_range=209.17
   est_battery_range=125.67
   ideal_battery_range=167.79

climate_state Mon Jul  3 14:57:52 2017:
   inside_temp=23.3
   left_temp_direction=-271
   right_temp_direction=-271

charge_state Mon Jul  3 14:58:01 2017:
   battery_range=209.19
   est_battery_range=125.4
   ideal_battery_range=167.8

climate_state Mon Jul  3 14:58:02 2017:
   inside_temp=23.4
   left_temp_direction=-274
   right_temp_direction=-274

charge_state Mon Jul  3 14:58:12 2017:
   battery_heater_on=None
   battery_range=209.17
   est_battery_range=125.67
   ideal_battery_range=167.79

climate_state Mon Jul  3 14:58:13 2017:
   inside_temp=23.3
   is_auto_conditioning_on=None
   left_temp_direction=None
   right_temp_direction=None

climate_state Mon Jul  3 14:58:22 2017:
   outside_temp=None

charge_state Mon Jul  3 14:59:22 2017:
   battery_range=209.19
   charger_pilot_current=None
   ideal_battery_range=167.8
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 14:59:31 2017:
   battery_range=209.17
   charger_pilot_current=16
   ideal_battery_range=167.79
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 14:59:51 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:00:21 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:00:32 2017:
   charger_pilot_current=None

charge_state Mon Jul  3 15:00:41 2017:
   charger_pilot_current=16

charge_state Mon Jul  3 15:00:51 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:01:01 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:01:11 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:01:23 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:01:31 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:01:42 2017:
   battery_range=209.17
   charger_pilot_current=None
   ideal_battery_range=167.79
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:01:51 2017:
   battery_range=209.19
   charger_pilot_current=16
   ideal_battery_range=167.8
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:02:01 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:02:42 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:02:52 2017:
   charger_pilot_current=None
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:03:01 2017:
   battery_range=209.17
   charger_pilot_current=16
   ideal_battery_range=167.79
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:03:11 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:03:41 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:04:02 2017:
   battery_range=209.19
   charger_pilot_current=None
   ideal_battery_range=167.8
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:04:11 2017:
   charger_pilot_current=16
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:04:21 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:04:31 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:04:51 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:05:12 2017:
   charger_pilot_current=None
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:05:21 2017:
   battery_range=209.19
   charger_pilot_current=16
   ideal_battery_range=167.8
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:05:31 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:05:51 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:06:01 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:06:22 2017:
   battery_range=209.19
   charger_pilot_current=None
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:06:31 2017:
   charger_pilot_current=16

charge_state Mon Jul  3 15:06:51 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:07:01 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:07:11 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:07:21 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:07:32 2017:
   charger_pilot_current=None
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:07:41 2017:
   charger_pilot_current=16
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:07:51 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:08:21 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:08:31 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:08:42 2017:
   battery_range=209.19
   charger_pilot_current=None
   ideal_battery_range=167.8
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:08:51 2017:
   battery_range=209.17
   charger_pilot_current=16
   ideal_battery_range=167.79
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:09:11 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:09:31 2017:
   est_battery_range=125.4

charge_state Mon Jul  3 15:09:41 2017:
   est_battery_range=125.67

charge_state Mon Jul  3 15:09:52 2017:
   charger_pilot_current=None
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:10:01 2017:
   charger_pilot_current=16
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:10:21 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:10:31 2017:
   est_battery_range=125.39

charge_state Mon Jul  3 15:10:41 2017:
   est_battery_range=125.67

charge_state Mon Jul  3 15:11:02 2017:
   charger_pilot_current=None
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:11:11 2017:
   charger_pilot_current=16
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:11:31 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:11:41 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:11:51 2017:
   est_battery_range=125.39

charge_state Mon Jul  3 15:12:01 2017:
   battery_range=209.19
   est_battery_range=125.67
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:12:12 2017:
   charger_pilot_current=None

charge_state Mon Jul  3 15:12:21 2017:
   battery_range=209.17
   charger_pilot_current=16
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:12:51 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:13:11 2017:
   battery_range=209.17
   ideal_battery_range=167.79

climate_state Mon Jul  3 15:13:12 2017:
   inside_temp=None

charge_state Mon Jul  3 15:13:22 2017:
   charger_pilot_current=None
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:13:31 2017:
   battery_range=209.19
   charger_pilot_current=16
   ideal_battery_range=167.8
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:13:41 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:13:51 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:14:01 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:14:32 2017:
   battery_range=209.19
   charger_pilot_current=None
   ideal_battery_range=167.8
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:14:41 2017:
   charger_pilot_current=16
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:15:01 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:15:21 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:15:42 2017:
   battery_range=209.17
   charger_pilot_current=None
   ideal_battery_range=167.79
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:15:51 2017:
   charger_pilot_current=16
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:16:31 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:16:41 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:16:52 2017:
   battery_range=209.19
   charger_pilot_current=None
   ideal_battery_range=167.8
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:17:01 2017:
   battery_range=209.61
   charger_pilot_current=16
   ideal_battery_range=168.14
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:17:11 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:17:41 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:17:51 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:18:02 2017:
   battery_range=209.19
   charger_pilot_current=None
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:18:11 2017:
   charger_pilot_current=16

charge_state Mon Jul  3 15:18:31 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:18:41 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:18:51 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:19:12 2017:
   battery_range=209.19
   charger_pilot_current=None
   ideal_battery_range=167.8
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:19:21 2017:
   battery_range=209.17
   charger_pilot_current=16
   ideal_battery_range=167.79
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:19:31 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:19:41 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:19:51 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:20:11 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:20:22 2017:
   charger_pilot_current=None
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:20:31 2017:
   charger_pilot_current=16
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:20:41 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:21:32 2017:
   battery_range=209.17
   charger_pilot_current=None
   ideal_battery_range=167.79
   trip_charging=None

charge_state Mon Jul  3 15:21:41 2017:
   battery_range=209.19
   charger_pilot_current=16
   est_battery_range=125.4
   ideal_battery_range=167.8
   trip_charging=False

charge_state Mon Jul  3 15:21:51 2017:
   est_battery_range=125.67

charge_state Mon Jul  3 15:22:01 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:22:21 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:22:31 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:22:42 2017:
   battery_range=209.19
   charger_pilot_current=None
   ideal_battery_range=167.8
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:22:51 2017:
   charger_pilot_current=16
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:23:11 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:23:41 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:23:52 2017:
   battery_range=209.17
   charger_pilot_current=None
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:24:01 2017:
   charger_pilot_current=16

charge_state Mon Jul  3 15:24:31 2017:
   battery_range=209.6
   est_battery_range=125.66
   ideal_battery_range=168.12

charge_state Mon Jul  3 15:24:41 2017:
   battery_range=209.17
   est_battery_range=125.67
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:24:51 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:25:02 2017:
   battery_range=209.17
   charger_pilot_current=None
   ideal_battery_range=167.79
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:25:11 2017:
   charger_pilot_current=16
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:25:31 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:25:41 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:26:12 2017:
   battery_range=209.19
   charger_pilot_current=None
   ideal_battery_range=167.8
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:26:21 2017:
   charger_pilot_current=16
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:26:41 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:26:51 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:27:01 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:27:22 2017:
   battery_range=209.61
   charger_pilot_current=None
   ideal_battery_range=168.14
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:27:31 2017:
   battery_range=209.19
   charger_pilot_current=16
   ideal_battery_range=167.8
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:27:51 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:28:01 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:28:21 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:28:32 2017:
   charger_pilot_current=None
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:28:41 2017:
   charger_pilot_current=16
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:28:51 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:29:01 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:29:11 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:29:21 2017:
   battery_range=209.17
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:29:42 2017:
   battery_range=209.19
   charger_pilot_current=None
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:29:51 2017:
   battery_range=209.17
   charger_pilot_current=16
   ideal_battery_range=167.79

charge_state Mon Jul  3 15:30:31 2017:
   battery_range=209.19
   ideal_battery_range=167.8

charge_state Mon Jul  3 15:30:52 2017:
   charger_pilot_current=None
   not_enough_power_to_heat=None
   trip_charging=None

charge_state Mon Jul  3 15:31:01 2017:
   charger_pilot_current=16
   not_enough_power_to_heat=False
   trip_charging=False

charge_state Mon Jul  3 15:31:11 2017:
   battery_range=209.17
   ideal_battery_range=167.79

Ist das nur bei mir so?

ja, ist so. Kenn ich von anderen Tools auch so. Nervt beim Loggen.

Hi !

Hab’ ich auch ! Bei mir ändert sich z.B. ständig der ODO-meter - im Nachkommabereich…tsss…

Wenn ich aus dem Fenster schaue, bewegt er sich aber nicht - kleiner Schelm…

Habt Ihr gute und schnelle Lösungen zur Darstellung der location Daten auf einer Karte ?

Ich könnte das über google maps machen und da dynamisch die Daten aus der influxDB reinladen und mir dann entspr. html code erzeugen - aber irgendwie fehlen mir ein wenig die Böcke und die Zeit dafür.

Ich dachte, es gäbe ein cleveres grafana plugin, was das für mich erledigt - aber irgendwie scheint das nicht der Fall zu sein - nur ne world map gibt es da.

Ideen ?

:question:

past_petrol und ich haben unsere verschiedenen Ansätze miteinander diskutiert und ich habe seine Anregungen gesammelt und angefangen, umzusetzen:

Häufigkeit des Datenabrufs: Es ist unklar, was so ein Abruf aller states Tesla kostet und ob sie das irgendwann sperren, wenn es signifikant wird. Ich habe jetzt eine dynamische Strategie implementiert, die während der Fahrt einmal pro Sekunde Daten abruft und ansonsten schrittweise das Abrufintervall bis auf 512 Sekunden erhöht.

Datenmenge: Ich werde mir die einzelnen states, die ab und zu „rauschen“ bzw. „zittern“ gelegentlich genauer angucken und mir eine Strategie überlegen, das (teilweise) zu unterdrücken. Allerdings ist auch die jetzige Kompression durch Unterdrückung konstanter states schon sehr gut und produziert nur ca. 100 kB pro Tag.
Vielleicht sollte man den logger auch so ändern, dass er eine Datei pro Tag produziert?

Visualisierung: Ich gucke mal, ob ich in der nächsten Zeit dazu komme, ein Visualisierungs (plot)-Tool für die Daten zu entwickeln.
Denkbar ist auch eine Schnittstelle zu Open Street Map, die gefahrene Strecken in einer Karte anzeigt.

Danke cko,

Zum Plotten sieh mal bei thingspeak.com vorbei. Ich logge damit Wind-Daten: thingspeak.com/channels/245058

Kann man deinen Quellcode irgendwo abrufen, z.B. auf github? Bin hier gerade mit dem iPad unterwegs und sehe in der Box oben keinen relevanten Code. Danke :slight_smile:

Nehmt doch einfach Grafana für die grafische Aufbereitung:
grafana.com

Steht in der Code Box im ersten Beitrag dieses Threads.

Mache ich jedenfalls aktuell. Das löst aber leider nicht das Kartenproblem…

Ich würde den Datenlogger gerne auf meinem Raspberry Pi 3 installieren und verwenden.
Kann mir bitte jemand eine Schritt für Schritt Anleitung dazu erstellen?

Besten Dank im Voraus!

Ich hab das eben mal kurz auf einem raspberry pi hier ausprobiert
und den ersten Beitrag um eine Anleitung ergänzt.

Bei periodischer Abfrage „schläft“ der Tesla nicht mehr ein. Das kann den Stromverbrauch deutlich in die Höhe treiben. Kannst du das schon sehen?
So statt 35W etwa 150W = 3,6kWh am Tag = 20km Reichweite?

Ja das ist so.

Hi !

Ich gehe aktuell von 16-20 km pro 24h aus - so wie es bei mir aussieht. Ich muss das noch ein wenig beobachten, da es auch davon abhängt, wie genau das Wetter ist u.s.w.u.s.f. - damit es vergleichbar bleibt.

Dem gegenüber stehen ganz wunderbare Daten, die auch mir neue Aufschlüsse lieferten.

Ich hätte nicht gedacht, dass mein wundervoller S85D mit satten (gemessenen) 120 kW tatsächlich bei SoC 8% lädt - habe mal ne SuC Ladung mitgeschnitten und dann habe ich Reku-Versuche aus absichtlich 200 km/h + unternommen - und siehe da - 81kW Reku-Leistung - das war mir so nicht bekannt, zumal man das nicht so im Fahrzeug ablesen kann.

Ich kann mir vorstellen, es auch hin und wieder zu deaktivieren - nach einiger Zeit. Aktuell läuft alles mit und es gibt auch keinen Stress.

Es ist aber definitiv so, dass das Fahrzeug nicht einschläft. Man kann das am ONLINE/OFFLINE Status des Fahrzeuges sehen. Gerade wenn es sich hinlegt, muss es auch schon wieder Daten liefern.

2017-07-10 20:32:48.041 [hingStatusInfoChangedEvent] - ‚tesla:models:0e549376‘ changed from OFFLINE to ONLINE

So verlockend die ganze Angelegenheit ist - wo Licht ist, ist auch immer Schatten.

Der Schatten besteht aus:

  • dem erhöhten Energiebedarf
  • der „Belastung“ der Tesla-API (hier kann man aber mit cleveren Algorithmen entgegenwirken)
  • der vorzuhaltenden Infrastruktur (die auch einen Energiebedarf hat)
  • der Sammlung aller relevanten Fahrdaten (Angriffs- oder Ermittlungsziel)

Das Licht besteht darin:

  • das Fahrzeug besser zu verstehen
  • das Thema Energie (-Bedarf) bei BEVs besser zu verstehen
  • mit unterschiedlichen Datenpunkten ganz interessante Erkenntnisse durch Visualisierung zu erreichen
  • grundsätzliche Zusammenhänge physikalisch besser zu verstehen (ich habe Daten einer Fahrt hinter einem Wohnwagen mitgeschnitten)
  • der unglaubliche Spaß an der Technik bis runter zur Datenhaltung und Aufbereitung

Es ist eben so, dass wir alle hier schon immer richtige Dinge vermutet haben. Bei mir macht es aber den Reiz aus, das messen zu können und es dann nachvollziehbar zu machen. Mir persönlich macht so ein Drilldown auf eine Beschleunigung mit anschließender Reku-Phase einfach Spaß. Zu sehen, wie das exakt vor sich geht ist einfach toll.

Naja - und ich denke mittlerweile viel darüber nach, was so für Daten anfallen und wie krass das eigentlich ist. Man muss viel mehr darüber nachdenken, was heutzutage über ein Fahrzeug, wie ein Tesla möglich ist.

Jetzt haben die Dinger auch noch 8 CAMs an Bord. Da mußt Du keine Satelliten mehr ins All ballern ! Der Tesla im Carport ist besser als 4 Überwachungskameras - wenn ich denn da rankommen würde.

Am Ende des Tages glaube ich fest daran, das Tesla not evil ist. Die Frage ist nur - wie lange ist das so und kann man sich in den US wirklich dagegen wehren ?

:wink: :open_mouth: :question: :bulb: :exclamation:


Auch interessant:

343 kW bei einem S85D.

Deutlich mehr, als jede Leistungsangabe, die ich jemals wahrgenommen habe. Ist der bisher höchste Wert, den ich gemessen habe.

:mrgreen:

Habt Ihr das Script auch mit Datenbankanbindung? Mein Logging der Daten mit openHAB funktioniert seit 17.26.76 nur noch teilweise.