Script Lua - Présence sur BBox

Vous avez crée un script lua dont vous êtes fier, un .sh génial, un programme python hors du commun, un tuto , c'est ici que vous pouvez les partager.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement
Placez votre code entre [Quote] et {/Quote]
Phebus06
Messages : 197
Enregistré le : 26 janv. 2017, 09:25

Re: Sript Lua - Présence sur BBox

Message par Phebus06 » 23 sept. 2018, 13:03

Bonjour à tous,

Ma domotique ayant un peu évolué et en étant à mettre en place des scénari sur un état de présence par smartphone, me revoici ici.
Le script fonctionne super bien sauf que j'ai un téléphone qui décroche toujours plusieurs fois de quelques minutes dans la journée en étant présent.
Du coup j'aimerai pouvoir faire en sorte que l'absence du téléphone ne se fasse pas de suite, mais avec une temporisation de x minutes.
En faite je voudrais :
Quand le script se lance et que le smartphone et présent sur le wifi de la box sans latence mon interrupteur passe à On directement...(ça c'est bon).
Par contre je voudrais que lorsque le script se lance et que le smartphone sur le réseau wifi de la box n'est pas présent, il vérifie depuis quel heure il n'est plus présent et si c'est depuis plus de 5 min alors il passe mon interrupteur à Off, mais si c'est moins de 5 min il le laisse à On.

Voila je ne sait vraiment pas comment faire donc si quelqu'un peut m'aider ;)

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Phebus06
Messages : 197
Enregistré le : 26 janv. 2017, 09:25

Re: Sript Lua - Présence sur BBox

Message par Phebus06 » 25 sept. 2018, 14:03

Bon en cherchant à comprendre le script j'ai compris comment temporiser le décrochage des smartphones à 3min en changeant la ligne :

Code : Tout sélectionner

elseif ((resultat.lastseen > 180) and (otherdevices[ping[ip][2]]=='On')) then
ce qui fonctionne très bien pour mon smartphone celui de Fabrice, mais pas du tout pour celui de ma femme ????
je vous mets le script complet :

Code : Tout sélectionner

--[[
auteur: nico.g2
version: 1.0
date : 21/10/2017
Principe: récupérer via l'API de la BBox de Bouygue Telecom si les périphériques sont présent ou pas.
]]--

--------------------------------------------
------------ Variables à éditer ------------
-------------------------------------------- 
debugging=true    --false

local BBoxIP = "192.168.1.254"

local ping={}
--{Adresse IP, Name of Dunmmy Switch}
ping[1]={'192.168.1.9', 'Présence Smartphone Fabrice'}
ping[2]={'192.168.1.43', 'Présence Smartphone Isabelle'}
--ping[3]={'192.168.1.3', 'Device 3'}
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------

--------------------------------------------
---------------- Fonctions -----------------
-------------------------------------------- 
function voir_les_logs (s)
    if (debugging) then 
		if s ~= nil then
        print ("<font color='#f3031d'>".. s .."</font>")
		else
		print ("<font color='#f3031d'>aucune valeur affichable</font>")
		end
    end
end

--------------------------------------------
-------------- Fin Fonctions ---------------
-------------------------------------------- 


commandArray = {}
if devicechanged['Temporisation x secondes'] then
print('script_time_BBoxPresence V2.lua')

json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
--json = (loadfile "D:\\Domoticz\\scripts\\lua\\json.lua")()  -- For Windows
   
local config=assert(io.popen('curl "http://'..BBoxIP..'/api/v1/hosts"'))
local location = config:read('*all')
config:close()
location = location:sub(2, -3)
local jsonLocation = json:decode(location)

for ip = 1, #ping do
	for i, resultat in pairs (jsonLocation.hosts.list) do
		if (resultat.ipaddress == ping[ip][1]) then
			if ((resultat.lastseen == 0) and (otherdevices[ping[ip][2]]=='Off')) then
				commandArray[ping[ip][2]]='On'
				voir_les_logs(ping[ip][2]..':Switch ON')
			elseif ((resultat.lastseen > 180) and (otherdevices[ping[ip][2]]=='On')) then
				commandArray[ping[ip][2]]='Off'
				voir_les_logs(ping[ip][2]..':Switch OFF')
			end
			break
		end
		
	end
end
end

return commandArray
Quelqu'un peux t il m'aider à comprendre ce script afin que le téléphone de ma femme puisse aussi bénéficier d'un décrochage qu'au bout des 3min (180 secondes)
Merci...

nico.g2
Messages : 35
Enregistré le : 05 mai 2017, 23:30

Re: Sript Lua - Présence sur BBox

Message par nico.g2 » 27 sept. 2018, 21:53

Bonsoir Phebus06

En effet la variable lastseen contient bien la valeur du temps depuis que le périphérique n'est pas connecté à la box. Normalement ça doit fonctionner pour tes deux téléphone:

Code : Tout sélectionner

for ip = 1, #ping do
Boucle for pour chaque ligne d'adresse Ip du tableau (donc dans ton cas boucle réalisée deux fois)

Code : Tout sélectionner

for i, resultat in pairs (jsonLocation.hosts.list) do
Boucle for pour chaque périphérique connecté ou qui ont était connecté avec la box.

C'est claire ou faut-il encore plus de d'info.

Phebus06
Messages : 197
Enregistré le : 26 janv. 2017, 09:25

Re: Sript Lua - Présence sur BBox

Message par Phebus06 » 29 sept. 2018, 08:55

Bonjour et merci

mais du coup je ne comprend pas pourquoi en faisant les tests le Smartphone Fabrice attend bien le temps demandé avant de mettre en non présent alors que smartphone Isa le fait instantanément ???

Ne faudrait il pas écrire un truc comme ça :

Code : Tout sélectionner

for ip = 1 and ip = 2, #ping do
Non ?

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


nico.g2
Messages : 35
Enregistré le : 05 mai 2017, 23:30

Re: Sript Lua - Présence sur BBox

Message par nico.g2 » 02 oct. 2018, 22:58

Bonsoir,

Non ca ne peux pas fonctionner. Car c'est une boucle for et il faut lui donner la condition de début et de fin. et c'est tout. Par contre c'est étonnant ce comportement. Et en essayant de faire des prints à différent niveau des variables pour voir ce qu'il se passe peut être une bonne méthode de dé-bug.

Phebus06
Messages : 197
Enregistré le : 26 janv. 2017, 09:25

Re: Sript Lua - Présence sur BBox

Message par Phebus06 » 03 oct. 2018, 12:21

Merci pour cette réponse, je vais essayer de faire ça avec mon petit niveau, mais c'est vrai que c'est bizarre.
Mais faut vraiment que j'y arrive car tout mon système d'alarme et d'accueil de mon apparte est basé sur la présence des smartphone et tout fonctionne pour moi mais ma femme non du coup ça l'énerve et elle me renvoie dans les cordes avec ma domotique lol

EricS
Messages : 1
Enregistré le : 11 nov. 2018, 11:08

Re: Sript Lua - Présence sur BBox

Message par EricS » 11 nov. 2018, 11:25

Bonjour à tous,

Merci Nico.g2 pour ce script qui fonctionnait parfaitement ... jusqu'il y a 2 jours.
En pleine nuit sans aucune action particulière, il s'est mis en erreur:

2018-11-11 11:20:03.075 Error: EventSystem: in /home/domoticz/domoticz/scripts/lua/script_time_BBoxPresence.lua: ...moticz/domoticz/scripts/lua/script_time_BBoxPresence.lua:56: attempt to index local 'jsonLocation' (a nil value)

Avec mon petit niveau j'ai essayé de trouver ce qui avait changé pour provoquer ça, et là je sèche.
Du coup, j'ai relancé un script_time basé sur les pings, mais c'est quand même moins efficace, alors si quelqu'un a une idée je suis preneur.

Merci d'avance et bon week end

papoo
Messages : 1882
Enregistré le : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Sript Lua - Présence sur BBox

Message par papoo » 11 nov. 2018, 11:30

sur livebox ça arrive de temps à autres
un simple reboot résout le problème
peut être est-ce la même chose sur bbox?
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github

Phebus06
Messages : 197
Enregistré le : 26 janv. 2017, 09:25

Re: Sript Lua - Présence sur BBox

Message par Phebus06 » 22 nov. 2018, 12:22

Bonjour,

Et voila je suis moi aussi dèg car le script ne fonctionne plus non plus depuis 3 jours, même erreur...
2018-11-22 12:10:31.552 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_device_BboxPresence_v2.lua: ...i/domoticz/scripts/lua/script_device_BboxPresence_v2.lua:56: attempt to index local 'jsonLocation' (a nil value)
J'ai relancé la box mais rien n'y fait...

C'est vraiment galère pour moi car mon système d'"alarme hybride" avec reconnaissance du coup ne fonctionne plus.

Si quelqu'un a une idée. J'espère que ce n'est pas Bouygues qui aurait fait une petite maj de la box qui bloquerait :cry:

Phebus06
Messages : 197
Enregistré le : 26 janv. 2017, 09:25

Re: Sript Lua - Présence sur BBox

Message par Phebus06 » 22 nov. 2018, 18:09

Bon en fait on a plus accès à l'api en interrogeant la box en faisant :
si quelqu'un sait comment y accéder...

Merci d'avance

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre