Réception de callback json asynchrone
Publié : 19 sept. 2018, 09:24
Bonjour à tous
Je souhaite que domoticz reçoivent des callback asynchrone (sans aucune requête de domoticz) au format JSON puis ensuite parser les données.
J'ai configuré le serveur tierce comme ceci :
Url pattern : "http://XX.XX.XX.XX:XXXX/json.htm?type=command¶m=udevices&script=test_callback.lua"
Use HTTP Method : post
Content type : application/json
Body:
Le JSON envoyé est celui ci
POST "http://XX.XX.XX.XX:XXXX/json.htm?type=command¶m=udevices&script=test_callback.lua HTTP/1.0"
content-length : 207
accept-encoding : gzip,deflate
accept-language : fr
host : XX.XX.XX.XX:XXXX
user-agent : XXXXXX
accept-charset : UTF-8;q=0.9,*;q=0.7
content-type : application/json
{
"deviceID" : "B131",
"data" : "000000020000000000160c75",
"ULcounter" : "2",
"unused" : "0",
"unused_" : "0",
"Temp_en_degres" : "22",
"Tension_Batterie_en_mV" : "3189"
}
Pour la réception des données du JSON puis parser celle-ci, coté Domoticz j'ai utilisé le script LUA d'exemple suivant pour réaliser les essais :
Idx domoticz : 8
répertoire : lua_parsers
File : test_callback.lua
Dans le log de domoticz j'ai ceci :
2018-09-17 12:49:05.302 CLuaHandler: udevices:
2018-09-17 12:49:05.303 Error: CLuaHandler (applyJsonPath from LUA) : Invalid Json data received
2018-09-17 12:49:05.303 Error: CLuaHandler (updateDevice from LUA) : Incorrect parameters type
Le script est bien exécuté à la réception du callback mais je ne comprends pas le "udevices" du print, ou est mon erreur
Merci de vos lumières et aide
Je souhaite que domoticz reçoivent des callback asynchrone (sans aucune requête de domoticz) au format JSON puis ensuite parser les données.
J'ai configuré le serveur tierce comme ceci :
Url pattern : "http://XX.XX.XX.XX:XXXX/json.htm?type=command¶m=udevices&script=test_callback.lua"
Use HTTP Method : post
Content type : application/json
Body:
Code : Tout sélectionner
{
"deviceID" : "{device}",
"data" : "{data}",
"ULcounter" : "{customData#ULcounter}",
"unused" : "{customData#unused}",
"unused_" : "{customData#unused_}",
"Temp_en_degres" : "{customData#Temp_en_degres}",
"Tension_Batterie_en_mV" : "{customData#Tension_Batterie_en_mV}"
}POST "http://XX.XX.XX.XX:XXXX/json.htm?type=command¶m=udevices&script=test_callback.lua HTTP/1.0"
content-length : 207
accept-encoding : gzip,deflate
accept-language : fr
host : XX.XX.XX.XX:XXXX
user-agent : XXXXXX
accept-charset : UTF-8;q=0.9,*;q=0.7
content-type : application/json
{
"deviceID" : "B131",
"data" : "000000020000000000160c75",
"ULcounter" : "2",
"unused" : "0",
"unused_" : "0",
"Temp_en_degres" : "22",
"Tension_Batterie_en_mV" : "3189"
}
Pour la réception des données du JSON puis parser celle-ci, coté Domoticz j'ai utilisé le script LUA d'exemple suivant pour réaliser les essais :
Idx domoticz : 8
répertoire : lua_parsers
File : test_callback.lua
Code : Tout sélectionner
-- Retrieve the request content
s = request['content'];
print (s)
-- Update some devices (index are here for this example)
--local id = domoticz_applyJsonPath(s,'.id')
local temp = domoticz_applyJsonPath(s,'.Temp_en_degres')
domoticz_updateDevice(8,'',temp)2018-09-17 12:49:05.302 CLuaHandler: udevices:
2018-09-17 12:49:05.303 Error: CLuaHandler (applyJsonPath from LUA) : Invalid Json data received
2018-09-17 12:49:05.303 Error: CLuaHandler (updateDevice from LUA) : Incorrect parameters type
Le script est bien exécuté à la réception du callback mais je ne comprends pas le "udevices" du print, ou est mon erreur
Merci de vos lumières et aide