Page 1 sur 3

[2023.2] Erreur Deprecated RType (devices) for API request.

Publié : 23 juil. 2023, 14:18
par vinchz31
Bonjour à tous,

J'ai fait un updatrelease pour passer en 2023.2 (car j'avais un message en pop up à chaque connexion) et je me retrouve avec tous mes scripts en erreur qui remontent :

[WebServer] Deprecated RType (devices) for API request. Handled via fallback (getdevices), please use correct API Command! (127.0.0.1)

J'ai bien vu le post https://www.domoticz.com/forum/viewtopic.php?t=40415 positionné dans "Les problèmes remontés" du post viewtopic.php?p=114494&hilit=%5BWebServ ... es#p114494

...mais malheureusement l'application des solutions proposées ne résout rien (changement de /json.htm?type=devices pas /json.htm?type=command&param=getdevices), surement parce que j'utilise beaucoup d'API pour chercher plein de type d'infos et que je n'ai pas que cette partie à modifier. etc.

Je viens de voir les évolutions dans la nouvelle version de la doc API anglaise, il faut que je reprenne tout je pense...
Est-ce que quelqu'un a réussi à résoudre ces difficultés ou est-il possible de revenir facilement dans la release 2023.1 ?

En tout cas c'est très gênant qu'une mise à jour modifie profondément la manière d'utiliser les APIs...

Merci d'avance !

Re: [2023.2] Erreur Deprecated RType (devices) for API request.

Publié : 23 juil. 2023, 16:15
par Keros
Le sujet n'aura pas mis longtemps à sortir :roll:

Revenir à la 2023.1 ... Tu as fait une sauvegarde avant de faire la mise à jour ??

Tout le monde aura des difficultés différentes, car nos systèmes sont tous différents. J'ai été confronté au problème avec la béta. Je dirai qu'il faut regarder les choses dans l'ordre :
  • Est-ce que les erreurs sont liées à des plugins ?
Les redémarrer un par un et regarder si des erreurs d'API arrivent au démarrage. Ce fût mon cas avec le plugin ZigBeeForDomoticZ : des modifs de Pipiche et les erreurs sont parties avec une mise à jour (je pense qu'il faut passer en V7).

:arrow: D'où mon indication plus haut de faire les mises à jour des plugins avant de faire la mise à jour 2023.2 de DomoticZ.

  • Est-ce que les erreurs sont liées à des scripts ?
Il faut tous les reprendre un par un et regarder s'il y a des /json.htm?type=devices
  • Est-ce que les erreurs sont liées à des objets ?
Tasmota, EspEasy, Python, etc ...
  • Est-ce que les erreurs sont liées à des widgets ?
Quelques fois, on rentre une commande API dans le champ Script d'un widget (bouton ou autres) pour qu'il lance une action sans passer par un script.

Re: [Résolu] - [2023.2] Erreur Deprecated RType (devices) for API request.

Publié : 23 juil. 2023, 22:20
par vinchz31
Bonsoir Keros,

Merci pour ton retour.
Bon après 2 bonnes heures à reprendre tous mes scripts (Php, C, etc.), et en corrigeant tous les appels API, j'ai fini par m'en sortir. J'étais déjà dans la dernière version de Zigbee Domoticz donc pas de souci de ce côté là...

Plus d'erreur ce soir mais quand même un peu galère pour mettre à niveau.
Pour ceux qui rencontre le problème, il faut aller sur la doc de l'API Domoticz Anglaise :
https://www.domoticz.com/wiki/Domoticz_API/JSON_URL's

Puis rechercher sur la page "From Beta 15326, 1-jun-2023" qui permet d'identifier tous les appels API ayant évolué (parmi les 40 ayant évolué dans cette nouvelle version).

Exemples :
/json.htm?type=devices&rid=IDX
devient
/json.htm?type=command&param=getdevices&rid=IDX

/json.htm?type=devices&filter=all&used=true&order=Name
devient
/json.htm?type=command&param=getdevices&filter=all&used=true&order=Name

/json.htm?type=devices&used=true&displayhidden=1
devient
/json.htm?type=command&param=getdevices&used=true&displayhidden=1

Etc...

A partir de là, il faut corriger tous les scripts pour modifier les appels APIs en conséquence.

Très bonne soirée à tous.

Re: [2023.2] Erreur Deprecated RType (devices) for API request.

Publié : 24 juil. 2023, 11:18
par Dr No
Bonjour à tous,

C'est vraiment le Bazard à chaque changement de version, ça devient dramatique !!!!
Je vais finir par ne plus faire aucune mise à jour, ce qui n'est pas la meilleure chose.

J'ai un paquet de routines python qui toutes utilisent JSON, ça va être très amusant à tout corriger d'autant que j'en ai qui sont inaccessibles. Elles sont dans une maison secondaire derrière un routeur 4G qui est inaccessible dans ce sens.

Où est l'intérêt de ce type de changement ?!?!

Re: [2023.2] Erreur Deprecated RType (devices) for API request.

Publié : 24 juil. 2023, 12:46
par DiliaK
Hello,
Je ne comprends pas pour ma part. A priori j'utilisais les nouvelles spécifs depuis au moins la 2021.1 ?
Je cherche une explication...
En fait c'est dans mes boutons "Action On et Action Off. C'est peut-être différent...

Re: [2023.2] Erreur Deprecated RType (devices) for API request.

Publié : 25 juil. 2023, 11:53
par jcb2
Bonjour,
J'ai également le message warning mais tout fonctionne correctement. Mais bon pour l'avenir autant passer à la nouvelle façon de faire (même si moi aussi ça m'arrange pas plus que ça ...)

Par contre si j'utilise la nouvelle méthode j'ai une erreur.

Exemple de script pour avoir la liste des devices avec infos :

Code : Tout sélectionner

-- Configuration
ServeurDomoticz = "http://LUA:Lxxxxxxx@localhost:8080"   -- Adresse serveur Domoticz avec user/password
json = (loadfile "/home/jcb/domoticz/scripts/lua/JSON.lua")() -- Fichier JSON pour récup des appareils et infos Domoticz

commandArray = {}

   -- Get a list of all devices  
    handle = io.popen("curl '" .. ServeurDomoticz .. "/json.htm?type=command&param=getdevices&order=Name")
    devicesJson = handle:read('*all')
    handle:close()
    devices = json:decode(devicesJson)

    -- Pour chaque appareil de Domoticz
    for i,device in ipairs(devices.result) do

        if device.Name  ~= 'Unknown' then print ( device.Name ) end
    end

return commandArray
Je reçois une erreur type "attempt to index a nil value (global 'devices')"
Si j'utilise handle = io.popen("curl '" .. ServeurDomoticz .. "/json.htm?type=devices&order=name'") j'ai bien la liste des devices !
Je dois donc avoir un problème dans la table retournée par la nouvelle fonction.

Quand je passe par un browser j'ai le même résultat avec les deux url !
Mon niveau dans ce domaine est très basic.
Quelqu'un a une idée ?

Merci,

Jean-Charles

Re: [2023.2] Erreur Deprecated RType (devices) for API request.

Publié : 31 juil. 2023, 13:48
par bl34
J'avais toujours le message d'erreur 'Erreur Deprecated RType (devices) ... ' après avoir corrigé mes script LUA. En revanche il n'y avait plus de messages dans la log quand j'arrêtais Homebridge.
Le problème venait des plugins homebridge-edomoticz et homebridge-domoticz-selector-switch dans Homebrigde.

- Pour le plugin homebridge-edomoticz, le fichier 'homebridge-edomoticz/lib/domoticz.js' a bien été mis à jour dans le repo guthub pour utiliser les appels API avec la syntaxe correcte mais aucune mise à jour n'était proposée dans l'interface graphique Homebridge. Je suppose parce que la version était inchangée.
Le problème a été résolu en remplaçant le fichier domoticz.js dans /var/lib/homebridge/node_modules/homebridge-edomoticz sur mon système par celui mis à jour trouvé dans le dépôt github homebridge-edomoticz.
- Pour le plugin homebridge-domoticz-selector-switch (plus maintenu), j'ai modifié la syntaxe des appels à l'API JSON dans le fichier index.js pour utiliser le bon format.

Si ça peut aider.

Re: [2023.2] Erreur Deprecated RType (devices) for API request.

Publié : 01 août 2023, 22:10
par bl34
@jcb2
Tu peux essayer avec ça.

Code : Tout sélectionner

-- Configuration
ServeurDomoticz = "http://LUA:Lxxxxxxx@localhost:8080"   -- Adresse serveur Domoticz avec user/password
json = (loadfile "/home/jcb/domoticz/scripts/lua/JSON.lua")() -- Fichier JSON pour récup des appareils et infos Domoticz

commandArray = {}
    -- param=getdevices: Retourne les info des devices, order=Name ne marche pas.
    local cmd = "curl '" .. ServeurDomoticz .. "/json.htm?type=command&param=getdevices'"    
    -- param=devices_list: Retourne peu d'info sur les devices. Le tri par nom est par défaut.
    -- local cmd = "curl '" .. ServeurDomoticz .. "/json.htm?type=command&param=devices_list&order=Name'"    
    print("cmd = " .. cmd)
        
    local config = assert(io.popen(cmd))
    local devicesJson = config:read('*all')
    config:close()
    Devices = json:decode(devicesJson)

    for i,Device in pairs(Devices.result) do
    
        -- print à utiliser pour param=getdevices.
        print(i .. " - Device.Name = " .. Device.Name .. " - Device.idx = " .. Device.idx)  
             
        -- print à utiliser pour param=devices_list.
        -- print(i .. " - Device.name = " .. Device.name .. " - Device.idx = " .. Device.idx)       
    end
return commandArray

Re: [2023.2] Erreur Deprecated RType (devices) for API request.

Publié : 04 août 2023, 16:35
par Wolfen38
Salut à tous,

J'ai aussi le problème, je pense que ca vient du fichier modules.lua, car quand je le supprime, l'erreur ne revient pas.

J'ai essayé de changé les lignes json, mais toujours autant d'erreur... j'ai du en louper ou je sais pas.

Vous savez pas si il y a une maj de ce fichier quelque part ?

Re: [2023.2] Erreur Deprecated RType (devices) for API request.

Publié : 04 août 2023, 16:42
par Keros
Je n'ai pas vu de maj. C'était Vil1driver qui l'avait créé et partagé, mais il n'est plus sur le forum et même sont Github n'a reçu aucune mise à jour depuis 1 an.

Fais un Ctrl + F dans le fichier pour rechercher la syntaxe et essaye de tout remplacer.