Vai al contenuto
News Ticker
  • Zwave-Community.it diventa DOMOTICA Easy!!
  • Il portale dedicato alla DOMOTICA WIRELESS
  • Forum - Guide - Recensioni

REGISTRATI PER VISUALIZZARE TUTTI I CONTENUTI DEL NOSTRO PORTALE!

ATTENZIONE: Alcuni contenuti del sito sono visualizzabili sono dagli utenti registrati. 

REGISTRATI ADESSO alla nostra comunità e dai anche il tuo supporto per ottenere di più!

kead

Help per operazioni di somma tra variabili globali

Recommended Posts

Ho la necessità di creare uno script che faccia la somma tra due variabili (una locale ed una globale).

In sostanza devo ricavare il valore di pioggia giornaliero da un pluviometro Netatmo il quale mi restituisce solamente la pioggia di un dato momento per poi tornare a 0.

La mia idea è creare una variabile globale rain_for_day che aumenta il suo valore in funzione della pioggia giornaliera (poi ogni giorno a mezzanotte si resetta).

 

Ho messo giu questo codice ma non funziona:

2553 è ID pluviometro

Please login or register to see this code.

 

Il codice è semlice ma probabilmente c'è un errore di sintassi.

Qualche programmatore che mi aiuta?

Please login or register to see this image.

/emoticons/smile.png" alt=":)" data-emoticon="" srcset="http://www.zwave-community.it/uploads/emoticons/smile@2x.png 2x" width="20" height="20" />

Share this post


Link to post
Share on other sites

 

Please login or register to see this code.

 

 

Secondo me.. C'erano un po di virgolette di troppo

Please login or register to see this image.

/emoticons/smile.png" alt=":)" data-emoticon="" srcset="http://www.zwave-community.it/uploads/emoticons/smile@2x.png 2x" width="20" height="20" />

 

Please login or register to see this code.

 

Sent by Oneplus One - Power is nothing without control

Share this post


Link to post
Share on other sites

Quando dici che non funziona intendi nel calcolo dei valori, nell'impostazione delle variabili o nella schedulazione...?

 

I valori li verifichi facilmente con qualche debug dopo i vari calcoli...

 

L'impostazione della variabile la puoi andare a vedere nel pannello variabili oppure con

Please login or register to see this link.

 

Le Variabili Globali per poter essere utilizzate vanno prima dichiarate nel Pannello Variabili

Share this post


Link to post
Share on other sites

Allora non ho dato in effetti abbastanza particolari.

L'errore che mi restitusce è alla riga con i "tonumber": attempt to perform arithmetic on a nil value

La variabile globale numerica "rain_for_day" ovviamente esiste.

Il valore che gli viene assunto è "a"

Anche con meno virgolette non funziona 

Please login or register to see this image.

/emoticons/wacko.png" alt=":S" data-emoticon="" srcset="http://www.zwave-community.it/uploads/emoticons/wacko@2x.png 2x" width="20" height="20" />

Share this post


Link to post
Share on other sites

La sintassi corretta per il tonumber è quella che ho scritto, perchè altrimenti se metti le virgolette tenti di convertire una stringa di testo in numero, invece di passare una variabile da convertire.

Come ti hanno suggerito usa un po di debug per vedere tutti i valori coinvolti

 

Sent by Oneplus One - Power is nothing without control

  • Like 1

Share this post


Link to post
Share on other sites

io proverei a fare così

 

Please login or register to see this code.

 

concettualmente non dovrebbe cambiare molto ma nell'interpretazione del LUA non si sa mai...

 

e se mi ricordo bene le variabili globali sono sempre trattate come stringhe

  • Like 1

Share this post


Link to post
Share on other sites

Yes! ora funzia!

Va a capire come ragiona sto Lua...

Grazie a tutti

Please login or register to see this image.

/emoticons/wink.png" alt=";)" data-emoticon="" srcset="http://www.zwave-community.it/uploads/emoticons/wink@2x.png 2x" width="20" height="20" />

Share this post


Link to post
Share on other sites

Personalmente ho la sensazione che il problema non sia il LUA in se ma (visti i vari arrosti che i programmatori Fibaro combinano ad ogni aggiornamento di firmware) mi viene da pensare che possa dipendere da come Fibaro ha implementato l'interprete LUA per incorporarlo nel firmware di HC...

 

Molti linguaggi di programmazione richiedono la dichiarazione esplicita dei tipi di variabili proprio per evitare le conversioni di formato dei valori durante l'esecuzione del codice...

Cmq sono d'accordo con te... avrebbe dovuto funzionare ugualmente!!!

Share this post


Link to post
Share on other sites

tonumber("pioggia_ora") cerca di convertire la stringa "piogga_ora" in un numero.... ovviamente il risultato e' null 

null+null non si puo fare

 

tonumber(pioggia_ora) invece converte la variabile pioggia ora in numero...

Share this post


Link to post
Share on other sites

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per poter lasciare un commento

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi Subito

Sei già registrato? Accedi da qui.

Accedi Adesso

×