script erroné

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
Charles
Messages : 3
Inscription : 17 nov. 2020, 12:11

script erroné

Message par Charles »

if cs1 and cs2 and cs3 then
short=1
else
short=0
endif

bonjour j ai un message d'erreur "lua: main.lua:20: syntax error near 'if'"

et je ne trouve pas la solution aussi si qq pouvait m'aider ?

Merci
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: script erroné

Message par Keros »

Bonjour Charles et bienvenue sur le forum ;)

Je traduit la ligne en question : Si cs1 et cs2 et cs3 alors short=1 sinon short=0 fin

Il manque en effet quelque chose.

Maintenant sans l'ensemble de ton code, il est difficile de aiguiller sur la syntaxe que tu cherches.

Pour info, il y a des balises code (avec le bouton </>) qui permettent de séparer le code de ton message : ça facilite la lecture.
Il y a beaucoup de code sur le forum tu devrais trouver des exemples.
J'ai écris quelques lignes à propos de la programmation dans ma signature. Ça peut t'aider à démarrer ;)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: script erroné

Message par boum »

Yup, totalement d'accord avec Keros. Il manque une information pour t'aider.
L'erreur ligne 20 est très probablement causée par ce qui précède. Au pif, je dirais qu'il manque un end ou une accolade fermante } pour terminer la déclaration précédente (ou même plus haut dans le script).
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: script erroné

Message par thier »

Je dirais end et non pas endif

Envoyé de mon SM-J710F en utilisant Tapatalk

PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: script erroné

Message par Keros »

J'avais pas vu, merci thier ;)
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Charles
Messages : 3
Inscription : 17 nov. 2020, 12:11

Re: script erroné

Message par Charles »

Keros a écrit : 17 nov. 2020, 12:51 Bonjour Charles et bienvenue sur le forum ;)

Je traduit la ligne en question : Si cs1 et cs2 et cs3 alors short=1 sinon short=0 fin

Il manque en effet quelque chose.

Maintenant sans l'ensemble de ton code, il est difficile de aiguiller sur la syntaxe que tu cherches.

Pour info, il y a des balises code (avec le bouton </>) qui permettent de séparer le code de ton message : ça facilite la lecture.
Il y a beaucoup de code sur le forum tu devrais trouver des exemples.
J'ai écris quelques lignes à propos de la programmation dans ma signature. Ça peut t'aider à démarrer ;)


merci de ta réponse

voici l ensemble du code et le messsage d erreur est [string "code"]:20: syntax error near 'if'

myMA50=exponentialaverage[50](close)
myMA100=exponentialaverage[100](close)
ATR=averagetruerange[14](close)

cs1= myMA7[1]<myMA7[2]
c1=myMA7[1]>myMA7[2]
timing= time>=080000 and time<220000

c2=high>high[1]+2.5 and close>myMA7 and close>open
cs2=low<low[1]-2.5 and close<myMA7 and close<open
c3=abs(high[1]-myMA50[1])>ATR or abs(high[1]-myMA100[1])>ATR
cs3=abs(low[1]-myMA50[1])>ATR or abs(low[1]-myMA100)>ATR

if c1 and c2 and c3 then
long=1
else
long=0
endif

if cs1 and cs2 and cs3 then
short=1
else
short=0
endif

//test=c3
//drawtext("#test#",barindex,lowest[3](low)-ATR0.5pipsize,SansSerif,Bold,10) COLOURED(0,155,10)
if long=1 and long[1]=0 and timing then

ENTREE=high[1]+2.5
//ENTREEmod=ENTREE mod 1000

DRAWARROWUP(barindex,low) COLOURED(0,155,10)
//drawtext("Break=#ENTREEmod#",barindex,lowest[3](low)-ATR0.5pipsize,SansSerif,Bold,10) COLOURED(0,155,10)
drawtext("---",barindex,ENTREE,SansSerif,Bold,20) coloured (0,155,10)

endif

if short=1 and short[1]=0 and timing then

ENTREE=low[1]-2.5
//ENTREEmod=ENTREE mod 1000

DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
//drawtext("Break=#ENTREEmod#",barindex,highest[3](high)+ATR0.5pipsize,SansSerif,Bold,10) COLOURED(255,0,10)
drawtext("---",barindex,ENTREE,SansSerif,Bold,20) coloured (255,0,0)

endif


return
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: script erroné

Message par thier »

Je répète endif n'existe pas. c'est end.
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
Charles
Messages : 3
Inscription : 17 nov. 2020, 12:11

Re: script erroné

Message par Charles »

oui j ai enlevé endif mais cela ne fonctionne toujours pas
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: script erroné

Message par Chrominator »

4 remarques :
  1. Quand on demande de l'aide, on peut au moins mettre à disposition le source qui correspond à l'erreur dont on parle et être plus précis que "cela ne fonctionne toujours pas" ; je pense que l'erreur indiquée est différente maintenant que les endif ont disparu.
  2. Indenter un script lua le rend plus lisible et met parfois en évidence des erreurs de structure.
  3. Les commentaires en lua sont constitués de deux manières : -- ou bien pour un groupe de lignes --[[ suivi de --]]. Le // c'est pour d'autres langages.
  4. Si le code que tu montres est entier, tu n'es pas au bout de tes peines, l'interpréteur va rapidement te parler d'index nil :lol:
1 question : ton script a quelque chose à voir avec Domoticz ou pas du tout ?
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
thier
Messages : 807
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: script erroné

Message par thier »

J'aurai du lire la suite des réponses. Avec le code complet c'est clair que ce n'est pas du lua donc oubli ma remarque sur les endif.

Envoyé de mon SM-T533 en utilisant Tapatalk

PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
Répondre