Lazer Posté(e) le 8 novembre 2015 Auteur Signaler Posté(e) le 8 novembre 2015 Dans la condition suivante : -- HTTP elseif param[3] == "http" then Tu as les 3 lignes suivantes que tu peux décommenter pour "décrouvrir" les réponses attendues : --if debug then --fibaro:debug("errorCode=" .. errorCode .. " - status=" .. status .. " - response=" .. response) --end N'oublie pas de mettre la variable debug=true en début de script. Autrement, tu peux faire la découverte à la main, on utilisant un bête Telnet (via PuTTY ou en ligne de commande) sur l'IP et le port de la machine que tu veux tester.
jojo Posté(e) le 8 novembre 2015 Signaler Posté(e) le 8 novembre 2015 merci Lazer, mais je ne comprends plus rien. Voici le debug [DEBUG] 19:16:44: WDTVLiveHub => 192.168.xxx.xxx [DEBUG] 19:16:44: Try #1 [DEBUG] 19:16:44: Error : 192.168.xxx.xxx => WDTVLiveHub => invalid http return code, errorCode=0, status=200 [DEBUG] 19:16:44: Notification : Attention : Code de retour http invalide pour WDTVLiveHub [DEBUG] 19:16:44: email [DEBUG] 19:16:44: Send Email user ID : 5 et le code correspondant -- HTTP elseif param[3] == "http" then local server = Net.FHttp(param[1], param[2]) local response, status, errorCode = server:GET(param[4]) if debug then fibaro:debug("errorCode=" .. errorCode .. " - status=" .. status .. " - response=" .. response) end if tonumber(errorCode) == 0 then if tonumber(status) == param[5] then if (response ~= nil) then if response:match(param[6]) then if debug then fibaro:debug("OK") end message = "" break else fibaro:debug('<span style="color:red;">Error : '..param[1]..' => '..device..' => unattended response, errorCode='..errorCode..', status='..status..'</span>') message = "Réponse inattendue pour "..device erreur = erreur + 1 end else fibaro:debug('<span style="color:red;">Error : '..param[1]..' => '..device..' => empty response, errorCode='..errorCode..', status='..status..'</span>') message = "Réponse vide reçue pour "..device erreur = erreur + 1 end else fibaro:debug('<span style="color:red;">Error : '..param[1]..' => '..device..' => invalid http return code, errorCode='..errorCode..', status='..status..'</span>') message = "Code de retour http invalide pour "..device erreur = erreur + 1 end le debug est bien true
Lazer Posté(e) le 8 novembre 2015 Auteur Signaler Posté(e) le 8 novembre 2015 ok, donc tu es confronté à un bug que je rencontre aussi sur tous mes VD. Si la variable response est trop grosse, alors la commande fibaro:debug n'affiche plus rien. En l'occurrence, ici ta variable response contient le contenu de la page Web de ton appareil. Donc ça peut être assez gros ! Tu n'as donc pas d'autre chois que de te tartiner l'apprentissage à la main, avec un telnet sur ton WDTV. Une fois connecté, il faut que tu tapes la commande suivante je crois : GET / HTTP/1.1 Euh, en fait je viens de penser, il y a plus simple. Avec ton navigateur, tu te connectes sur la page Web det on WDTV, tu regarde le code source de la page, et tu prends une chaine de caractère spécifique que tu pourras mettre dans ta variable DEVICES, colonne "Expected data".
jojo Posté(e) le 8 novembre 2015 Signaler Posté(e) le 8 novembre 2015 super, on ne t'appelle pas Dkieu pour rien. et je mets quoi dans expected return code ? Il check les 2 ou 1 seul ?
jojo Posté(e) le 8 novembre 2015 Signaler Posté(e) le 8 novembre 2015 ok, j'ai mis 200 dans le return code, et c'est passé ;-)
Lazer Posté(e) le 8 novembre 2015 Auteur Signaler Posté(e) le 8 novembre 2015 Oui 200 c'est la réponse normale. Il y a plein de codes, le 404 est le plus connu (la page demandée n'existe pas).
Cardane Posté(e) le 9 novembre 2015 Signaler Posté(e) le 9 novembre 2015 @jojo regarde ce lien, tu as la liste des code de retour possible http://www.w3.org/Protocols/HTTP/HTRESP.html 1
sebcbien Posté(e) le 9 novembre 2015 Signaler Posté(e) le 9 novembre 2015 Tout marche nickel pour moi. Je n'ai pas essayé les VG. Merci lazer !! Sent from my Note4
Lazer Posté(e) le 9 novembre 2015 Auteur Signaler Posté(e) le 9 novembre 2015 Cool. Je précise que les Vg sont créés automatiquement.
Lazer Posté(e) le 9 novembre 2015 Auteur Signaler Posté(e) le 9 novembre 2015 Les codes HTTP en français pour les non anglophones : https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP Et le hasard faisant bien les choses, une petite blague de geek, ça fait 1h que je cherche en vain ma chambre d'hôtel 5
jojo Posté(e) le 9 novembre 2015 Signaler Posté(e) le 9 novembre 2015 @jojo regarde ce lien, tu as la liste des code de retour possible http://www.w3.org/Protocols/HTTP/HTRESP.html Merci, je croyait que les codes étaient spécifiques à chaque site
TonyC Posté(e) le 9 novembre 2015 Signaler Posté(e) le 9 novembre 2015 Les codes HTTP en français pour les non anglophones : https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP Et le hasard faisant bien les choses, une petite blague de geek, ça fait 1h que je cherche en vain ma chambre d'hôtel Excellent !
jojo Posté(e) le 9 novembre 2015 Signaler Posté(e) le 9 novembre 2015 Lazer, Ce développement est vraiment génial ! Je n'ai pas encore utilisé les variables, mais il serait peu-être bon de préciser dans le premier topic qu'elles sont créées automatiquement, ce qui est géant, et à quoi on ne s'attend pas en tant que débutant. Il m'a déjà permis d'identifier qu'une caméra n'était plus connectée au réseau. Je me disais, je regarde ce soir. Et hop, elle est revenue. Quand ? Pourquoi ? ??? Je ne le saurai jamais. D'où l'idée de notifier quand un appareil revient ? J'ai fais un truc du genre dans le device DeadNodesAnalysis (il faudrait créer une VG avec le nom (et la date d'erreur du device, si on voulais pouvoir calculer depuis combien de temps il était en erreur))
Lazer Posté(e) le 9 novembre 2015 Auteur Signaler Posté(e) le 9 novembre 2015 Oui je sais il faut que je complète le premier post, je fais ça plus tard. Tu as toujours des idées tordues.... pour notifier quand l'appareil revient, c'est plus chaud, car il faut mémoriser le statut de chaque device, donc passer par un ou des variables globales. Ca va finir en usine à gaz.
jojo Posté(e) le 9 novembre 2015 Signaler Posté(e) le 9 novembre 2015 je savais pour mes idées tordues, c'est une déformation professionnelle. dans les dernière version du DeadNodeDicovery je fais qqch de similaire, avec une VG qui stocke les Dead Nodes -- chargement de la VD DeadNodes local DeadNodes = {} DeadNodes = fibaro:getGlobal("DeadNodes") if DeadNodes ~= "NaN" or DeadNodes ~= "" then DeadNodes = json.decode(DeadNodes) end if type(DeadNodes) ~= "table" then DeadNodes = {} end puis -- vérifier si noeud dans la table function InTable(Device) if DeadNodes["DV"..Device] == nil then return false else return true end end -- si node est dead/mort ... -- vérification si device est dans la table des noeuds morts if InTable(devID) == true then -- dans table -- vérification si > fréquence de notification if (DeadNodes["DV"..devID] + (FreqNotif*60*60)) < now ... else -- pas dans table DeadNodes["DV"..devID] = now ... -- sauvegarde de la table dans la VG DeadNodes = json.encode(DeadNodes) fibaro:setGlobal("DeadNodes", DeadNodes) isi j'y suis arrivé, tu peux sà»rement mieux que moi , et c'est que ce n'est pas si compliqué que ça ...
Lazer Posté(e) le 9 novembre 2015 Auteur Signaler Posté(e) le 9 novembre 2015 en effet, alors je garde l'idée dans un coin de la tête, mais c'est pas pour tout de suite.
jojo Posté(e) le 9 novembre 2015 Signaler Posté(e) le 9 novembre 2015 no stress grand chef ! Je suis (mal) payé pour avoir des idées tordues
jojo Posté(e) le 9 novembre 2015 Signaler Posté(e) le 9 novembre 2015 encore une autre idée foireuse, (pour l'autre coin de ta tête), mais plus facile àmettre en oeuvre. Je viens de recevoir un mail comme quoi un device ne fonctionnait plus. Je suis allé solutionner le problème, et je voudrais facilement pouvoir confirmer que c'est ok. Donc ne pourrait-on pas rajouter dans le mail de notif de l'erreur l'url qui a été testées, ainsi il n'y aurait plus qu'àcliquer sur le lien du mail pour vérifier
Sakkhho Posté(e) le 10 novembre 2015 Signaler Posté(e) le 10 novembre 2015 VD adopté qui replace chez moi le VD check internet. Top merci lazer
Sakkhho Posté(e) le 11 novembre 2015 Signaler Posté(e) le 11 novembre 2015 Hello On me basant sur le modele j'ai rajouté ma camera foscam, ça semble fonctionner J'essai de mettre mon répéteur wifi, mais j'ai une erreur [DEBUG] 14:01:18: Répéteur Wifi => 192.168.1.00 [DEBUG] 14:01:18: Try #1 [DEBUG] 14:01:18: Error : 192.168.1.00 => Répéteur Wifi => invalid http return code, errorCode=0, status=401 [DEBUG] 14:01:18: Notification : Attention : Code de retour http invalide pour Répéteur Wifi je suis un peu perdu sur les codes de retour, j'ai pas bien compris comment cela fonctionnait j'avoue ...
jojo Posté(e) le 11 novembre 2015 Signaler Posté(e) le 11 novembre 2015 pour les codes retour Les codes HTTP en français pour les non anglophones : https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP et pour Expected Data, tu met ceci : Euh, en fait je viens de penser, il y a plus simple. Avec ton navigateur, tu te connectes sur la page Web det on WDTV, tu regarde le code source de la page, et tu prends une chaine de caractère spécifique que tu pourras mettre dans ta variable DEVICES, colonne "Expected data".
Lazer Posté(e) le 11 novembre 2015 Auteur Signaler Posté(e) le 11 novembre 2015 @Sakkhho, tu as le code http 401 qui signifie Unauthorized : Une authentification est nécessaire pour accéder à la ressource Donc si ton répéteur Wi-Fi impose une authentification avant même de charger la page d'accueil, ça va être compliqué à gérer cette affaire....
Sakkhho Posté(e) le 11 novembre 2015 Signaler Posté(e) le 11 novembre 2015 le truc c'est que quand je me connecte avec l'ip, je tombe direct sur la page du répéteur (déjàloggué), j'ai pas une page d'accueil comme sur la FOSCAM par exemple et pas moyen de faire un logout
Lazer Posté(e) le 11 novembre 2015 Auteur Signaler Posté(e) le 11 novembre 2015 Tu veux dire que quand tu te connectes avec l'IP, tu as un popup qui s'ouvre pour te demander ton login/password ? Et ensuite, la page s'affiche, c'est bien ça ?
Sakkhho Posté(e) le 11 novembre 2015 Signaler Posté(e) le 11 novembre 2015 non j'accède direct sur la page principale sans passer par une page ou popup 'login/password'. Edit; c'est bon avec un autre navigateur j'ai bien la popup le login password doit être déjà renseignés dans SAFARI, d'ou le log auto
Messages recommandés