BMW connected drive in IPS?

mach mal bitte den Instanz-Debug an, dann bitte irgendwas kn der Konfiguration ändern, nur ui dem Zweck, das das Formular dirty wird.
Dann nach dem Speichern bitte mal in den Debug schauen. Da müsste was mit SetUpdateInterval stehen
Und erneut nach dem Timer schauen, ob sich das was geändert hat.
Die Instanz ist „active“?

image

image

Tom

immer rätselhafter

public function SetUpdateIntervall(int $Minutes = null)
{
  if (!($Minutes > 0)) {
    $Minutes = $this->ReadPropertyInteger('UpdateInterval');
  }
  $interval = $Minutes * 60 * 1000;
  $this->SendDebug(__FUNCTION__, 'minutes=' . $Minutes, 0);
  $this->SetTimerInterval('UpdateData', $interval);
}

es wir direkt ein SetTimerInterval() aufgerufen …

In den Meldungen irgend was spannendes, wenn du das machst?

sonst fällt mir nur ein IPS-Reboot ein :unamused:

demel

Parse error: syntax error, unexpected 'public' (T_PUBLIC), expecting end of file in C:\ProgramData\Symcon\scripts\16051.ips.php on line 3
Abort Processing during Fatal-Error: syntax error, unexpected 'public' (T_PUBLIC), expecting end of file
   Error in Script C:\ProgramData\Symcon\scripts\16051.ips.php on Line 3

Hatte ich auch schon gemacht.

Tom

hmm, das hat damit nix zu tun würde ich sagen, da geht es ja um ein script mit der ID 16051.
da ist zwar ein fehler drin („public“) , aber wie soll das damit zu tun haben?

wäre natürlich nicht schlecht, den fehler auszumerzen …

Das ist die ID des Scripts welches ich zum Test erstellt habe (Gewohnheit). Direkt über die Schnellausführung der Console kommt:

Parse error: syntax error, unexpected 'public' (T_PUBLIC), expecting end of file in C:\Windows\System32\- on line 2
Abort Processing during Fatal-Error: syntax error, unexpected 'public' (T_PUBLIC), expecting end of file
   Error in Script C:\Windows\System32\- on Line 2

Tom

naja „public“ ist ja nur bei Klassen nutzbar…
wie sieht denn das script aus?

Ich habe nur Deine Funktion in ein leeres Script getan und ausgeführt. Habe ich was falsch verstanden?

Tom

welche funktion?

am besten zeigst du mal das script

Weiter habe ich nichts gemacht
Tom

das ist ja eine modul-interne Funktion, die kann so losgelöst nicht funktionieren.

diese Funktion ist zufälligerweise public, kann also von aussen angesprochen werden

BMW_SetUpdateIntervall(<ID des BMW-Instanz>, <update-intervall in Minuten>);

was wolltest du damit erreichen?

Ich hatte Dich so verstanden, dass ich es damit versuchen soll.

ok, das war ein Missverständnis, ich hatte nur aus Gewohnheit Sourcecode gezeigt. mein Fehler, script kann bitte weg.

Ich muss erstmal nachdenken, was ich noch an debug unterbringen kann, um dem Problem näher zukommen

1 „Gefällt mir“

So, ich habe jetzt auch erstmal die Beta installiert.

Hier mein Aktueller „Stand“:

  • BMW Hybrid
    – Reichweite kommt korrekt
    – Akkustand kommt korrekt
    – el. Reichweite ist korrekt
    – Ladezyklus-Status und Ladekabel-Status sind richtig
    – Ladezyklus-Ende (Integer) wird nicht aktualisiert/ermittelt
    – Lade-Information (String) wird angezeigt, passt aber nicht (100% um ~01:05AM); das „01:05 AM“ zeigt die „Rest-Ladezeit in hh:mm“ an. Der Text müsste also „100% in 1h 05min“ sein. Das Zyklus-Ende sollte dann der timestamp sein, der zu diesem Ende-Zeitpunkt passt.
    – Ladevorgänge und Remote-Verlauf sind korrekt aktualisiert

  • Mini SE - Vollelektrisch
    Hier sieht es gänzlich anders aus.
    Faktisch werden nur die Ladevorgänge und der Remote-Verlauf aktualisiert. Alle anderen Daten bekommen kein Update. Da scheinen sich Verbrenner/Hybrid und Voll-elektrisch wohl deutlich zu unterscheiden.

ja, korrekt, die gibt es nicht mehr :frowning:

der Info string kommt so von BMw und ich wollte versuchen, den zu interpretieren.
Daher hatte ich darum gebeten, den zu loggen und mur die diversen Variationen zukommen zu lassen und ggfs Erklärung dazu.

da bräuchte ich am besten ein passende debug, ggfs mit der info, welche konkreten werte da drin stehen sollten

demel

Keine Ahnung, wie man in dieser schrägen Forumssoftware vernünftig zitieren kann… egal… :upside_down_face:

Wenn der Ladezyklus-Ende (Integer) nicht mehr kommt würde ich dann einfach die Restlaufzeit nehmen (in meinem Beispiel 1h 05) und auf den now() timestamp addieren, und diesen in den Wert schreiben :wink:
Bzgl. es Strings sieht mir das so aus, das der „~hh:mm“-Teil der relevante Part ist. Also: Wenn „100% + ~hh:mm pattern“ → Ladezyklus-Ende = now() + hh * 60 + mm :wink:

Bzgl. Mini SE schaue ich mir das mal näher an.

Beim Mini SE fällt im Debug auf, das diverse API Calls gar nicht stattfinden. Während

  • GetVehicleData (liefert aber wesentlich weniger Daten als der BMW Hybrid)
  • GetChargingStatistics
  • GetChargingSessions
  • GetRemoteServiceHistory

aufgerufen werden, sehe ich keine API Calls wie

  • UpdateVehicleData

@demel42 Soll ich dir die Logs mal zumailen?

Was steht bei dem Mini als „Antriebsart“?

Es gibt allerdings die alten Call ja gar nicht mehr, die o.g. sind die einzigen (ausser dem Aufruf von RemoteServices).

Und ja, ich bräuchte die Logs …

demel

Hallo,

ich habe etwas mehr Debug eingebaut, um in dem SetUpdateIntervall() mehr auszugeben, wie die Timer da gesetzt werden.
Bitte dann das Konfiguration-Formular aufrufen, den Instanz-Debug aktivieren und dann das Intervall ändern.
Dann wird ausgegeben, was das System denkt, wieviel msec bis zum nächsten Update verstreichen sollte sowie die internen Time-Strukturen vom IPS
Dann überprüfen, wie das dann aktuell auf den IPS „Timer Informationen“ aussieht.

demel

Danke! Seit dem Update steht im Timer was drin und die Aktualisierung läuft. Ich beobachte das mal weiter.

Tom