<?php
$ODO = 46366;
$MeterDiff = $_IPS['VALUE'] - $_IPS['OLDVALUE']; // Wenn die ESP Variable sich ändert, die differenz zwischen altem und neuen wert berrechnen
$MeterAlt = IPS_GetObject($ODO)['ObjectInfo']; // Die bisher gefahrenen Meter aus dem Infobereich der Variablen lesen
If ($diff > 0)
{
$MeterNeu = $MeterDiff + $MeterAlt; // wenn der Wert der Meterzahl ansteigt
}
else
{
$MeterNeu = $_IPS['VALUE'] + $MeterAlt; // wenn der Wert der Meterzahl zurückgesetzt wurde
}
IPS_SetInfo($ODO, $MeterNeu); // Die aktuell errechtente Meterzahl im Infobereich der Variablen zwischenspeichern
SetValue($ODO,(int)$MeterNeu/1000); // Den aktuellen Wert in km umrechen und in die Variable schreiben
Guten Morgen
vielen Dank für das Script. Den Infobereich der Variable als Zwischenspeicher zu benutzen ist genial
Ich habe mal alles eingefügt und mache nachher die Testfahrt.
Moin,
Berichte mal. Die -1 Abweichung dürfte vom ESP kommen. Du meintest er überträgt auch mal -1 als ersten Wert den müßte man dann noch extra abfangen.
da mache ich auf jeden Fall.
Ja, nach dem Reset schickt der ESP erstmal „-1“ für „noch keinen Wert gesetzt“
Wenn das Auto dann wieder fährt, zählen die Meter wieder schön hoch.
Also Ralf sein Script zählt sauber hoch, man müsste eben nur noch das „-1“ abfangen.
Ralf, ich kann mir das versuchen heraus zu tüfteln, bin aber für Lösungsvorschläge offen
Bei Attain habe ich einen Faktor 100 zu hoch…komischerweise nicht 1000 zu hoch.
Also 23 Kilometer gefahren und es wurden 2348 km in der ODO Variable geloggt.
mit Faktor 1000 hätte ich den Fahler eventuell gefunden, aber Faktor 100 macht mich ratlos…
Hast du da eine Idee Attain ?
Und an euch beiden:
Vielen Dank für eure Geduld ! Ich bin da sehr dankbar !
<?php
$ODO = 46366;
$MeterDiff = $_IPS['VALUE'] - $_IPS['OLDVALUE']; // Wenn die ESP Variable sich ändert, die differenz zwischen altem und neuen wert berrechnen
$MeterAlt = IPS_GetObject($ODO)['ObjectInfo']; // Die bisher gefahrenen Meter aus dem Infobereich der Variablen lesen
If ($diff > 0)
{
$MeterNeu = $MeterDiff + $MeterAlt; // wenn der Wert der Meterzahl ansteigt
}
else
{
$MeterNeu = $_IPS['VALUE'] + $MeterAlt; // wenn der Wert der Meterzahl zurückgesetzt wurde
}
IPS_SetInfo($ODO, $MeterNeu); // Die aktuell errechtente Meterzahl im Infobereich der Variablen zwischenspeichern
SetValue($ODO,(int)$MeterNeu/1000); // Den aktuellen Wert in km umrechen und in die Variable schreiben
Leider weiß ich nicht was die Ursache ist.
Was steht im Infobereich dazu?
Wie wir das Script getriggert? Änderung auf ESP Variable?
Loggst Du die ESP Variable? Irgendwelche Aussreisser da zu sehen?
ja, ich hatte die Tests immer mit sinnvollen Fahrten (Einkaufen etc. ) verbunden.
Ich musste auch den ESP testen, da am Anfang da auch nicht immer saubere Werte kamen.
Aber der ESP ist jetzt in Ordnung. Heute Nachmittag düse ich wieder los
Beide Scripte scheinen nun zu funktionieren, allerdings habe ich 2 km Differenz. (Ralf 44km, Attain 46km)
Ich habe den ESP bei 23.828 Metern resettet und bin dann nochmal 22.232 Meter gefahren.
Das zusammengezählt ergibt 46.060 Meter.
Von der Seite her, würde ich sagen, bei Ralf fehlen mir 2km.
Rundungsfehler ?
Bei Attain habe ich den Fehler gefunden:
(Hab ich kommentiert)
<?php
$ODO = 46366;
$MeterDiff = $_IPS['VALUE'] - $_IPS['OLDVALUE']; // Wenn die ESP Variable sich ändert, die differenz zwischen altem und neuen wert berrechnen
$MeterAlt = IPS_GetObject($ODO)['ObjectInfo']; // Die bisher gefahrenen Meter aus dem Infobereich der Variablen lesen
If ($MeterDiff > 0) // Hier stand "($diff > 0)", ich denke, es müsste aber "$MeterDiff" sein
{
$MeterNeu = $MeterDiff + $MeterAlt; // wenn der Wert der Meterzahl ansteigt
}
else
{
$MeterNeu = $_IPS['VALUE'] + $MeterAlt; // wenn der Wert der Meterzahl zurückgesetzt wurde
}
IPS_SetInfo($ODO, $MeterNeu); // Die aktuell errechtente Meterzahl im Infobereich der Variablen zwischenspeichern
SetValue($ODO,(int)$MeterNeu/1000); // Den aktuellen Wert in km umrechen und in die Variable schreiben