DECONZ, HomeBridge et Hue = Error: DECONZ: (DECONZ) You have N API keys memorised
Publié : 22 juil. 2021, 11:03
Je viens vous présenter la solution à un problème mineur quand on utilise c'est 3 logiciels (DECONZ, HomeBridge et le plugin Hue) avec Domoticz.
Au bout d'un certain temps on se retrouve avec un message du type
Pour que l'erreur n'apparaisse plus il y a 4 partie à respecter:
1) D'abord il faut commercer par effacer toutes les clés inutiles. Et pour ça il faut connaître une clé API valide:
SETUP > DEVICE > API KEY 2) On peut les effacer manuellement depuis le shell.
"987654321A" représente ma clé API valide
Il faut maintenant supprimer une par une les clés qui sont plus utilisés. Pour ne pas m'embêter à les chercher, je les supprime toutes sauf ma clé valide, puis je redémarre homebridge pour lui générer une nouvelle clé.
2 bis) Soit on utilise ce script qui fait tout seul ce que l'on a décrit ci-dessus grâce à un bouton poussoir.
3) Chercher ça dans le log
Copiez juste cette partie du texte, sans oublier la virgule.
(La première suite alphanumérique est votre identifiant et la seconde votre clé.)
Puis chercher dans l'onglet Config et collez votre ID et votre clé juste derrière.
4) Enregistrez et redémarrez Homebridge pour régler le problème définitivement
Au bout d'un certain temps on se retrouve avec un message du type
Le problème vient du plugin Hue dans Homebridge. A chaque redémarrage de Homebridge, le plugin réclame une nouvelle clé d'API mais il n'efface pas l'ancienne. Du coup le nombre de clés augmente, et au bout de 11 clés, Domoticz envoie le message d'erreur ci-dessus.Error: DECONZ: (DECONZ) You have 11 API keys memorised, some of them are probably useless, can use the API_KEY.py tool to clean them
Pour que l'erreur n'apparaisse plus il y a 4 partie à respecter:
1) D'abord il faut commercer par effacer toutes les clés inutiles. Et pour ça il faut connaître une clé API valide:
SETUP > DEVICE > API KEY 2) On peut les effacer manuellement depuis le shell.
"987654321A" représente ma clé API valide
En retour on reçoit les 11 clés utilisées dont la clé valide.sudo python3 /home/pi/domoticz/plugins/Domoticz-deCONZ/API_KEY.py 127.0.0.1:80 list 987654321A
Il faut maintenant supprimer une par une les clés qui sont plus utilisés. Pour ne pas m'embêter à les chercher, je les supprime toutes sauf ma clé valide, puis je redémarre homebridge pour lui générer une nouvelle clé.
"1A23456789" est le numéro de la clé que l'on veut supprimer.sudo python3 /home/pi/domoticz/plugins/Domoticz-deCONZ/API_KEY.py 127.0.0.1:80 delete 987654321A 1A23456789
2 bis) Soit on utilise ce script qui fait tout seul ce que l'on a décrit ci-dessus grâce à un bouton poussoir.
Code : Tout sélectionner
commandArray = {}
function mysplit (inputstr, sep)
if sep == nil then sep = "%s" end
local t={}
for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
table.insert(t, str)
end
return t
end
function os.capture(cmd, raw)
local f = assert(io.popen(cmd, 'r'))
local s = assert(f:read('*a'))
f:close()
if raw then return s end
s = string.gsub(s, '^%s+', '')
s = string.gsub(s, '%s+$', '')
s = string.gsub(s, '[\n\r]+', ' ')
return s
end
-- loop through all the changed devices
for deviceName,deviceValue in pairs(devicechanged) do
--print ("Device based event fired on '"..deviceName.."', value '"..tostring(deviceValue).."'");
if (deviceName=='ClearAPI_KEY.py') then
local API_KEY = "987654321A"
if deviceValue == "On" then
-- liste l'ensemble des clefs Deconz et les supprimmes toutes
local command = "sudo python3 /home/pi/domoticz/plugins/Domoticz-deCONZ/API_KEY.py 127.0.0.1:80 list " .. API_KEY
local result = os.capture(command, true)
local lignes = mysplit(result, '\n\r')
command = "sudo python3 /home/pi/domoticz/plugins/Domoticz-deCONZ/API_KEY.py 127.0.0.1:80 delete " .. API_KEY .. " "
for i=1,#lignes,1 do
key = mysplit(lignes[i], ' ')
if key[3] ~= API_KEY then
os.execute(command .. key[3])
end
end
end
os.execute("sudo reboot")
end
end
return commandArray
Code : Tout sélectionner
,
"users": {
"XXX ID": "XXX Key"
}Puis chercher dans l'onglet Config
Code : Tout sélectionner
"platform": "Hue"4) Enregistrez et redémarrez Homebridge pour régler le problème définitivement