Erreur script

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 <\>.
banditos
Messages : 126
Inscription : 30 nov. 2016, 09:55

Erreur script

Message par banditos »

Bonjour,
j'ai récupéré un scrip que j'ai modifié pour contrôler le fonctionnement de mes sondes, mais j'ai une erreur:

Error:EventSystem:in/home/pi/domoticz/scripts/lua/script_time_pile.lua:/home/pi/domoticz/scripts/lua/script_time_pile.lua:56: ']' expected near 'Off'

Merci de votre aide car je n'y connais pas grand chose en script.

PS: j'ai bien créé les inter pour les fonctions ON et OFF



-- script_time_alarme.lua
-- ce script détecte une perte de sonde et coupe le chauffage dans la zone

--------------------------------
------ Variables à éditer ------
--------------------------------

local sonde = 'Cuisine' -- Nom de la sonde de température
local sonde2 = 'Salle de B.' -- Nom de la sonde de température
local sonde3 = 'Extér.Sud' --Nom de la sonde de température
local sonde4 = 'Sonde test' --Nom de la sonde de température


--------------------------------
-- Fin des variables à éditer --
--------------------------------

time = os.date("*t")

function timedifference(d)
s = otherdevices_lastupdate[d]
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = os.difftime (t1, t2)
return difference
end


-- on regarde de quand date la dernière relève de température

local lastSeen = timedifference(sonde)
local lastSeen2 = timedifference(sonde2)
local lastSeen3 = timedifference(sonde3)
local lastSeen4 = timedifference(sonde4)

commandArray = {}


-- lance une alarme par zone au dessus du seuil 600s si l'alarme est à OFF et la coupe en dessous si l'alarme est à On

if (lastSeen > 600 ) and (otherdevices['Sonde cuisine HS'] == 'Off') then
commandArray['Sonde cuisine HS']='On'
end
if (lastSeen2 > 600 ) and (otherdevices['Sonde salle de B HS'] == 'Off') then
commandArray['Sonde Salle de B HS']='On'
end
if (lastSeen3 > 600 ) and (otherdevices['Sonde Exte.SUD HS'] == 'Off') then
commandArray['Sonde Exter.Sud HS']='On'
end
if (lastSeen4 > 600 ) and (otherdevices['Sonde test HS] == 'Off') then
commandArray['Sonde test HS']='On'
end
if (lastSeen < 600 ) and (otherdevices['Sonde cuisine HS'] == 'On') then
commandArray['Sonde cuisine HS']='Off'
end
if (lastSeen2 < 600 ) and (otherdevices['Sonde Salle de B HS'] == 'On') then
commandArray['Sonde Salle de B HS']='Off'
end
if (lastSeen3 < 600 ) and (otherdevices['Sonde Exté.SUD HS'] == 'On') then
commandArray['Sonde Exté.SUD HS']='Off'
end
if (lastSeen4 < 600 ) and (otherdevices['Sonde test HS'] == 'On') then
commandArray['Sonde test HS']='Off'
end




return commandArray
Raspberry pi 3/Rasbian-Jessie/Domoticz/RFXtrx433 USB 433.92MHz/SSD 32gb
lmet
Messages : 252
Inscription : 30 juin 2017, 18:16
Localisation : Val d'Oise
Contact :

Re: Erreur script

Message par lmet »

Bonjour,
Il manque une ' après 'Sonde test HS sur cette ligne :

Code : Tout sélectionner

if (lastSeen4 > 600 ) and (otherdevices['Sonde test HS] == 'Off') then
Domoticz : V4.10717
Zigate : V4.11230 plugin:4.5.4 firmware:031a
Mon petit blog domotique
Fredok
Messages : 90
Inscription : 12 août 2016, 15:04

Re: Erreur script

Message par Fredok »

Bonjour, je fait presque la même chose avec mes capteurs de températures mais je stocke la liste des capteurs qui ne répondent pas depuis au moins 2h=14400s dans capteur virtuel type texte (nom du capteur 'Check_list')
Voici le script time qui s'effectue tous les jours a midi

Code : Tout sélectionner

heur=os.date('*t')
--check_list (si les capteurs de temperature n'emmettent pas pendant plus de 2h ==> Erreur)
-- liste des capteurs a chécker
local capteurs_temp={'Garage2_Temp_Humi(GW)','Garage1_TEMP_HUM(GW)','Temp_Bureau1(Oregon BB02)','Garage1_Temp_Conduit(GW)','Garage1_Temp_Tampon(GW)','Garage1_Temp_chaudiere(GW)','Garage1_DeriveeTemp_Conduit(GW)','Garage1_Temp_melangeur(GW)','Grenier_Temps_panneau_solaire','Temp_Congelateur','SDB2_Cresta','Temp_grenier(oregon CD)','Temp_poele_bois(oregon CB)','Temp_Congel_cuisine','Temp_cuisine_gw','Salle_A_Manger_Temp','Temp_chambre2(gw)','Exterieure_TempHum','TV_Temp','Bureau2_TEMP','entree_temp(gw)','Netatmo_Temperature'}
if (heur["min"] == 0) and (heur["hour"] == 12) then
    print('check list')
    for i,v in ipairs(capteurs_temp) do 
        if timeDiffDevice(v)>14400 then
            text=v..' ne répond pas'
            print(text)
            commandArray[#commandArray+1]={['UpdateDevice'] = otherdevices_idx['Check_list']..'|0|'..text }
        end
    end
end
bye...
Opi
RFXCOM
RFLINK 433 & 315
Mysensors
Wifi & Mqtt
EspEasy - Tasmota
Zigate+
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Erreur script

Message par vil1driver »

Salut,

@Frefok, ton script ne permet de stocker le nom que d'un seul capteur.. Check_List s'auto écrase
Il vaudrait mieux sortir l'update de la boucle et faire en sorte que text s'incrémente
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
Fredok
Messages : 90
Inscription : 12 août 2016, 15:04

Re: Erreur script

Message par Fredok »

Bonjour, cela fonctionne très bien voici le log du capteur
2018-08-15 12:00:00 Temp_chambre2(gw) ne répond pas
2018-08-15 12:00:00 Temp_cuisine_gw ne répond pas
2018-08-15 12:00:00 Temp_Congel_cuisine ne répond pas
2018-08-15 12:00:00 Garage1_DeriveeTemp_Conduit(GW) ne répond pas
2018-08-15 12:00:00 Garage1_Temp_Conduit(GW) ne répond pas
2018-08-14 12:00:00 Temp_chambre2(gw) ne répond pas
2018-08-14 12:00:00 Temp_cuisine_gw ne répond pas
2018-08-14 12:00:00 Temp_Congel_cuisine ne répond pas
2018-08-14 12:00:00 Garage1_DeriveeTemp_Conduit(GW) ne répond pas
2018-08-14 12:00:00 Garage1_Temp_Conduit(GW) ne répond pas
2018-08-13 12:00:00 Temp_chambre2(gw) ne répond pas
2018-08-13 12:00:00 Temp_cuisine_gw ne répond pas
2018-08-13 12:00:00 Temp_Congel_cuisine ne répond pas
2018-08-13 12:00:00 Garage1_DeriveeTemp_Conduit(GW) ne répond pas
2018-08-13 12:00:00 Garage1_Temp_Conduit(GW) ne répond pas
2018-08-12 12:00:00 Temp_chambre2(gw) ne répond pas
2018-08-12 12:00:00 Temp_cuisine_gw ne répond pas
2018-08-12 12:00:00 Temp_Congel_cuisine ne répond pas
2018-08-12 12:00:00 Garage1_DeriveeTemp_Conduit(GW) ne répond pas
2018-08-12 12:00:00 Garage1_Temp_Conduit(GW) ne répond pas
2018-08-11 12:00:00 Temp_chambre2(gw) ne répond pas
2018-08-11 12:00:00 Temp_cuisine_gw ne répond pas
2018-08-11 12:00:00 Temp_Congel_cuisine ne répond pas
2018-08-11 12:00:00 Garage1_DeriveeTemp_Conduit(GW) ne répond pas
2018-08-11 12:00:00 Garage1_Temp_Conduit(GW) ne répond pas
Le type de capteur virtuel est "général, text"
@+
Opi
RFXCOM
RFLINK 433 & 315
Mysensors
Wifi & Mqtt
EspEasy - Tasmota
Zigate+
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Erreur script

Message par vil1driver »

Si c'est l'historique qui t'intéresse, et non ce qu'il affiche, OK, je n'ai rien dis ;)
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
banditos
Messages : 126
Inscription : 30 nov. 2016, 09:55

Re: Erreur script

Message par banditos »

lmet a écrit :Bonjour,
Il manque une ' après 'Sonde test HS sur cette ligne :

Code : Tout sélectionner

if (lastSeen4 > 600 ) and (otherdevices['Sonde test HS] == 'Off') then

Merci,
j'ai rectifié mais maintenant j'ai ça:

Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_pile.lua: /home/pi/domoticz/scripts/lua/script_time_pile.lua:22: bad argument #1 to 'sub' (string expected, got nil)
Raspberry pi 3/Rasbian-Jessie/Domoticz/RFXtrx433 USB 433.92MHz/SSD 32gb
lmet
Messages : 252
Inscription : 30 juin 2017, 18:16
Localisation : Val d'Oise
Contact :

Re: Erreur script

Message par lmet »

Franchement tu gagnerais à utiliser l'éditeur interne de Domoticz comme décrit ici
Pour l'erreur précédente tu aurais eu l'erreur de syntaxe en direct sur l'interface.
Pour celle que tu décris tu verrais que la ligne 22 correspond à :

Code : Tout sélectionner

year = string.sub(s, 1, 4)
donc que "s" vaut "nil" alors qu'il s'attend à une chaine.
Peut-être voir du coté de 'Cuisine' comme sonde ?
Domoticz : V4.10717
Zigate : V4.11230 plugin:4.5.4 firmware:031a
Mon petit blog domotique
banditos
Messages : 126
Inscription : 30 nov. 2016, 09:55

Re: Erreur script

Message par banditos »

Merci de votre aide,

Cuisine, Salle de B, Extérieur.Sud, Voisinage et sonde test sont bien des sondes
Raspberry pi 3/Rasbian-Jessie/Domoticz/RFXtrx433 USB 433.92MHz/SSD 32gb
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Erreur script

Message par vil1driver »

Salle de B ou Salle de B. ?

Extérieur.Sud ou Extér.Sud ?

sonde test ou Sonde test ?

De la rigueur..

Une bonne pratique est d'éviter les accents et caractères spéciaux

Une autre est d'ajouter des print dans le code pour aider à trouver le moment où ça coince
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
Répondre