Hur få OWFS att logga till MySQL ?

OWFS - One Wire File System är en Linuxmjukvara som stödjer de flesta kommersiellt tillgängliga 1wire-enheterna. OWFS saknar helt möjligheter att presentera data - detta måste göras med tex RRDTool
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
jed
Tar hemautomation på allvar
Inlägg: 179
Blev medlem: 16 apr 2011, 10:51
Ort: Stockholm

Re: Hur få OWFS att logga till MySQL ?

Inlägg av jed »

Kul att det funkar nu :)
Quart
Moderator
Inlägg: 566
Blev medlem: 17 jun 2007, 21:14
Ort: Hindås
Kontakt:

Re: Hur få OWFS att logga till MySQL ?

Inlägg 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
Shuntmaster
Wannabe
Inlägg: 5
Blev medlem: 03 apr 2013, 23:50
Ort: Tavelsjö

Re: Hur få OWFS att logga till MySQL ?

Inlägg 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.
bjornsson
Hemautomation - det är mer än en hobby
Inlägg: 403
Blev medlem: 25 aug 2010, 09:06
Ort: Bräcke

Re: Hur få OWFS att logga till MySQL ?

Inlägg 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?
Senast redigerad av bjornsson den 11 maj 2013, 07:38, redigerad totalt 1 gånger.
Användarvisningsbild
Plutonium
Moderator
Inlägg: 1245
Blev medlem: 04 jan 2008, 02:34
Ort: Nossebro
Kontakt:

Re: Hur få OWFS att logga till MySQL ?

Inlägg av Plutonium »

Om du installerar php5 med detta då?

Kod: Markera allt

sudo apt-get install php5-cli
http://essunga.org
Moderator - Temperatur.nu
bjornsson
Hemautomation - det är mer än en hobby
Inlägg: 403
Blev medlem: 25 aug 2010, 09:06
Ort: Bräcke

Re: Hur få OWFS att logga till MySQL ?

Inlägg 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?
bjornsson
Hemautomation - det är mer än en hobby
Inlägg: 403
Blev medlem: 25 aug 2010, 09:06
Ort: Bräcke

Re: Hur få OWFS att logga till MySQL ?

Inlägg 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);
riro
Tar hemautomation på allvar
Inlägg: 161
Blev medlem: 19 feb 2008, 15:35
Ort: Falun

Re: Hur få OWFS att logga till MySQL ?

Inlägg 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
bjornsson
Hemautomation - det är mer än en hobby
Inlägg: 403
Blev medlem: 25 aug 2010, 09:06
Ort: Bräcke

Re: Hur få OWFS att logga till MySQL ?

Inlägg av bjornsson »

Tackar så mycket, funkar nu och loggar till databasen =)
Shuntmaster
Wannabe
Inlägg: 5
Blev medlem: 03 apr 2013, 23:50
Ort: Tavelsjö

Logga till MYsql

Inlägg 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?
Shuntmaster
Wannabe
Inlägg: 5
Blev medlem: 03 apr 2013, 23:50
Ort: Tavelsjö

Re: Hur få OWFS att logga till MySQL ?

Inlägg 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 .
bosse123
Gillar hemautomation
Inlägg: 44
Blev medlem: 04 jan 2014, 18:13
Ort: Alingsås

Re: Hur få OWFS att logga till MySQL ?

Inlägg 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é?
bosse123
Gillar hemautomation
Inlägg: 44
Blev medlem: 04 jan 2014, 18:13
Ort: Alingsås

Re: Hur få OWFS att logga till MySQL ?

Inlägg 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!
Nicklas_E
Inlägg: 1
Blev medlem: 13 feb 2014, 11:27
Ort: Nykvarn

Re: Hur få OWFS att logga till MySQL ?

Inlägg 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
bosse123
Gillar hemautomation
Inlägg: 44
Blev medlem: 04 jan 2014, 18:13
Ort: Alingsås

Re: Hur få OWFS att logga till MySQL ?

Inlägg 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!
Skriv svar