[Modul] Tesla

das erklärt warum heute die Heizung nicht angegangen ist und ich aufgefordert wurde mein Essen zu bestellen, ob wohl ich nicht auf der Arbeit bin :stuck_out_tongue:

Spass beiseite, bei mir war am 05.12. scheinbar schluss.

Bei mir das gleiche Spiel :frowning:

1 „Gefällt mir“

Bei mir funktioniert es auch nicht mehr.

1 „Gefällt mir“

@KaiS
kannst Du uns helfen?
Es gibt eine ausführliche Beschreibung der neuen API:
https://developer.tesla.com/docs/fleet-api?shell#overview
Ich habe allerdings nicht verstanden, welche Voraussetzungen geschaffen werden müssen.

Gruß, Peter

@KaiS hatte das schon bei mir angeleiert und der OAuth Endpunkt ist schon aktiv.

paresy

Bei mir geht es wieder. Um 20:45 kamen wieder Daten rein.

Habe gerade mal geschaut, bei mir kommen die Daten auch seit 20:48 wieder rein.

Torsten

ja, auch bei mir geht es wieder!
Bleibt nur noch das Problem mit dem Standort. Aber wenn das mit der neuen API wieder da ist, kann ich das aushalten.
Gruß, Peter

Bei mir geht’s auch wieder!

Servus, aus einem anderen Forum habe ich diese Info

Tesla hat eine neue API veröffentlicht, inklusive der Ankündigung, dass die alte „Tesla’s Owner API“ abgeschaltet wird (wohl ab 2024, Quelle) Es gibt allerdings einen Kompatibilitäts-Layer für die alte REST API (als HTTP Proxy). Das Framework ist in GO und auf Github verfügbar: Tesla Vehicle Command SDK Und hier noch der Link zu Teslas Dokumentation: Tesla Fleet API Edits: Link zur Tesla API Doku Link zur Abkündigung der alten API Alte REST API

Vielleicht ist etwas hilfreiches dabei. Es wäre schade, wenn „wir“ kein Teslamodul mehr hätten :confused:

VG

1 „Gefällt mir“

Hi pitty,
könntest du mir bitte mal ein Beispiel geben wie ich über einen z.B. Schiebe Regler das Ladelimit in % verändern kann? bin da nicht so fit der Sache

Dankeschön

Grüße mannoschi

Habe das in Studio gemacht.

und so sieht dann das Skript aus.

<?php

/* =====================================================================================================
 * 
 * IPSWorkflow Script
 * 
 * Dieses Skript wurde von einem Workflow des IPSStudio erzeugt, bitte nehmen Sie keine Änderungen
 * an dem Skript vor, da dieses beim nächsten Speichervorgang ansonsten wieder überschrieben werden.
 * 
 * Generiert
 *    um: 01.10.2021 23:37:41
 *    von: IPSStudio
 *    ID: 23658
 * 
 * Benutzte Objekte:
 *    10520 - Zuhause - Strase.Fahrzeuge.Tesla Model S (HB IT 321E).Tesla Modul  HB IT 321.TeslaVehicleControl
 *    10418 - Zuhause - Strase.Fahrzeuge.Tesla Model S (HB IT 321E).Eigene Programmierung.Laden.Ladelimt
 * 
 * Generierte Ereignisse:
 *    57746 - Zuhause - Strase.Fahrzeuge.Tesla Model S (HB IT 321E).Eigene Programmierung.Laden.Ladelimit.Bei Änderung M4
 * 
 * ===================================================================================================== */

   $executionID = round(microtime(true)*1000)-(IPS_GetKernelStartTime()*1000);
   SendDebug($_IPS['SELF'], 'S||||'.$executionID, '', 0);

   $M3 = new IPSEntityInstance($_IPS, 10520, true);
   $M1 = new IPSEntityVariable($_IPS, 10418, true, '', true);
   $M2 = new IPSEntityModuleCvtValue2String($_IPS);
   $M4 = new IPSEntityModuleOnChange($_IPS, 57746);

   if ($M1->Evaluate()) {
      SendDebug($_IPS['SELF'], 'M1|GetValue|M4|SetValue|'.$executionID,$M1->GetValue(),0);
      $M4->SetValue($M1->GetValue());
   }
   if ($M4->Evaluate()) {
      SendDebug($_IPS['SELF'], 'M4|GetValue|M2|SetValue|'.$executionID,$M4->GetValue(),0);
      $M2->SetValue($M4->GetValue());
   }
   if ($M2->Evaluate()) {
      SendDebug($_IPS['SELF'], 'M2|GetValue|M3|ChargeLimit|'.$executionID,$M2->GetValue(),0);
      $M3->SetValue('ChargeLimit', $M2->GetValue());
   }
   $M3->Evaluate();


   /* -----------------------------------------------------------------------*/
   function SendDebug($id, $message, $data, $format) {
      if (is_numeric($data)) {
         $data = (string)round($data, 2);
      } else if (is_string($data)) {
         $data = '"'.$data.'"';
      } else  {}
      IPS_SendDebug($id, $message, $data, $format);
   }

   /* -----------------------------------------------------------------------*/
   function GetTypeConvertedValue($variableID, $value) {
      $variableType = IPS_GetVariable($variableID)['VariableType'];
      if ($variableType == 0) return (bool)$value;
      else if ($variableType == 1) return (int)$value;
      else if ($variableType == 2) return (float)$value;
      else return $value;
   }

   /* -----------------------------------------------------------------------*/
   class IPSEntityInstance {
      private $ips;
      private $id;
      private $compareBeforUpdate;

      public function __construct($ips, $id, $compareBeforUpdate) {
         $this->ips = $ips;
         $this->id = $id;
         $this->compareBeforUpdate = $compareBeforUpdate;
      }

      private function GetTypeConvertedValue($ident, $value) {
         return GetTypeConvertedValue(IPS_GetObjectIDByIdent($ident, $this->id), $value);
      }

      public function SetValue($ident, $value) {
         if ($this->compareBeforUpdate && $this->GetValue($ident) === $this->GetTypeConvertedValue($ident, $value)) {
            /* Value already equals to new Value !*/
         } else {
            RequestAction(IPS_GetObjectIDByIdent($ident, $this->id), $this->GetTypeConvertedValue($ident, $value));
         }
      }

      public function GetValue($ident) {
         return GetValue(IPS_GetObjectIDByIdent($ident, $this->id));
      }

      public function Evaluate() {
         return true;
      }
   }

   /* -----------------------------------------------------------------------*/
   class IPSEntityVariable {
      private $ips;
      private $id;
      private $value;
      private $useActionScript;
      private $compareBeforUpdate;
      private $sender;

      public function __construct($ips, $id, $useActionScript, $compareBeforUpdate, $sender) {
         $this->ips                 = $ips;
         $this->id                  = $id;
         $this->useActionScript     = $useActionScript;
         $this->compareBeforUpdate = $compareBeforUpdate;
         $this->sender              = $sender;
      }

      public function SetValue($value) {
         $variable       = IPS_GetVariable($this->id);
         $actionScriptID = $variable['VariableCustomAction'];
         $scriptID       = $this->ips['SELF'];
         if ($this->compareBeforUpdate && $this->GetValue() === GetTypeConvertedValue($this->id, $value)) {
            /* Value already equals to new Value !*/
         } else if ($this->useActionScript && $actionScriptID > 10000 && $scriptID != $actionScriptID) {
            RequestActionEx ($this->id, GetTypeConvertedValue($this->id, $value), $this->sender);            
         } else {
            SetValue($this->id, GetTypeConvertedValue($this->id, $value));
         }
      }

      public function GetValue() {
         return GetValue($this->id);
      }

      public function Evaluate() {
         return true;
      }
   }

   /* -----------------------------------------------------------------------*/
   class IPSEntityModuleCvtValue2String {
      private $ips;
      private $value;
      private $callValue; 
      private $result;

      public function __construct($ips) {
         $this->ips        = $ips;
         $this->value      = null;
         $this->callValue  = false;
         $this->result     = 0;
      }

      public function SetValue($value) {
         $this->value     = $value;
         $this->callValue = true;
      }

      public function GetValue() {
         return $this->result;
      }

      public function Evaluate() {
         if (is_bool($this->value))
            $this->result = $this->value ? 'true' : 'false';
         else if (is_string($this->value))
            $this->result = $this->value;
         else 
            $this->result = strval($this->value);

         return $this->callValue;
      }
   }

   /* -----------------------------------------------------------------------*/
   class IPSEntityModuleOnChange {
      private $ips;
      private $id;
      private $value;
      private $isFired;

      public function __construct($ips, $id) {
         $this->ips = $ips;
         $this->id = $id;
      }

      public function Evaluate() {
         $this->isFired = $this->ips['SENDER'] == 'Variable' && $this->ips['EVENT'] == $this->id;
         return $this->isFired;
      }

      public function SetValue($value) {
         $this->value = $value;
      }

      public function GetValue() {
         return $this->value;
      }

      public function GetFired() {
         return $this->isFired;
      }

      public function GetNotFired() {
         return !$this->isFired;
      }
   }


   SendDebug($_IPS['SELF'], 'F||||'.$executionID, '', 0);

?>


Und hier die Oberfläche dazu

Hi Dustin723,
Danke für die schnelle Hilfe, leider funktioniert das bei mir nicht.
egal welchen wert ich eingebe, es wird nichts übernommenen :man_shrugging:

HI,

bei Dir ist da ein anderes Symbol?
grafik

Hast Du da nen anderen Kasten genutzt?
grafik

Bei mir läuft das seit Jahren stressfrei. Auch Skripte bewegen den Regelner, damit Zuhause nur 50%, auf der Arbeit 80% und unterwegs 90% eingestelt sind.

PS. Teste das mal wenn die App auf dem Handy auf ist. evlt. musst du nen Awake vorwegschicken? Wenn das Auto schläft geht das oft nicht. Ich ändere normal alles wie oben geschrieben nur automatisch. Dazu hat mein Auto noch ein Bug und geht sowie nie in Sleep Modus

Hallo Dustin,

sehr schöne Oberfläche. Ich suche schon lange eine Innenansicht meines Model3. Hättest du Lust mir das Bild der Innenansicht zukommen zu lassen?

Grüße Torsten

HI,

das ist ein Screenshoot aus der Tesla App :slight_smile:

ist nen Model S, aber ich denke das fällt keinem auf.

Perfekt, besten Dank dafür.

Gruß Torsten

1 „Gefällt mir“

Auch das funktioniert nicht, Fahrzeug ist Online…
Habe den Workflow über das Modul IPSWorkflowEditor erstellt
bin momentan ahnungslos :man_shrugging:

Ich habe mir die API Doku gestern Abend mal etwas genauer angeschaut.
Ich glaube, dass ich seitens IP-Symcon (@paresy) da noch ein wenig Unterstützung benötige, dort gibt es Punkte, die glaube ich auf den IP-Symcon Servern passieren müssen.

Ich versuche mich da mit @paresy nochmal abzustimmen. Erstes Ziel wäre den Login umzusetzen. :smiley:

Grüße,
Kai

4 „Gefällt mir“

Liebe alle,
versuche seit kurzem meinen Tessi in IPS eizubinden. Teilweise geht es schon, leider aber nicht alles. Was kann die Ursache sein?
image
charging geht und climate geht.



Alles andere nicht!


Kann mir jemand weiterhelfen, Tips geben?
Lg aus Wien