Page 2 sur 2

Re: custom page

Publié : 31 janv. 2016, 13:40
par vil1driver
si ça intéresse quelqu'un.. j'ai bien fouiné pour trouver l'app idéal pour me localiser et renseigner domoticz..

et je suis tombé sur traccar, https://www.traccar.org/

traccar c'est :
une app cliente vraiment simple à installer et à configurer, https://www.traccar.org/client/
un serveur personnel (windows, linux, osx) tout aussi simple à installer (pas de conf). https://www.traccar.org/download/

le serveur est également compatible avec une palanquée de gps matériels à installer sur véhicules.. https://www.traccar.org/devices/

une jolie interface web pour suivre tout ça..
Image

et du coups un petit script lua de ma conception pour envoyer les dernières coordonnées recueillies par le serveur traccar,
à domoticz dans des variables utilisateur (automatiquement créées par le script)..

Code : Tout sélectionner

--[[

 name: GPS
 type: time
 
 description: ce script permet de se connecter au serveur tracCar,
 de récupérer les dernières localisations gps des utilisateurs
 et de renseigner les variables correspondantes dans domoticz

--]]

--------------------------------
------ Tableau à éditer ------
--------------------------------

-- import des fontions pour lire le JSON (http://regex.info/code/JSON.lua)
json = (loadfile "/home/vil1driver/domoticz/scripts/lua/JSON.lua")()

-- chemin vers cURL
local curl = '/usr/bin/curl'

-- liste des utilisateurs déclarés dans traccar et leurs id correspondants
local user={}
user['olivier'] = '1'
user['delphine'] = '2'
-- etc..	

-- serveur traccar
local ip = '192.168.22.100'
local port = '8082'
local userName = 'admin'
local password = 'admin'

-- domoticz user:pass@ip:port
local domo = '192.168.22.100:8080'


--------------------------------
-- Fin du tableau à éditer --
--------------------------------


function url_encode(str)
  if (str) then
    str = string.gsub (str, "\n", "\r\n")
    str = string.gsub (str, "([^%w %-%_%.%~])",
        function (c) return string.format ("%%%02X", string.byte(c)) end)
    str = string.gsub (str, " ", "+")
  end
  return str	
end

local i = 0
  
local t = os.time()

-- il y a 10 minutes
local from =  os.date("!%Y-%m-%dT%T.000Z", t - 600)
-- dans 2 minutes
local to = os.date("!%Y-%m-%dT%T.000Z", t + 120)

commandArray = {}

for name, id in pairs(user) do

	i = i+1
	
	if(uservariables['gps_'..name] == nil) then
		
		-- création des variables utilisateur au besoin
		commandArray[i]={['OpenURL']=domo..'/json.htm?type=command&param=saveuservariable&vname=gps_'..url_encode(name)..'&vtype=2&vvalue=0,0'}
		print('GPS '..name..' : création variable')
				
	else

		local url = 'http://'..ip..':'..port..'/api/positions?deviceId='..id..'&from='..url_encode(from)..'&to='..url_encode(to)..'&page=1&start=0&limit=25'
		--print(url)
		
		-- get data
		local s=assert(io.popen(curl..' -u '..userName..':'..password..' "'..url..'"'))
		local jsonData = s:read('*all')
		s:close()
		local gps = json:decode(jsonData)

		local n = 0
		
		for i, record in pairs(gps) do
			n = i
		end
		
		gps = gps[n]
		
		-- update variables
		if (gps ~= nil) then
			print('GPS '..name..' : '..gps['latitude']..','..gps['longitude']..' - '..gps['fixTime']:gsub('T',' - '):gsub('Z','')..' (UTC)')
			commandArray['Variable:gps_'..name] = gps['latitude']..','..gps['longitude']
		else
			print('GPS '..name..' : pas de données récentes')
		end
	end
	
end

return commandArray


en suite, libre à vous d'afficher cela sur la page trafic comme on l'a vu il y a quelques jours ;)

Re: Monitor - google maps - trafic - gps

Publié : 12 oct. 2017, 15:42
par boboz2
Bonjour,

Tout d'abord je viens de découvrir Monitor et c'est un travail de malade et complètement ouvert pour laisser libre court à son imagination. Donc un grand merci Vil1driver.

Petite question, est ce que depuis tes dernières réponses tu as trouvé un autre moyen que traccar pour te localiser et remonter l'infos à domoticz ?

Merci et encore bravo

boboz2

Re: Monitor - google maps - trafic - gps

Publié : 12 oct. 2017, 17:44
par vil1driver
Non désolé, je ne m'en sers plus

Re: Monitor - google maps - trafic - gps

Publié : 27 oct. 2017, 10:46
par boboz2
Tant pis merci quand même.

Re: Monitor - google maps - trafic - gps

Publié : 01 déc. 2017, 09:59
par landaisbenj
Hello moi je suis fan de la solution sur apple !!! Si il y a des API disponnible en json ou quoi je suis preneur. je vais fouillé le script en exemple ici pour voir ce que je trouve mais plus d'info serai util.

Merci

Re: Monitor - google maps - trafic - gps

Publié : 24 janv. 2018, 21:15
par seblultra
Bonjour à tous et bravo vil1driver pour ce travail magnifique.
Je customise petit à petit monitor...
J'ai toutefois un petit soucis avec la page traffic qui fait planter la page sur chrome sur la tablette (difficile du coup de voir l'erreur).
Ca arrive au bout d'un certain temps, je n'ai pas réussi à trouver ce qui cloche.
Pas de soucis lorsque je désactive la page traffic.
Je pense que le plantage de la page arrive lors d'un refresh automatique.
Quelqu'un a ce problème ?

Re: Monitor - google maps - trafic - gps

Publié : 18 févr. 2018, 18:55
par seblultra
up :?