Sida 1 av 1

1-wire mot Mysql

Postat: 07 nov 2019, 13:40
av Bizmarck
Hej.

Jag vet att det finns en massa trådar om detta men jag provar att göra en egen ändå.

Jag vill ha ut alla mina 1-wire sensorer som jag ha i mitt pannrum ut till en MySQL-databas. (eller liknande) som jag sedan skall lägga ut på min hemsida (http://www.hakansta.com)

Jag kan inget om Mysql, så jag behöver hjälp med att sätta upp allt. helst steg för steg...kan någon hjälpa mig med det?

Känns som att det är enklare och mindre jobb för min Raspberry Pi3 att lägga ut det i Databasen än att den läser och skapar och uppdaterar alla filerna varje minut, Timme och Dygn.

Re: 1-wire mot Mysql

Postat: 08 nov 2019, 10:22
av Quart
Jag loggar till MYSQL.
Kör ett PHP script som putter in värdena.
Detta kräver dock att du har en maskin igång som kan köra PHP.
Men det funkar fint och har gjort i 10år
Kan lägga upp php scriptet här samt hur min crontab ser ut.

Re: 1-wire mot Mysql

Postat: 09 nov 2019, 11:59
av Bizmarck
Jag har en separat en gammal Windows 10-burk som jag har kopplat till Nätverket. Den tänkte jag ha som Databas, men då är frågan, Kan jag från Raspberryn lägga all data till Windowsburken och sedan hämta datan till Raspberryns webserver? Blir lite fram och tillbaka...

Re: 1-wire mot Mysql

Postat: 09 nov 2019, 12:23
av Quart
Japp det funkar

Re: 1-wire mot Mysql

Postat: 09 nov 2019, 21:21
av Bizmarck
Ok, så bra.

Kan du lägga upp bågot skript och förklara hur jag gör?

Re: 1-wire mot Mysql

Postat: 30 apr 2020, 08:53
av gflygt
Jag kör min raspberry pi 3, med mysql för insamling av data från mina 4 sensorer. Jag har gjort symlänkar till de ocacheade 1wire"filerna" under /mnt/1wire à la:
sensor1 -> /mnt/1wire/uncached/10.67AC92010800/temperature

Jag använder vanliga shellscript för att lägga in data i mysql från mina 4 sensorer:


#!/bin/bash
# collect.sh Script to collect data from 1-wire sensors
# Created 29 July 2009 by Gunnar Flygt
# The sensors have soft links in the working directory
# Collect temperature for display with gnuplot
#

mysql="/usr/bin/mysql -upi -plösenord weathersensors"
GREP="/bin/grep"
TR="/usr/bin/tr"

cd /home/pi/weatherdata

nr="1"

# This is the collector procedure
while [ $nr -le 4 ];
do
# Get the sensor ID for storing in database
sensid=`ls -l sensor$nr | awk '{ print $11 }' \
| awk 'BEGIN { FS = "/" } ; { print $5 }'`

# Get the temperature value strip whitespace
temp=`$GREP . sensor$nr | $TR -d [:space:]`

# define INSERT statement
insert="INSERT INTO measures VALUES('${sensid}',${temp},CURRENT_TIMESTAMP)"

# pollute database
`echo ${insert} | ${mysql}`

nr=$(( $nr + 1 ))
done

Och min lilla tabell för dessa värden ser ut så här:

MariaDB [weathersensors]> show create table measures\G;
*************************** 1. row ***************************
Table: measures
Create Table: CREATE TABLE `measures` (
`sensor` varchar(20) DEFAULT NULL,
`value` varchar(20) DEFAULT NULL,
`tidpunkt` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
PRIMARY KEY (`tidpunkt`),
CONSTRAINT `CONSTRAINT_1` CHECK (`value` < 40)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
1 row in set (0.001 sec)

Den sista raden CONSTRAINT ..... lade jag in häromdagen för att skala bort helt orimliga värden.

Gunnar