Kod: Markera allt
*/5 * * * * /usr/bin/php /Library/WebServer/SSLDocuments/read_temp_to_mysql.php
Kod: Markera allt
<?php
include_once ("/Library/WebServer/SSLDocuments/system/mysql_settings.php");
# Path to owfs
$owfs_path = "/mnt/owfs";
# Connect to the database and select a db
mysql_connect ($mysqlHost, $mysqlUsername, $mysqlPassword);
mysql_select_db ($mysqlDatabase);
# Get serial from the database
$sensor_q = "SELECT serial FROM tempsensors ORDER by serial";
$sensor_r = @mysql_query ($sensor_q);
if (@mysql_num_rows ($sensor_r) > 0)
{
while ($_sensor = @mysql_fetch_object ($sensor_r))
{
$temp = exec ("/bin/cat $owfs_path/$_sensor->serial/temperature");
$date = date ("Y-m-d H:i:s");
$save_temp_q = "INSERT INTO temps (sensor_serial, temp_c, date)";
$save_temp_q .= " VALUES ('$_sensor->serial', '$temp', '$date')";
$save_temp_r = @mysql_query ($save_temp_q);
}
} else {
echo "No sensors found!<br />";
echo "Cowardly bailing out...<p>";
echo @mysql_error();
}
?>
Kod: Markera allt
<?php
$mysqlHost = "localhost";
$mysqlDatabase = "homeautomation";
$mysqlUsername = "ha";
$mysqlPassword = "långt och hemligt lösenord";
?>
Tack detta skall provas, har pillat en del med PHP så det borde jag lösa.jed skrev:Ett snabbhack som jag skrev när jag testade home automation på min mac mini (har gått över till en virtuell debian på den nu, så snart jag har flashat om mitt qnap 409-nas med debian så kommer ha att köras på den)
Jag anropar den via crontab så den körs var femte minut medKod: Markera allt
*/5 * * * * /usr/bin/php /Library/WebServer/SSLDocuments/read_temp_to_mysql.php
mysql_settings.php:Kod: Markera allt
<?php include_once ("/Library/WebServer/SSLDocuments/system/mysql_settings.php"); # Path to owfs $owfs_path = "/mnt/owfs"; # Connect to the database and select a db mysql_connect ($mysqlHost, $mysqlUsername, $mysqlPassword); mysql_select_db ($mysqlDatabase); # Get serial from the database $sensor_q = "SELECT serial FROM tempsensors ORDER by serial"; $sensor_r = @mysql_query ($sensor_q); if (@mysql_num_rows ($sensor_r) > 0) { while ($_sensor = @mysql_fetch_object ($sensor_r)) { $temp = exec ("/bin/cat $owfs_path/$_sensor->serial/temperature"); $date = date ("Y-m-d H:i:s"); $save_temp_q = "INSERT INTO temps (sensor_serial, temp_c, date)"; $save_temp_q .= " VALUES ('$_sensor->serial', '$temp', '$date')"; $save_temp_r = @mysql_query ($save_temp_q); } } else { echo "No sensors found!<br />"; echo "Cowardly bailing out...<p>"; echo @mysql_error(); } ?>
Glöm inte att anpassa sökvägarnaKod: Markera allt
<?php $mysqlHost = "localhost"; $mysqlDatabase = "homeautomation"; $mysqlUsername = "ha"; $mysqlPassword = "långt och hemligt lösenord"; ?>
Kod: Markera allt
CREATE TABLE `temps` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`sensor_serial` char(24) COLLATE latin1_general_ci DEFAULT NULL,
`temp_c` float DEFAULT NULL,
`date` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `date` (`date`)
)
Kod: Markera allt
CREATE TABLE `tempsensors` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`serial` char(24) COLLATE latin1_general_ci DEFAULT NULL,
`name` varchar(30) COLLATE latin1_general_ci DEFAULT NULL,
`sensortype` int(10) unsigned NOT NULL DEFAULT '0',
`sort` int(10) unsigned DEFAULT '0',
`dateadded` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
)
Kod: Markera allt
<?php
include_once ("/var/www/mysql_settings_el_a.php");
# Connect to the database and select a db
mysql_connect ($mysqlHost, $mysqlUsername, $mysqlPassword);
mysql_select_db ($mysqlDatabase);
{
$temp = exec ("/bin/cat /mnt/1wire/uncached/1D.C58C0C000000/counters_A");
$date = date ("Y-m-d H:i:s");
$save_temp_q = "INSERT INTO el_a (1D.C58C0C000000l, counts, date)";
$save_temp_q .= " VALUES ('$_sensor->serial', '$temp', '$date')";
$save_temp_r = @mysql_query ($save_temp_q);
}
} else {
echo "No sensors found!<br />";
echo "Cowardly bailing out...<p>";
echo @mysql_error();
}
?>
Vad får du för felmeddelande? Din INSERT-sats ser lite klurig ut...Quart skrev:YES, Fick till det nu loggas iallafall min hittils enda inkopplade tempgivare till mysql, nu är det bara elmätarna kvar.
Har försökt skapa en ny databas kallad el, där har jag använt samma script för att skapa tabellerna förutom att jag döpt om temp_c till counts
Men jag får inte till det. så här ser scriptet ut
Kod: Markera allt
<?php
include_once ("/var/www/mysql_settings_el_a.php");
# Connect to the database and select a db
mysql_connect ($mysqlHost, $mysqlUsername, $mysqlPassword);
mysql_select_db ($mysqlDatabase);
$temp = exec ("/bin/cat /mnt/1wire/uncached/1D.C58C0C000000/counters_A");
$date = date ("Y-m-d H:i:s");
$save_temp_q = "INSERT INTO el_a (sensor_serial, counts, date)";
$save_temp_q .= " VALUES ('1D.C58C0C000000l', '$temp', '$date')";
$save_temp_r = @mysql_query ($save_temp_q);
?>
jed skrev:Vad får du för felmeddelande? Din INSERT-sats ser lite klurig ut...Quart skrev:YES, Fick till det nu loggas iallafall min hittils enda inkopplade tempgivare till mysql, nu är det bara elmätarna kvar.
Har försökt skapa en ny databas kallad el, där har jag använt samma script för att skapa tabellerna förutom att jag döpt om temp_c till counts
Men jag får inte till det. så här ser scriptet ut
Prova att lägga in:
echo @mysql_error();
efter:
$save_temp_r = @mysql_query ($save_temp_q);
Syntaxen för INSERT ser ut så här:
INSERT INTO [tabell] ([rad1], [rad2], [rad3]) VALUES ('[värde1], [värde2], [värde3]);
Du har blandat ihop fältnamnet med datat som du vill stoppa in.
Prova:Om fältet inte heter sensor_serial så byt ut det.Kod: Markera allt
<?php include_once ("/var/www/mysql_settings_el_a.php"); # Connect to the database and select a db mysql_connect ($mysqlHost, $mysqlUsername, $mysqlPassword); mysql_select_db ($mysqlDatabase); $temp = exec ("/bin/cat /mnt/1wire/uncached/1D.C58C0C000000/counters_A"); $date = date ("Y-m-d H:i:s"); $save_temp_q = "INSERT INTO el_a (sensor_serial, counts, date)"; $save_temp_q .= " VALUES ('1D.C58C0C000000l', '$temp', '$date')"; $save_temp_r = @mysql_query ($save_temp_q); ?>
Heter tabellen el eller el_a? Heter den el så byt ut el_a ovan
Kod: Markera allt
<?php
include_once ("/var/www/mysql_settings_el_a.php");
# Connect to the database and select a db
mysql_connect ($mysqlHost, $mysqlUsername, $mysqlPassword);
mysql_select_db ($mysqlDatabase);
$temp = exec ("/bin/cat /mnt/1wire/uncached/1D.C58C0C000000/counters_A");
$date = date ("Y-m-d H:i:s");
$save_temp_q = "INSERT INTO el_a (sensor_serial, counts, date)";
$save_temp_q .= " VALUES ('1D.C58C0C000000', '$counts', '$date')";
$save_temp_r = @mysql_query ($save_temp_q);
echo @mysql_error();
?>
Fasen du hann skriva det fortare ändaromer skrev:$temp = exec ("/bin/cat /mnt/1wire/uncached/1D.C58C0C000000/counters_A");
Borde väl vara
$counts = exec ("/bin/cat /mnt/1wire/uncached/1D.C58C0C000000/counters_A");