[comment]: # attributes: notoc

[comment]: # ({ee75c9cc-2e2a1a06})
# 8 Funzioni predittive

Tutte le funzioni elencate qui sono supportate in:

-   [Espressioni di trigger](/manual/config/triggers/expression)
-   [Item calcolati](/manual/config/items/itemtypes/calculated)
-   [Macro di espressione](/manual/config/macros/expression_macros)

Le funzioni sono elencate senza informazioni aggiuntive. Fare clic sulla funzione per visualizzare i dettagli completi.

|Function|Description|
|--|--------|
|[forecast](#forecast)|Il valore futuro, massimo, minimo, delta o medio dell'item.|
|[timeleft](#timeleft)|Il tempo, in secondi, necessario affinché un item raggiunga la soglia specificata.|

[comment]: # ({/ee75c9cc-2e2a1a06})

[comment]: # ({645b8a56-4d343eb8})
##### Parametri comuni

-   `/host/key` è un primo parametro comune obbligatorio per le funzioni
    che fanno riferimento alla cronologia dell'item dell'host
-   `(sec|#num)<:time shift>` è un secondo parametro comune per le
    funzioni che fanno riferimento alla cronologia dell'item dell'host, dove:
    -   **sec** - periodo massimo di [valutazione](/manual/config/triggers#evaluation-period) in secondi
        (è possibile usare i [suffissi](/manual/appendix/suffixes) temporali), oppure
    -   **#num** - [intervallo di valutazione](/manual/config/triggers#evaluation-period) massimo nei
        valori raccolti più recenti (se preceduto da un cancelletto)
    -   **time shift** (facoltativo) consente di spostare all'indietro nel tempo il punto di valutazione. Vedere
        [maggiori dettagli](/manual/config/triggers/expression#time-shift) sulla specifica del time shift.

[comment]: # ({/645b8a56-4d343eb8})

[comment]: # ({c645f0e4-f3b63bc1})
### Dettagli della funzione

Alcune note generali sui parametri della funzione:

-   I parametri della funzione sono separati da una virgola
-   I parametri opzionali della funzione (o parti di parametro) sono indicati da
    `<` `>`
-   I parametri specifici della funzione sono descritti con ciascuna funzione
-   I parametri `/host/key` e `(sec|#num)<:time shift>` non devono mai essere
    racchiusi tra virgolette

[comment]: # ({/c645f0e4-f3b63bc1})

[comment]: # ({8a873b31-e4452b37})
##### forecast(/host/key,(sec|#num)<:time shift>,time,<fit>,<mode>) {#forecast}

Il valore futuro, massimo, minimo, delta o medio dell'item.<br>
Tipi di valore supportati: *Float*, *Integer*.

Parametri: 

-   Vedere i [parametri comuni](#common-parameters);<br>
-   **time** - l'orizzonte di previsione in secondi (è possibile usare suffissi temporali); sono supportati valori negativi;<br>
-   **fit** (opzionale; deve essere tra virgolette doppie) - la funzione usata per adattare i dati storici. Adattamenti supportati:<br>*linear* - funzione lineare (predefinita)<br>*polynomialN* - polinomio di grado N (1 <= N <= 6)<br>*exponential* - funzione esponenziale<br>*logarithmic* - funzione logaritmica<br>*power* - funzione di potenza<br>Si noti che *polynomial1* è equivalente a *linear*;
-   **mode** (opzionale; deve essere tra virgolette doppie) - l'output richiesto. Modalità supportate:<br>*value* - valore (predefinito)<br>*max* - massimo<br>*min* - minimo<br>*delta* - *max*-*min*<br>*avg* - media<br>Si noti che *value* stima il valore dell'item al momento `now` + `time`; *max*, *min*, *delta* e *avg* analizzano la stima del valore dell'item nell'intervallo tra `now` e `now` + `time`.

Commenti:

-   Se il valore da restituire è maggiore di 1.7976931348623158E+308 o minore di -1.7976931348623158E+308, il valore restituito viene limitato rispettivamente a 1.7976931348623158E+308 o -1.7976931348623158E+308;
-   Diventa unsupported solo se usata in modo errato nell'espressione (tipo di item errato, parametri non validi), altrimenti restituisce -1 in caso di errori;
-   Vedere anche le informazioni aggiuntive sulle [funzioni predittive dei trigger](/manual/config/triggers/prediction).

Esempi:

    forecast(/host/key,#10,1h) #prevede il valore dell'item tra un'ora in base agli ultimi 10 valori
    forecast(/host/key,1h,30m) #prevede il valore dell'item tra 30 minuti in base ai dati dell'ultima ora
    forecast(/host/key,1h:now-1d,12h) #prevede il valore dell'item tra 12 ore in base a un'ora di dati di un giorno fa
    forecast(/host/key,1h,10m,"exponential") #prevede il valore dell'item tra 10 minuti in base ai dati dell'ultima ora e alla funzione esponenziale
    forecast(/host/key,1h,2h,"polynomial3","max") #prevede il valore massimo che l'item può raggiungere nelle prossime due ore in base ai dati dell'ultima ora e a un polinomio cubico (di terzo grado)
    forecast(/host/key,#2,-20m) #stima il valore dell'item 20 minuti fa in base agli ultimi due valori (questo può essere più preciso dell'uso di last(), soprattutto se l'item viene aggiornato raramente, ad esempio una volta all'ora)

[comment]: # ({/8a873b31-e4452b37})

[comment]: # ({834aceba-9b065620})
##### timeleft(/host/key,(sec|#num)<:time shift>,threshold,<fit>) {#timeleft}

Il tempo in secondi necessario affinché un item raggiunga la soglia specificata.<br>
Tipi di valore supportati: *Float*, *Integer*.

Parametri: 

-   Vedi [parametri comuni](#common-parameters);<br>
-   **threshold** - il valore da raggiungere (è possibile usare i [suffissi di unità](/manual/appendix/suffixes));
-   **fit** (opzionale; deve essere tra virgolette doppie) - vedi [forecast()](#forecast).

Commenti:

-   Se il valore da restituire è maggiore di 1.7976931348623158E+308, il valore restituito viene limitato a 1.7976931348623158E+308;
-   Restituisce 1.7976931348623158E+308 se la soglia non può essere raggiunta;
-   Diventa unsupported solo se usata in modo errato nell'espressione (tipo di item errato, parametri non validi), altrimenti restituisce -1 in caso di errori;
-   Vedi anche le informazioni aggiuntive sulle [funzioni predittive dei trigger](/manual/config/triggers/prediction).

Esempi:

    timeleft(/host/key,#10,0) #il tempo fino a quando il valore dell'item raggiunge zero in base agli ultimi 10 valori
    timeleft(/host/key,1h,100) #il tempo fino a quando il valore dell'item raggiunge 100 in base ai dati dell'ultima ora
    timeleft(/host/key,1h:now-1d,100) #il tempo fino a quando il valore dell'item raggiunge 100 in base a un'ora di dati di un giorno fa
    timeleft(/host/key,1h,200,"polynomial2") #il tempo fino a quando il valore dell'item raggiunge 200 in base ai dati dell'ultima ora e all'ipotesi che l'item si comporti come un polinomio quadratico (di secondo grado)

[comment]: # ({/834aceba-9b065620})

[comment]: # ({ba59dd3a-9958c480})
Vedi [tutte le funzioni supportate](/manual/appendix/functions).

[comment]: # ({/ba59dd3a-9958c480})

