Aller au contenu
pepite

Afficheur led SmartLed Messenger

Recommended Posts

J'ai pas tout suivi, mais c'est quoi le souci ?

C'est d'obtenir la dernière version du firmware ?

Partager ce message


Lien à poster
Partager sur d’autres sites

ok stp tu a une idee donc en GEA pour envoyer un message par exemple :

le 20/10/2019 a 08H00 "Bonjour a tous"

?

merci

apres pour la quantite je ferais plein de ligne ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui partage aux copains du forum :)

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai pas tout suivi les potos.

 

J'avais la 2.2. je viens de lui demander la 2.3 par email. Dès que je la reçois je la post.

 

;)

 

 

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Le ‎19‎/‎09‎/‎2019 à 14:08, CharlesO a dit :

ok stp tu a une idee donc en GEA pour envoyer un message par exemple :

le 20/10/2019 a 08H00 "Bonjour a tous"

?

merci

apres pour la quantite je ferais plein de ligne ;-)

Salut

SVP une ame charitable pour m'aider

merci

Partager ce message


Lien à poster
Partager sur d’autres sites

@CharlesO,

 

Dans une Scène déclarer le code suivant et modifier les ip des instances (pour gérer plusieurs SmartLed) 

--[[
%% properties
%% events
%% globals
--]]

-- User Variable
-- Insert below all you Sonos API Instances with IP, Port
local Instance={}
Instance.default = {ip = "192.168.xxx.xxx", port = 80}
Instance.Salon = {ip = "192.168.xxx.xxx", port = 80}
-- Value Intensity 0 (dark) to 15 (brightest) Speed 10 (Fast) to 50 (slow)
local defaultvalue={intensity=8, locale=1, speed=50, static=0}
local Smartled={};

--------------------------------------------------------------------------------------------------------------------
----------------------------------------- Do not touch after theses lines ------------------------------------------
--------------------------------------------------------------------------------------------------------------------

-- Remplacement des caractères spéciaux -- Thanks to Steven for this function !
function replaceChar(s)
  local sprime = s:gsub("à", "à"):gsub("é", "é"):gsub("è", "è"):gsub("î", "î"):gsub("ô", "ô"):gsub("û", "û"):gsub("ù", "ù"):gsub("ê", "ê"):gsub("â","â"):gsub(" ' ", "'")
  return sprime
end

-- Log Color Function --
function Log(color, message)
	if color and color ~= "" then
		fibaro:debug('<span style="color:'..color..';">'..message..'</span>')
	else
		fibaro:debug(message)
	end
end

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, " ", "%%20")
  end
  return str	
end



-- Function to dialog with SmartLed API ---
function callSmartLed(URL, Instance)
  	local httpClient = net.HTTPClient({ timeout = 20000 })
	httpClient:request(URL, {
	options = { method = 'GET',
		headers = {
		["content-type"] = 'application/json',
	}},
	success = function (response)
		if tonumber(response.status) == 200 then
			Log("green", Instance.." Action réussi")	  
		else
			Log("red", Instance.. " Erreur : " .. tostring(response.data))					
		end
	end,
	error = function(err)
	  Log("red", Instance.. ' Erreur = ' .. err)
	end,
	})
	httpClient = nil;
end


function Smartled(instance, message, locale, intensity, speed, static)
  	local URL = 'http://'..Instance[instance].ip..':'..Instance[instance].port..'/?message='..url_encode(message)..'&intensity='..intensity..'&speed='..speed..'&local='..locale..'&static='..static
    callSmartLed(URL, instance)
end

-----------------------
-- Get all arguments --
-----------------------
local scene_params = fibaro:args()
if (scene_params) then
  for k, v in ipairs(scene_params) do
    
    for i,j in pairs(v) do
    	print(i, j)
    end
   	if ( v.instance and not instance ) then instance = v.instance Log("grey", "Instance : "..instance) end
   	if ( v.message and not message ) then message = v.message Log("grey", "Message : "..message) end
    if ( v.speed and not speed ) then speed = v.speed Log("grey", "Speed : "..speed) else speed = defaultvalue.speed end
	if ( v.intensity and not intensity ) then intensity = v.intensity Log("grey", "Intensity : "..intensity) else intensity = defaultvalue.intensity end
    if ( v.locale and not locale ) then locale = v.locale Log("grey", "Locale : "..locale) else locale = defaultvalue.locale end
	if ( v.static and not static ) then static = v.static Log("grey", "Static : "..static) else static = defaultvalue.static end
  end
 
  ----------------------------------------------------------
  -- Check if instance exist, if not use default instance --
  ----------------------------------------------------------

  if ( not instance or instance == "") then
	instance = "default"
    Log("grey","Instance : default")
  elseif not Instance[instance] then
    Log("red", "L'instance "..instance.." est inconnu, verifier la casse ou créer celle-ci")
  	instance = false
  end
  
   if instance then
	if message then
        Smartled(instance, message, locale, intensity, speed, static)
  	 end
   end
end

Dans GEA dans la partie config remplacer le <id_scene> par le numéro de scène créer précédemment : 

 

    GEA.options.smartled = {name = "SmartLed",
        action = function(message, intensity, static, speed) local _smartledscene = <id_scene>
        fibaro:startScene(_smartledscene, {{message = GEA.getMessage(message), static=static, speed=speed, intensity=intensity}}) end,
    }
           
    GEA.options.smartled_salon = {name = "SmartLed_Salon",
      action = function(message, intensity, static, speed ) local _smartledscene = <id_scene>
      fibaro:startScene(_smartledscene, {{message = GEA.getMessage(message), instance="Salon", static=static, speed=speed, intensity=intensity}}) end,
    }
    
    GEA.getMessageDecorator = function(msg)
        msg = msg:gsub("#shorttime#", GEA.options.shorttime.getValue())
        return msg
    end
    
    GEA.options.shorttime = {name="ShortTime",
        getValue = function() return os.date('%H:%M') end,
    }

 Ensuite dans GEA : 

 Dans les actions voici comment déclarer le smartled avec l'ensemble des paramètres :

- {"SmartLed", "#shorttime# Ext:#value[5]#C RDC:#value[1]#C #value[3]#ppm Etage:#value[2]#C #value[4]#ppm", "3","0","50"} (Affiche l'heure plus d'autre valeur, en intensité 3, non Static et à une vitesse de 50) 

Ex : 

- GEA.add({"Global", "Dodo", "Yes"}, 120, "", {"SmartLed", ""}) -- Arrêt du SmartLed la Nuit si il est en affichage non static (un bug est présent lorsque l'on est en affichage static le smartled ne s'éteint pas)

- GEA.add(true, 30, "", {{"SmartLed_Salon", "#shorttime#", "1", "1"}, {"Repeat"}}, "SmartLed Salon Update") (Affiche l'heure sur le SmartLed Salon avec un intensité de 1 et en mode Static)
- GEA.add({"Value+", id["TEMP_THERMOSTAT"], 0}, 30, "", {{"SmartLed", "#shorttime# Température : #value[1]#", "1"}, {"Repeat"}}) (Affiche l'heure sur le SmartLed  et la température du device TEMP_THERMOSTAT avec un intensité de 1)

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci @ADN182 vais vraiment finir par craquer vu que tu as fait le boulot ;-)

Vais soumettre au boss d’intégrer SmartLed dans la nouvelle version de GEA en test. mais j'avoue trouver plus stable que cela reste un plugin, on peut peut-etre aussi en faire un plugin d'ailleurs.

 

A voir l'avis du boss pour la stablilité de GEA.

 

@Steven

Partager ce message


Lien à poster
Partager sur d’autres sites

Je suis pas forcement pour le mettre dans le code GEA, plus dans les options comme c'est fait la comme cela ça alourdi pas le code de tous le monde alors que l'on est une minorité à avoir un SmartLed, après je sais pas ce que le "plugins" apporte (j'ai pas du tout regardé).

 

Je trouve pas mal l'idée que chaque développeur de module virtuel ou autre puisse mettre une option GEA dans leur Tuto.

Partager ce message


Lien à poster
Partager sur d’autres sites

D'ou l'idée du plugin, GEA les retrouve automatiquement c'est en dehors du coeur de GEA et facilement partageable

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×