[DzVents] Renault Zoé

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [DzVents] Renault Zoé

Message 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.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Rafio
Messages : 10
Inscription : 10 oct. 2020, 08:25

Re: [DzVents] Renault Zoé

Message 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.
RaquamLeRouge
Messages : 11
Inscription : 27 sept. 2020, 13:42

Re: [DzVents] Renault Zoé

Message 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
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [DzVents] Renault Zoé

Message 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.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
RaquamLeRouge
Messages : 11
Inscription : 27 sept. 2020, 13:42

Re: [DzVents] Renault Zoé

Message par RaquamLeRouge »

OK. Merci beaucoup
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [DzVents] Renault Zoé

Message 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())
Pièces jointes
MyRenault.py
(20.43 Kio) Téléchargé 262 fois
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
RaquamLeRouge
Messages : 11
Inscription : 27 sept. 2020, 13:42

Re: [DzVents] Renault Zoé

Message par RaquamLeRouge »

Nickel, ça fonctionne. Merci à toi
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [DzVents] Renault Zoé

Message par Neutrino »

Apparemment, c'est de nouveau hs ce soir...
J'investigue mais Renault est en train de changer des trucs visiblement...
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [DzVents] Renault Zoé

Message par Neutrino »

Nouvelle version MAJ en première page ! :mrgreen:
MyRenault.py
(20.83 Kio) Téléchargé 293 fois
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Rafio
Messages : 10
Inscription : 10 oct. 2020, 08:25

Re: [DzVents] Renault Zoé

Message 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.
Répondre