mprinfo Posté(e) le 9 mai 2020 Signaler Posté(e) le 9 mai 2020 Bout de code lua sous forme de function pour HC3 J'ouvre ce topic pour le partage de bout de code ( Snippet ) Definition : https://fr.wikipedia.org/wiki/Snippet Il n'y aura aucun support on partage juste un Snippet qui fonctionne 1 seul smippet par post il faudra que le code soit commenté au maximum et on privilégie le français la présentation du snippet doit etre identique a la présentation que je vais faire poste 2 si vous avez des idées sur la présentation je suis preneur C'est idée avait déjà était évoquer pour la HC2 elle vient donc de notre ami @steven @steven il y aura probablement beaucoup de code qui seront adapté de tes scripts car tu m'as appris beaucoup je ne peux donc de citer a chaque fois 3
mprinfo Posté(e) le 9 mai 2020 Auteur Signaler Posté(e) le 9 mai 2020 Création Variable Globale -- ------------------------------------------------------------------- -- Création Variable Globale si non presente -- ------------------------------------------------------------------- function ajouter(nom, valeur, enumValeur, lecture) if (fibaro.getGlobalVariable(nom) == "") then -- Test si la variable existe fibaro.getGlobalVariable("") local data = { name = nom, value = valeur, readOnly = false, isEnum = false } -------------------------------------------------------------- -- si lecture = oui alors la variable sera en lecture seule -------------------------------------------------------------- if lecture == "read" then data.readOnly = true end -------------------------------------------------------------- -- si la variable est une variable enumeree -------------------------------------------------------------- if (type(enumValeur) ~= "nil") then data.value = enumValeur[1] data.isEnum = true data.enumValues = enumValeur end -------------------------------------------------------------- -- creation de la variable a partir de la table "data" ------------------------------------------------------------- print(json.encode(data)) api.post("/globalVariables/", data) else print("la variable : ", nom, "existe") end end Utilisation : création d'une variable standard ajouter("nom", "valeur") création d'une variable enumeree ajouter("nom", "", {"oui", "nom"}) création d'une variable standard en lecture seule ajouter("nom", "valeur", "read") création d'une variable enumeree en lecture seule ajouter("nom", "", {"oui", "nom"}, "read") Sous forme de table avec un ajout de plusieurs variable automatique local variables = { {nom = "JoursSemaine", valeur = "0"}, {nom = "Heure_Saison", enumValeur = {"Ete", "Hivers", "Printemps"}, lecture = "read"}, {nom = "toto", valeur = "68"} } ----------------------------------------------- -- execution de la fonction a partir des tables ----------------------------------------------- for _,v in ipairs(variables) do ajouter(v.nom, v.valeur, v.enumValeur, v.lecture) end 4
jjacques68 Posté(e) le 9 mai 2020 Signaler Posté(e) le 9 mai 2020 Convertir une date-heure, au format, "jj/mm/aaaa hh:mm:ss" en un TimeStamp --[[------------------------------------------------------------------- Convertion d'une Date/Heure en TimeStamp ---------------------------------------------------------------------]] function StringToTimeStamp(value) --extrait chaque valeur de la chaine dans des variales spécifiques day,month,year,hour,min,sec = string.match(value, "(%d+)/(%d+)/(%d+) (%d+):(%d+):(%d+)") --renvoie la valeur sous forme de chaine de caratères return tostring(os.time({day=day,month=month,year=year,hour=hour,min=min,sec=sec}))) end utilisation : print(StringToTimestamp("09/05/2020 20:37:15")) Résultat : 1589056635 3 1
jjacques68 Posté(e) le 9 mai 2020 Signaler Posté(e) le 9 mai 2020 Split une chaîne de caractères --[[--------------------------------------------------------- Split une chaine de caractères -----------------------------------------------------------]] function Split(s,sep) local t = {} --tableau recevant toutes les occurences de la chaine "s" --extrait toutes les occurences séprarées par le séparateur "sep" --et les ajoute dans le tableau for v in string.gmatch(s, "[^"..sep.."]+") do table.insert(t, v) end --renvoie le tableau t sous forme de chaine de caractères JSON return json.encode(t) end Utilisation : MonResultat = Split("ma_chaine_à_spliter","_") print("Résultat brut : ", MonResultat) print("affichage de tout le contenu :") for k,v in pairs(json.decode(MonResultat)) do print(v) end --ou encore : print("affichage de la deuxième occurence : ", MonResultat[2]) Résultat : Résultat brut : {"ma", "chaine", "à", "spliter"} affichage de tous les éléments : ma chaine à spliter affichage de la deuxième occurence : chaine 3 1
mprinfo Posté(e) le 12 mai 2020 Auteur Signaler Posté(e) le 12 mai 2020 le nombre de jours dans un mois ---------------------------------------------------------------------- -- Calcul du nombre de jours dans le mois ---------------------------------------------------------------------- -- Si année bissextile local function bissextile(Annee) return Annee % 4 == 0 and (Annee % 100 ~= 0 or Annee % 400 == 0) end -- Nombre de jours dans le mois function JourDansMois(Mois, Annee) return Mois == 2 and bissextile(Annee) and 29 or ("\31\28\31\30\31\30\31\31\30\31\30\31"):byte(Mois) end Utilisation : local mois = 2 local annee = 2020 local Jmois = JourDansMois(mois, annee) print ("Nombre de jours dans le mois",Jmois) Résultat : [DEBUG] [SCENE22]: Nombre de jours dans le mois 29 2
Messages recommandés