Sida 2 av 2

Re: Hur få OWFS att logga till MySQL ?

Postat: 17 jun 2011, 11:22
av jed
Kul att det funkar nu :)

Re: Hur få OWFS att logga till MySQL ?

Postat: 17 jun 2011, 12:55
av Quart
jed skrev:Kul att det funkar nu :)
Japp nu loggar jag med OWFS skriver både till RRD och MySQL
Skapar grafer samt kan labba med siffrorna i MySQL som jag vill.
Tro jag stänger denna tråd nu

Re: Hur få OWFS att logga till MySQL ?

Postat: 04 apr 2013, 00:20
av Shuntmaster
Hej jag har lånat detta script för att prova logga temp till Mysql och Homeautomation 2.02 men det verkar va nåt galet jag får ej upp nå värden. undrar om det är nån som ser vad som kan va fel. Är newbe på mysql.

crontab -e

Kod: Markera allt

  */5 * * * * /usr/bin/php /var/www/homeautomation/read_temp_to_mysql.php   
read_temp_to_mysql.php

Kod: Markera allt


<?php
include_once ("/var/www/homeautomation/system/mysql_settings.php");

# Path to owfs
$owfs_path = "/mnt/1wire";

# Connect to the database and select a db
mysql_connect ($mysqlHost, $mysqlUsername, $mysqlPassword);
mysql_select_db ($mysqlDatabase);

# Get serial from the database
$sensor_q = "10.D0152A020800";
$sensor_r = @mysql_query ($sensor_q);

if (@mysql_num_rows ($sensor_r) > 0)
{
        while ($_sensor = @mysql_fetch_object ($sensor_r))
        {
                $temp = exec ("/bin/cat /mnt/1wire/10.D0152A020800/temperature");
                $date = date ("Y-m-d H:i:s");
                $save_temp_q  = "INSERT INTO temps (sensor_serial, temp_c, date)";
                $save_temp_q .= " VALUES ('10.D0152A020800', '$temp', '$date')";

                $save_temp_r = @mysql_query ($save_temp_q);
        }
} else {
        echo "No sensors found!<br />";
        echo "Cowardly bailing out...<p>";
        echo @mysql_error();
}
?>

mysql_settings.php

Kod: Markera allt

<?php

        $mysqlHost = "localhost";
        $mysqlDatabase = "homeautomation";
        $mysqlUsername = "root";
        $mysqlPassword = **********;

?>


vill tillägga att om jag kör / $ /bin/cat /mnt/1wire/10.D0152A020800/temperature i terminalen så får jag upp värde från givaren.

Re: Hur få OWFS att logga till MySQL ?

Postat: 10 maj 2013, 23:15
av bjornsson
Hakar på denna tråd =)

Har en Raspberry med owfs på, den läser in tempen med

pi@raspberrypi /1wire $ cat /mnt/1wire/28.68F02F040000/temperature
22.1875pi@raspberrypi /1wire $

så det vet jag funkar =)

Har dessa två filer i
/1wire/mysql_settings.php

Kod: Markera allt

    <?php

            $mysqlHost     = "192.168.0.88";
            $mysqlDatabase = "owfs";
            $mysqlUsername = "root";
            $mysqlPassword = "password";

    ?>
/1wire/read_temp_to_mysql.php

Kod: Markera allt

            <?php
    include_once ("/1wire/mysql_settings.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/28.68F02F040000/temperature");
                    $date = date ("Y-m-d H:i:s");
                    $save_temp_q  = "INSERT INTO Temp_Raspberry1 (sensor_serial, temp_c, date)";
                    $save_temp_q .= " VALUES ('28.68F02F040000', '$temp', '$date')";
                    $save_temp_r = @mysql_query ($save_temp_q);
            }
    } else {
            echo "No sensors found!<br />";
            echo "Cowardly bailing out...<p>";
            echo @mysql_error();
    }
    ?>


Det jag saknar är en "/usr/bin/php" har alltså inte php mappen så antar att det är därför jag inte kan köra
pi@raspberrypi /1wire $ php read_temp_to_mysql.php
-bash: php: kommandot finns inte

De mappar jag har heter
php-config
php-config5
phpize
phpize5

crontab -e

Kod: Markera allt

*/5 * * * * /usr/bin/php /1wire/read_temp_to_mysql.php
Så vad måste jag installera för att få det att kunna köras?

Re: Hur få OWFS att logga till MySQL ?

Postat: 10 maj 2013, 23:30
av Plutonium
Om du installerar php5 med detta då?

Kod: Markera allt

sudo apt-get install php5-cli

Re: Hur få OWFS att logga till MySQL ?

Postat: 10 maj 2013, 23:47
av bjornsson
Ska testa det imorrn då :)

Eller går det på ett enkelt sätt göra om det till ett sh script istället?

Re: Hur få OWFS att logga till MySQL ?

Postat: 11 maj 2013, 07:26
av bjornsson
Fick först ta bort
}else

Kod: Markera allt

pi@raspberrypi /1wire $ php read_temp_to_mysql.php
PHP Parse error:  syntax error, unexpected '}' in /1wire/read_temp_to_mysql.php on line 13
pi@raspberrypi /1wire $

Får då detta fel på rad 4

Kod: Markera allt

pi@raspberrypi /1wire $ php read_temp_to_mysql.php

PHP Fatal error:  Call to undefined function mysql_connect() in /1wire/read_temp_to_mysql.php on line 4
pi@raspberrypi /1wire $
rad 4 ser ut så här
mysql_connect ($mysqlHost, $mysqlUsername, $mysqlPassword);

Re: Hur få OWFS att logga till MySQL ?

Postat: 11 maj 2013, 08:03
av riro
Du saknar nog PHPs stöd för MySQL.

Kod: Markera allt

sudo apt-get install php5-mysql
Och en snabbgoogle ger denna guide:
http://www.penguintutor.com/linux/raspberrypi-webserver

Re: Hur få OWFS att logga till MySQL ?

Postat: 11 maj 2013, 09:31
av bjornsson
Tackar så mycket, funkar nu och loggar till databasen =)

Logga till MYsql

Postat: 12 maj 2013, 01:02
av Shuntmaster
Kul att det Funkar! nu blev jag ivrig att få igång min temp-loggning på Raspberryn. Men när jag kör
pi@raspberrypi /var/www/homeautomation $ php read_temp_to_mysql.php


får jag dessa felmedelanden

PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/ming.ini on line 1 in Unknown on line 0
No sensors found!<br />Cowardly bailing out...<p>You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '10.D0152A020800' at line 1

förresten vad har ming.ini med loggningen att göra?

Re: Hur få OWFS att logga till MySQL ?

Postat: 12 maj 2013, 01:19
av Shuntmaster
Edit

får bara felmedelanden

PHP Deprecated: Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/ming.ini on line 1 in Unknown on line 0

Hade lyckas peta in ett " för mycket i .php




> fick det att funka nu raderade # kommentarsraden i ming.ini " tor inte det var där problemet låg men det var nog nått galet .php filen .

Re: Hur få OWFS att logga till MySQL ?

Postat: 04 jan 2014, 18:16
av bosse123
hej!
Jag är ny OWFS användare och tänkte logga till min mysql databas, med hjälp av alla tips i denna tråd.

men får ingen ordning på pekning/skrivning av temperaturen till rätt kolumn i databasen,
någon vänlig själv som ser det självklara felet?

i min databas "temperatur" finns tabellen "temperatur_system";


mysql> show tables;
+----------------------+
| Tables_in_temperatur |
+----------------------+
| temperatur_system |
+----------------------+
1 row in set (0.00 sec)

mysql> SELECT * from temperatur_system;
+------------------+------------+-----------------+---------------------+
| Givare | temperatur | serial | datum |
+------------------+------------+-----------------+---------------------+
| Solfångare | 0 | 28.DAC22F040000 | 2014-01-02 20:14:56 |
| Utetemp | 0 | 28.86BD2F040000 | 2014-01-02 20:24:01 |
| Innetemp | 0 | 28.51DB2F040000 | 2014-01-02 20:24:40 |
| Vinkällare | 0 | 28.8BC32F040000 | 2014-01-02 20:25:17 |
| Övre slavtank | 0 | 28.F4AC2F040000 | 2014-01-02 20:26:11 |
| Nedre slavtank | 0 | 28.FEDE2F040000 | 2014-01-02 20:26:38 |
| Panna | 0 | 28.22CB2F040000 | 2014-01-02 20:27:12 |
| Övre tekniktank | 0 | 28.D2E82F040000 | NULL |
| Mitt tekniktank | 0 | 28.76D52F040000 | NULL |
| Nedre tekniktank | 0 | 28.84E92F040000 | NULL |
| Framledning | 0 | 28.80E92F040000 | NULL |
| Retur | 0 | 28.41B42F040000 | NULL |
+------------------+------------+-----------------+---------------------+
12 rows in set (0.00 sec)

mitt phpschript;

<?php
include_once ("/mnt/mysql_settings.php");
# Connect to the database and select a db
mysql_connect ($mysqlHost, $mysqlUsername, $mysqlPassword);
mysql_select_db ($mysqlDatabase);
{
$temp = exec ("/bin/cat /mnt/1-wire/28.DAC22F040000/temperature");
$date = date ("Y-m-d H:i:s");
$save_temp_q = "INSERT INTO temperatur (sensor_serial, temp_c, date)";
$save_temp_q .= " VALUES ('28.DAC22F040000', '$temp', '$date')";
$save_temp_r = @mysql_query ($save_temp_q);
}
{
echo "No sensors found!<br />";
echo "Cowardly bailing out...<p>";
echo @mysql_error();
}
?>


och min includefil; "mysql_settings.php"

<?php

$mysqlHost = "localhost";
$mysqlDatabase = "temperatur";
$mysqlUsername = "root";
$mysqlPassword = "*******";

?>


någon som ha någon idé?

Re: Hur få OWFS att logga till MySQL ?

Postat: 04 jan 2014, 21:42
av bosse123
Hej igen!
nu fungerar det fint, php för en givare visas nedan,
(har lagt till mina ytterligare 11 givare i scriptet efter detta inlägg.)


<?php
include_once ("/mnt/mysql_settings.php");
# Connect to the database and select a db
mysql_connect ($mysqlHost, $mysqlUsername, $mysqlPassword);
mysql_select_db ($mysqlDatabase);
{
$temp = exec ("/bin/cat /mnt/1-wire/28.DAC22F040000/temperature");
$date = date ("Y-m-d H:i:s");
$save_temp_q = "INSERT INTO temperatur_system (Givare, serial, temp_c, date)";
$save_temp_q .= " VALUES ('Solfångare', '28.DAC22F040000', '$temp', '$date')";
$save_temp_r = @mysql_query ($save_temp_q);
}


{
echo "No sensors found!<br />";
echo "Cowardly bailing out...<p>";
echo @mysql_error();
}
?>

Tack för alla tips!

Re: Hur få OWFS att logga till MySQL ?

Postat: 13 feb 2014, 11:35
av Nicklas_E
Hej Bosse!

Mina kunskaper är begränsade i Php än så länge även om jag försöker lära mig mera. :)
Skulle du kunna lägga in några rader om hur du la till flera givare i ditt script?

Jag håller på att bygga ihop en liten Raspberry Pi till min far för att han ska kunna logga sin värme anläggning.
Just nu loggar han för hand i en liten anteckningsbok och jag vill ta honom till 2000-talet.

Det blir en ganska enkel lösning med en Rasp Pi och två temp sensorer samt en räknare på elmätaren, till att börja med.

Mvh Nicklas

Re: Hur få OWFS att logga till MySQL ?

Postat: 13 feb 2014, 21:58
av bosse123
du lägger till en "klump" till för respektive givare:
jämför mitt förra inlägg med denna kod:

Kod: Markera allt

         <?php
    include_once ("/mnt/mysql_settings.php");
        # Connect to the database and select a db
    mysql_connect ($mysqlHost, $mysqlUsername, $mysqlPassword);
    mysql_select_db ($mysqlDatabase);
           {
                    $temp = exec ("/bin/cat /mnt/1-wire/28.DAC22F040000/temperature");
                    $date = date ("Y-m-d H:i:s");
                    $save_temp_q  = "INSERT INTO temperatur_system (Givare, serial, temp_c, date)";
                    $save_temp_q .= " VALUES ('Solfångare', '28.DAC22F040000', '$temp', '$date')";
                    $save_temp_r = @mysql_query ($save_temp_q);
            }

               {
                    $temp = exec ("/bin/cat /mnt/1-wire/28.22CB2F040000/temperature");
                    $date = date ("Y-m-d H:i:s");
                    $save_temp_q  = "INSERT INTO temperatur_system (Givare, serial, temp_c, date)";
                    $save_temp_q .= " VALUES ('Panna', '28.22CB2F040000', '$temp', '$date')";
                    $save_temp_r = @mysql_query ($save_temp_q);
            }


     {
                    $temp = exec ("/bin/cat /mnt/1-wire/28.FEDE2F040000/temperature");
                    $date = date ("Y-m-d H:i:s");
                    $save_temp_q  = "INSERT INTO temperatur_system (Givare, serial, temp_c, date)";
                    $save_temp_q .= " VALUES ('Nedre slavtank', '28.FEDE2F040000', '$temp', '$date')";
                    $save_temp_r = @mysql_query ($save_temp_q);
            }

     {
                    $temp = exec ("/bin/cat /mnt/1-wire/28.F4AC2F040000/temperature");
                    $date = date ("Y-m-d H:i:s");
                    $save_temp_q  = "INSERT INTO temperatur_system (Givare, serial, temp_c, date)";
                    $save_temp_q .= " VALUES ('Övre slavtank', '28.F4AC2F040000', '$temp', '$date')";
                    $save_temp_r = @mysql_query ($save_temp_q);
            }

     {
                    $temp = exec ("/bin/cat /mnt/1-wire/28.8BC32F040000/temperature");
                    $date = date ("Y-m-d H:i:s");
                    $save_temp_q  = "INSERT INTO temperatur_system (Givare, serial, temp_c, date)";
                    $save_temp_q .= " VALUES ('Vinkällare', '28.8BC32F040000', '$temp', '$date')";
                    $save_temp_r = @mysql_query ($save_temp_q);
            }
     {
                    $temp = exec ("/bin/cat /mnt/1-wire/28.51DB2F040000/temperature");
                    $date = date ("Y-m-d H:i:s");
                    $save_temp_q  = "INSERT INTO temperatur_system (Givare, serial, temp_c, date)";
                    $save_temp_q .= " VALUES ('Innetemp', '28.51DB2F040000', '$temp', '$date')";
                    $save_temp_r = @mysql_query ($save_temp_q);
            }


     {
                    $temp = exec ("/bin/cat /mnt/1-wire/28.86BD2F040000/temperature");
                    $date = date ("Y-m-d H:i:s");
                    $save_temp_q  = "INSERT INTO temperatur_system (Givare, serial, temp_c, date)";
                    $save_temp_q .= " VALUES ('Utetemp', '28.86BD2F040000', '$temp', '$date')";
                    $save_temp_r = @mysql_query ($save_temp_q);
            }

     {
                    $temp = exec ("/bin/cat /mnt/1-wire/28.41B42F040000/temperature");
                    $date = date ("Y-m-d H:i:s");
                    $save_temp_q  = "INSERT INTO temperatur_system (Givare, serial, temp_c, date)";
                    $save_temp_q .= " VALUES ('Retur', '28.41B42F040000', '$temp', '$date')";
                    $save_temp_r = @mysql_query ($save_temp_q);
            }

     {
                    $temp = exec ("/bin/cat /mnt/1-wire/28.80E92F040000/temperature");
                    $date = date ("Y-m-d H:i:s");
                    $save_temp_q  = "INSERT INTO temperatur_system (Givare, serial, temp_c, date)";
                    $save_temp_q .= " VALUES ('Framledning', '28.80E92F040000', '$temp', '$date')";
                    $save_temp_r = @mysql_query ($save_temp_q);
            }


     {
                    $temp = exec ("/bin/cat /mnt/1-wire/28.D2E82F040000/temperature");
                    $date = date ("Y-m-d H:i:s");
                    $save_temp_q  = "INSERT INTO temperatur_system (Givare, serial, temp_c, date)";
                    $save_temp_q .= " VALUES ('Övre tekniktank', '28.D2E82F040000', '$temp', '$date')";
                    $save_temp_r = @mysql_query ($save_temp_q);
            }

     {
                    $temp = exec ("/bin/cat /mnt/1-wire/28.770795040000/temperature");
                    $date = date ("Y-m-d H:i:s");
                    $save_temp_q  = "INSERT INTO temperatur_system (Givare, serial, temp_c, date)";
                    $save_temp_q .= " VALUES ('Mitt tekniktank', '28.770795040000', '$temp', '$date')";
                    $save_temp_r = @mysql_query ($save_temp_q);
            }

     {
                    $temp = exec ("/bin/cat /mnt/1-wire/28.84E92F040000/temperature");
                    $date = date ("Y-m-d H:i:s");
                    $save_temp_q  = "INSERT INTO temperatur_system (Givare, serial, temp_c, date)";
                    $save_temp_q .= " VALUES ('Nedre tekniktank', '28.84E92F040000', '$temp', '$date')";
                    $save_temp_r = @mysql_query ($save_temp_q);
            }



 {
            echo "No sensors found!<br />";
            echo "Cowardly bailing out...<p>";
            echo @mysql_error();
    }
    ?>

jag skapade databasen i phpmyadmin och även ett startcript enligt tidigare i tråden, samt i crontab -e behöver det läggas till.

Jag har ännu inte bestämt mig för hur jag ska använda datan ur mysql basen, men den kan ju hanteras på olika sätt.
det är bara att gå in i phpmyadmin, och sortera hur man vill, vill man dra slutsatser (beräkningar) så får man antingen exportera till excel eller lära sig att ställa sqlfrågor.


publiceringen görs tillsvidare med rrdtool:
http://wiki.temperatur.nu/index.php/RRDtool_HowTo

lycka till!