J3R3M Posté(e) le 8 août 2018 Signaler Posté(e) le 8 août 2018 Bonjour à tous, Jusqu'à peu, j'utilisais uniquement des requêtes fing (ping) pour détecter les différents téléphones de mon téléphone et ainsi en déduire la présence de quelqu'un ou non à mon domicile. Seulement, ce n'était pas assez fiable et j'ai décidé de combiner cette solution à la Netatmo Welcome. Après quelques recherches, je suis tombé sur ce topic du site Siio (également et heureusement disponible en anglais ici). C'est exactement ce que je recherchais! Seulement, je l'ai modifié pour qu'il soit plus simple à à mettre en place et à utiliser au quotidien. Ainsi, il n'y a rien à faire à part modifier les variables vous concernant. Pour utiliser le script original, il faut créer deux Variables Globales par personne identifiée dans la base de données de la Welcome, ce que je ne trouve pas très ergonomique et lourd. Je précise qu'une très grande partie du script provient du lien précédent et je ne cherche pas à tirer la gloire de l'auteur original (BOOMX) de celui-ci malgré mes modifications. Je l'ai modifiée comme je le souhaitais et ai traduit les debugs. J'espère que cette scène vous sera utile et suis disponible pour répondre à vos éventuelles questions! Exemple d'utilisation Pour savoir si quelqu'un est présent d'après la Netatmo Welcome, il suffit d'utiliser un code comme-ci dans vos scènes et VD : local pseudo = "Jérémy"; local VGNetatmo = "NETATMO_Welcome"; local table = json.decode(fibaro:getGlobalValue(VGNetatmo)); local presence = tonumber(table[pseudo].status); if presence == 1 then fibaro:debug(pseudo.." est présent."); else fibaro:debug(pseudo.." est absent."); end Réglages de la Scène Netatmo Welcome Toutes les variables permettant de régler la scène sont au début de celle-ci. Après avoir saisi les bonnes informations, enregistrez et démarrez la scène manuellement. La scène est fonctionnelle ! NB : Ces paramètres étant envoyés via une requête HTTP, merci d'encoder les caractères spéciaux. Pour rappel : @ = %40 -- Informations de compte Netatmo local client_id = 'Client_id'; local client_secret = 'Client_secret'; local username = 'Netatmo_username'; local password = 'Netatmo_pass'; -- Informations du VD associé local vd_ID = 304; -- ID du VD associé local vd_refresh = 9; -- ID du bouton refresh du VD. 9 Par défaut -- Réglages de la scène local refresh = 10; -- Script executé toutes les x secondes. Pas moins de 8s! local debug = 0; -- Faut-il vraiment l'expliquer ? -- Nom de la Variable Globale qui sera créée et utilisée par la scène et le VD local VGNetatmo = "NETATMO_Welcome"; Trouver ses Client ID & Client Secret Pour obtenir vos client_id et client_secret, rendez-vous sur dev.netatmo.com et connectez-vous. Cliquez sur CREATE YOUR APP et remplissez rapidement le formulaire. Les informations saisies importent peu! Une fois que vous aurez validé en cliquant sur le bouton SAVE, d'autres fenêtres apparaîtront en-dessous. Celle qui nous intéresse et celle juste en-dessous. En effet, les informations Client id et Client secret sont dans la section Technical Parameters. Faites un copier/coller de ces informations dans les variables correspondantes et le tour est joué! J'ai tellement ramé à les trouver que je me devais de vous dire où ces informations étaient dissimulées! Limitations de l'API Netatmo En ce qui concerne la variable refresh, il s'agit du délai entre chaque mise à jour des informations par la scène. L'auteur explique très bien pourquoi il ne faut pas descendre en dessous des 8 secondes et je vais me contenter de traduire son explication. Citation Malheureusement, il y a une restriction de l'API. "Seulement" 2000 requêtes par heure peuvent être exécutées. Cela signifie que la scène peut uniquement être exécutée toutes les 4 secondes (60mn * 60s = 3600 secondes / 4 secondes de pause = 900 appels *2 = 1800 appels; la scène effectue deux appels API par exécution). Cependant, les tests effectués ont montré qu'un réglage de 4 secondes menait souvent à une erreur et rien n'était retourné par l'API. Le compte pour les appels API était bloqué. Les tests effectués avec un réglage à 8 secondes ont donné de bons résultats. Dans le cas où vous auriez d'autres appareils connectés Netatmo sur votre compte Netatmo, merci de ne pas oublier que la Station Météo génère également des appels de l'API via le Plugin Fibaro ou lorsque vous utilisez le script "anemometer-script", des appels de l'API s'ajoutent également à ceux de cette scène. VD Netatmo Welcome Pour personnaliser celui-ci, rendez-vous au début du code du bouton refresh : -- Les pseudos doivent être exactement les mêmes que dans l'application Netatmo, séparés par une virgule local pseudos = {"Jérémy","Emilie","Maman"}; -- Nombre de personnes à afficher dans le VD -- Si modification, conserver la même structure de VD ! -- Et penser à modifier la variable "vd_refresh" de la scène Netatmo local NbPersonnes = 3; -- Variable Globale local VGNetatmo = "NETATMO_Welcome"; Si vous souhaitez conserver seulement les informations de 3 personnes, il vous suffit de modifier uniquement les valeurs de la variable pseudos. Attention, les pseudos doivent être rigoureusement les mêmes que ceux enregistrés dans Netatmo! Si vous souhaitez afficher plus de 3 personnes, conservez obligatoirement la même structure du VD, c'est-à-dire en ajoutant 3 étiquettes dont les IDs seront incrémentés de +1 pour chaque nouvelle personne. Pour information, le VD d'origine est beaucoup moins optimisé puisque vous devez modifier tout le code du bouton pour qu'il soit fonctionnel. Scène Netatmo Welcome Une seule instance autorisée. Démarrage Automatique --[[ %% autostart --]] -- Informations de compte Netatmo local client_id = 'Client_id'; local client_secret = 'Client_secret'; local username = 'Netatmo_username'; local password = 'Netatmo_pass'; -- Informations du VD associé local vd_ID = 304; -- ID du VD associé local vd_refresh = 9; -- ID du bouton refresh du VD. 9 Par défaut -- Réglages de la scène local refresh = 10; -- Script executé toutes les x secondes. Pas moins de 8s! local debug = 0; -- Faut-il vraiment l'expliquer ? -- Nom de la Variable Globale qui sera créée et utilisée par la scène et le VD local VGNetatmo = "NETATMO_Welcome"; -------------------------------------------------------------- -------- Ne rien modifier à partir de cette ligne ------------ -------------------------------------------------------------- local token = ''; local request_body = ''; Debug = function (color, message) if (debug == 1) then fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")); elseif (debug == 0) then end end DebugChange = function (color, message) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")); end DebugError = function (color, message) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")); end fibaro:debug('Démarrage du script Netatmo welcome Integration v.1.0'); if (debug == 0) then fibaro:debug("Debug = 0. Seuls les messages d'information apparaîtront dans les logs."); else fibaro:debug('Debug = 1. Messages de Debug activés.'); end fibaro:debug('Cette scène sera executée toutes les ' ..refresh.. ' secondes.'); -- Début - Ajout pour gestion indépendante des VG function CreerVG(VGNom, VGValeur) local data = {name = VGNom, value=VGValeur}; response, status = api.post("/globalVariables", data); if (status == 201) then DebugError("white", "Variable Globale " .. VGNom .. " créée."); else DebugError("red", "Impossible de créer la Variable Globale " .. VGNom .. "!"); end end function MajEntree(Nom, Statut, Lastseen) local table = json.decode(fibaro:getGlobalValue(VGNetatmo)); -- Tout est à mettre à jour if Nom ~= nil and Statut ~= nil and Lastseen ~= nil then table[Nom] = {status=Statut, lastseen=Lastseen}; fibaro:setGlobal(VGNetatmo,json.encode(table)); DebugError("yellow", "L'entrée " .. Nom .. " a été automatiquement créée."); -- Mise à jour du Statut elseif Nom ~= nil and Statut ~= nil and Lastseen == nil then table[Nom].status = Statut; fibaro:setGlobal(VGNetatmo,json.encode(table)); Debug("yellow", "Le statut de " .. Nom .. " a été mis sur la valeur ".. Statut); -- Mise à jour de la dernière vue de la personne elseif Nom ~= nil and Statut == nil and Lastseen ~= nil then table[Nom].lastseen = Lastseen; fibaro:setGlobal(VGNetatmo,json.encode(table)); Debug("yellow", "L'information 'lastseen' de " .. Nom .. " a été mise sur la valeur ".. Lastseen); else DebugError("red", "Erreur lors de l'utilisation de la fonction MajEntree"); if Nom == nil then DebugError("white", "Champ 'Nom' vide !"); end if Statut == nil then DebugError("white", "Champ 'Statut' vide !"); end if Lastseen == nil then DebugError("white", "Champ 'Lastseen' vide !"); end end end if fibaro:getGlobalValue(VGNetatmo) == nil then CreerVG(VGNetatmo,json.encode({})); end -- Fin - Ajout pour gestion indépendante des VG function oAuth(nextFunction) local request_body = 'grant_type=password&client_id=' .. client_id .. '&client_secret=' .. client_secret .. '&username=' .. username .. '&password=' .. password .. '&scope=read_camera'; getResponseData('https://api.netatmo.net/oauth2/token', request_body, function(data) if (data.access_token ~= nil) then token = data.access_token gethomedata() else DebugError( "red", "Impossible de joindre l'API!"); end end ) setTimeout(oAuth, refresh*1000); end function getResponseData(url, body, func) local http = net.HTTPClient(); http:request(url, { options = { method = 'POST', headers = {['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'}, data = body, checkCertificate = false }, success = function(response); func(json.decode(response.data)); end }) end function gethomedata() request_body_cam = 'access_token=' ..token.. ''; getResponseData('https://api.netatmo.net/api/gethomedata', request_body_cam, function(getData) if (getData.body ~= nil) then for w, v in pairs(getData.body.homes) do for a, b in pairs(v.persons) do local INFOS = json.decode(fibaro:getGlobalValue(VGNetatmo)); if (b.pseudo ~= nil) then if (b.out_of_sight == false) then if INFOS[b.pseudo] ~= nil then MajEntree(b.pseudo,nil,b.last_seen); local change_var = tonumber(INFOS[b.pseudo].status); if (change_var == 0) then DebugChange("green", b.pseudo.. ' est présent.') MajEntree(b.pseudo,1,nil); else Debug("white", b.pseudo.. ' est toujours présent.'); end else Debug("red", "L'entrée pour " ..b.pseudo.. " de la table "..VGNetatmo.." n'éxiste pas."); MajEntree(b.pseudo,0,0); end else if INFOS[b.pseudo] ~= nil then MajEntree(b.pseudo,nil,b.last_seen); local change_var2 = tonumber(INFOS[b.pseudo].status); if (change_var2 == 1) then DebugChange( "orange", b.pseudo.. ' est absent.'); MajEntree(b.pseudo,0,nil); else Debug( "white", b.pseudo.. ' est toujours absent.'); end else Debug("red", "L'entrée pour " ..b.pseudo.. " de la table "..VGNetatmo.." n'éxiste pas."); MajEntree(b.pseudo,0,0); end end end end end else Debug("red", "Impossible de joindre l'API! Vérifier le taux de rafraichissemment!"); end if tonumber(vd_ID) ~= nil then fibaro:call(vd_ID, "pressButton", vd_refresh); end end ) end local sourceTrigger = fibaro:getSourceTrigger(); if (sourceTrigger["type"] == "autostart") then oAuth(); end Icones Téléchargement du VD Netatmo_Welcome.vfib 2
J3R3M Posté(e) le 9 août 2018 Auteur Signaler Posté(e) le 9 août 2018 Je viens de voir que le script original avait été évoqué sur ce sujet évoquant la Welcome lors de sa sortie. Je n'avais pas lu toutes les pages du fil avant de poster celui-ci...
pepite Posté(e) le 9 août 2018 Signaler Posté(e) le 9 août 2018 Bonsoir @J3R3M, Excellent et merci ;-) beaucoup. Voila une autre possibilité Netatmo ;-) 1
Lorenzo Posté(e) le 28 février 2019 Signaler Posté(e) le 28 février 2019 Bonsoir, j'avais y a plusieurs mois installés plusieurs camera sur ma ma HC2. Il m'en restait juste une à reinstaller. Mais il semble que Netatmo a change son API et ils(Netatmo) ne fournissent pas de support aux third party donc je fais appel à vous. J4ai vu que plus haut la correction pour permettre de recupérer le status. Ici mon probleme est de retrouver le VPNclient à placer pour recuperer les images de la camera cad le XXXXXXXXXXXXXXXXXXXXXXXXXXXX dans XXXXXXXXXXXXXXXXXXXXXXXXXXXX/live/snapshot_720.jpg Quelqu'un a une idée. je suppose que bcp ont le probleme depuis le changement de l'API mais on ne s'en doute pas tant que l'on ne dois pas retrvouer cette information. Comment puis je retrouver ce token XXXXXXXXXXXXXXXXXXXXXXXXXXXX ? :-(
J3R3M Posté(e) le 1 mars 2019 Auteur Signaler Posté(e) le 1 mars 2019 Salut @Lorenzo, À quelle erreur fais-tu face actuellement? Quel script utilises-tu?
Lorenzo Posté(e) le 1 mars 2019 Signaler Posté(e) le 1 mars 2019 Hello J3R3M,Au debut j avais as l erreur certificat failed pour lz script qui checque la presence des users/status lastseen.J ai donc remplace le script selon le topic "Netatmo Welcome". Cela a resolu le probleme.Maintenant, je veux ajouter une nouvelle camera netatmo et j ai essaye de modifier la fonction gethomedata. Pour obtenir le vpn_url qui permettra de deduire ce qu il faute mettre devant le lien pour le jpgJe syis finakement arrive a ne plus avoir d erreur mais aussi aucune adresse ip. En fait ke script ne voit plus aucune camera sur mon reseau.Suis a bout d idee.Envoyé de mon SM-N950F en utilisant Tapatalk
Lorenzo Posté(e) le 1 mars 2019 Signaler Posté(e) le 1 mars 2019 voila ce que j'ai comme message : il y a bien 4 cameras. donc qq part il sait qu'il y en a 4. Par contre il ne me donne pas les liens: --[[ %% autostart --]] -- Informations de compte Netatmo -- DIESE DATEN ANPASSEN local client_id = 'ehjkhfdkjfuugfjkfd'; local client_secret = 'DFFJDSG4Z34'; local username = 'username'; local password = 'password'; local language = 'english' local counter = 1; -- Informations du VD associé local vd_ID = 502; -- ID du VD associé local vd_refresh = 9; -- ID du bouton refresh du VD. 9 Par défaut -- Réglages de la scène local refresh = 10; -- Script executé toutes les x secondes. Pas moins de 8s! local debug = 1; -- Faut-il vraiment l'expliquer ? -- Nom de la Variable Globale qui sera créée et utilisée par la scène et le VD local VGNetatmo = "NETATMO_Welcome"; fibaro:debug('ici') -------------------------------------------------------------- -------- Ne rien modifier à partir de cette ligne ------------ -------------------------------------------------------------- local token = ''; local request_body = ''; Debug = function (color, message) if (debug == 1) then fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")); elseif (debug == 0) then end end DebugChange = function (color, message) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")); end DebugError = function (color, message) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")); end fibaro:debug('Démarrage du script Netatmo welcome Integration v.1.0'); if (debug == 0) then fibaro:debug("Debug = 0. Seuls les messages d'information apparaîtront dans les logs."); else fibaro:debug('Debug = 1. Messages de Debug activés.'); end fibaro:debug('Cette scène sera executée toutes les ' ..refresh.. ' secondes.'); -- Début - Ajout pour gestion indépendante des VG function CreerVG(VGNom, VGValeur) local data = {name = VGNom, value=VGValeur}; response, status = api.post("/globalVariables", data); if (status == 201) then DebugError("white", "Variable Globale " .. VGNom .. " créée."); else DebugError("red", "Impossible de créer la Variable Globale " .. VGNom .. "!"); end end function MajEntree(Nom, Statut, Lastseen) local table = json.decode(fibaro:getGlobalValue(VGNetatmo)); -- Tout est à mettre à jour if Nom ~= nil and Statut ~= nil and Lastseen ~= nil then table[Nom] = {status=Statut, lastseen=Lastseen}; fibaro:setGlobal(VGNetatmo,json.encode(table)); DebugError("yellow", "L'entrée " .. Nom .. " a été automatiquement créée."); -- Mise à jour du Statut elseif Nom ~= nil and Statut ~= nil and Lastseen == nil then table[Nom].status = Statut; fibaro:setGlobal(VGNetatmo,json.encode(table)); Debug("yellow", "Le statut de " .. Nom .. " a été mis sur la valeur ".. Statut); -- Mise à jour de la dernière vue de la personne elseif Nom ~= nil and Statut == nil and Lastseen ~= nil then table[Nom].lastseen = Lastseen; fibaro:setGlobal(VGNetatmo,json.encode(table)); Debug("yellow", "L'information 'lastseen' de " .. Nom .. " a été mise sur la valeur ".. Lastseen); else DebugError("red", "Erreur lors de l'utilisation de la fonction MajEntree"); if Nom == nil then DebugError("white", "Champ 'Nom' vide !"); end if Statut == nil then DebugError("white", "Champ 'Statut' vide !"); end if Lastseen == nil then DebugError("white", "Champ 'Lastseen' vide !"); end end end if fibaro:getGlobalValue(VGNetatmo) == nil then CreerVG(VGNetatmo,json.encode({})); end -- Fin - Ajout pour gestion indépendante des VG function oAuth(nextFunction) local request_body = 'grant_type=password&client_id=' .. client_id .. '&client_secret=' .. client_secret .. '&username=' .. username .. '&password=' .. password .. '&scope=read_camera' getResponseData('https://api.netatmo.net/oauth2/token', request_body, function(data) if (data.access_token ~= nil) then token = data.access_token gethomedata() else if (language == 'german') then DebugError( "red", "oAuth-API-Call konnte nicht durchgeführt werden! oAuth 2.0 lieferte keinen Wert zurück") elseif (language == 'english') then DebugError( "red", "oAuth-API-Call Error. oAuth 2.0 returns nothing.") end end end ) end function getResponseData(url, body, func) local http = net.HTTPClient(); http:request(url, { options = { method = 'POST', headers = {['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'}, data = body, checkCertificate = false }, success = function(response); func(json.decode(response.data)); end }) end function gethomedata() request_body_cam = 'access_token=' ..token.. '' getResponseData('https://api.netatmo.net/api/gethomedata', request_body_cam, function(getData) -- fibaro:debug("request_body_cam:"..request_body_cam) if (getData.body ~= nil) then fibaro:debug("la 1") if (language == 'german') then DebugError( "green", "API-Call durchgeführt.") elseif (language == 'english') then DebugError( "green", "API-Call was done.") end for w, v in pairs(getData.body.homes) do for a, b in pairs(v.cameras) do if (b.is_local) then if (language == 'german') then DebugError( "green", "Lokale IP der Kamera gefunden.") elseif (language == 'english') then DebugError( "green", "Local IP of cam was found.") end findLocalWelcome(b.vpn_url) else if (language == 'german') then DebugError( "green", "Lokale IP der Kamera NICHT gefunden.") elseif (language == 'english') then DebugError( "green", "Local cam NOT found.") end end end end else if (language == 'german') then DebugError( "red", "API-Call fehlgeschlagen") elseif (language == 'english') then DebugError( "red", "API-Call Error") end end end ) end function findLocalWelcome(url) local selfhttp = net.HTTPClient({timeout=2000}) url = url..'/command/ping' selfhttp:request(url, { options={ headers = selfhttp.controlHeaders, method = 'GET', timeout = 5000 }, success = function(status) if status.status == 200 then if status.data ~= nil then --print(json.decode(status.data)) for k,v in pairs(json.decode(status.data)) do if (k == 'local_url') then local cam_url = v local url_new = string.sub(cam_url, 8, #cam_url) one, two = url_new:match("([^,]+)/([^,]+)") fibaro:debug('Cam-IP: '..one) fibaro:debug('JPG-Stream: /'..two.. '/live/snapshot_720.jpg') DebugError( "green", "coded 4 siio.de/siio.com") end end end else print ("failed") print(status.data) end end, error = function(error) print "ERROR" print(error) end }) end --local sourceTrigger = fibaro:getSourceTrigger(); --if (sourceTrigger["type"] == "autostart") then oAuth(); --end
Lorenzo Posté(e) le 1 mars 2019 Signaler Posté(e) le 1 mars 2019 hello issue is solved. I found another way to retrieve the information about the camera. Just from the https://dev.netatmo.com/resources/technical/reference/security/gethomedata. and the "Try method" provided by Netatmo. So the original script doesn't work anymore but we can retrieve the information from the dev.netatmo.com website. Have a nice weekend.
J3R3M Posté(e) le 1 mars 2019 Auteur Signaler Posté(e) le 1 mars 2019 (modifié) il y a une heure, Lorenzo a dit : hello issue is solved. I found another way to retrieve the information about the camera. Just from the https://dev.netatmo.com/resources/technical/reference/security/gethomedata. and the "Try method" provided by Netatmo. So the original script doesn't work anymore but we can retrieve the information from the dev.netatmo.com website. Have a nice weekend. So it's perfect! It seems like you mixed two scripts to try to solve your problem before : Welcome Integration and this one. I think it was because of this mix you had an bigger issue Thanks, have a nice weekend too. Modifié le 1 mars 2019 par J3R3M
Lorenzo Posté(e) le 3 mars 2019 Signaler Posté(e) le 3 mars 2019 Yes I reused the first script working and modify it to my purpose as the initial script didn't work. I retrieve the information via another way. that is the most important thing. Thanks a lot
J3R3M Posté(e) le 16 mars 2019 Auteur Signaler Posté(e) le 16 mars 2019 Le 03/03/2019 à 22:48, Did a dit : Pourquoi vous parlez en anglais? Pour éviter à notre ami d'utiliser Google Translator avant d'avoir à publier quelque chose
Did Posté(e) le 17 mars 2019 Signaler Posté(e) le 17 mars 2019 Comme j'avais vu France dans sa localisation, je pensais qu'il était de chez nous.
J3R3M Posté(e) le 18 mars 2019 Auteur Signaler Posté(e) le 18 mars 2019 Le 17/03/2019 à 01:46, Did a dit : Comme j'avais vu France dans sa localisation, je pensais qu'il était de chez nous. Il est vrai que c'est marqué qu'il habite en France. Je ne sais pas fianlement. :/ Il y a 8 heures, BenjyNet a dit : Et ça marche bien la welcome ? Je n'ai pas de problème avec celle-ci pour ma part, elle est intégrée chez moi pour reconnaître les personnes et gérer les possibilité de scénarios en fonction des personnes présentes. Aussi, en complément d'un "système d'alarme", elle permet d'identifier rapidement la personne qui vient de pénétrer ou, déclencher l'alarme rapidement si la personne n'a pas été reconnue. Le gros bémol, ça reste la solution cloud. Tu n'as plus internet, tu n'as plus de Welcome, tout simplement.
pepite Posté(e) le 19 mars 2019 Signaler Posté(e) le 19 mars 2019 Mais elle fonctionne quand même hors cloud, tu perds la gestion depuis la HC2 that's all non ?
J3R3M Posté(e) le 7 avril 2019 Auteur Signaler Posté(e) le 7 avril 2019 Le 19/03/2019 à 09:47, pepite a dit : Mais elle fonctionne quand même hors cloud, tu perds la gestion depuis la HC2 that's all non ? À vrai dire, je n'ai jamais essayé, c'est à confirmer. Ce qui est certain, c'est que lorsqu'elle n'est plus connectée au réseau local, elle n'est plus bonne à rien, ce qui m'a confirmé qu'aucune information n'y était stockée...
Lorenzo Posté(e) le 17 juillet 2019 Signaler Posté(e) le 17 juillet 2019 oui désolé d'être passé sur l'anglais. Je ne me suis pas rendu compte. :-) lol
Nico Posté(e) le 20 février 2022 Signaler Posté(e) le 20 février 2022 Hello. Petite question cela fonctionne encore aujourd'hui après les updates divers ?
J3R3M Posté(e) le 21 février 2022 Auteur Signaler Posté(e) le 21 février 2022 Il y a 2 heures, Nico a dit : Hello. Petite question cela fonctionne encore aujourd'hui après les updates divers ? Hello @Nico, De mon côté, fonctionnement toujours ok pour info
Nico Posté(e) le 21 février 2022 Signaler Posté(e) le 21 février 2022 Nickel, je vais sans doute ajouter ça du coup dans l'entrée pour avoir les enfants en plus. Dommage qu'ils n'aient pas ajouté ça sur la version exterieure.
Messages recommandés