我已经阅读了许多其他似乎相关的问答,但无法在此处找到问题所在。
我在 Raspberry Pi 上使用了以下 perl 脚本。我希望将温度数据从 I2C 传感器记录到 sqlite3 数据库。下面的程序在从命令行运行时有效,但在从 cron 运行时无效。
我假设从 cron 运行时 i2cget 的值不正确,但我不确定如何确定我的环境 i2cget 需要正常工作的部分。
#!/usr/bin/perl
#printf '%d\n' `i2cget -y 1 0x48 0x0`
$temp = `i2cget -y 1 0x48 0x0`;
#$temp = sprintf("%d\n", $temp);
$temp = hex($temp);
#print $temp, "\n";
use DBI;
#/home/techplex/ece331/project2_temp_data_grapher/
$dbh = DBI->connect( "dbi:SQLite:tempdata.db" ) or die "Cannot connect: $DBI::errstr";
$dbh->do( "CREATE TABLE IF NOT EXISTS temperature (timestamp datetime, temperature float);" );
$dbh->do( "INSERT INTO temperature (timestamp, temperature) VALUES (datetime('now', 'localtime'), $temp);" );
$dbh->disconnect;
我已将此行添加到我的 crontab 中:
*/1 * * * * cd /home/techplex/temp_data_grapher; ./datalogger.pl