diff --git a/MyPSACC.py b/MyPSACC.py index 2209b01..25b0941 100644 --- a/MyPSACC.py +++ b/MyPSACC.py @@ -418,9 +418,11 @@ class MyPSACC: conn.execute("INSERT INTO position(Timestamp,VIN,longitude,latitude,mileage,level) VALUES(?,?,?,?,?,?)", (date, vin, longitude, latitude, mileage, level)) conn.commit() - conn.close() + logger.info(f"new position recorded for {vin}") except sqlite3.IntegrityError: logger.debug("position already saved") + finally: + conn.close() @staticmethod def get_recorded_position(): diff --git a/README.md b/README.md index 03dd3b3..923ce41 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ We need to get credentials from the MyPeugeot app. You have two solutions : To do that you can follow this guide: https://forum.xda-developers.com/android/software-hacking/guide-how-to-enable-adb-backup-app-t3495117 The original app can be downloaded [here](https://apkpure.com/fr/mypeugeot-app/com.psa.mym.mypeugeot) for example. - I tested Mypeugeot version 1.25.2 and 1.26.2. + I tested Mypeugeot version 1.25.2, 1.26.2, and 1.27.0. 1.2 Uninstall the original app diff --git a/app_decoder.py b/app_decoder.py index 4e481d8..779d01f 100755 --- a/app_decoder.py +++ b/app_decoder.py @@ -63,7 +63,7 @@ else: res = os.system("java --version") if res != 0: print("You need to install java on your computer : https://www.java.com/fr/download/") - + exit(1) os.system(f"java -jar {script_dir}/abe-all.jar unpack {argv[1]} backup.tar {password}") my_tar = tarfile.open('backup.tar') my_tar.extractall() @@ -80,7 +80,13 @@ else: customer_id_enc = getxmlvalue(root, "CRYPTED_CUSTOMER_ID") customer_id = base64.b64decode(customer_id_enc).decode('utf-8') #get remote token - root = ET.parse("HUTokenManager.xml").getroot() + try: + root = ET.parse("HUTokenManager.xml").getroot() + except FileNotFoundError: + traceback.print_exc() + print("Do a remote request (start preconditioning for example) to generate a remote refresh token, " + "make a new backup and relaunch this script") + exit(1) remote_enc = root[0].text remote_dec = json.loads(base64.b64decode(remote_enc)) try: @@ -109,8 +115,11 @@ print(f"\nYour vehicles: {res}") if not argv[1].endswith(".apk"): - os.remove("backup.tar") - shutil.rmtree('apps') + try: + os.remove("backup.tar") + shutil.rmtree('apps') + except: + print("Error when deleting temp files") charge_controls = ChargeControls() for vin,vehicle in res.items(): chc = ChargeControl(None,vin,100,[0,0]) diff --git a/web/callback.py b/web/callback.py index 7b93abf..5bd1dd2 100644 --- a/web/callback.py +++ b/web/callback.py @@ -89,7 +89,7 @@ def charge_control(): charge_control.set_stop_hour([int(request.args["hour"]), int(request.args["minute"])]) if 'percentage' in request.args: charge_control.percentage_threshold = int(request.args['percentage']) - save_config(myp) + myp.save_config() return jsonify(charge_control.get_dict())