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]
nico.g2
Messages : 35
Enregistré le : 05 mai 2017, 23:30

Script Lua - Présence sur BBox

Message par nico.g2 » 01 nov. 2017, 08:06

Bonjour à vous tous,

Je vous présente mon script présence qui fonctionne très bien sur BBox. Si d'autre personne on fait la même chose pour d'autre box, pourquoi ne pas ajouter un switch en variable afin de sélectionner le model de box.

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=false

local BBoxIP = "192.168.1.254"

local ping={}
--{Adresse IP, Name of Dunmmy Switch}
ping[1]={'192.168.1.20', 'Smartphone 1'}
ping[2]={'192.168.1.21', 'Smartphone 2'}
--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 = {}
print('script_time_BBoxPresence.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 ~= 0) 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

return commandArray
Mise à jour du 30/11/2018 => Suite au changement d'adresse pour interroger la box.

Code : Tout sélectionner

--~/domoticz/scripts/lua/script_time_BBoxPresence.lua

--[[
auteur: nico.g2
version: 1.1
date : 23/11/2018
Principe: récupérer via l'API de la BBox de Bouygue Telecom si les périphériques sont présent.
]]--

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

local ping={}
--{Adresse IP, Name of Dunmmy Switch}
ping[2]={'192.168.x.x', 'Smartphone 1'}
ping[1]={'192.168.x.x', 'Smartphone 2'}
--ping[3]={'192.168.x.x', '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 = {}
print('script_time_BBoxPresence.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 "https://mabbox.bytel.fr/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
	voir_les_logs('Pour le smartphone: '..ping[ip][2])
	for i, resultat in pairs (jsonLocation.hosts.list) do
		if (resultat.ipaddress == ping[ip][1]) then
			voir_les_logs('Adresse IP: '..resultat.ipaddress..' => OK')
			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 ~= 0) and (otherdevices[ping[ip][2]]=='On')) then
				commandArray[ping[ip][2]]='Off'
				voir_les_logs(ping[ip][2]..':Switch OFF')
			end
			break
		else
			voir_les_logs('Adresse IP: '..resultat.ipaddress..' => NOK')
		end
		
	end
end

return commandArray
Modifié en dernier par nico.g2 le 30 nov. 2018, 23:26, modifié 2 fois.

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.


vulbas
Messages : 355
Enregistré le : 24 janv. 2017, 18:45

Re: Sript Lua - Présence sur BBox

Message par vulbas » 01 nov. 2017, 13:55

hello
serait ce adaptable sur un routeur classique ? asus ac88u par exemple ?

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

Re: Sript Lua - Présence sur BBox

Message par nico.g2 » 01 nov. 2017, 16:17

Hello vulbas

Je ne connais pas ton router, moi j'attaque la Bbox grasse à l'API de la Bbox, qui me répond en Json. A voir si tu trouve des infos la dessus.

cyberbob
Messages : 464
Enregistré le : 28 nov. 2016, 19:43
Localisation : Belgique

Re: Sript Lua - Présence sur BBox

Message par cyberbob » 01 nov. 2017, 22:12

nico.g2 a écrit :...Je vous présente mon script présence qui fonctionne très bien sur BBox.
Merci pour avoir posté ton script après l'avoir testé.
C'est une autre approche via l'api de la box contrairement au ping classique.
Domoticz Stable V4.9700 sur Synology DSM 6.2 / 2 x RFlink V48.4 - 433.92MHz(Dio/Chacon) & 433.42MHz(RTS) / Script en LUA & Blocky

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.


Pierryck
Messages : 15
Enregistré le : 25 févr. 2016, 16:56

Re: Sript Lua - Présence sur BBox

Message par Pierryck » 05 nov. 2017, 16:54

Merci. Je l'ai testé avec succes, c'est bien mieux que le ping. A coupler avec d'autres tests logiques si jamais un telephone est eteint ou en 4G.

emylive
Messages : 36
Enregistré le : 21 mars 2017, 22:43

Re: Sript Lua - Présence sur BBox

Message par emylive » 09 mars 2018, 13:42

bonjour,
J'ai tester sur ma bbox sensation mais sans succès. Faut il avoir la box miami?
Merci beaucoup
Domoticz+Xiaomi gateway

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

Re: Sript Lua - Présence sur BBox

Message par nico.g2 » 10 mars 2018, 09:44

Bonjour emylive,

Le modem semble être le même, donc pas de raison que cela ne fonctionne pas. Vérifie l'adresse IP de ta box. Mes tes téléphones en adresse IP et rentre les sur le script. Et vérifie le nom des interrupteurs sous domoticz soit bien renseigné dans le tableau (sensible à ma case).

emylive
Messages : 36
Enregistré le : 21 mars 2017, 22:43

Re: Sript Lua - Présence sur BBox

Message par emylive » 10 mars 2018, 10:19

nico.g2 a écrit :Bonjour emylive,

Le modem semble être le même, donc pas de raison que cela ne fonctionne pas. Vérifie l'adresse IP de ta box. Mes tes téléphones en adresse IP et rentre les sur le script. Et vérifie le nom des interrupteurs sous domoticz soit bien renseigné dans le tableau (sensible à ma case).
Bonjour Nico,

L'adresse IP de ma box est bien http://192.168.1.254.
J'ai vérifié les adresses IP des phones avec "advanced IP Scanner"
Le nom des interrupteurs à été copié/collé d'un autre script présence qui fonctionnait.

Dans les logs le script a l'air de fonctionner : 2018-03-10 10:18:00.531 LUA: script_time_BBoxPresence.lua

Je n'ai aucune erreur pourtant les interrupteurs ne changent pas de statut!
Domoticz+Xiaomi gateway

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

Re: Sript Lua - Présence sur BBox

Message par nico.g2 » 10 mars 2018, 16:19

emylive a écrit : Bonjour Nico,

L'adresse IP de ma box est bien http://192.168.1.254.
J'ai vérifié les adresses IP des phones avec "advanced IP Scanner"
Le nom des interrupteurs à été copié/collé d'un autre script présence qui fonctionnait.

Dans les logs le script a l'air de fonctionner : 2018-03-10 10:18:00.531 LUA: script_time_BBoxPresence.lua

Je n'ai aucune erreur pourtant les interrupteurs ne changent pas de statut!
As tu essayé de mettre "debugging" à true?

Sinon essai de mettre directement l'adresse dans ton explorateur internet:

Code : Tout sélectionner

http://192.168.1.254/api/v1/hosts

emylive
Messages : 36
Enregistré le : 21 mars 2017, 22:43

Re: Sript Lua - Présence sur BBox

Message par emylive » 10 mars 2018, 19:13

nico.g2 a écrit :
As tu essayé de mettre "debugging" à true?

Sinon essai de mettre directement l'adresse dans ton explorateur internet:

Code : Tout sélectionner

http://192.168.1.254/api/v1/hosts

oui debugging=true

Dans mon explorateur cela me donne entre autre :
{"id":107,"hostname":"A5emy","macaddress":"88:ad:d2:96:19:18","ipaddress":"192.168.1.73","type":"DHCP","link":"Wifi 5","devicetype":"Device","firstseen":"2016-09-27T20:31:24+0200","lastseen":0,"ip6address":[{"ipaddress":"fe80::8aad:d2ff:fe96:1918","status":"Preferred","lastseen":"2018-03-10T10:27:17+0100","lastscan":"2018-03-08T20:17:27+0100"}],"ethernet":{"physicalport":99,"logicalport":99,"speed":0,"mode":""},"wireless":{"band":"5.0","rssi0":"-42","rssi1":0,"rssi2":0,"mcs":0,"rate":135,"idle":0,"wexindex":"-1","starealmac":"88:ad:d2:96:19:18"},"plc":{"rxphyrate":"","txphyrate":"","associateddevice":0,"interface":0,"ethernetspeed":0},"lease":55787,"active":1,"parentalcontrol":{"enable":0,"status":"Allowed","statusRemaining":0,"statusUntil":""},"ping":{"average":987132},"scan":{"services":[]}}

Il est donc bien listé sur la bbox comme sur le script : ping[2]={'192.168.1.73', 'A5emy'}

Si tu as une idée!
Merci en tout cas pour ton aide :)
Domoticz+Xiaomi gateway

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