[Résolu] os.execute("date")

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
ziaziung
Messages : 183
Inscription : 13 févr. 2015, 14:04

[Résolu] os.execute("date")

Message par ziaziung »

Bonsoir.
Comment récupérer dans une variable lua le résultat de "date" (celui tapé en ligne de commande dans une console?
Dernière modification par ziaziung le 14 déc. 2016, 21:12, modifié 1 fois.
Raspi B+ et 2. RfxcomE. Volets Somfy. Sondes de température "AliExpress". Domoticz version 4.10761
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: os.execute("date")

Message par vil1driver »

Salut,

Ceci t'aidera peut être

https://www.google.fr/search?q=lua+date
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
ziaziung
Messages : 183
Inscription : 13 févr. 2015, 14:04

Re: os.execute("date")

Message par ziaziung »

Bien sur j'ai deja fait. Dans la doc il est dit que os.date(...) donne la date (les mois, les jours de la semaine) dans la langue locale :
All representations follow the current locale. Therefore, in a locale for Brazil-Portuguese, %B would result in "setembro" and %x in "16/09/98".

Ben ca marche pas. Alors que lorsque je tape date dans une console c'est en français, donc je me disais que se serait bien de récupérer cela!!!
Raspi B+ et 2. RfxcomE. Volets Somfy. Sondes de température "AliExpress". Domoticz version 4.10761
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: os.execute("date")

Message par Neutrino »

Code : Tout sélectionner

function os.capture(cmd)
  local f = assert(io.popen(cmd, 'r'))
  local s = assert(f:read('*a'))
  f:close()
  return s
end
commandArray = {}
print(os.capture("export LANG=\"fr_FR.UTF-8\" &&  date \"+%A %d %B %Y\""))
return commandArray
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
ziaziung
Messages : 183
Inscription : 13 févr. 2015, 14:04

Re: os.execute("date")

Message par ziaziung »

Merci, ça fonctionne parfaitement.
Raspi B+ et 2. RfxcomE. Volets Somfy. Sondes de température "AliExpress". Domoticz version 4.10761
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [Résolu] os.execute("date")

Message par Neutrino »

De rien ;)
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
stephdes
Messages : 285
Inscription : 06 oct. 2016, 20:50

Re: [Résolu] os.execute("date")

Message par stephdes »

Neutrino a écrit :De rien ;)
Désolé de te déranger à nouveau sur ce sujet Neutrino mais ça ne fonctionne pas chez moi.

Si j'ajoute ton script au début du mien en supprimant évidemment "return commandArray" il me retourne toujours le mois en anglais.

Tu peux m'aider sur l'utilisation de ton petit script s'il te plaît ?

Voici le début de mon script :

Code : Tout sélectionner

commandArray = {}

local timeNow= os.date("*t")

if (timeNow.hour >=6 and timeNow.hour <=7) then
   commandArray['Variable:bonjour'] = tostring (0)
end

if (otherdevices['Reveil'] == 'On' and
timeNow.hour >=7 and
uservariables["bonjour"] == '0')
then
local sentence="Bonjour ! Nous sommes le " ..(os.date("%d")).. " " .. os.date("%B")
MiniPC W10 + RFXCom 433e + RFLINK
Elec : Téléinfo
Alexa + Alhau
MQTT...
(merci easydomoticz !)
Neutrino
Messages : 2662
Inscription : 10 juil. 2015, 15:42
Localisation : Les Herbiers(85)

Re: [Résolu] os.execute("date")

Message par Neutrino »

Parce que c'est noël :

Code : Tout sélectionner

function os.capture(cmd)
  local f = assert(io.popen(cmd, 'r'))
  local s = assert(f:read('*a'))
  f:close()
  return s
end
commandArray = {}
local ajourdhui = os.capture("export LANG=\"fr_FR.UTF-8\" &&  date \"+%A %d %B %Y\"")

local timeNow= os.date("*t")

if (timeNow.hour >=6 and timeNow.hour <=7) then
   commandArray['Variable:bonjour'] = tostring (0)
end

if (otherdevices['Reveil'] == 'On' and
timeNow.hour >=7 and
uservariables["bonjour"] == '0')
then
local sentence="Bonjour ! Nous sommes le " ..ajourdhui
return commandArray
Par contre, c'est pas testé :mrgreen:
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?
stephdes
Messages : 285
Inscription : 06 oct. 2016, 20:50

Re: [Résolu] os.execute("date")

Message par stephdes »

Merci de ton aide Neutrino, mais rien à faire...

J'ai tenté un print(ajourdhui) pour voir et le résultat est "LUA:"

Vide... :?
MiniPC W10 + RFXCom 433e + RFLINK
Elec : Téléinfo
Alexa + Alhau
MQTT...
(merci easydomoticz !)
stephdes
Messages : 285
Inscription : 06 oct. 2016, 20:50

Re: [Résolu] os.execute("date")

Message par stephdes »

Bon, j'ai botté en touche et j'ai contourné le problème. ça fonctionne maintenant ;)

Code : Tout sélectionner

local sentence="Bonjour ! Nous sommes le " ..(os.date("%A")).. " " ..(os.date("%d")).. " " .. os.date("%B")

local d = {
      ["Monday"] = " Lundi ",
      ["Tuesday"] = " Mardi ",
      ["Wednesday"] = " Mercredi ",
      ["Thrusday"] = " Jeudi ",
      ["Friday"] = " Vendredi ",    
      ["Saturday"] = " Samedi ",
      ["Sunday"] = " Dimanche ",

      ["January"] = " Janvier ",
      ["February"] = " Février ",
      ["March"] = " Mars ",    
      ["April"] = " Avril ",
      ["May"] = " Mai ",
      ["June"] = " Juin ",
      ["July"] = " Juillet ",
      ["August"] = " Août ",
      ["September"] = " Septembre ",
      ["October"] = " Octobre ",
      ["November"] = " Novembre ",
      ["December"] = " Décembre "   }
      
      for k, v in pairs (d) do
          sentence = string.gsub(sentence, k, v)
      end
MiniPC W10 + RFXCom 433e + RFLINK
Elec : Téléinfo
Alexa + Alhau
MQTT...
(merci easydomoticz !)
Répondre