habe seit gestern endlich meinen Adapter, gleich mal getestet und soeben zwei Screenshots angehängt:
Alles anzeigennach Rücksprache mit dem Entwickler der App Deep OBD hat er sehr schnell die Möglichkeit implementiert Notifications auszugeben - Danke an dieser Stelle noch mal!
Infos zu der App Deep OBD findet ihr in dem bekannten Allgemeinen Thread:
https://www.e90-forum.de/index.php?thread/58407
Idee:
Mit der Konfiguration (.ccpage) definierte Werte als Meldung auszugeben und im Auto mit SMS-Funktion angezeigt zu bekommen (s. bspw. Bilder der App Notification Forwarder)!
Dadurch könnten Werte wie Öltemperatur oder Abgastemperatur im CIC angezeigt werden (wichtig erst ab Combox möglich).
Benötigt wird:
die Beta Version 1.2.202 von Deep OBD:
https://play.google.com/apps/t…de.holeschak.bmw_deep_obd
eine App wie Notification Forwarder Pro, welche Android Notifications als SMS pusht:
https://play.google.com/store/apps/details?id=org.groebl.sms
Sollte für BMW und VAG Fahrzeuge mit SMS-Funktion möglich sein!
Anleitung:
Doku:
https://github.com/uholeschak/…ng-results-processresults
Beispiel:
https://github.com/uholeschak/…pObd/Xml/E61/Motor.ccpage
Screenshots folgen - habe im Moment noch nicht die Möglichkeit zu testen, wollte euch die Funktion aber nicht vorenthalten und würde mich über Rückmeldungen, gerne auch mit Bildern, freuen!
---
Update 02.11.2019:
Screenshots:
Konfig:
XML: Motor_N57_Notification.ccpageAlles anzeigen<?xml version="1.0" encoding="utf-8"?> <fragment xmlns="http://www.holeschak.de/BmwDeepObd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.holeschak.de/BmwDeepObd BmwDeepObd.xsd"> <page name="!PAGE_NAME" logfile="N57.log"> <!--Name der Log-Datei ggf. anpassen --> <strings> <string name="!PAGE_NAME">Motor</string> <!-- Seitenname in Deep OBD --> <string name="motordrehzahl">Motordrehzahl [U/min]:</string> <string name="geschwindigkeit">Geschwindigkeit [km/h]:</string> <string name="temp_kuehlmittel">Kühlmitteltemperatur [°C]:</string> <string name="temp_oel1">Oeltemperatur [°C]:</string> <string name="temp_oel2">Oeltemperatur [°C]:</string> <string name="ladedruck_ist">Ladedruck ist [mbar]:</string> <string name="ladedruck_soll">Ladedruck soll [mbar]:</string> <string name="tastver_ladedrucksteller">Tastverhältnis Ladedrucksteller [%]:</string> <string name="hfm_lms">HFM-Luftmassenstrom [kg/h]:</string> <string name="diffdruck_dpf">Abgasgegendruck [mbar]:</string> <string name="einspritzmenge">Einspritzmenge ist [mg/hub]:</string> <string name="einspritz_soll">Einspritzmenge soll [mg/hub]:</string> <string name="ladelufttemp">Ladelufttemperatur [°C]:</string> <string name="strecke_letze_regen">Strecke seit letzter Regeneration [km]:</string> <string name="durchschnitt_zw_regeneration">Durchschnitt zw. Regenerationen [km]:</string> <string name="regenerationsstatus">Regenerationsstatus [HEX]:</string> <string name="regenerationsanforderung">Regenerationsanforderung:</string> <string name="russmasse">Russmasse [g]:</string> <string name="aschemasse">Aschemasse [g]:</string> <string name="temp_kat">Abgastemperatur vor KAT [°C]:</string> <string name="temp_dpf">Abgastemperatur vor DPF [°C]:</string> <string name="rpm_turbo">Drehzahl Turbolader [U/min]:</string> <string name="notification_title_oiltemp">Öl-Temp</string> <string name="notification_oiltemp_low">Öl-Temp zu niedrig</string> </strings> <jobs sgbd="D73N57C0"> <!-- Hier die unterschiedlichen PRG Dateien eintragen. z.B. D71N47C0 / D73N57C0 --> <job name="STATUS_MESSWERTBLOCK_LESEN" args_first="JA;IPLAD;SPLAD;IALDS;ILMKG;IMEIA;INMOT;IVKMH;ITLAL;IDSLRE;ITAVO;ITAVP1;IKMZWREG;CoEOM_stOpModeAct;PFltRgn_numRgn;IMRUP;IMASOEL;SMEIN;ASMod_nTrbCh;ITKUM;Oil_tSwmp;ITOEL;IPDIP" args="NEIN;IPLAD;SPLAD;IALDS;ILMKG;IMEIA;INMOT;IVKMH;ITLAL;IDSLRE;ITAVO;ITAVP1;IKMZWREG;CoEOM_stOpModeAct;PFltRgn_numRgn;IMRUP;IMASOEL;SMEIN;ASMod_nTrbCh;ITKUM;Oil_tSwmp;ITOEL;IPDIP"> <display name="geschwindigkeit" result="STAT_GESCHWINDIGKEIT_WERT" format="3.0R" log_tag="Geschwindigkeit" /> <!-- IVKMH --> <display name="motordrehzahl" result="STAT_MOTORDREHZAHL_WERT" format="4.0R" log_tag="Motordrehzahl" /> <!-- INMOT --> <display name="ladedruck_ist" result="STAT_LADEDRUCK_WERT" format="6.2R" log_tag="Ladedruck" /> <!-- IPLAD --> <display name="ladedruck_soll" result="STAT_LADEDRUCK_SOLL_WERT" format="6.2R" log_tag="Ladedruck_soll" /> <!-- SPLAD --> <display name="tastver_ladedrucksteller" result="STAT_LADEDRUCKSTELLER_ANSTEUERUNG_WERT" format="3.0R" log_tag="Ladedrucksteller" /> <!-- IALDS --> <display name="hfm_lms" result="STAT_LUFTMASSE_WERT" format="8.4R" log_tag="Luftmasse" /> <!-- ILMKG --> <display name="diffdruck_dpf" result="STAT_DIFFERENZDRUCK_UEBER_PARTIKELFILTER_WERT" format="6.2R" log_tag="Differenzdruck DPF" /> <!-- IPDIP --> <display name="einspritz_soll" result="STAT_EINSPRITZMENGE_SOLL_WERT" format="7.4R" log_tag="Einspritz_soll" /> <!-- SMEIN --> <display name="einspritzmenge" result="STAT_EINSPRITZMENGE_AKTUELL_WERT" format="7.4R" log_tag="Einspritzmenge" /> <!-- IMEIA --> <display name="ladelufttemp" result="STAT_LADELUFTTEMPERATUR_WERT" format="3.0R" log_tag="Ladelufttemperatur" /> <!-- ITLAL --> <display name="strecke_letze_regen" result="STAT_STRECKE_SEIT_ERFOLGREICHER_REGENERATION_WERT" /> <!-- IDSLRE --> <display name="durchschnitt_zw_regeneration" result="STAT_DURCHSCHNITT_KILOMETER_ZWISCHEN_REGENERATIONEN_WERT" format="3.0R" /> <!-- IKMZWREG --> <display name="regenerationsstatus" result="STAT_CoEOM_stOpModeAct_WERT" format="" /> <!-- CoEOM_stOpModeAct --> <display name="regenerationsanforderung" result="STAT_PFltRgn_numRgn_WERT" format="2.0R" /> <!-- PFltRgn_numRgn --> <display name="russmasse" result="STAT_RUSSMASSE_IM_PARTIKELFILTER_WERT" format="4.1R" log_tag="Russmasse" /> <!-- IMRUP --> <display name="aschemasse" result="STAT_OELASCHENMASSE_WERT" format="4.1R" log_tag="Aschemasse" /> <!-- IMASOEL --> <display name="rpm_turbo" result="STAT_ASMod_nTrbCh_WERT" format="6.0R" log_tag="rpm_turbo" /> <!-- ASMod_nTrbCh --> <display name="temp_kat" result="STAT_ABGASTEMPERATUR_VOR_KATALYSATOR_WERT" format="3.0R" log_tag="Temp KAT" /> <!-- ITAVO --> <display name="temp_dpf" result="STAT_ABGASTEMPERATUR_VOR_PARTIKELFILTER_1_WERT" format="3.0R" log_tag="Temp DPF" /> <!-- ITAVP1 --> <display name="temp_kuehlmittel" result="STAT_KUEHLMITTELTEMPERATUR_WERT" format="4.1R" log_tag="Kuehlmitteltemperatur" /> <!-- ITKUM --> <display name="temp_oel1" result="STAT_Oil_tSwmp_WERT" format="4.1R" log_tag="Oeltemperatur1" /> <!-- Oil_tSwmp --> <display name="temp_oel2" result="STAT_MOTOROEL_TEMPERATUR_WERT" format="4.1R" log_tag="Oeltemperatur2" /> <!-- ITOEL --> </job> </jobs> <code show_warnigs="true"> <!-- Umformatierung von Werten --> <![CDATA[ class PageClass { public void ProcessResults(Context context, JobReader.PageInfo pageInfo, MultiMap<string, EdiabasNet.ResultData> resultDict) { double value; bool found; value = ActivityMain.GetResultDouble(resultDict, "STATUS_MESSWERTBLOCK_LESEN#STAT_MOTOROEL_TEMPERATUR_WERT", 0, out found); if (found && value < 65) { ActivityMain.ShowNotification(context, 0, 2, ActivityMain.GetPageString(pageInfo, "notification_title_oiltemp"), ActivityMain.GetPageString(pageInfo, "notification_oiltemp_low")); } else { ActivityMain.HideNotification(context, 0); } } public string FormatResult(JobReader.PageInfo pageInfo, Dictionary<string, EdiabasNet.ResultData> resultDict, string resultName) { string result = string.Empty; bool found; switch (resultName) { case "STATUS_MESSWERTBLOCK_LESEN#STAT_STRECKE_SEIT_ERFOLGREICHER_REGENERATION_WERT": result = string.Format(ActivityMain.Culture, "{0,6:0.0}", ActivityMain.GetResultDouble(resultDict, resultName, out found) / 1000.0); if (!found) result = string.Empty; break; } return result; } } ]]> </code> </page> </fragment>
Die Konfig ist an das Beispiel von GitHub angelehnt und zeigt aktuell lediglich an, dass die Öltemperatur zu gering ist - könnte auch geändert werden auf z.B. "Öltemperatur erreicht"...
Mein Ziel wäre es aber in 5er Schritten die Temperatur zu pushen, nur hier komme ich nicht recht weiter!
Wie muss/kann der if Befehl aussehen um einen Wert zwischen bspw. 40°C und 45°C abzufragen?
Nach Rücksprache mit dem Entwickler wird erst wieder eine neue Nachricht verschickt, sobald HideNotification (der jeweiligen ID - die Zahl nach context) ausgeführt wurde.
Als Tipp meinte er, sich den letzten Wert zu merken und nach einer Veränderung eine neue Nachricht senden...
Habt ihr eine Idee wie so eine Konfig aussehen könnte?