Aller au contenu

Recommended Posts

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.

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
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".

Partager ce message


Lien à poster
Partager sur d’autres sites

super, on ne t'appelle pas Dkieu pour rien.

et je mets quoi dans expected return code ?

Il check les 2 ou 1 seul ?

Partager ce message


Lien à poster
Partager sur d’autres sites

ok, j'ai mis 200 dans le return code, et c'est passé ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Tout marche nickel pour moi.

Je n'ai pas essayé les VG.

Merci lazer !!

Sent from my Note4

Partager ce message


Lien à poster
Partager sur d’autres sites

Cool.

Je précise que les Vg sont créés automatiquement.

Partager ce message


Lien à poster
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))

Partager ce message


Lien à poster
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.

Partager ce message


Lien à poster
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 ...

Partager ce message


Lien à poster
Partager sur d’autres sites

en effet, alors je garde l'idée dans un coin de la tête, mais c'est pas pour tout de suite.

Partager ce message


Lien à poster
Partager sur d’autres sites

no stress grand chef ! Je suis (mal) payé pour avoir des idées tordues  :74:

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

VD adopté qui replace chez moi le VD check internet. Top merci lazer

Partager ce message


Lien à poster
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 ...

Partager ce message


Lien à poster
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".

Partager ce message


Lien à poster
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....

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

×