giovedì 26 novembre 2009

Mistero, pero' non su Italia 1

Mistero che avviene sul nodo Seth... vediamo chi mi sa dare una mano d'aiuto.
Una procedura viene lanciata automaticamente dal crontab dalle ore 05 alle ore 23. Funziona correttamente dalle 05 alle 06 e dalle 08 alle 23, ma...

... alle sette del mattino non so per quale motivo, anziche' uscire con il sette, mi esce con l'otto.

La procedura e' questa:
#!/bin/bash
# Gestione dei beacon da inviare al ripetitore
# Copyright (C) 2009, 2010 by Grizzly
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.

#####
## Configurazione

# Volumi main e PCM per inviare il beacon
export VOL_MAIN=78
export VOL_PCM=68
# al termine del beacon li riporta a zero

# Percorso COMPLETO dei file di beacon, senza barra finale
export BEACONS_PATH="/opt/MANNARO"

## Nome dei beacon, eccetto estensione .ogg
# per l'orario (eccetto ora, es "ore_" se sono da ore_05 a ore_23)
export BEACON_TIME="ore_"

##### [... parte tagliata ...]
### Se esiste questa variabile, mostra informazioni aggiuntive
#DEBUG=1
## Inizializza il locale, per l'ora
export LANG="it_IT.UTF-8"

# procedura di lettura in scheda audio

# uso: ibeacon_esegui nomefile
ibeacon_esegui () {
if [ "$1" == "" ]; then
# Nessun parametro, esci
exit 0
else
# fornito un nome di file, dallo in pasto a ogg123
rexima vol ${VOL_MAIN} pcm ${VOL_PCM}
ogg123 -q $1
# al termine, azzera i volumi per non creare interferenze al ponte
rexima vol 0 pcm 0
fi
}


# procedura per l'orario
ibeacon_ora() {
# prende l'ora attuale
ADESSO=$(date +%H)
QUALE_BEACON="${BEACONS_PATH}/${BEACON_TIME}${ADESSO}.ogg"
# Debug? Mostrami quale file esegui
if [ $DEBUG ]; then echo "${QUALE_BEACON}"; fi
# Esegui il beacon
ibeacon_esegui ${QUALE_BEACON}|>
exit 0
}

Ora: in /opt/MANNARO ci sono diversi file che vanno da ore_05.ogg a ore_23.ogg, ognuno contiene il tono che avvia il vox e la frase in sintesi vocale "Pappagallo Mannaro, ore XX".

Ovviamente il file ore_07.ogg dice "ore sette".

Il comando ADESSO=$(date +%H) assegna alla variabile $ADESSO il valore dell'ora attuale, nel ramo 24h, con l'eventuale zero iniziale (es. 06) e cosi' facendo la variabile $QUALE_BEACON diventa, ad esempio alle otto di mattina, "/opt/MANNARO/ore_08.ogg".

Il sistema ha l'orario allineato piu' volte al giorno via NTP, e infatti (obiettivamente) spacca letteralmente il secondo.
Eppure tutte le mattine alle sette in punto (ma solo alle sette) la radio mi regala un bel "Pappagallo Mannaro, ore otto".
Tutti gli altri segnali orari (le cinque, le sei, le otto, le nove e compagnia briscola) funzionano perfettamente. Ma praticamente l'unica possibilita' e' che alle sette di mattina date +%H dica che invece sono le otto...

... dove sbaglio? Dov'e' l'errore che non riesco a vedere? Che cosa e' andato storto? HELP! ((-:

1 commenti:

Anonimo ha detto...

ha ragione rita..sì..ha proprio ragione!!!!!!!!!!!!!!!!!!!