Creación BBDD InfluxDB

    Ya realizamos la instalación de InfluxDB por lo que ahora crearemos una BBDD.
    En este caso, usaremos los datos que nos proporciona OpenWeather, por ejemplo, para una población.

    Dicha opción es gratuita, pero debemos realizar un registro para usar la API que veremos mas adelante ya que tiene limitaciones de acceso.

    Por ahora, accederemos a InfluxDB como ya vimos en otra entrada y crearemos la BBDD y su respectiva retención de datos y política de indexación:

    CREATE DATABASE weather
    
    USE weather
    
    CREATE RETENTION POLICY "30_days" ON "weather" DURATION 30d REPLICATION 1 DEFAULT;
    CREATE RETENTION POLICY "6_months" ON "weather" DURATION 26w REPLICATION 1;
    CREATE RETENTION POLICY "infinite" ON "weather" DURATION INF REPLICATION 1;
    
    CREATE CONTINUOUS QUERY "cq_10m" ON "weather" BEGIN SELECT mean(*) INTO "lowres_arc.efficiency" FROM "arc.efficiency" GROUP BY time(10m) END
    CREATE CONTINUOUS QUERY "cq_smartmeter_hourly" ON "weather" RESAMPLE EVERY 15m BEGIN SELECT min(*), max(*), spread(*) INTO "6_months"."smartmeter_hourly" FROM "30_days"."smartmeter" GROUP BY time(1h),* END
    CREATE CONTINUOUS QUERY "cq_smartmeter_daily" ON "weather" RESAMPLE EVERY 1h BEGIN SELECT min(*), max(*), spread(*) INTO "infinite"."smartmeter_daily" FROM "30_days"."smartmeter" GROUP BY time(1d),* END
    CREATE CONTINUOUS QUERY "cq_weather_daily" ON "weather" RESAMPLE EVERY 1h BEGIN SELECT min(*), max(*), mean(*) INTO "infinite"."weather_daily" FROM "30_days"."weather" GROUP BY time(1d),* END
    
    exit
    

    Ahora, crearemos un script para recopilar los datos:

    INFLUXDB='10.0.1.71'
    
    ID=''
    API=''
    
    TEMP=$(curl -ks "http://api.openweathermap.org/data/2.5/weather?id=${ID}&lang=en&units=metric&APPID=${API}" | jq -r '.main.temp')
    
    TIME="$(date +"%d%m%Y%H%M%S")"
    
    curl -i -XPOST "http://${INFLUXDB}:8086/write?db=weather" --data-binary "weather,weather=KNY TEMP=${TEMP}" --user "admin:123456"
    

    y activaremos un crontab cada minuto para recopilar los datos:

    * * * * * /scripts/weather.sh
    

    En este punto, ya veremos los datos en la misma BBDD por lo que vamos a mostrar los últimos 15 datos ingestados en la BBDD llamada weather.

    > select last(*) from weather
    name: weather
    time                last_TEMP
    ----                ---------
    1715671562820755936 18.4
    

    Leave a Reply

    Your email address will not be published. Required fields are marked *