Aller au contenu

Lazer

Messages recommandés

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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".

Lien vers le commentaire
Partager sur d’autres sites

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))

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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  :13: , et c'est que ce n'est pas si compliqué que ça ...

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 ...

Lien vers le commentaire
Partager sur d’autres sites

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".

Lien vers le commentaire
Partager sur d’autres sites

@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....

Lien vers le commentaire
Partager sur d’autres sites

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

 

549690Sanstitre2.png

 

 

le login password doit être déjà  renseignés dans SAFARI, d'ou le log auto

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...