mprinfo Posté(e) le 9 mai 2020 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 9 mai 2020 Auteur Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 9 mai 2020 Auteur Signaler Partager Posté(e) le 9 mai 2020 reserver Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 9 mai 2020 Auteur Signaler Partager Posté(e) le 9 mai 2020 reserver Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 9 mai 2020 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 9 mai 2020 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 12 mai 2020 Auteur Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés