Hirdetés

Új hozzászólás Aktív témák

  • vargalex

    félisten

    Sziasztok!

    Én is jó dolognak tartom, hogy indult egy ilyen topic is. Én 2014 májusában kezdtem foglalkozni a dologgal és idő hiányában sajnos megakadt a dolog a hőmérséklet mérésnél. Egy Raspberry Pi-re van kötve 4 db DS18B20 szenzor, illetve magának a Raspberry-nek a CPU/GPU hőmérésékletét mérem. Az értékeket percenként olvassa, mySQL adatbázisba rögzíti. MySQL-ben egy trigger összesítő táblákba számolja az értékeket a gyors megjelenítés miatt. A szenzorok adatait shell script olvassa ki és hajtja végre az insert-et:

    #!/bin/bash
    HOST=db_host
    USER=db_user
    PASSWORD=db_user_pass
    DATABASE=database_name
    MYSQL=/usr/bin/mysql
    W1_SLAVES_COUNT=0
    W1_SLAVES=/sys/devices/w1_bus_master1/w1_master_slaves
    W1_SLAVES_DIR=/sys/bus/w1/devices/
    SQLFILE=/tmp/temperature.sql
    DATUM=$(date '+%Y-%m-%d %H:%M:%S')
    CPUTEMP=$(cat /sys/class/thermal/thermal_zone0/temp | awk '{ print $1/1000}')
    GPUTEMP=$(/opt/vc/bin/vcgencmd measure_temp | cut -f 2 -d "=" | cut -f 1 -d "'")
    PIDFILE=/run/lock/gettemps.sh.pid
    if [ -r $PIDFILE ]; then
    exit
    fi
    echo "$$" > $PIDFILE
    for w1_slave in $(cat $W1_SLAVES)
    do
    ((W1_SLAVES_COUNT++))
    W1_SLAVE_CONTENT=$(cat $W1_SLAVES_DIR/$w1_slave/w1_slave)
    while [ "$(echo "$W1_SLAVE_CONTENT" | head -n 1 | cut -f 12 -d " ")" != "YES" ]
    do
    sleep 1
    W1_SLAVE_CONTENT=$(cat $W1_SLAVES_DIR/$w1_slave/w1_slave)
    done
    TEMPERATURE=$(echo "$W1_SLAVE_CONTENT" | tail -1 | cut -f 2 -d "=" | awk '{ print $1/1000}')
    TEMPNAMES[$W1_SLAVES_COUNT]=$w1_slave
    TEMPERATURES[$W1_SLAVES_COUNT]=$TEMPERATURE
    done
    rm -rf $SQLFILE
    for i in $(seq 1 $W1_SLAVES_COUNT)
    do
    echo "insert into temperatures(sensor_id, temperature, datum) select id, ${TEMPERATURES[$i]}, '$DATUM' from sensors where name='${TEMPNAMES[$i]}';" >> $SQLFILE
    done
    #Inserting CPU temperature
    echo "insert into temperatures(sensor_id, temperature, datum) select id, $CPUTEMP, '$DATUM' from sensors where name='cpu_sensor';" >> $SQLFILE
    #Inserting GPU temperature
    echo "insert into temperatures(sensor_id, temperature, datum) select id, $GPUTEMP, '$DATUM' from sensors where name='gpu_sensor';" >> $SQLFILE
    echo "quit" >> $SQLFILE
    $MYSQL --host=$HOST --user=$USER --password=$PASSWORD $DATABASE < $SQLFILE
    rm $PIDFILE

    A megjelenítéshez a szerver oldal php-ban készült, grafikonhoz pedig highchart-ot használok:

    A grafikonba természetesen dinamukusan bele lehet nagyítani, egy ajax kéréssel a szerver oldalról lekéri a részletesebb adatokat, így a percenkénti értékek bármikor visszanézhetőek:

    Most éppen várok néhány ESP8266-ot (ESP-12F-et) és van még elfekvőben DS18B20-am, így a terv szerint kicsit kiterjesztem további vezetékelés nélkül a mérést.

    [ Szerkesztve ]

    Alex

Új hozzászólás Aktív témák