API ecowatt RTE

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
Bochets34
Messages : 20
Enregistré le : 09 mars 2018, 08:27

API ecowatt RTE

Message par Bochets34 »

Bonjour,

quelqu'un sait il si une interface Domoticz (addon / plugin) existe avec les données ecowatt disponibles par RTE ?

https://data.rte-france.com/catalog/-/a ... owatt/v4.0

:idea:

d'après ma compréhension c'est un peu comme les signaux EJP et autre Tempo.

l'idée est évidemment de pouvoir agir par anticipation en cas d'éventuelles coupures du réseau électrique cet hiver ....


Olivier

Keros
Messages : 3492
Enregistré le : 23 juil. 2019, 20:57

Re: API ecowatt RTE

Message par Keros »

C'est la première fois que je vois cet API.

Je n'ai rien vu sur le forum, tu as recherché avec Github ?

Neutrino
Messages : 2100
Enregistré le : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: API ecowatt RTE

Message par Neutrino »

Je suis dessus depuis hier soir :mrgreen:
Et c'est pas jojo...
Il faut créer un compte puis créer une application et enfin récupérer un id en base 64.
Avec cet id, il faut récupérer un token.
Avec ce token valable 2H seulement, il faut appeler l'API au MAXIMUM 1 fois toutes les 15 minutes.
Une sandbox est disponible pour les tests.

Pour faire simple, rien n'est simple.
Pas de fonctionnement par région.
Pour un truc qui pourrait fonctionner en open, bah non. On monte une usine à gaz à base de Oauth2.
Bref, j'ai un truc qui marche en sandbox, mais les données en prod SONT DIFFERENTES DE LA DOC !!!
ça marchotte, jusqu'à ce qu'ils changent encore un truc...

[edit]
ça donne ça :
Capture d’écran 2022-09-15 233534.png
Capture d’écran 2022-09-15 233534.png (11.84 Kio) Vu 364 fois
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?

pierrotori
Messages : 329
Enregistré le : 29 févr. 2016, 12:11

Re: API ecowatt RTE

Message par pierrotori »

Pas mal je ferais des tests quand je récupérerais internet

Chrominator
Messages : 830
Enregistré le : 19 déc. 2015, 07:29
Localisation : France

Re: API ecowatt RTE

Message par Chrominator »

En alternative, on peut attendre l'app qui paraît-il serait en développement et livrable bientôt.
Le souci, c'est que bientôt on ne sait pas si c'est avant ou après l'hiver :lol:
Partir, c’est pourrir un pneu.

Ubuntu 20.04.4 LTS - Domoticz v2022.1
sur Pentium G3220T 2.60GHz - 4Go DDR3
rfxcom RFXtrx433 USB Version: Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway with LAN interface 48.4

Neutrino
Messages : 2100
Enregistré le : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: API ecowatt RTE

Message par Neutrino »

Pour commencer à vous amuser ;)
C'est pas fini, pas commenté, en cours de débug et pas nettoyé, mais ça fonctionne :mrgreen:

Code : Tout sélectionner

local scriptName = 'ecowatt'
local scriptVersion = '1.0'
--[[
 
- Créez un compte sur le site de RTE (https://data.rte-france.com/web/guest)
- Allez sur l'API Ecowatt (https://data.rte-france.com/catalog/-/api/consumption/Ecowatt/v4.0)
- Cliquez sur "Abonnez-vous à l'API", créez une nouvelle application
- Récuperez votre clé en cliquant sur "Copier en base 64"

]]

--                                        Dummy à créer :
local AlertEcoWatt = "EcoWatt" -- Alert device J
local AlertEcoWatt2 = nil -- Alert device J+1

local cleAPI = "VW5lIGJpw6hyZSBnYWduw6llIHBvdXIgbGUgcHJlbWllciBxdWkgdHJvdXZlIMOnYQ=="

return {
	--active = false,
	active = true,
	logging = {
		level = domoticz.LOG_DEBUG, -- Uncomment to override the dzVents global logging setting
		marker = scriptName..' '..scriptVersion
	},	
	on = {
		--timer = {'at *:49'},
		timer = {'every 15 minutes'},
		httpResponses = {
			scriptName,
			scriptName..'at',
		},	
	},
	data = {

		--access_token = {}
		access_token = { history = true, maxItems = 1, maxMinutes = 110 }
	},		

	execute = function(domoticz, item) 
		if item.isTimer then
			if domoticz.data.access_token.size == 0 then 
				--or domoticz.data.access_token.get(1).time.secondsAgo > 6000 then
			
				local url = "https://digital.iservices.rte-france.com/token/oauth/"
				domoticz.log('Requesting data from RTE', domoticz.LOG_DEBUG)
				domoticz.openURL({
					url = url,
					method = 'POST',
					headers =  { ['Content-Type'] = 'application/x-www-form-urlencoded',
								['Authorization'] = 'Basic '..cleAPI},
					
					callback = scriptName..'at',
				})
			else
				domoticz.log('access_token age: '..domoticz.data.access_token.get(1).time.secondsAgo, domoticz.LOG_DEBUG)
				domoticz.log('access_token : '..domoticz.data.access_token.get(1).data, domoticz.LOG_DEBUG)
				--local url = "https://digital.iservices.rte-france.com/open_api/ecowatt/v4/sandbox/signals"
				local url = "https://digital.iservices.rte-france.com/open_api/ecowatt/v4/signals"
				domoticz.log('Requesting data from RTE', domoticz.LOG_DEBUG)
				domoticz.openURL({
					url = url,
					method = 'GET',
					headers =  { ['Content-Type'] = 'application/soap+xml;charset=UTF-8',
								['Authorization'] = 'Bearer '..domoticz.data.access_token.get(1).data},
					
					callback = scriptName,
				})
			end
			
			
		end

		if not item.isHTTPResponse then return end

		local response = item
		if response.trigger == scriptName..'at' then
			local contents = response.json
			domoticz.data.access_token.add(contents.access_token)
			domoticz.log('access_token : '..domoticz.data.access_token.getLatest().data, domoticz.LOG_DEBUG)
			
		elseif response.trigger == scriptName then
			domoticz.log(response.data, domoticz.LOG_DEBUG)
			local contents = response.json.signals
			
			domoticz.log("jour : "..contents[1].jour )
			domoticz.log("dvalue : "..contents[1].dvalue.." message : "..contents[1].message)

			if contents[1].dvalue == 1 then
				domoticz.devices(AlertEcoWatt).updateAlertSensor(domoticz.ALERTLEVEL_GREEN, contents[1].message)
			elseif contents[1].dvalue == 2 then
				domoticz.devices(AlertEcoWatt).updateAlertSensor(domoticz.ALERTLEVEL_ORANGE, contents[1].message)
			elseif contents[1].dvalue == 3 then
				domoticz.devices(AlertEcoWatt).updateAlertSensor(domoticz.ALERTLEVEL_RED, contents[1].message)
			else
				domoticz.devices(AlertEcoWatt).updateAlertSensor(domoticz.ALERTLEVEL_GREY, contents[1].message)
			end
		

			if AlertEcoWatt2 then
				domoticz.log("jour2 : "..contents[2].jour )
				domoticz.log("dvalue : "..contents[2].dvalue.." message : "..contents[2].message)
				if contents[2].dvalue == 1 then
					domoticz.devices(AlertEcoWatt2).updateAlertSensor(domoticz.ALERTLEVEL_GREEN, contents[2].message)
				elseif contents[2].dvalue == 2 then
					domoticz.devices(AlertEcoWatt2).updateAlertSensor(domoticz.ALERTLEVEL_ORANGE, contents[2].message)
				elseif contents[2].dvalue == 3 then
					domoticz.devices(AlertEcoWatt2).updateAlertSensor(domoticz.ALERTLEVEL_RED, contents[2].message)
				else
					domoticz.devices(AlertEcoWatt2).updateAlertSensor(domoticz.ALERTLEVEL_GREY, contents[2].message)
				end
			end
		

		
		elseif (not response.ok) or (response.trigger ~= scriptName) then
			domoticz.log('Last http response was not what expected. Trigger: '..response.trigger, domoticz.LOG_ERROR)
			domoticz.log(response.data, domoticz.LOG_ERROR)
			return
		

		end
		
	end
}
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?

lost
Messages : 734
Enregistré le : 12 nov. 2016, 11:01

Re: API ecowatt RTE

Message par lost »

Neutrino a écrit : 15 sept. 2022, 20:59 Pour faire simple, rien n'est simple.
Pas de fonctionnement par région.
Pour un truc qui pourrait fonctionner en open, bah non.
Faire cette usine à gaz côté RTE est-il vu comme un moyen d'aider l'ex-GDF/Engie à faire le plein? :lol:

Obliger les gens à ouvrir un compte et subir un mode d'authentification cornecul pour obtenir une info globale/non nominative que l'on voudrait diffusée le plus largement possible, c'est en effet un sacré succès prévisible!

Il parait urgent d'attendre qu'un certain réalisme arrive devant l'inutilisation du machin.

Ou alors c'est volontaire: Depuis qq mois, on assiste quand même à un truc assez inédit avec le secteur de l'énergie faisant une sorte d'éducation canine brutale de nos dirigeants (i.e: Leur mettre le nez dans leur caca). En juin le trio EDF/Total/Engie s'y était mis. Là EDF a visiblement fait dans l'excès de zêle sur les pb de corrosion/soudure alors que l'ASN disait que cela pouvait être repoussé/étalé de qq mois... Et désormais, RTE sabote littéralement le plan d'information gouvernemental afin d'aider les consommateurs à lisser les pics!

La volonté parait claire de démontrer que le renouvelable imposant de piloter le réseau côté consommation plutôt que, comme cela a toujours été le cas, côté production va au crash...

JulienP
Messages : 1
Enregistré le : 21 sept. 2022, 14:31

Re: API ecowatt RTE

Message par JulienP »

Neutrino a écrit : 20 sept. 2022, 23:37 Pour commencer à vous amuser ;)
C'est pas fini, pas commenté, en cours de débug et pas nettoyé, mais ça fonctionne :mrgreen:
Bonjour et merci pour cette 1ere version du script !
Ca fonctionne chez moi.

Chrominator
Messages : 830
Enregistré le : 19 déc. 2015, 07:29
Localisation : France

Re: API ecowatt RTE

Message par Chrominator »

Super, merci Neutrino :)
Fichiers joints
Screenshot 2022-09-22 at 14-40-51 Domoticz.png
Screenshot 2022-09-22 at 14-40-51 Domoticz.png (8.4 Kio) Vu 96 fois
Partir, c’est pourrir un pneu.

Ubuntu 20.04.4 LTS - Domoticz v2022.1
sur Pentium G3220T 2.60GHz - 4Go DDR3
rfxcom RFXtrx433 USB Version: Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway with LAN interface 48.4

38_mike
Messages : 6
Enregistré le : 16 mars 2019, 01:02
Localisation : Près de Grenoble

Re: API ecowatt RTE

Message par 38_mike »

Bonjour,

je suis aussi dessus (comprenez : je sue aussi dessus ...)
L'API a été rendue accessible début septembre, et a déjà changé une fois la semaine dernière : les jours n'étaient pas donnés dans le bon ordre (J+3,J+2,J,J+1. Maintenant, c'est OK (J,J+1,J+2,J+3).

Une fois le cirque "demande token puis récup signal" (signal : c'est comme cela que les infos sont appelées) terminé, il reste ensuite à faire un joli parse du fichier récupéré, effectivement différent du fichier test de la sandbox.

Le fichier est en 1 seule ligne et format compliqué.
Mon but : récupérer les infos heure par heure du jour courant dans une variable et les infos globales (vert/jaune/rouge et textes associés) de jour/jour+1/jour+2/jour+3 dans une ou plusieurs autres variables.

Mon idée derrière :
1/ il est x heure, la situation est tendue, je vais attendre pour lancer le chauffe-eau électrique, ou bien j'allège le chauffage
2/ demain, c'est rouge, après-demain, c'est jaune : j'attends une journée (si je peux...) pour lancer les lessives
Le 1/ est piloté par Domoticz, le 2/ est humain

Je vous tiens au courant
> RPi3 B+, SSD, Raspbian 9.6, Domoticz 2020.2
> LAN + RFLink r48
> Capteurs et relais (pilote radiat.) commerce (rf433) et home made ou Sonoff (WiFi)

Répondre