[LUA] Horaires de marées

Vous avez créé 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.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: [LUA] Horaires de marées

Message par Keros »

A minima, son DomoticZ devrait tourner un peu mieux ;)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
berserk
Messages : 76
Inscription : 30 nov. 2015, 21:55

Re: [LUA] Horaires de marées

Message par berserk »

Purée je m'en douté.... j'avais pu la date exact ou j'ai passé la maj. Bon ça m'a permis de remettre tout à jour
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [LUA] Horaires de marées

Message par Neutrino »

C'est pareil chez les copains : https://community.jeedom.com/t/plugin-v ... 8h/72564/2
Même source de données !
Le serveur semble filtrer les accès.
Un appel CURL n'est plus supporté. Il va falloir ruser :roll:
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [LUA] Horaires de marées

Message par Neutrino »

Nouvelle version en DzVents !

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
}
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
berserk
Messages : 76
Inscription : 30 nov. 2015, 21:55

Re: [LUA] Horaires de marées

Message par berserk »

Bonjour impeccable merci.
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Re: [LUA] Horaires de marées

Message par pierrotori »

@Neutrino merci il me manquait cette info dans ma domotique et en plus en dzvents :D
calouis
Messages : 109
Inscription : 08 nov. 2015, 10:34
Localisation : 62

Re: [LUA] Horaires de marées

Message par calouis »

Bonjour
Voici ma version adaptée @Neutrino

Code : Tout sélectionner

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

--                                        Dummy à créer :
local textDeviceIdx = 54
local port = 8

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

		timer = {'every minute'},
	--	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
}
et l'erreur en retour :

Code : Tout sélectionner

2021-12-06 12:13:00.483 Status: dzVents: Info: maree 2.0: ------ Start internal script: maree_coef:, trigger: every minute
2021-12-06 12:13:00.483 Status: dzVents: Debug: maree 2.0: Requesting data from maree.fr
2021-12-06 12:13:00.483 Status: dzVents: Debug: maree 2.0: OpenURL: url = http://horloge.maree.frbateaux.net/ws8.js
2021-12-06 12:13:00.484 Status: dzVents: Debug: maree 2.0: OpenURL: method = GET
2021-12-06 12:13:00.484 Status: dzVents: Debug: maree 2.0: OpenURL: post data = nil
2021-12-06 12:13:00.484 Status: dzVents: Debug: maree 2.0: OpenURL: headers = nil
2021-12-06 12:13:00.484 Status: dzVents: Debug: maree 2.0: OpenURL: callback = maree
2021-12-06 12:13:00.484 Status: dzVents: Info: maree 2.0: ------ Finished maree_coef
2021-12-06 12:13:07.757 Status: dzVents: Info: Handling httpResponse-events for: "maree
2021-12-06 12:13:07.757 Status: dzVents: Info: maree 2.0: ------ Start internal script: maree_coef: HTTPResponse: "maree"
2021-12-06 12:13:07.758 Status: dzVents: Debug: maree 2.0: maree data has been received
2021-12-06 12:13:07.758 Status: dzVents: Debug: maree 2.0: data : //Horloge
2021-12-06 12:13:07.758 document.getElementById( "Aiguille" ).title="Cliquez pour plus de détails sur la marée du jour";
2021-12-06 12:13:07.758 <b>PM 13h00</b><div title=\"Cliquez pour afficher le marégramme et les prédictions des marées sur 7 jours\">+ d'info</div>";
2021-12-06 12:13:07.758 Status: dzVents: Info: maree 2.0: ------ Finished maree_coef
2021-12-06 12:13:07.758 Error: dzVents: Error: (2.4.28) maree 2.0: An error occurred when calling event handler maree_coef
2021-12-06 12:13:07.758 Error: dzVents: Error: (2.4.28) maree 2.0: ...omoticz/scripts/dzVents/generated_scripts/maree_coef.lua:47: bad argument #1 to 'ipairs' (table expected, got nil)
Si quelqu'un pouvait me venir en aide...
Merci d'avance
_ Raspberry Pi3 Stretch + Domoticz V4.11214
_ dzVents Version: 2.4.28
_ Python 3.5.3
_ usbZwave
_ RFX433XL USB Version: Pro XL1/1035
_ GW Xiaomi
_ station meteo Oregon & Netatmo
_ LMS
_ Yeelight
_ Tradfri
_ Zigate plugin 4.11.012 + Version : 031d
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [LUA] Horaires de marées

Message par Neutrino »

Version de DzVents trop ancienne, il faut la 3.1.0 minimum.
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
Lou Castelou
Messages : 36
Inscription : 24 avr. 2017, 15:58

Re: [LUA] Horaires de marées

Message par Lou Castelou »

Super.
Cela fonctionne impeccablement.
Merci et bonne journée.
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Re: [LUA] Horaires de marées

Message par pierrotori »

bonjour
avez vous aussi depuis ce matin cette erreur Données des marées non disponible ?
erreur:
coeff : ML="51" // WARNING : Merci d'indiquer le UserAgent réel qui fait la requête, par exemple le nom script ou le plugin utilisé (ainsi qu'un lien vers les sources le cas échéant, ex. github).

Alors que quand je l'execute dans edge ca fonctionne ?!?
Pierrotori
Répondre