Page 1 sur 7

[LUA] Horaires de marées

Publié : 18 avr. 2016, 18:16
par Neutrino
Bonjour,

Je mets à disposition de la communauté ce petit script sans prétention.
Il permet d'afficher dans un capteur text le coefficient de marées ainsi que les horaires de pleine mer et basse mer.

Code : Tout sélectionner

local scriptName = 'maree'
local scriptVersion = '2.0'

--                                        Dummy à créer :
local textDeviceIdx = 133
local port = 122

return {
	active = false,
	logging = {
		level = domoticz.LOG_DEBUG, -- Uncomment to override the dzVents global logging setting
		marker = scriptName..' '..scriptVersion
	},	
	on = {

		timer = {'every 6 hours'},
		httpResponses = {
			scriptName,
		},		
	},

	execute = function(domoticz, item) 

		if item.isTimer then
			local url = "http://horloge.maree.frbateaux.net/ws"..port..".js"
			domoticz.log('Requesting data from maree.fr', domoticz.LOG_DEBUG)
			domoticz.openURL({url = url, method = 'GET', callback = scriptName}).afterSec(7)

		end

		if not item.isHTTPResponse then return end

		local response = item
		if (not response.ok) or (response.trigger ~= scriptName) then
			domoticz.log('Last http response was not what expected. Trigger: '..response.trigger, domoticz.LOG_ERROR)
			domoticz.log(response.data, domoticz.LOG_ERROR)
			return
		end

		if response.trigger == scriptName then
			local horaires = ""
			local coeff = ""
			domoticz.log('maree data has been received', domoticz.LOG_DEBUG)
			local contents = response.data
			--domoticz.log('data : '..contents, domoticz.LOG_DEBUG)
			for _,v in ipairs(response.lines) do
				--domoticz.log(v)
				if (string.find(tostring(v),"Coef")~= nil ) then
					domoticz.log ("coeff : "..v:sub(46):gsub(";",""))
					coeff = v:sub(46):gsub(";","")
				end
				if (string.find(tostring(v),"marégramme")~= nil ) then
					domoticz.log ("horaires : "..v:sub(48,v:find("<div")-1):gsub("<b>",""):gsub("</b>",""):gsub("<br>"," "))
					horaires = v:sub(48,v:find("<div")-1):gsub("<b>",""):gsub("</b>",""):gsub("<br>"," ")
				end
				
			end
			domoticz.devices(textDeviceIdx).updateText('Coeff '..coeff.." "..horaires)

			
		end
		
	end
}

Pour trouver le numéro de votre port favoris, il faut aller sur maree.info, taper le nom du port (ou de la ville) et cliquer dessus.
L'URL de la page ouverte sera de type : http://maree.info/122
Vous avez deviné, 122 est le numéro à mettre après "port ="

Re: Horaires de marées

Publié : 18 avr. 2016, 21:00
par deennoo
Bah voilà ! Liée a une webcam sur la nord de Bisca, je saurais si j'ai le temps d'aller profité du swell !

Re: Horaires de marées

Publié : 18 avr. 2016, 22:27
par Grincheux
Merci pour le partage, je vais testé.
Je le verrais bien sur la custom page de Vil1driver.

Re: Horaires de marées

Publié : 18 avr. 2016, 22:49
par oula85
Bien vu voisin !!! Ca peut etre utile effectivement

Re: Horaires de marées

Publié : 06 juin 2016, 21:30
par Stef17
Ce serait sympas effectivement... mais les info s'affiche ou ??? j'ai mis le script dans home/pi/domoticz/script/lua/ sous le nom script_time_marees.lua ... j'ai essayé de le lancer via un interrupteur avec dans action on : script:///home/pi/domoticz/script/lua/script_time_marees.lua comme expliqué pour les débutants sur http://easydomoticz.com/domoticz-et-scripts-les-bases/ mais y a rien qui se passe !

Re: Horaires de marées

Publié : 06 juin 2016, 22:09
par deennoo
c'est ecrit dans le script :

Code : Tout sélectionner

if (time.hour % 6 ==0 and time.min == 1) then
il s'execute une fois par jour a 6h du matin

est ce que tu as cree un dumy text ? reglages>>materiels>>dummy>>cree un capteur>>text

Ici on parle de scripts en LUA le langague natif dans domoticz donc :

http://easydomoticz.com/?s=lua

Bonne Lecture

Re: Horaires de marées

Publié : 06 juin 2016, 22:33
par Neutrino
En fait il s'exécute à 00:01, 06:01, 12:01 et 18:01 ;)

Re: Horaires de marées

Publié : 07 juin 2016, 12:36
par Stef17
Donc si j'ai bien compris je fait ça dans la partie événement en lua que j'appelle "script_time_marees" je suppose qu'il ajouteras tout seul l'extension... mais cela ne me dis pas comment l'afficher... j'ai bien créer un dumy text qui est maintenant dans "Mesure" que j'ai appelé "Maree" et qui affiche "hello world"... mais comment le script va s'y afficher ???

Eureka... en indiquant dans le script l'idx du dumy text ??? c'est bien cela ???
textDeviceIdx = L'idx du dumy que j'ai créé

Je suis vraiment nul en script et je ne penses pas être le seul ;-) j'avais impimé dans ma tete le numero du port mais quand on débute en prog sur un truc particulier comme domoticz... on ne sait pas ce que c'est l'idx...

Re: Horaires de marées

Publié : 07 juin 2016, 12:55
par Neutrino
C'est bien ça ! ;)
En fait Domoticz propose 2 manières de stocker les scripts LUA :
- Soit via l'interface Événements, les scripts sont alors stocker dans la BDD.
- soit en mettant des fichiers texte dans le répertoire /domoticz/scripts/lua/ .
Perso, je préfère les fichiers, plus facilement copiables, modifiables, "sauvegardables"...

Re: Horaires de marées

Publié : 07 juin 2016, 14:34
par Stef17
Donc j'aurais pu faire en mettant le script dans /domoticz/scripts/lua/

Moi aussi je préfère en fichier brut... c'est plus dans mon esprit ;-)

Pour les sauvegardes, existe t il une façon simple sur raspberry pour copier ce genre de fichier sur partage réseau (synology) ?