Page 4 sur 9

Re: [DzVents] Renault Zoé

Publié : 11 oct. 2020, 20:08
par Neutrino
Merci pour le credentials.json, c'est corrigé.

Pour la localisation, je la récupère effectivement dans les paramètres.
Sinon, tu peux remplacer

Code : Tout sélectionner

local latitudeCible = domoticz.settings.location.latitude
local longitudeCible = domoticz.settings.location.longitude
par

Code : Tout sélectionner

local latitudeCible = X.965371
local longitudeCible = Y.3176608
histoire de voir où se situe le blocage.

Re: [DzVents] Renault Zoé

Publié : 11 oct. 2020, 21:52
par Rafio
Effectivement, latitudeCible et longitudeCible restent à 0 (alors qu'elles sont bien renseignées dans domoticz), et en les codant en dur dans le script, j'obtiens bien une distance de 0.04.

Re: [DzVents] Renault Zoé

Publié : 04 févr. 2021, 12:11
par RaquamLeRouge
Bonjoru à tous,

depuis le 1er février impossible d'obtenir des infos via l'API.
Lorsque j'execute manuellement le zcript MyRenault.py j'ai les erreurs suivantes :

pi@raspberrypi:/var/tmp $ python3 /home/pi/domoticz/scripts/python/MyRenault.py /home/pi/domoticz/scripts/python/credentials.json /var/tmp/zoe.txt
Traceback (most recent call last):
File "/home/pi/domoticz/scripts/python/MyRenault.py", line 434, in <module>
loop.run_until_complete(main())
File "/usr/lib/python3.7/asyncio/base_events.py", line 584, in run_until_complete
return future.result()
File "/home/pi/domoticz/scripts/python/MyRenault.py", line 347, in main
await mainwithsession(session)
File "/home/pi/domoticz/scripts/python/MyRenault.py", line 393, in mainwithsession
kamereonaccountid = kamereon_person['accounts'][1]['accountId']
KeyError: 'accounts'

Bizarre car je n'ai rien changé du coté de Domoticz ou de ma configuration...

Rencontrez-vous le meme probleme ? Quelque chose a changé coté API Renault ?

Merci à vous

Re: [DzVents] Renault Zoé

Publié : 04 févr. 2021, 13:26
par Neutrino
En effet, il y a eu une modification de la clé d'api.
Il faut modifier le fichier python.
Je suis au boulot, je vois ça ce soir.

Re: [DzVents] Renault Zoé

Publié : 04 févr. 2021, 14:11
par RaquamLeRouge
OK. Merci beaucoup

Re: [DzVents] Renault Zoé

Publié : 04 févr. 2021, 20:56
par Neutrino
Et voila !
MyRenault.py

Code : Tout sélectionner

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
#sudo apt install python3-pip
#sudo pip install aiohttp
#
import asyncio
import aiohttp
import json
import urllib
import sys
import ast

async def get_android_config(session, location):
	url = 'https://renault-wrd-prod-1-euw1-myrapp-one.s3-eu-west-1.amazonaws.com/configuration/android/config_' + location + '.json'
	#print(url)
	async with session.get(url) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def get_gigyasession(session, gigyarooturl, gigyaapikey, loginID, password):
	payload = {'loginID': loginID, 'password': password, 'apiKey': gigyaapikey}
	url = gigyarooturl + '/accounts.login?' + urllib.parse.urlencode(payload)
	#print(url)
	async with session.get(url) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def get_gigyaaccount(session, gigyarooturl, gigyaapikey, gigyacookievalue):
	payload = {'oauth_token': gigyacookievalue}
	url = gigyarooturl + '/accounts.getAccountInfo?' + urllib.parse.urlencode(payload)
	#print(url)
	async with session.get(url) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def get_gigyajwt(session, gigyarooturl, gigyaapikey, gigyacookievalue):
	payload = {'oauth_token': gigyacookievalue, 'fields': 'data.personId,data.gigyaDataCenter', 'expiration': 900}
	url = gigyarooturl + '/accounts.getJWT?' + urllib.parse.urlencode(payload)
	#print(url)
	async with session.get(url) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def get_kamereonperson(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, personId):
	payload = {'country': 'FR'}
	headers = {'x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	url = kamereonrooturl + '/commerce/v1/persons/' + personId + '?' + urllib.parse.urlencode(payload)
	#print(url)
	async with session.get(url, headers=headers) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def get_kamereontoken(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, accountId):
	payload = {'country': 'FR'}
	headers = {'x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	url = kamereonrooturl + '/commerce/v1/accounts/' + accountId + '/kamereon/token?' + urllib.parse.urlencode(payload)
	#print(url)
	async with session.get(url, headers=headers) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def get_batterystatus(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, vin):
	#headers = {'x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey, 'x-kamereon-authorization' : 'Bearer ' + kamereonaccesstoken}
	headers = {'x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	#url = kamereonrooturl + '/commerce/v1/accounts/kmr/remote-services/car-adapter/v1/cars/' + vin + '/battery-status'
	#url = kamereonrooturl + '/commerce/v1/accounts/kmr/remote-services/car-adapter/v2/cars/' + vin + '/battery-status?country=FR'
	url = kamereonrooturl + '/commerce/v1/accounts/' + kamereonaccountid + '/kamereon/kca/car-adapter/v2/cars/' + vin + '/battery-status?country=FR'
	#print(url)
	async with session.get(url, headers=headers) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def get_car(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, vin):
	headers = {'x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	#url = kamereonrooturl + '/commerce/v1/accounts/kmr/remote-services/car-adapter/v1/cars/' + vin + '/battery-status'
	#url = kamereonrooturl + '/commerce/v1/accounts/kmr/remote-services/car-adapter/v2/cars/' + vin + '/battery-status?country=FR'
	url = kamereonrooturl + '/commerce/v1/accounts/' + kamereonaccountid + '/kamereon/kca/car-adapter/v2/cars/' + vin + '/?country=FR'
	#print(url)
	async with session.get(url, headers=headers) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def get_vehicles(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, vin):
	headers = {'x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	#url = kamereonrooturl + '/commerce/v1/accounts/kmr/remote-services/car-adapter/v1/cars/' + vin + '/battery-status'
	#url = kamereonrooturl + '/commerce/v1/accounts/kmr/remote-services/car-adapter/v2/cars/' + vin + '/battery-status?country=FR'
	url = kamereonrooturl + '/commerce/v1/accounts/' + kamereonaccountid + '/vehicles?country=FR'
	#print(url)
	async with session.get(url, headers=headers) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def get_cockpit(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, vin):
	headers = {'x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	#url = kamereonrooturl + '/commerce/v1/accounts/kmr/remote-services/car-adapter/v2/cars/' + vin + '/cockpit'
	url = kamereonrooturl + '/commerce/v1/accounts/' + kamereonaccountid + '/kamereon/kca/car-adapter/v2/cars/' + vin + '/cockpit?country=FR'
	#print(url)
	async with session.get(url, headers=headers) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def set_chargemode(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, vin, mode):
	if mode == 'always':
		data = {'data' : {
			'type': 'ChargeMode',
			'attributes': {
				'action': 'always_charging'
				#'action': 'schedule_mode'
			}
		}}
	else:
		data = {'data' : {
				'type': 'ChargeMode',
				'attributes': {
					#'action': 'always_charging'
					'action': 'schedule_mode'
				}
			}}
	headers = {'Content-type': 'application/vnd.api+json','x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	url = kamereonrooturl + '/commerce/v1/accounts/' + kamereonaccountid + '/kamereon/kca/car-adapter/v1/cars/' + vin + '/actions/charge-mode?country=FR'
	#print(url)
	async with session.post(url, headers=headers,json=data) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		print(jsonresponse)
		return jsonresponse

async def set_chargingStart(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, vin):
	data = {'data' : {
		'type': 'ChargingStart',
		'attributes': {
			'action': 'start'
			#'action': 'schedule_mode'
		}
	}}
	headers = {'Content-type': 'application/vnd.api+json','x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	url = kamereonrooturl + '/commerce/v1/accounts/' + kamereonaccountid + '/kamereon/kca/car-adapter/v1/cars/' + vin + '/actions/charging-start?country=FR'
	#print(url)
	async with session.post(url, headers=headers,json=data) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def set_chargeSchedule(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, vin, file):
	in_file = open(file, 'r')
	data = json.load(in_file)
	in_file.close()
	headers = {'Content-type': 'application/vnd.api+json','x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	url = kamereonrooturl + '/commerce/v1/accounts/' + kamereonaccountid + '/kamereon/kca/car-adapter/v2/cars/' + vin + '/actions/charge-schedule?country=FR'
	#print(url)
	async with session.post(url, headers=headers,json=data) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		print(jsonresponse)
		return jsonresponse

async def set_hvacStart(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, vin):
	data = {'data' : {
		'type': 'HvacStart',
		'attributes': {
			'action': 'start',
			'targetTemperature': 20
		}
	}}
	headers = {'Content-type': 'application/vnd.api+json','x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	url = kamereonrooturl + '/commerce/v1/accounts/' + kamereonaccountid + '/kamereon/kca/car-adapter/v1/cars/' + vin + '/actions/hvac-start?country=FR'
	#print(url)
	async with session.post(url, headers=headers,json=data) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def set_hvacStop(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, vin):
	data = {'data' : {
		'type': 'HvacStart',
		'attributes': {
			'action': 'cancel'
		}
	}}
	headers = {'Content-type': 'application/vnd.api+json','x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	url = kamereonrooturl + '/commerce/v1/accounts/' + kamereonaccountid + '/kamereon/kca/car-adapter/v1/cars/' + vin + '/actions/hvac-start?country=FR'
	#print(url)
	async with session.post(url, headers=headers,json=data) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse
		
async def get_chargemode(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, vin):
	headers = {'x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	url = kamereonrooturl + '/commerce/v1/accounts/' + kamereonaccountid + '/kamereon/kca/car-adapter/v1/cars/' + vin + '/charge-mode?country=FR'
	#print(url)
	async with session.get(url, headers=headers) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse
		
async def get_location(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, vin):
	headers = {'x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	url = kamereonrooturl + '/commerce/v1/accounts/' + kamereonaccountid + '/kamereon/kca/car-adapter/v1/cars/' + vin + '/location?country=FR'
	#print(url)
	async with session.get(url, headers=headers) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def get_chargeSchedule(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, vin):
	headers = {'x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	url = kamereonrooturl + '/commerce/v1/accounts/' + kamereonaccountid + '/kamereon/kca/car-adapter/v1/cars/' + vin + '/charge-schedule?country=FR'
	#print(url)
	async with session.get(url, headers=headers) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse
		
async def get_chargingSettings(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, vin):
	headers = {'x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	url = kamereonrooturl + '/commerce/v1/accounts/' + kamereonaccountid + '/kamereon/kca/car-adapter/v1/cars/' + vin + '/charging-settings?country=FR'
	#print(url)
	async with session.get(url, headers=headers) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def get_test(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, vin):
	headers = {'x-gigya-id_token': gigya_jwttoken, 'apikey': kamereonapikey}
	url = kamereonrooturl + '/commerce/v1/accounts/' + kamereonaccountid + '/kamereon/kca/car-adapter/v1/cars/' + vin + '/res-state?country=FR'
	#print(url)
	async with session.get(url, headers=headers) as response:
		responsetext = await response.text()
		if responsetext == '':
			responsetext = '{}'
		jsonresponse = json.loads(responsetext)
		if 'message' in jsonresponse:
			self.tokenData = None
			raise MyRenaultServiceException(jsonresponse['message'])
		return jsonresponse

async def main():
	async with aiohttp.ClientSession(
			) as session:
		await mainwithsession(session)

async def mainwithsession(session):
	# Load credentials.
	#in_file = open('/home/pi/domoticz/scripts/python/credentials.json', 'r')
	in_file = open(sys.argv[1], 'r')
	credentials = json.load(in_file)
	in_file.close()

	android_config = await get_android_config(session, credentials['RenaultServiceLocation'])
	with open('android_config.json', 'w') as outfile:
		json.dump(android_config, outfile)

	
	gigyarooturl = android_config['servers']['gigyaProd']['target']
	gigyaapikey = android_config['servers']['gigyaProd']['apikey']

	kamereonrooturl = android_config['servers']['wiredProd']['target']
	#kamereonapikey = android_config['servers']['wiredProd']['apikey']
	kamereonapikey = 'Ae9FDWugRxZQAGm3Sxgk7uJn6Q4CGEA2'
	
	gigya_session = await get_gigyasession(session, gigyarooturl, gigyaapikey, credentials['RenaultServicesUsername'], credentials['RenaultServicesPassword'])
	with open('gigya_session.json', 'w') as outfile:
		json.dump(gigya_session, outfile)

	
	gigyacookievalue = gigya_session['sessionInfo']['cookieValue']

	gigya_account = await get_gigyaaccount(session, gigyarooturl, gigyaapikey, gigyacookievalue)
	with open('gigya_account.json', 'w') as outfile:
		json.dump(gigya_account, outfile)


	gigya_jwt = await get_gigyajwt(session, gigyarooturl, gigyaapikey, gigyacookievalue)
	with open('gigya_jwt.json', 'w') as outfile:
		json.dump(gigya_jwt, outfile)

	
	gigya_jwttoken= gigya_jwt['id_token']
	
	kamereonpersonid = gigya_account['data']['personId']
	
	kamereon_person = await get_kamereonperson(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonpersonid)
	with open('kamereon_person.json', 'w') as outfile:
		json.dump(kamereon_person, outfile)


	kamereonaccountid = kamereon_person['accounts'][1]['accountId']
	#print(kamereonaccountid)

	#kamereon_token = await get_kamereontoken(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid)
	#with open('kamereon_token.json', 'w') as outfile:
	#	json.dump(kamereon_token, outfile)
	#print('kamereon_token')
	
	#kamereonaccesstoken = kamereon_token['accessToken']
	
	if len(sys.argv)>2:
		if sys.argv[2] == "always":
			kamereon_chargemode = str( await set_chargemode(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, credentials['VIN'],"always"))
		elif sys.argv[2] == "scheduled":
			kamereon_chargemode = str( await set_chargemode(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, credentials['VIN'],"scheduled"))
		elif sys.argv[2] == "start":
			kamereon_chargemode = str( await set_chargingStart(session, kamereonrooturl, kamereonapikey, gigya_jwttoken,  kamereonaccountid, credentials['VIN']))
		elif sys.argv[2] == "ACstart":
			kamereon_chargemode = str( await set_hvacStart(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, credentials['VIN']))
		elif sys.argv[2] == "ACstop":
			kamereon_chargemode = str( await set_hvacStop(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, credentials['VIN']))
		elif sys.argv[2] == "chargeSchedule":
			kamereon_chargemode = str( await set_chargeSchedule(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, credentials['VIN'],sys.argv[3]))
		else:
			kamereon_battery = str( await get_batterystatus(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, credentials['VIN']))
			#print(kamereon_battery)
			kamereon_cockpit = str( await get_cockpit(session, kamereonrooturl, kamereonapikey, gigya_jwttoken,  kamereonaccountid, credentials['VIN']))
			#print(kamereon_cockpit)
			kamereon_chargemode = str( await get_chargingSettings(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, credentials['VIN']))
			#print(kamereon_chargemode)
			kamereon_location = str( await get_location(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, credentials['VIN']))
			#print(kamereon_location)
			#kamereon_test = str( await get_test(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, credentials['VIN']))
			kamereon_test = "' '"
			
			jsonresponse = "{ 'battery' : " + kamereon_battery + "," + "'cockpit' : " + kamereon_cockpit + "," + "'chargemode' : " + kamereon_chargemode + "," + "'location' : " + kamereon_location + "," + "'test' : " + kamereon_test + "}" 
			print(jsonresponse)
			if len(sys.argv) > 2: 
				with open(sys.argv[2], 'w') as outfile:
					json.dump(jsonresponse, outfile)
	elif len(sys.argv)== 2:
		kamereon_battery = str( await get_batterystatus(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, credentials['VIN']))
		#print(kamereon_battery)
		kamereon_cockpit = str( await get_cockpit(session, kamereonrooturl, kamereonapikey, gigya_jwttoken,  kamereonaccountid, credentials['VIN']))
		#print(kamereon_cockpit)
		kamereon_chargemode = str( await get_chargingSettings(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, credentials['VIN']))
		#print(kamereon_chargemode)
		kamereon_location = str( await get_location(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, credentials['VIN']))
		#print(kamereon_location)
		#kamereon_test = str( await get_test(session, kamereonrooturl, kamereonapikey, gigya_jwttoken, kamereonaccountid, credentials['VIN']))
		kamereon_test = "' '"
		
		jsonresponse = "{ 'battery' : " + kamereon_battery + "," + "'cockpit' : " + kamereon_cockpit + "," + "'chargemode' : " + kamereon_chargemode + "," + "'location' : " + kamereon_location + "," + "'test' : " + kamereon_test + "}" 
		print(jsonresponse.replace("'",'"').replace("False","false").replace("True","true").replace("None",'"None"'))
	
if __name__ == '__main__':
	loop = asyncio.get_event_loop()
	loop.run_until_complete(main())

Re: [DzVents] Renault Zoé

Publié : 05 févr. 2021, 09:06
par RaquamLeRouge
Nickel, ça fonctionne. Merci à toi

Re: [DzVents] Renault Zoé

Publié : 08 févr. 2021, 20:06
par Neutrino
Apparemment, c'est de nouveau hs ce soir...
J'investigue mais Renault est en train de changer des trucs visiblement...

Re: [DzVents] Renault Zoé

Publié : 11 févr. 2021, 20:06
par Neutrino
Nouvelle version MAJ en première page ! :mrgreen:
MyRenault.py
(20.83 Kio) Téléchargé 293 fois

Re: [DzVents] Renault Zoé

Publié : 19 févr. 2021, 10:07
par Rafio
Bonjour,
je viens de remplacer le fichier MyRenault.py, merci pour cette "mise à jour" !
Par contre, je constate que le pourcentage de batterie reste inchangé. Le fichier zoe.txt indique une erreur :

Code : Tout sélectionner

'code': 'err.func.wired.forbidden', 'message': 'The access is forbidden'
Est-ce aussi le cas pour vous ?
Merci.