I have the following tcl script:
    #!/usr/bin/env tclsh

    ### Improvements
    # Get database from conf-file


    package require sqlite3


    proc getCPUTemp {} {
        if {1 != [regexp -all -line {^CPU_TEMP: +\+([0-9.]+)°C } [exec
sensors] -> temp]} {
            error {Did not get exactly a single temperature line from [exec
sensors] output}
        }
        return ${temp}
    }

    proc storeCPUTemp {} {
        storeMessage cpu-temp [getCPUTemp]
    }

    proc storeMessage {type message} {
        db eval "
          INSERT INTO messages
          (type, message)
          VALUES
          (:type, :message)
    "
    }

    proc storeSwap {} {
        storeMessage swap-usage [exec swapon --noheadings --show]
    }

    if {$argc != 1} {
        error "Error: ${argv0} DATABASE"
    }
    sqlite db  [lindex $argv 0]
    db     timeout 10000
    while {true} {
        after [expr {1000 * (60 - [clock seconds] % 60)}]
        set   currentMinute [clock format [clock seconds] -format %M]
        db transaction {
            storeCPUTemp
            # At the whole hour we save swap usage
            if {${currentMinute} == "00"} {
                storeSwap
            }
        }
    }
    # Not really necessary because the above loop never ends
    # But I find this more clear and is robuster against change
    db close

If I enter:
    SELECT date
    ,      message
    ,      TYPEOF(message)
    FROM   messages
    WHERE  type = 'cpu-temp'
       AND date = '2017-12-06'

I see that the temperature is saved as text.
In the past I had a script like this in Python who would save the
temperature as real. What do I need to change to let this script save it as
real also?

-- 
Cecil Westerhof
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to