Aller au contenu

Quick App - GCE Electronics IPX800 v4 et EcoDevice RT2


Lazer

Messages recommandés

QuickApp

GCE Electronics

IPX800 v4 - EcoDevice RT2

Version 1.20

 

Présentation :

 

Ce QuickApp permet de piloter les 2 produits suivants du fabricant français GCE Electronics :

 

  • IPX800 v4

    Screenshot-HC3-QuickApp-GCE-IPX800v4-Modules.thumb.png.5b21db07d2e3e5e41db1e8add6dfe6f4.png
     
  • EcoDevice RT2

    Screenshot-HC3-QuickApp-GCE-EDRT2-Modules.png.98654535dab2210cbb285936ca8de35b.png

 

 

Remarques :

 

  • Un même QuickApp ne peut pas piloter 2 produits différents, il faut donc importer 2 fois le QuickApp pour piloter un IPX800v4 et un EDRT2 (ou bien 2 IPX800v4 distincts)
  • Un seul QuickApp peut piloter un IPX800v4 ou un EDRT2 avec toutes leurs extensions branchées derrière (cependant toutes les extensions ne sont pas encore supportées dans la version actuelle)
  • C'est un QuickApp assez complexe, qui permet de piloter des appareils assez complexes (l'IPX800 à lui tout seul est presque une box domotique), avec de très nombreuses possibilités de configuration. Tout n'est pas encore supporté, et il peut subsister des bugs...

 

 

Installation du QuickApp :

 

Importer le QuickApp (fichier fqa) de façon habituelle sur la box Home Center 3, puis changer les paramètres suivants dans l'onglet Variables :

 

Screenshot-HC3-QuickApp-GCE-IPX800v4-EDRT2-Variables.png.cbff1d75b896ac3c1e17fdbc4d46fb3b.png

 

  • Protocol : protocole à utiliser, normalement : http (le mode direct sur socket TCP n'est pas encore disponible)
  • Address : adresse IP du NAS, par exemple : 192.168.1.1
  • Port : port de communication, normalement : 80
  • API_Key : clé API configurée, par exemple : apikey
  • Refresh : intervalle de rafraichissement des informations en secondes, par exemple : 60 (il n'est pas forcément judicieux de baisser cette valeur, car la suite du tuto explique comment configurer la remontée instantanée des changements d'état en mode push)

 


Configuration du QuickApp :

 

C'est la partie la plus complexe, car il faut associer chaque module enfant à créer dans la HC3 avec les différentes entrées/sorties de l'appareil IPX800/EDRT.

Chaque module enfant prendra donc la valeur (propriété value) correspondant à l'état de l'entrée/sortie physique ou virtuelle, qu'elle soit analogique ou numérique (improprement appelé digital, terme anglais, dans la doc officielle)

En complément, si l'on dispose de pinces ampèremétriques (tores), on peut ajouter la mesure de puissance en Watts (propriété power) et de consommation en kWh (propriété energy) sur chaque module enfant concerné. Très pratique pour toutes les sorties de type relai.

 

Ne modifier que le contenu du fichier config :

 

Screenshot-HC3-QuickApp-GCE-IPX800v4-EDRT2-Config.thumb.png.b19610b9e7911f9944350fa4c6243ec6.png

 

CONFIG       : obligatoire : table    : Tableau contenant toute la configuration des modules enfants à créer avec leur association aux différentes entrées sorties de l'IP800 v4 ou EcoDevice RT2
 

  device     : obligatoire : table    : Déclaration du module enfant à créer
    name     : obligatoire : string   : Nom du module enfant
    type     : obligatoire : string   : Type du module enfant parmi les valeurs suivantes : BinarySensor | MotionSensor | DoorSensor | WindowSensor | GateSensor | RainDetector | TemperatureSensor | HumiditySensor | LightSensor | MultilevelSensor | PowerSensor |
PowerMeter | BinarySwitch | LightSwitch | EnergyMeter | WaterCounter | GazCounter | RollerShutter | FilPilote | Teleinfo
    unit     : facultatif  : string   : Unité de mesure du module

    options  : facultatif  : table    : Options spécifiques pour Teleinfo sur EDRT2
 

  value      : obligatoire : table    : Définition de l'entrée sortie sur l'appareil GCE IPX800 v4 ou EDRT2
    command  : obligatoire : string   : Commande de l'API, parmi les valeurs suivantes : Get | Index
 | DIndex | Price | DPrice
    argument : obligatoire : string   : Argument de l'API, parmi les valeurs suivantes : A | VA | C | D | VI | PW | R | VO | VR | S | P | T | XTHL | XENO | TI | FP
    pin      : obligatoire : string   : Nom exact du port d'entrée/sortie retourné par l'API, par exemple "R1", "A2", "D3", "C4", "VR1-2", ...
    type     : facultatif  : string   : Type du capteur prédéfini parmi les valeurs suivantes (applicable aux entrées analogiques) : "SHT-X3-Temp-TC5050" | "SHT-X3-SH100" | "SHT-X3-Light-LS100"
 | "TC100" | "X400-TC100" | "XTHL-Temp" | "XTHL-Hum" | "XTHL-Light"
    formula  : facultatif  : function : Fonction permettant de calculer la valeur finale, typiquement pour les capteurs analogiques non prédéfinis par leur type, ou bien pour inverser l'état d'une valeur binaire
 

  power      : facultatif  : table    : Définition d'une entrée de comptage (tore) permettant d'ajouter la mesure de puissance (en Watts) au module enfant
    command  : obligatoire : string   : Commande de l'API, par exemple "Get"
    argument : obligatoire : string   : Argument de l'API, par exemple "VA", "S", ...
    pin      : obligatoire : string   : Nom exact du port d'entrée retourné par l'API, par exemple "VA17", "P1_SSP1", ...
    type     : facultatif  : string   : Type du capteur prédéfini parmi les valeurs suivantes : "X400-CT-10A" | "X400-CT-20A" | "X400-CT-50A" | "X400-CT-100A"
    formula  : facultatif  : function : Fonction permettant de calculer la valeur finale, typiquement pour les capteurs analogiques non prédéfinis par leur type

 

  energy     : facultatif  : table    : Définition d'une entrée de comptage (tore) permettant d'ajouter la mesure d'énergie (en kWh) au module enfant
    command  : obligatoire : string   : Commande de l'API, par exemple "Get"
    argument : obligatoire : string   : Argument de l'API, par exemple "C", ...
    pin      : obligatoire : string   : Nom exact du port d'entrée retourné par l'API, par exemple "C1", ...
    formula  : facultatif  : function :
Fonction permettant de calculer la valeur finale, typiquement pour convertir les Wh en kWh

 

 

Pour explorer les noms des entrées/sorties disponibles (pin), se référer à la documentation officielle du Wiki GCE :

 

 

Cas particulier : la Téléinfo sur l'EcoDevice.

Ce module enfant est de type com.fibaro.energyMeter, et permet de remonter les 2 informations suivantes : puissance active (W) dans la propriété value, et énergie (kWh) dans la propriété energy (cette dernière propriété contient la somme de tous les index des différentes tranches horaires de l'abonnement en cours). Cependant il ne faut pas spécifier power et energy dans la ligne de configuration.

La syntaxe comme donnée en exemple est correcte, en spécifiant pin = "EAST" (Energie Active Soutirée Totale) :

{device = {name = "Téléinfo", type = "Teleinfo", options = {VG = "TELEINFO_Tarif"}}, value = {command = "Get", argument = "TI", pin = "EAST"}},

Note : cette ligne de configuration doit être recopiée telle quelle, quel que soit le mode de la téléinformation (standard/historique) ou le contrat d'abonnement (Base, HC/HP, Tempo, EJP, etc.).

 

Remarquez également le paramètre VG qui permet de stocker le tarif en cours (HC/HP) dans une variable globale, information qui peut être utilisée dans des scénarios. Celle-ci est créée automatiquement :

Screenshot-HC3-QuickApp-GCE-EDRT2-Global-Variable-Teleinfo.png.71ed4f68ac5663787de751b4de96fffc.png

 


Si vous disposez d'un compteur Linky en mode Standard, avec des panneaux photovoltaïques, il est également possible de récupérer l'injection, en spécifiant pin = "EAIT" (Energie Active Injectée Totale) :

{device = {name = "Injection", type = "Teleinfo"}, value = {command = "Get", argument = "TI", pin = "EAIT"}},

 

 

Création des modules enfants :

 

  • Cliquer sur le bouton "Create Devices". Les modules enfants sont automatiquement créés dans l'interface. 
  • Les appuis suivants sont inutiles, et sans danger, car les modules enfants ne seront pas créés plusieurs fois.

 

Screenshot-HC3-QuickApp-GCE-IPX800v4-EDRT2-View.png.162cc48305324e19e142b2a8ae0715d7.png

 

 

Configuration des événements Push :

 

Cette étape est facultative.

Les événement Push permettant de remonter instantanément le changement d'état d'une entrée/sortie sans attendre au maximum 60 seconde que le QuickApp ne relise de lui-même la nouvelle valeur.L'idée est d'appeler la fonction push() de chaque module enfant identifié par son ID, en lui passant en argument la nouvelle valeur.

 

Exemples de configuration sur IPX800 v4 :

 

  • Pour un relai, ou de façon plus générale toutes les entrée/sortie de type numérique, c'est à dire prenant 2 valeurs binaires (ouvert/fermé, on/off, ...)

 

Dans la configuration des Périphériques, créer un Push :

Entrer les informations suivantes :

- Adresse IP de la HC3

- utilisateur et mot de passe (il est formellement déconseiller d'utiliser le compte admin, il faut créer un compte dédié sur la HC3 avec les droits d'accès uniquement aux modules enfants créés par le QuickApp)

- URL ON : /api/callAction?deviceID=93&name=push&arg1=1

- URL OFF : /api/callAction?deviceID=93&name=push&arg1=0

Remplacer uniquement l'ID par celui de votre module enfant. Notez sur seul la valeur de l'argument change entre ces 2 URL.

Screenshot-IPX800v4-Push-HC3-Value.png.61e8745252919c1250553934e0cc683d.png

 

Dans les Scénarios, créer une nouvelle Scène, avec une action ON/OFF :

Screenshot-IPX800v4-Scene-Value.png.c94e66e115ffcb636d76202d92cc7b7e.png

 

Choisir le relai qui déclenche l'événement :

Screenshot-IPX800v4-Scene-Relais.png.38fdd124e92a31f7cde469a45f73b234.png

 

Choisir le Push créé précédemment :

Screenshot-IPX800v4-Scene-Push-Value.png.e6349fb7e212c6afcb34b2a0cf025f68.png

 

Tester le bon fonctionnement.

Le changement d'état de l'entrée/sortie sur l'IPX800 doit être répercuté immédiatement dans la box HC3, que ça soit sur l'interface Web ou bien l'application mobile.

De plus, la zone de debug du QuickApp doit faire apparaitre un message similaire :

[11.01.2021] [21:38:20] [DEBUG] [QA_IPX800_46]: onAction: {"args":[1],"deviceId":93,"actionName":"push"}
[11.01.2021] [21:38:20] [TRACE] [QA_IPX800_46]: Digital Output R1 #93 Néon établi R1 value changed from false to true

 

 

  • Pince ampèremétrique, ou de façon générale toute entrée analogique (la pince ampèremétrique branchée sur l'extension X400-CT est un cas particulier qui est reconnue comme une entrée analogique virtuelle)

Les URL à saisir sont un peu plus particulières, car on va passer 2 arguments : la valeur proprement dite de l'entrée analogique, ainsi que l'attribut "power" :

- URL ON : /api/callAction?deviceID=93&name=push&arg1=$VA17&arg2=power

- URL OFF : /api/callAction?deviceID=93&name=push&arg1=$VA17&arg2=power

Cette fois-ci les 2 URL sont identiques, il faut juste remplacer l'ID et l'identifiant de l'entrée analogique

Screenshot-IPX800v4-Push-HC3-Power.png.878cf8987c661626ed974b9a61fdb396.png

 

Dans les Scénarios, créer une nouvelle Scène, avec une action ON/OFF :

Screenshot-IPX800v4-Scene-Power.png.1c8c2a9063f5272d07228d7e9ddfbba9.png

 

Choisir l'entrée analogique, avec les 2 seuils haut et bas qui déclenchent l'événement :

Screenshot-IPX800v4-Scene-Analogique.png.a3f313e17979eda05846ee988e9bd37d.png

 

Choisir le Push créé précédemment :

Screenshot-IPX800v4-Scene-Push-Power.png.752c339b6170fb587d1172da8d1d0df9.png

 

Tester le bon fonctionnement.

Par exemple en couplant un Push pour le changement d'état du relai comme décrit plus haut, et un push pour le passage de la consommation au dessus du seuil (47 W dans mon exemple), le log affiche les 2 événements qui s'enchainent instantanément :

[11.01.2021] [21:38:20] [DEBUG] [QA_IPX800_46]: onAction: {"args":[1],"deviceId":93,"actionName":"push"}

[11.01.2021] [21:38:20] [TRACE] [QA_IPX800_46]: Digital Output R1 #93 Néon établi R1 value changed from false to true

[11.01.2021] [21:38:21] [DEBUG] [QA_IPX800_46]: onAction: {"args":[558,"power"],"deviceId":93,"actionName":"push"}

[11.01.2021] [21:38:21] [TRACE] [QA_IPX800_46]: Digital Output R1 #93 Néon établi R1 power changed from 0.0 to 192.0

 

 

Graphiques Téléinfo sur NAS :

 

Teaser :D

 

Screenshot-Graphiques-Teleinfo.thumb.png.21848644e373632ef15292b6bffef211.png

 

 

Changelog :

 

  • v1.00 : Janvier 2021
    • Version initiale
  • v1.10 : Mars 2021
    • [IPX800] Correction de l'inversion des volets roulants
    • [IPX800] Ajout des formules pour la sonde TC-100 (capteur de température)
    • [IPX800/EDRT2] Ajout du support de l'extension X-THL (sonde de température/humidité/luminosité)
    • [IPX800/EDRT2] Ajout du support de l'extension X-4FP (fil pilote)
    • [EDRT2] Ajout du support des abonnements TEMPO et EJP
    • [EDRT2] Ajout du support du compteur Linky en mode téléinfo standard
    • [EDRT2] Ajout du support des commandes "DIndex", "Price" et "DPrice"

  • v1.20 : Janvier 2022

    • Lorsque le QuickApp parent est désactivé (disabled), les enfants sont également désactivés automatiquement, et un message figure sous l’icône (log) => et donc exclus de DomoCharts

    • Amélioration de l'état de nœud mort (dead) lors d'un problème de communication réseau

    • Le QuickApp répond aux sollicitations de réveil (wakeUpDeadDevice)

    • Ajout des nouveaux types EnergyMeter (com.fibaro.energyMeter) et PowerMeter (com.fibaro.powerMeter)

    • Le type PowerSensor (com.fibaro.powerSensor) est déprécié par Fibaro et ne devrait plut être utilisé (mais il est toujours fonctionnel, comportement identique au nouveau type PowerMeter)

    • Le type Teleinfo est maintenant de type "com.fibaro.energyMeter" afin d'être configurable comme Compteur d’énergie principal dans les paramètres de la HC3

    • Le type Teleinfo ne remonte plus la puissance apparence (en VA) dans sa propriété value (de toute façon c'était une information peu utile)

    • Le type Teleinfo remonte l'index d'énergie (en kWh) dans sa propriété "value", et la puissance active (en W) dans sa propriété "power".

    • Le type Teleinfo supporte l'injection dans le cas où le compteur Linky est paramétré en mode Standard

    • Correctifs et améliorations divers ^_^

 

 

Téléchargement :

 

  • Nouvelle installation : importer le fichier suivant pour créer un nouveau QuickApp :

 

 

Modifié par Lazer
  • Like 8
Lien vers le commentaire
Partager sur d’autres sites

Hello ,

 

tout d’abord merci pour ce tuto que j'attendais avec impatience,par contre j'ai une question bête ayant aucune connaissance sur la hc3 et les produits fibaro en général.

 

je vois pas comment modifier la partie configuration de l'appareil .

 

j' ai cette écran :

 

merci pour votre aide .

Capture hc.PNG

Lien vers le commentaire
Partager sur d’autres sites

Non, là tu n'as clairement pas édité le bon QuickApp (cela doit être l'un des tiens)

 

Il faut importer le fichier fqa du tuto (d'ailleurs je viens de le renommer, il portait la mauvaise extension json, merci au lecteur de l'ombre qui se reconnaitra pour me l'avoir signalé ;))

Et c'est ce QuickApp qu'il faudra modifier, et uniquement le fichier config (pas le main) comme indiqué dans la capture d'écran du tuto.

 

PS : si tu débutes, tu n'as pas choisi le QuickApp le plus simple... bon courage !!

Lien vers le commentaire
Partager sur d’autres sites

Théoriquement oui (utiliser argument = "VR"), mais je n'ai pas pu tester car je ne dispose pas de cette extension.... donc je compte sur toi pour me faire un retour.

Si ça ne fonctionne pas, il faudra copier/coller l'extrait du debug affiché.

Lien vers le commentaire
Partager sur d’autres sites

J'ai ajouté dans le tuto le paragraphe pour la création des événement Push.
Cette étape est facultative, mais elle permet de remonter instantanément les changements d'états des entrées sorties sans attendre que la boucle infinie du QuickApp ne mette à jour la valeur des modules.

Indispensable si vous avez des détecteurs d'ouverture ou de mouvement branchés sur les entrées de l'IPX800.

Utile pour tout ce qui est lumière, etc.

 

Au final, l'intégration des modules de l'IP800 dans l'interface de la HC3 est tout à fait similaire à celle des modules Z-Wave, impossible à l'usage de voir la différence.

Très confortable via l'application mobile.

Lien vers le commentaire
Partager sur d’autres sites

Super boulot.

Pour le TEMPO, le tarif en cours remonte bien sur la VG.

Au niveau du child TéléInfo, la puissance apparente en V.A. remonte bien, mais pas la puissance en Wh/h.

Pour cela, j'ai modifié la ligne 733 du fichier GCE par celle-ci :

 

 

 local energykWh = ((tonumber(response.BASE) or 0) + (tonumber(response.HCHP) or 0) + (tonumber(response.HCHC) or 0) + (tonumber(response.BBRHPJB) or 0) + (tonumber(response.BBRHCJB) or 0) + (tonumber(response.BBRHPJW) or 0) + (tonumber(response.BBRHCJW) or 0) + (tonumber(response.BBRHPJR) or 0) + (tonumber(response.BBRHCJR) or 0 ) + (tonumber(response.EJPHN) or 0 ) + (tonumber(response.EJPHPM) or 0 )) / 1000

 

Pour tenir compte de TEMPO voire EJP.

 

Pour les FP, ce qui serait bien, c'est de pouvoir faire un bête ON/OFF (donc Confort/Arrêt) sur un binary Switch, quand  les radiateurs sont pilotés par un thermostat externe (ou QA Heating Manager à venir :)) ou les 6 ordres.

Ce qui est dommage, c'est que l'API GCE ne place pas les ordres FP dans l'ordre ( 0 pour confort, 1 pour Eco, 2 pour Hors Gel, 3 pour Arrêt, 4 pour Confort -1 et 5 pour Confort -2 ), il faudra donc un bout de code si l'on veut le même comportement que les Qubino.

Est il possible d'ajouter des boutons sur les childs   ? Il me semble que non pour le moment.

 

Lien vers le commentaire
Partager sur d’autres sites

Effectivement, merci pour la suggestion, j'apporterai cette modification du calcul du kWh dans la prochaine version.

 

En ce qui concerne les FP, je pense plutôt que je vais faire exactement comme les Qubino.

C'est à dire créer un child de type multilevelswitch (un dimmer quoi) ce qui permettra de piloter les 6 ordres.

J'ai déjà remarqué dans la doc que les ordres sont inversés, ce n'est pas très logique, mais pas un souci. Je vais me charger de transcrire chaque numéro d'ordre vers une valeur du multilevel de 0 à 99 afin de correspondre à ce que fait le Qubino.

 

De cette façon, ça sera générique et identique à l'intégration native d'un module Z-Wave.

 

Ensuite, libre à chacun d'utiliser un QuickApp externe identique à ce qu'on fait pour les Qubino (d'ailleurs je pense que ça devrait être le même QuickApp), qui va permettra d'afficher 6 boutons avec les icônes associées, ou bien encore de type thermostat pour ceux qui veulent faire de la régulation depuis la box. Ou même un binary switch pour ceux qui veulent juste faire du Confort/Arrêt.

 

Et non, pas possible en standard de personnaliser l'apparence des modules enfants...

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Autre question, je quelques tores connectés au RT pour mesurer la conso sur les grands postes (Chauffage, ECS et bientôt PAC). J'ai donc créé la config suivante pour tester.

 

 {device = {name = "Pince Chauffage"    , type = "EnergyMeter"     }, value = {command = "Index", argument = "T" , pin = "Index_TORE_Cons1", type = "X400-CT-100A"}},
 {device = {name = "Pince ECS"     , type = "PowerSensor"     }, value = {command = "Index", argument = "T" , pin = "Index_TORE_Dist2", type = "X400-CT-50A"}},

 

Avec les 2 types pour voir la différence.

 

Les enfants sont bien là:

image.png.ff574874a9f626c7045a7d5cee8d71ae.png

 

Pas d'affichage sur la pince Chauffage, normal, mais le swagger indique que "Value" contient bien l'index.

Par contre, sur le pince ECS, je ne sais d'ou vient la valeur (en VA convertie??)  et pas d'affichage en W.

La requête Index=T donne

image.png.f0835feea7767ac85d3d0ff79a8c5822.png

 

Je dois inverser le sens du tore 2 (car je suis en Dist), mais au delà de cela, l'absence de conso est W est normale ou pas ?

 

Merci !

 

 

Lien vers le commentaire
Partager sur d’autres sites

Tu utilises un EDRT2, et les types prédéfinis X400-CT-xxA sont pour les pinces de l'IPX800 (car elles sont assimilables à des entrées analogique virtuelles, donc retourne la valeur brute du convertisseur ADC, c'est pour cela qu'il faut appliquer une formule de calcul)

Sur EDRT2 tu n'as pas besoin, car celui-ci présente déjà la bonne valeur.

Car si tu appliques une formule sur la valeur, ça te sort un résultat délirant.

 

Par ailleurs, quand tu vas chercher Index, tu n'obtiendras pas une puissance, mais un index (une énergie donc)

Le seul moyen que j'ai trouvé pour lire les puissances instantanées (en W) des pinces sur EDRT2, c'est de les associer à des sous-postes, et d'aller lire leur valeur avec Get=S

Tu peux t'inspirer de la ligne de config que j'ai donné en exemple pour attribuer la puissance à la propriété value de ton enfant PowerSensor :

{device = {name = "Pince ECS", type = "PowerSensor"}, value = {command = "Get", argument = "S" , pin = "P1_SSP1"}},

 

Lien vers le commentaire
Partager sur d’autres sites

l’extension X4VR fonctionne parfaitement il ya même une commande slider  pour régler l'ouverture et la fermeture au pourcentage qu'on veut mais je viens de remarquer que les commandes sont inversés,le volets est fermé physiquement mais sur la hc3 il est ouvert. le bouton ouvrir  ferme le volet et fermer et il l'ouvre.

 

j'ai pas encore configurer les push pour le retour d’état  par manque de temps ,j'ai juste baisser le refresh a 1 au lieu de 60 et ça fonctionne bien, j'ai des retours d’états instantanés .

Capture11.PNG.3c85db1763018b64d83f8087793eeb4c.PNG

je te remercie encore pour ce magnifique quickapp.

Modifié par Elguayam
Lien vers le commentaire
Partager sur d’autres sites

Cool merci pour le retour :)

 

Refresh à 1 seconde, tu es joueur toi, entre la charge sur la HC3, et plus encore sur l'IPX800 en fasse, c'est pas idéal.... la doc de GCE mentionne qu'il faut éviter de l'interroger trop souvent. Et j'ai déjà constaté quelques ralentissement sur mon IPX800 justement quand je fais trop d'interrogations dessus.

Tu nous diras si ça tient bien la charge à la longue.

Lien vers le commentaire
Partager sur d’autres sites

je ne sais pas si t'as vu mon message au dessus, je l'ai édité .

je viens de remarquer que les commandes sont inversés,le volets est fermé physiquement mais sur la hc3 il est ouvert. le bouton ouvrir  ferme le volet et fermer et il l'ouvre.

 

t'as une idée  d’où çà peut venir .

Lien vers le commentaire
Partager sur d’autres sites

Le bouton stop c'est normal, je ne l'ai pas implémenté, parce qu'à ma connaissance GCE ne propose pas d'API pour faire le stop sur les volets.

Donc il faut choisir le % d'ouverture avec le curseur via l'interface (ou programmatiquement dans tes scénarios)

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...