Help per operazioni di somma tra variabili globali
  • 19 voti - 2.84 media
#1
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
Questo codice è solo per gli utenti registrati

Il codice è semlice ma probabilmente c'è un errore di sintassi.
Qualche programmatore che mi aiuta? Smile
Fibaro HC2 + HClite+ Satel Integra 32 + Nas Synology 415plus + Nabaztag V2
#2
(18-06-2016, 06:43 AM)kead Ha scritto:
Questo codice è solo per gli utenti registrati

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

Questo codice è solo per gli utenti registrati

Sent by Oneplus One - Power is nothing without control
Questo messaggio è stato modificato l'ultima volta il: 18-06-2016, 07:37 AM da ExTrEmE79.
#3
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 http://<HC2 ip address>/api/globalVariables 

Le Variabili Globali per poter essere utilizzate vanno prima dichiarate nel Pannello Variabili
#4
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  Confused
Fibaro HC2 + HClite+ Satel Integra 32 + Nas Synology 415plus + Nabaztag V2
#5
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
#6
io proverei a fare così

Questo codice è solo per gli utenti registrati

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
#7
Yes! ora funzia!
Va a capire come ragiona sto Lua...
Grazie a tutti Wink
Fibaro HC2 + HClite+ Satel Integra 32 + Nas Synology 415plus + Nabaztag V2
#8
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!!!
#9
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...
Baran
-MasterOfDisasters-
Fibaro HC2 | ProLiant Micro | Zentyal | Foscam IpCam | Rocki | Denon AVR-X2


Utente(i) che stanno guardando questa discussione:
1 Ospite(i)