On Mon, 6 Jan 2025, Lem wrote:
Perdonami, in realtà a me è sembrato parecchio confuso quanto hai scritto,
e non sono in grado di darti una risposta precisa.
Ma a naso suggerisco l'uso di incron per il terzo script.
3) *solo* se* ci sono modifiche, riscrive il file "dati1" aggiornando
  i dati (sostituendo quelli precedenti, non accodando).

in realtà sovrascrive comunque, perché tra i dati c'è il tempo in cui i dati sono stati raccolti. (se il dato è più vecchio di 5 minuti deve venire ignorato, ma questa sarebbe un anomalia già prevista nellos cript 3)
Il secondo script idem, lavorando col file "dati2".

quindi incrontab partirebbe comunque dopo ogni aggiornamento di file 1.

Script3_Pippo legge i dati da dati1 e da dati2, e fa quel che deve;
oppure (scusa, non ho capito quale sia il caso preciso)

script3 deve venir lanciato per la prima volta a una certa ora (che viene impostata da script 2 e riportata anche in dati2). A questo punto applica a tutti i dati (compreso time() corrente) la funzione f e in base al risultato decide se eseguire le operazioni presenti nello script, oppure rilanciare lo script dopo 10 minuti oppure tutte e due le cose oppure terminare. La cosa a cui avo pensato è che script2 chiamassa at e gli desse in pasto script3, poi al momento impostato script 3 parte, e se deve ripetersi richiama at.
Chiedevo se c'era qualcosa di più elegante.

[per capire come deve funzionare faccio un esempio: script 0 legge i dati ambientali; script 2 legge i miei piani per la giornata e decide quando deva svegliarmi, e dice nel file2 anche che tipo di impegno è. Se l'impegno è "vado a camminare" allora f() sa che se è umido non vado, quindi se al momento in cui la sveglia dovrebbe suonare la umidità esterna fosse oltre 85% allora differisce la sveglia fino a quando non si asciuga un po'; se invece è <85% allora mi sveglia e non riattiva la chiamata una successiva volta. [se passano le 9:30 suona comunque e non riattiva]

--
Leonardo Boselli

Rispondere a