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

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.
vinchz31
Messages : 312
Inscription : 21 nov. 2016, 07:51

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

Message 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 !
Dernière modification par vinchz31 le 23 juil. 2023, 22:16, modifié 1 fois.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
vinchz31
Messages : 312
Inscription : 21 nov. 2016, 07:51

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

Message 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.
Dr No
Messages : 130
Inscription : 22 janv. 2015, 17:02
Localisation : Sud de France (Hérault)

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

Message 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 ?!?!
DiliaK
Messages : 257
Inscription : 02 sept. 2022, 19:38
Localisation : Chavanoz, France
Contact :

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

Message 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...
Domoticz 2025.2 @ Debian 12 on AZW Green G2. Processeur : Intel Celeron N5095A Mémoire : 8 Go
HDD WD Red 500Go M.2 SATA
RFXCOM - RFXtrx433 USB 433.92MHz Transceiver Version: Pro XL1
RFXCOM - RFXtrx433 ethernet (inactif)
CONBEE II USB Zigbee4Domoticz
jcb2
Messages : 82
Inscription : 13 mars 2020, 10:23

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

Message 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
Dernière modification par Keros le 25 juil. 2023, 12:35, modifié 1 fois.
Raison : Ajout des balises code
NUC en Debian 13 via Proxmox
Beaucoup de SonOff flashé Tasmota (en Wifi)
RF Link - Stations Netatmo
Box Somfy Connexoon pour volets Vélux et stores Somfy
... et pour combiner le tout, plein de script LUA pour automatiser la maison
bl34
Messages : 66
Inscription : 19 déc. 2021, 17:42

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

Message 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.
bl34
Messages : 66
Inscription : 19 déc. 2021, 17:42

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

Message 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
Wolfen38
Messages : 1983
Inscription : 19 oct. 2017, 14:49

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

Message 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 ?
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Répondre