PITP2 Posté(e) le 19 août 2015 Signaler Partager Posté(e) le 19 août 2015 Espèce d'esclavagiste 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 19 août 2015 Signaler Partager Posté(e) le 19 août 2015 Oui ben la c'est àmon tour de le faire bosser et gratos enfin j’espère car si le ministère des finances (Madame) tombe la dessus on va avoir droit a une taxe 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 29 août 2015 Signaler Partager Posté(e) le 29 août 2015 voici pour les impatients la version 4.1 qui corrige un problème d'authentification et crée automatiquement une variable globale "SurvStation_Status" qui contient la valeur écrite dans le label Status. Vous pourrez ainsi récupérer l'information dans les autre scripts ou dans GEA. Lorsque Lazer aura le temps, il mettra àjour le premier post. Surveillance_Station_v4.1.vfib Lien vers le commentaire Partager sur d’autres sites More sharing options...
sebcbien Posté(e) le 30 août 2015 Signaler Partager Posté(e) le 30 août 2015 salut jojo. Premier retour: [DEBUG] 18:14:56: Error : Synology API version is too old : DSM 4.0-2251 and Surveillance Station 6.3 are required voici le code que j'utilise avec succès jusqu'à présent. Je n'ai pas beacoup de temps pour le moment, j'ai décha chipoté un peu mais sans succès, ça fait longtemps que je ne me suis pas penchcé sur ce code... :-/ -------------------------------------------------- -- Synology Surveillance Station v2 -- Start/Stop recording -- Lazer -- Mars 2014 -------------------------------------------------- -- User configurable variables local login = "" local password = "" local cameras = {1,2,4,5,6} local action = "start" -- System variables local selfID = fibaro:getSelfId() local ip = fibaro:get(selfID, 'IPAddress') local port = fibaro:get(selfID, 'TCPPort') local Synology = Net.FHttp(ip, tonumber(port)) local API_AUTH_ERROR_CODE = { [100] = "Unknown error.", [101] = "The account parameter is not specified.", [400] = "Invalid password.", [401] = "Guest or disabled account.", [402] = "Permission denied.", [403] = "One time password not specified.", [404] = "One time password authenticate failed." } local API_RECORD_ERROR_CODE = { [100] = "Unknown error.", [101] = "Invalid parameters.", [102] = "API does not exist.", [103] = "Method does not exist.", [104] = "This API version is not supported.", [105] = "Insufficient user privilege.", [106] = "Connection time out.", [400] = "Execution failed.", [401] = "Parameter invalid.", [402] = "Camera disabled." } -- Discover available APIs and corresponding information payload = "/webapi/query.cgi?api=SYNO.API.Info&method=Query&version=1&query=SYNO.API.Auth,SYNO.SurveillanceStation.ExternalRecording" response, status, errorCode = Synology:GET(payload) if tonumber(status) == 200 then jsonTable = json.decode(response); if jsonTable.data["SYNO.API.Auth"].maxVersion >= 3 and jsonTable.data["SYNO.SurveillanceStation.ExternalRecording"].maxVersion >= 1 then fibaro:debug("Synology API version OK") pathAuth = jsonTable.data["SYNO.API.Auth"].path pathRecord = jsonTable.data["SYNO.SurveillanceStation.ExternalRecording"].path fibaro:debug("Synology API Auth path = "..pathAuth) fibaro:debug("Synology API Surveillance Station Record path = "..pathRecord) -- Create new login session payload = "/webapi/"..pathAuth.."?api=SYNO.API.Auth&method=Login&version=2&account="..login.."&passwd="..password.."&session=SurveillanceStation&format=sid" response, status, errorCode = Synology:GET(payload) if tonumber(status) == 200 then jsonTable = json.decode(response); if jsonTable.success == true then SID = jsonTable.data.sid fibaro:debug("Synology API Auth SID = "..SID) for i = 1, #cameras do -- Start or stop external recording of a camera payload = "/webapi/"..pathRecord.."?api=SYNO.SurveillanceStation.ExternalRecording&method=Record&version=1&cameraId="..cameras[i].."&action="..action.."&_sid="..SID response, status, errorCode = Synology:GET(payload) jsonTable = json.decode(response); fibaro:debug(response) if jsonTable.success == true then fibaro:log("OK") fibaro:debug('<span style="color:green;">Synology Surveillance Station '..action..' recording for camera "'..tostring(cameras[i])..'" OK</span>') else fibaro:log("Erreur") fibaro:debug('<span style="color:red;">Synology Surveillance Station '..action..' recording for camera "'..tostring(cameras[i])..'" FAILED : '..API_RECORD_ERROR_CODE[tonumber(jsonTable.error.code)]..'</span>') end end -- Destroy current login session payload = "/webapi/"..pathAuth.."?api=SYNO.API.Auth&method=Logout&version=2&session=SurveillanceStation&_sid="..SID response, status, errorCode = Synology:GET(payload) else fibaro:log("Erreur") fibaro:debug('<span style="color:red;">Error : '..API_AUTH_ERROR_CODE[tonumber(jsonTable.error.code)]..'</span>') end else fibaro:log("Erreur") fibaro:debug('<span style="color:red;">Error : API Authentication failure</span>') end else fibaro:log("Erreur") fibaro:debug('<span style="color:red;">Error : Synology API version is too old : <b>DSM 4.0-2251</b> and <b>Surveillance Station 6.1</b> are required</span>') end else fibaro:log("Erreur") fibaro:debug('<span style="color:red;">Error : Can not connect to Synology server</span>') end dans le mainloop aussi problème: [ERROR] 18:09:54: line 261: Expected value but found T_END at character 1 une idée ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
sebcbien Posté(e) le 30 août 2015 Signaler Partager Posté(e) le 30 août 2015 si a la ligne +- 169 je met ceci: if jsonTable.data["SYNO.API.Auth"].maxVersion >= 3 and jsonTable.data["SYNO.SurveillanceStation.Camera"].maxVersion >= 2 then je n'ai plus le message d'erreur de version mais j'ai ceci: (pour Enable) [DEBUG] 18:22:23: Synology API version OK [DEBUG] 18:22:23: Request new SID [DEBUG] 18:22:24: Synology API Auth OK [ERROR] 18:22:25: line 138: attempt to index global 'API_CAMERA_ERROR_CODE' (a nil value) Lien vers le commentaire Partager sur d’autres sites More sharing options...
sebcbien Posté(e) le 30 août 2015 Signaler Partager Posté(e) le 30 août 2015 après avoir créé les variables globales àla main et effacé les fonction de check et création du main loop, ça va déjàmieux, enable et disable fonctionnent avec ce code ci: -------------------------------------------------- -- Module : Synology Surveillance Station v4 -- Button : Start/Stop recording -- Author : Lazer -------------------------------------------------- -- User configurable variables --[[login = "" password = "" cameras = {0} action = "start" ]]-- local login = "" local password = "" local cameras = {1,2,4,5,6} local action = "Enable" -- start/stop/Enable/Disable -- System variables local debug_trace = false error = false local selfID = fibaro:getSelfId() local ip = fibaro:get(selfID, 'IPAddress') local port = fibaro:get(selfID, 'TCPPort') local Synology = Net.FHttp(ip, tonumber(port)) local API_COMMON_ERROR_CODE = { [100] = "Unknown error", [101] = "Invalid parameters", [102] = "API does not exist", [103] = "Method does not exist", [104] = "This API version is not supported", [105] = "Insufficient user privilege", [106] = "Connection time out", [107] = "Multiple login detected" } local API_AUTH_ERROR_CODE = { [100] = "Unknown error.", [101] = "The account parameter is not specified.", [400] = "Invalid password.", [401] = "Guest or disabled account.", [402] = "Permission denied.", [403] = "One time password not specified.", [404] = "One time password authenticate failed." } local API_RECORD_ERROR_CODE = { [400] = "Execution failed.", [401] = "Parameter invalid.", [402] = "Camera disabled." } -- Message function function Message(log_msg, label_msg, trace, debug_msg) if log_msg then fibaro:log(log_msg) end if debug_msg and (debug_trace or trace) then fibaro:debug(debug_msg) end if label_msg then fibaro:call(selfID, "setProperty", "ui.LabelStatus.value", label_msg) fibaro:setGlobal('SurvStation_Status', label_msg) end end -- Get Cameras list local camera = false if cameras then for k, v in ipairs(cameras) do if v > 0 then Message(nil, nil, false, "cameras{} exists") camera = true break end end end if not camera then local label = fibaro:get(selfID, "ui.LabelCameras.value") if label ~= nil and label ~= "" then Message(nil, nil, false, "Create cameras{}") cameras = json.decode(label) end end Message(nil, nil, false, "cameras{} : " .. json.encode(cameras)) -- génération d'un nouvel SID function GetSID() -- Create new login session fibaro:debug("Request new SID") payload = "/webapi/"..pathAuth.."?api=SYNO.API.Auth&method=Login&version=2&account="..login.."&passwd="..password.."&session=SurveillanceStation&format=sid" Message(nil, nil, false, payload) response, status, errorCode = Synology:GET(payload) if tonumber(errorCode) == 0 and tonumber(status) == 200 then if response ~= nil and response ~= "" then jsonTable = json.decode(response) if jsonTable.success == true then fibaro:setGlobal('SurvStation_SID', jsonTable.data.sid) Message(nil, nil, true, "Synology API Auth OK") else fibaro:debug('<span style="color:red;">Error : API Authentication failure, '..(API_AUTH_ERROR_CODE[tonumber(jsonTable.error.code)] or API_COMMON_ERROR_CODE[tonumber(jsonTable.error.code)] or "???")..'</span>') end else fibaro:debug('<span style="color:red;">Error : API Authentication failure, empty response</span>') end else fibaro:debug('<span style="color:red;">Error : API Authentication failure, errorCode='..errorCode..', status='..status..'</span>') end end -- Destroy current login session function Destroy() -- fibaro:debug("Destroy current SID") payload = "/webapi/"..pathAuth.."?api=SYNO.API.Auth&method=Logout&version=2&session=SurveillanceStation&_sid="..SID response, status, errorCode = Synology:GET(payload) end -- Start or stop external recording of a camera function Action() for i = 1, #cameras do if action == "start" or action == "stop" then payload = "/webapi/"..pathRecord.."?api=SYNO.SurveillanceStation.ExternalRecording&method=Record&version=2&cameraId="..cameras[i].."&action="..action.."&_sid="..SID else payload = "/webapi/"..pathCamera.."?api=SYNO.SurveillanceStation.Camera&method="..action.."&version=3&cameraIds="..cameras[i].."&_sid="..SID end Message(nil, nil, false, payload) response, status, errorCode = Synology:GET(payload) if tonumber(errorCode) == 0 and tonumber(status) == 200 then if response ~= nil and response ~= "" then jsonTable = json.decode(response); if jsonTable.success == true then if action == "start" or action == "stop" then Message("OK", action.." OK", true, '<span style="color:green;">Synology Surveillance Station '..action..' recording for camera "'..tostring(cameras[i])..'" OK</span>') else Message("OK", action.." OK", true, '<span style="color:green;">Synology Surveillance Station '..action..' camera "'..tostring(cameras[i])..'" OK</span>') end else if action == "start" or action == "stop" then Message("Erreur", action.." failed", true, '<span style="color:red;">Synology Surveillance Station '..action..' recording for camera "'..tostring(cameras[i])..'" FAILED : '..(API_RECORD_ERROR_CODE[tonumber(jsonTable.error.code)] or API_COMMON_ERROR_CODE[tonumber(jsonTable.error.code)] or "???")..', '..response..'</span>') else Message("Erreur", action.." failed", true, '<span style="color:red;">Synology Surveillance Station '..action..' camera "'..tostring(cameras[i])..'" FAILED : '..(API_CAMERA_ERROR_CODE[tonumber(jsonTable.error.code)] or API_COMMON_ERROR_CODE[tonumber(jsonTable.error.code)] or "???")..', '..response..'</span>') end if tonumber(jsonTable.error.code) == 105 then error = true end end else if action == "start" or action == "stop" then Message("Erreur", action.." failed", true, '<span style="color:red;">Synology Surveillance Station '..action..' recording for camera failed, empty response</span>') else Message("Erreur", action.." failed", true, '<span style="color:red;">Synology Surveillance Station '..action..' camera failed, empty response</span>') end end else if action == "start" or action == "stop" then Message("Erreur", action.." failed", true, '<span style="color:red;">Synology Surveillance Station '..action..' recording for camera failed, errorCode='..errorCode..', status='..status..', response='..(response or "")..'</span>') else Message("Erreur", action.." failed", true, '<span style="color:red;">Synology Surveillance Station '..action..' camera failed, errorCode='..errorCode..', status='..status..', response='..(response or "")..'</span>') end end end end -- Discover available APIs and corresponding information if action == "start" or action == "stop" or action == "Enable" or action == "Disable" then -- only if a valid action fibaro:call(selfID, "setProperty", "ui.LabelStatus.value", action.."...") payload = "/webapi/query.cgi?api=SYNO.API.Info&method=Query&version=1&query=SYNO.API.Auth,SYNO.SurveillanceStation.ExternalRecording,SYNO.SurveillanceStation.Camera" Message(nil, nil, false, payload) response, status, errorCode = Synology:GET(payload) if tonumber(errorCode) == 0 and tonumber(status) == 200 then if response ~= nil and response ~= "" then jsonTable = json.decode(response); if jsonTable.data["SYNO.API.Auth"].maxVersion >= 3 and jsonTable.data["SYNO.SurveillanceStation.Camera"].maxVersion >= 2 then Message(nil, nil, true, "Synology API version OK") pathAuth = jsonTable.data["SYNO.API.Auth"].path pathRecord = jsonTable.data["SYNO.SurveillanceStation.ExternalRecording"].path pathCamera = jsonTable.data["SYNO.SurveillanceStation.Camera"].path Message(nil, nil, false, "Synology API Auth path = "..pathAuth) Message(nil, nil, false, "Synology API Surveillance Station Record path = "..pathRecord) Message(nil, nil, false, "Synology API Surveillance Station Camera path = "..pathCamera) SID = fibaro:getGlobal('SurvStation_SID') if SID == nil or SID == "" then Destroy() GetSID() SID = fibaro:getGlobal('SurvStation_SID') end Message(nil, nil, false, "Synology API Auth SID = "..SID) Action() if error == true then Destroy() GetSID() SID = fibaro:getGlobal('SurvStation_SID') Action() end else Message("Erreur", action.." failed", true, '<span style="color:red;">Error : Synology API version is too old : <b>DSM 4.0-2251</b> and <b>Surveillance Station 6.3</b> are required</span>') end else Message("Erreur", action.." failed", true, '<span style="color:red;">Error : Can not connect to Synology server, empty response</span>') end else Message("Erreur", action.." failed", true, '<span style="color:red;">Error : Can not connect to Synology server, errorCode='..errorCode..', status='..status..', ip='..ip..', port='..port..', payload='..payload..', response='..(response or "")..'</span>') end else Message("Erreur", action.." failed", true, '<span style="color:red;">Error : Not a valid action.</span>') end Lien vers le commentaire Partager sur d’autres sites More sharing options...
sebcbien Posté(e) le 30 août 2015 Signaler Partager Posté(e) le 30 août 2015 pour start et stop, je dois mettre ceci pour que ça fonctionne: (version=1) function Action() for i = 1, #cameras do if action == "start" or action == "stop" then payload = "/webapi/"..pathRecord.."?api=SYNO.SurveillanceStation.ExternalRecording&method=Record&version=1&cameraId="..cameras[i].."&action="..action.."&_sid="..SID Lien vers le commentaire Partager sur d’autres sites More sharing options...
sebcbien Posté(e) le 30 août 2015 Signaler Partager Posté(e) le 30 août 2015 ok, donc avec ces modif, ca fonctionne :-) Par contre j'ai une petite demande: J'avais créé des boutons style AllOn AllOff jusque là pas de souci Mais j'avais créé aussi des boutons In Only et Out Only qui eux activaient les camera 1 et 2 et désactivaient les cameras 3 4 et 5. Donc voilà , si tu ne sais pas comment t'occuper, c'est une idée d'amélioration ;-) Sinon le retour d'état est vraiment sympa et ça va beaucoup plus vite qu'avant... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 30 août 2015 Auteur Signaler Partager Posté(e) le 30 août 2015 Jojo, j'ai vraiment pas le temps de jeter un oeil àce code en ce moment, tu as le temps de traiter, avec toutes les infos de Sebcbien ? Tu sais que ton VD marche très bien chez moi, mais apparemment il reste des incompatibilités !! Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 31 août 2015 Signaler Partager Posté(e) le 31 août 2015 J'ai vu les commentaires de sebcbien. Je ne comprends pas, car je n'ai rien changé àvotre logique. J'y regarde. Sebcbien, la v4 fonctionnait ? Envoyé de mon Nexus 5 en utilisant Tapatalk Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 31 août 2015 Signaler Partager Posté(e) le 31 août 2015 @ sebcbien, tu n'as vraiment pas de chance, je regarde à ton problème après le souper lol Sérieusement, le problème de création automatique des variables ne fonctionne qu'en v4.x, car l'API a changé. J'ai vu que tu utilisais également une vieille version du code de Lazer, pas la version 4.0 ? Comme Lazer et moi avons validé cette version sur le firmware V4.x, je propose de le laisser tel quel, étant donné que tu as un firmware v3.600, dautant plus que tu as trouvé une solution. ok ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 1 septembre 2015 Signaler Partager Posté(e) le 1 septembre 2015 je confirme, je n'ai rien changé à la logique des API etc de Lazer. Comme sebcbien a trouvé la solution pour faire fonctionner le module en v3.600 Comme nous avons validé que cela fonctionnait impec avec la version 4.x de HC2 Je propose de ne rien changer à cette version publiée. SAUF si quand sebcbien est passé en v4.x (mais ça j'ai le temps de prendre des vacances ) et qu'il a encore des problèmes. ok ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
sebcbien Posté(e) le 6 septembre 2015 Signaler Partager Posté(e) le 6 septembre 2015 Voilà, suis en V4, ton script modifié (avec mes valeurs de version pour la validation de l'API) continue de fonctionner :-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 6 septembre 2015 Signaler Partager Posté(e) le 6 septembre 2015 et avec les valeurs de versions originales ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
sebcbien Posté(e) le 13 septembre 2015 Signaler Partager Posté(e) le 13 septembre 2015 Bonjour, il faut rajouter les codes d'erreur dans quasi tous les boutons: Sinon quand l'erreur arrive le script plante car il ne trouve pas ce tableau local API_CAMERA_ERROR_CODE = { [400] = "Execution failed.", [401] = "Parameter invalid.", [402] = "Camera disabled." } Lien vers le commentaire Partager sur d’autres sites More sharing options...
sebcbien Posté(e) le 13 septembre 2015 Signaler Partager Posté(e) le 13 septembre 2015 et avec les valeurs de versions originales ? Voilà , j'ai pris le tremps de tester, voici les message d'erreur: List: [DEBUG] 21:34:24: Synology Surveillance Station number of cameras = 5 [DEBUG] 21:34:24: Found camera ID=1 Vendor=AXIS Model=xxx PTZ Enabled=true address=XXX.XXX.XXX.XXX [DEBUG] 21:34:25: Found PTZ preset Salon et Cuisine ID=4 [DEBUG] 21:34:25: Found PTZ preset All ID=5 [DEBUG] 21:34:25: Found PTZ preset Hall ID=3 [DEBUG] 21:34:25: Found PTZ preset Hall et Salon ID=6 [DEBUG] 21:34:25: Found PTZ patrol Pat Hall vr cuisi ID=1 [DEBUG] 21:34:25: Found camera ID=2 Vendor=ONVIF Model=Generic_ONVIF Enabled=true address=XXX.XXX.XXX.XXX [DEBUG] 21:34:26: Error : Synology Surveillance Station list PTZ presets failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} [DEBUG] 21:34:26: Error : Synology Surveillance Station list PTZ patrols failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} [DEBUG] 21:34:26: Found camera ID=4 Vendor=AXIS Model=207W Enabled=true address=XXX.XXX.XXX.XXX [DEBUG] 21:34:27: Error : Synology Surveillance Station list PTZ presets failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} [DEBUG] 21:34:27: Error : Synology Surveillance Station list PTZ patrols failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} [DEBUG] 21:34:27: Found camera ID=5 Vendor=ONVIF Model=Generic_ONVIF Enabled=true address=XXX.XXX.XXX.XXX [DEBUG] 21:34:28: Error : Synology Surveillance Station list PTZ presets failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} [DEBUG] 21:34:28: Error : Synology Surveillance Station list PTZ patrols failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} [DEBUG] 21:34:28: Found camera ID=6 Vendor=ONVIF Model=Generic_ONVIF Enabled=false address=XXX.XXX.XXX.XXX [DEBUG] 21:34:29: Error : Synology Surveillance Station list PTZ presets failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} [DEBUG] 21:34:30: Error : Synology Surveillance Station list PTZ patrols failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} Start ou Stop, ou enable ... [DEBUG] 21:41:29: Error : Synology API version is too old : DSM 4.0-2251 and Surveillance Station 6.3 are required All On: avis c'est parceque vous testez sur xpenology ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 13 septembre 2015 Signaler Partager Posté(e) le 13 septembre 2015 @sebcbien il faut rajouter les codes d'erreur dans quasi tous les boutons: Mais il faudrait également les traiter, ce qui n'est pas prévu actuellement. [DEBUG] 21:34:25: Found camera ID=2 Vendor=ONVIF Model=Generic_ONVIF Enabled=true address=XXX.XXX.XXX.XXX [DEBUG] 21:34:26: Error : Synology Surveillance Station list PTZ presets failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} [DEBUG] 21:34:26: Error : Synology Surveillance Station list PTZ patrols failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} [DEBUG] 21:34:26: Found camera ID=4 Vendor=AXIS Model=207W Enabled=true address=XXX.XXX.XXX.XXX [DEBUG] 21:34:27: Error : Synology Surveillance Station list PTZ presets failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} [DEBUG] 21:34:27: Error : Synology Surveillance Station list PTZ patrols failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} [DEBUG] 21:34:27: Found camera ID=5 Vendor=ONVIF Model=Generic_ONVIF Enabled=true address=XXX.XXX.XXX.XXX [DEBUG] 21:34:28: Error : Synology Surveillance Station list PTZ presets failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} [DEBUG] 21:34:28: Error : Synology Surveillance Station list PTZ patrols failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} [DEBUG] 21:34:28: Found camera ID=6 Vendor=ONVIF Model=Generic_ONVIF Enabled=false address=XXX.XXX.XXX.XXX [DEBUG] 21:34:29: Error : Synology Surveillance Station list PTZ presets failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} [DEBUG] 21:34:30: Error : Synology Surveillance Station list PTZ patrols failed, Execution failed., {"error":{"code":400,"errors":{"param1":"","param2":""}},"success":false} c'est probablement que c'est caméra n'ont pas de PTZ définies => pas de problème [DEBUG] 21:41:29: Error : Synology API version is too old : DSM 4.0-2251 and Surveillance Station 6.3 are required quelles sont tes versions de DSM et de Surveillance Station ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
sebcbien Posté(e) le 13 septembre 2015 Signaler Partager Posté(e) le 13 septembre 2015 DSM: dernier en date: 5.2-5592 Update 4 date: 2015/09/04 Surveillance station: V7.0-3706 Lien vers le commentaire Partager sur d’autres sites More sharing options...
sebcbien Posté(e) le 13 septembre 2015 Signaler Partager Posté(e) le 13 septembre 2015 note to self: erreur 117 = pas assez de permissions... ce qui est fou c'est que ça marche depuis un mois, que je n'ai pas changé de version, ni de droits et que ça marchait... ?!? bref, on peut ajouter ceci: local API_CAMERA_ERROR_CODE = { [117] = "Not Enough Permission or access denied.", [400] = "Execution failed.", [401] = "Parameter invalid.", [402] = "Camera disabled." } edit: ok j'ai compris... j'avais utilisé admin pour enable et disable, donc le sid a été généré avec. ensuite une fois le sid bon, on peut mettre n'importe quel user/passwor, ça fonctionnera jusqu'a ce que le sid soit révoqué Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 14 septembre 2015 Signaler Partager Posté(e) le 14 septembre 2015 @sebcbien, je te promets, je n'ai rien bu. Mais je ne comprends plus rien, sauf que peut-être que l'utilisateur que tu as renseigné ne serait pas admin de tes caméras (cfr le 1° post de Lazer) Je veux bien regarder, mais comme tu sembles être le seul àavoir des problèmes, ce sera plus difficile : il faudrait que je puisse reproduire l'erreur (mais laquelle ?) chez moi Lien vers le commentaire Partager sur d’autres sites More sharing options...
sebcbien Posté(e) le 14 septembre 2015 Signaler Partager Posté(e) le 14 septembre 2015 L'erreur était due àun utilisateur qui n'avais pas assez de droits. J'avais généré ce sid avec un compte admin, mais une fois le sid généré, j'avais mis un autre user. Or, si on change user/password dans le script lua après avoir généré un sid, ça n'a pas d'impact car le système utilisé toujours le sid précédent. Je pensais donc que ça marchait. Mais après quelques jours, lorsque le sid àexpiré, le nouveau généré (avec un user qui n'avait pas assez de droits) donnait une erreur 117. L'erreur 117 n'existait pas et le script plantais. Il faut donc ajouter l'erreur 117 àAPI_CAMERA_ERROR_CODE ... Et cette variable doit être présente dans le script derrière chaque bouton (elle n'y est pas dans ta dernière version) car sinon le script plante au lieu de retourner une erreur. Sent from my SM-N910F using Tapatalk Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 14 septembre 2015 Signaler Partager Posté(e) le 14 septembre 2015 ok rajouter l'erreur 117, mais la table API_CAMERA_ERROR_CODE n'est définie que dans le bouton List. Ne serait-ce pas mieux de le rajouter dans la table API_AUTH_ERROR_CODE, qui existe dans tous les boutons ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 14 septembre 2015 Auteur Signaler Partager Posté(e) le 14 septembre 2015 C'est bizarre que ça plante quand le code 117 apparait, normalement le script est censé gérer le cas de figure d'un code inconnu en renvoyant "???" : ..(self.API_CAMERA_ERROR_CODE[tonumber(jsonTable.error.code)] or self.API_COMMON_ERROR_CODE[tonumber(jsonTable.error.code)] or "???").. Donc ça veut dire qu'il y a un endroit où on a oublié de mettre cette protection en place ? C'est àquelle ligne que ça se produit ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 15 septembre 2015 Signaler Partager Posté(e) le 15 septembre 2015 merci de prendre le relais Lazer, car en effet je ne comprenais pas non plus, d'autant plus que je n'ai jamais été autant dans le détail du code Lien vers le commentaire Partager sur d’autres sites More sharing options...
angusperde Posté(e) le 15 septembre 2015 Signaler Partager Posté(e) le 15 septembre 2015 (modifié) Je cherche à importer dans mon HC2 le module : Surveillance_Station.vfib Ou peut-on le trouver ? Trouvé.... Modifié le 15 septembre 2015 par angusperde Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés