Dzisiaj jest 23 maja 2025, 09:54

Strefa czasowa UTC+1godz.




Nowy temat Odpowiedz w temacie  [ Posty: 261 ]  Przejdź na stronę Poprzednia  1 ... 9, 10, 11, 12, 13, 14  Następna
Autor Wiadomość
 Tytuł: Re: Stacja Meteo na OWFS
Post: 20 sty 2016, 16:58 
Offline
Użytkownik
Awatar użytkownika

Rejestracja: 10 kwie 2010, 20:28
Posty: 699
Zgubiłeś "and" w
if (f1 == 1 , f2 == 1 , f3 == 1 , f4 == 1 , f5 == 1 , f6 == 1):

oraz zmieniłeś układ bloków skryptu. To nie ma prawa dobrze działać.

_________________
WRT160NL, WNDR3700v2 i OpenWRT, Funbox ;), WRT1200AC


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 20 sty 2016, 17:36 
Offline
Użytkownik

Rejestracja: 7 sty 2016, 13:44
Posty: 78
układ bloków naprawiony :) and dodany i teraz jest tak że mineło 10 min a do bazy nic nie wypluł
tak wygląda program:
# cat meteo.py
import serial
import sys
import sqlite3
import time
import datetime
con = sqlite3.connect('meteo.db')
cur = con.cursor()
CA=0
TC=0
W1=0
W2=0
TW1=0
TW2=0
f1=0
f2=0
f3=0
f4=0
f5=0
f6=0

# open serial port
ser = serial.Serial('/dev/ttyACM0',115200,timeout=2, bytesize=8, parity='N', stopbits=1, xonxoff=1, rtscts=1)
while True:
    line = ser.readline().strip()
    if line[:2] == "CA":
    CA = line[2:]
    f1 = 1
    elif line[:2] == "TC":
    TC = line[2:]
    f2 = 1
    elif line[:2] == "W1":
    W1 = line[2:]
    f3 = 1   
    elif line[:2] == "W2":
    W2 = line[2:]
    f4 = 1
    elif line[:3] == "TW1":
    TW1 = line[3:]
    f5 = 1
    elif line[:3] == "TW2":
    TW2 = line[3:]
    f6 = 1

    if (f1 == 1 and 2 == 1 and f3 == 1 and f4 == 1 and f5 == 1 and f6 == 1):
    now = datetime.datetime.now() 
    now = now.strftime("%Y-%m-%d %H:%M:%S")
    cur.execute("INSERT INTO meteo VALUES (NULL, ?, ?, ?, ?, ?, ?, ?);", (now, CA, TC, W1, W2, TW1, TW2,))
    f1 = 0
    f2 = 0
    f3 = 0   
    f4 = 0
    f5 = 0
    f6 = 0
    con.commit()



Nie wie czemu ale jak tu wkleję to mi przesuwa


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 20 sty 2016, 17:50 
Offline
Administrator
Awatar użytkownika

Rejestracja: 10 kwie 2010, 12:13
Posty: 1942
Lokalizacja: Suwałki
Bład

(f1 == 1 and 2 == 1 and f3 == 1 and f4 == 1 and f5 == 1 and f6 == 1):
chyba tak powinno być:

(f1 == 1 and f2 == 1 and f3 == 1 and f4 == 1 and f5 == 1 and f6 == 1):

_________________
Pozdrawiam, Artur
http://digi-led.pl


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 20 sty 2016, 17:51 
Offline
Użytkownik

Rejestracja: 7 sty 2016, 13:44
Posty: 78
No tak zjadłem f :P

Wszystko działa tak jak powinno :D
Wielki dzięki za pomoc i wsparcie Panowie a w szczególności dla Tytana :)


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 8 lut 2016, 20:39 
Offline
Użytkownik
Awatar użytkownika

Rejestracja: 10 kwie 2010, 20:28
Posty: 699
Dla @manguscik szablon jak ładować do MySql:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import MySQLdb
import sys

conn = MySQLdb.connect(host="localhost", user="user", passwd="haslo", db="nazwa_bazy")

tempout = 22.34
higro = 80.45
bateria = 2.2
tempin = 25.45
presure = 999.9

c = conn.cursor()
c.execute("""INSERT INTO czujka (tempout, higro, bateria, tempin, presure) VALUES (%s, %s, %s, %s, %s)""", (tempout, higro, bateria, tempin, presure))

conn.commit()

conn.close()



_________________
WRT160NL, WNDR3700v2 i OpenWRT, Funbox ;), WRT1200AC


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 19 lut 2016, 19:41 
Offline
Użytkownik

Rejestracja: 21 lut 2014, 20:47
Posty: 13
Witam, mam kilka pytań związanych z tym projektem.

1. Czy mogę podłączyć dwa czujniki wilgotności?, zakładając że jest taka możliwość to połączenie ma wyglądać tak jak na tym zdjęciu

a) Mając tylko po 1 sztuce czujnika wilgotności i ciśnienia jak w tym projekcie, z tego co wyczytałem w katalogu o tej samej nazwie (u autora 20.CC350A000000) pojawi się odczyt z czujki ciśnienia 20.CC350A000000/volt.A oraz z czujki wilgotności 20.CC350A000000/volt.B

b) to co w przypadku gdy dojdzie drugi czujnik wilgotności, będzie to odczyt z 20.CC350A000000/volt.C ? pytam ponieważ teraz mam podłączone po 1 szt. czujnika wilgotności i ciśnienia i w moim katalogu 20.3B4509000000 mam już pliki z różną zawartością volt.A volt.B volt.C volt.D
/tmp/owfs/20.3B4509000000
8bit
alarm
CO2
pages
set_alarm
address
alias
crc8
family
id
locator
memory
PIO.A
PIO.ALL
PIO.B
PIO.C
PIO.D
power
r_address
r_id
r_locator
type
volt.A
volt.ALL
volt.B
volt.C
volt.D
volt2.A
volt2.ALL
volt2.B
volt2.C
volt2.D

2. Chcę bardziej zrozumieć strukturę katalogów w /tmp/owfs
Autor pisze "Należy tu wiedzieć o tym, że każda czujka bądź przetwornik DS2450 ma fabrycznie nadany indywidualny identyfikator".
W swoim zestawie obecnie mam:
7 szt. Czujnik temperatury DS18B20
1 szt. Konwerter napięcie na 1-Wire DS2450
1 szt. Czujnik wilgotności HIH-4000-002
1 szt. Czujnik ciśnienia atmosferycznego bezwzględnego MPX4115A
Poniżej cała moja zawartość katalogu /tmp/owfs
Czy nie brakuje mi któregoś czujnika ? czy łącznie z Konwerterem napięć DS2450 nie powinienem mieć 10 katalogów (identyfikatorów), jak widać mam 9 katalogów (identyfikatorów).
01.AE7571170000
20.3B4509000000
28.20CF74050000
28.23AD74050000
28.59CC28070000
28.64D774050000
28.B67E74050000
28.B79D74050000
28.E1E31D070000
alarm
bus.0
settings
simultaneous
statistics
structure
system
uncached

a) wiem że katalogi zaczynające się na 28 przykładowo 28.20CF74050000 to odczyty z czujki temperatury /tmp/owfs/28.20CF74050000/temperature

b) U autora projektu pojawił się katalog 01.AA5FF7050000 a ja mam podobny o nazwie 01.AE7571170000, od jakiego czujnika jest ten katalog ?
/tmp/owfs/01.AE7571170000
address
alias
crc8
family
id
locator
r_address
r_id
r_locator
type

3. Nie wiem czy się dobrze zorientowałem, katalog u autora 20.CC350A000000 jest od Konwertera napięć DS2450 ?

Pozdrawiam Krynio


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 19 lut 2016, 21:57 
Offline
Użytkownik
Awatar użytkownika

Rejestracja: 10 kwie 2010, 20:28
Posty: 699
1. Masz zły schemat. Drugi czujnik wilgotności musisz podłączyć do trzeciego (z czterech) wejść przetwornika DS2450.
2. Przetwornik DS2450 daje od razu w katalogach pomiary na czterech wejściach nie zależnie czy coś do nich podłączysz.
3. Strukturę katalogów opisuje projekt owfs http://owfs.org/index.php?page=ds2450

_________________
WRT160NL, WNDR3700v2 i OpenWRT, Funbox ;), WRT1200AC


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 19 lut 2016, 23:09 
Offline
Użytkownik

Rejestracja: 21 lut 2014, 20:47
Posty: 13
Dzięki za info.
Upewnię się, tak podłączenie drugiego czujnika wilgotności powinno wyglądać ?

Patrzyłem na tą stronę co podałeś, lecz nie wszystko rozumiem, wiec pokuszę się o pytania.

1. Piszesz "Przetwornik DS2450 daje od razu w katalogach pomiary na czterech wejściach nie zależnie czy coś do nich podłączysz."
Ok. Teraz tak, jak poprawnie podłącze czujniki: jeden, drugi, trzeci to wartości które były (w 20.xxxxxxxx/volt.A 20.xxxxxxxx/volt.B 20.xxxxxxxx/volt.C bez podłączenia czujników), się zmienią i po podłączeniu czujników chyba będą większe ?

2. Podłączając czujniki jak na zdjęciu powyżej, czyli pierwszy czujnik ciśnienia, drugi czujnik wilgotności, trzeci czujnik wilgotności to rozumiem że:
20.xxxxxxxx/volt.A to będzie czujnik ciśnienia
20.xxxxxxxx/volt.B to będzie czujnik wilgotności
20.xxxxxxxx/volt.C to będzie czujnik wilgotności

3. Zatem czujniki ciśnienia i wilgotności nie tworzą swoich własnych katalogów/identyfikatorów jak ma to miejsce w czujniku temperatury ?, i jedyna oznaka poprawnego ich wykrycia, działania to inna (większa) wartość niż domyślnie w 20.xxxxxxxx/volt.A itd. ?

Krynio


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 20 lut 2016, 10:59 
Offline
Użytkownik
Awatar użytkownika

Rejestracja: 10 kwie 2010, 20:28
Posty: 699
Teraz schemat ok. Tylko czy to trzecie czy czwarte wejście już sam sprawdź.
DS2450 to przetwornika analogowo cyfrowy. Taki przetwornik nie wie czy i co podłączasz do jego wejść tylko poziom analogowy napięcia na wejściach przetwarza i wystawia cyfrowo np. w czterech danych w systemie plików owfs. (ABCD)

_________________
WRT160NL, WNDR3700v2 i OpenWRT, Funbox ;), WRT1200AC


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 21 lut 2016, 09:33 
Offline
Użytkownik

Rejestracja: 7 sty 2016, 13:44
Posty: 78
Chcę przejść z bazy Sqlite3 na MyQSL ale mam problem z Pythonem i dodawaniem do bazy Myqsl z przykładu który podał Tytan chodzi o to że wywala mi błąd w konsoli ale do bazy dodaje i kasuje proces a błąd z którym nie mogę sobie poradzić wygląda tak:

 Traceback (most recent call last):
  File "/mnt/dysk/meteo/meteo22.py", line 77, in <module>
    c.execute("""INSERT INTO meteo (data, CA, TC, W1, W2, TW1, TW2, T0, T1, T2, T3, T4, T5, T6) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""", (now, CA, TC, W1, W2, TW1, TW2, T0, T1, T2, T3, T4, T5, T6))
  File "/usr/lib/python2.7/site-packages/MySQLdb/cursors.py", line 205, in execute
    self.errorhandler(self, exc, value)
  File "/usr/lib/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.InterfaceError: (0, '')


skrypt wygląda tak:

# cat meteo.py
import serial
import sys
import MySQLdb
import time
import datetime
conn = MySQLdb.connect(host="host", user="user", passwd="passwd", db="meteo")
f1=0
f2=0
f3=0
f4=0
f5=0
f6=0
f7=0
f8=0
f9=0
f10=0
f11=0
f12=0
f13=0

# open serial port
ser = serial.Serial('/dev/ttyACM0',115200,timeout=2, bytesize=8, parity='N', stopbits=1, xonxoff=1, rtscts=1)
while True:
    line = ser.readline().strip()
    if line[:2] == "CA":
    CA = line[2:]
    f1 = 1
    elif line[:2] == "TC":
    TC = line[2:]
    f2 = 1
    elif line[:2] == "W1":
    W1 = line[2:]
    f3 = 1   
    elif line[:2] == "W2":
    W2 = line[2:]
    f4 = 1
    elif line[:3] == "TW1":
    TW1 = line[3:]
    f5 = 1
    elif line[:3] == "TW2":
    TW2 = line[3:]
    f6 = 1
    elif line[:2] == "T0":
    T0 = line[2:]
    f7 = 1
    elif line[:2] == "T1":
    T1 = line[2:]
    f8 = 1
    elif line[:2] == "T2":
    T2 = line[2:]
    f9 = 1
    elif line[:2] == "T3":
    T3 = line[2:]
    f10 = 1
    elif line[:2] == "T4":
    T4 = line[2:]
    f11 = 1
    elif line[:2] == "T5":
    T5 = line[2:]
    f12 = 1
    elif line[:2] == "T6":
    T6 = line[2:]
    f13 = 1


    if (f1 == 1 and f2 == 1 and f3 == 1 and f4 == 1 and f5 == 1 and f6 == 1 and f7 == 1 and f8 == 1 and f9 == 1 and f10 == 1 and f11 == 1 and f12 == 1 and f13 == 1):
    now = datetime.datetime.now() 
    now = now.strftime("%Y-%m-%d %H:%M:%S")
    c = conn.cursor()
    c.execute("""INSERT INTO meteo (data, CA, TC, W1, W2, TW1, TW2, T0, T1, T2, T3, T4, T5, T6) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""", (now, CA, TC, W1, W2, TW1, TW2, T0, T1, T2, T3, T4, T5, T6))
    f1 = 0
    f2 = 0
    f3 = 0   
    f4 = 0
    f5 = 0
    f6 = 0
        f7 = 0
        F8 = 0
        f9 = 0
        f10 = 0
        f11 = 0
        f12 = 0
        f13 = 0

    conn.commit()
    conn.close()



Dodanie na końcu ponownie conn.close() naprawia częściowo błąd ale nadal wyskakuje taki

 Traceback (most recent call last):
  File "/mnt/dysk/meteo/meteo22.py", line 94, in <module>
    conn.close()
_mysql_exceptions.ProgrammingError: closing a closed connection


Proszę o sugestie bo nie mam pomysłu jak to naprawić


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 21 lut 2016, 20:51 
Offline
Użytkownik
Awatar użytkownika

Rejestracja: 10 kwie 2010, 20:28
Posty: 699
To działa bez błędów:
#!/usr/bin/python
# -*- coding: utf-8 -*-

import MySQLdb
import sys
import serial

conn = MySQLdb.connect(host="192.168.1.100", user="user", passwd="pass", db="meteo")
c = conn.cursor()

tempout=0
higro=0
bateria=0
tempin=0
pres=0
f1=0
f2=0

# open serial port
ser = serial.Serial('/dev/ttyUSB0',115200,timeout=2, bytesize=8, parity='N', stopbits=1, xonxoff=1, rtscts=1)
while True:
    line = ser.readline().strip()
    if line[:2] == "TM":
        tempin = line[2:]
        f1 = 1
    elif line[:2] == "PR":
        pres = line[2:]
        f2 = 1

    if (f1 == 1 and f2 == 1):
        c.execute("""INSERT INTO czujka (tempout, higro, bateria, tempin, presure) VALUES (%s, %s, %s, %s, %s)""", (tempout, higro, bateria, tempin, pres))
        f1 = 0
        f2 = 0
        conn.commit()



Uważaj na wcięcia...

_________________
WRT160NL, WNDR3700v2 i OpenWRT, Funbox ;), WRT1200AC


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 21 lut 2016, 21:28 
Offline
Użytkownik

Rejestracja: 7 sty 2016, 13:44
Posty: 78
Tytan dzięki za przykład ale zmieniła się troszkę koncepcja aby aruduino komunikowało się ze mną w obie strony a nie tylko wysyłało dane bo w tygodniu kupię przekaźniki pod arduino i będę chciał nimi sterować poprzez wysyłanie komend.

Na razie zrobiłem bazę danych w w Sqlite3 + skrypt który wysyła zapytanie do arduino i dodaje do bazy danych.

Tak wyglądają dane z arduino:

OK CA 1008.97 TC 7.80 W1 95.10 W2 40.30 TW1 5.00 TW2 22.90 T0 23.00 T1 12.56 T2 21.69 T3 20.69 T4 21.12 T5 21.62 T6 20.62


Wygląda on tak:

#!/bin/sh
echo "?" > /dev/ttyACM0 && tail -f /dev/ttyACM0 >> /tmp/meteo/odczyt.txt &
sleep 3
killall -9 tail -f

#pobierz datę i czas
data=$(date +%Y-%m-%d)
time=$(date +%H:%M:%S)
TW1=`cut -d' ' -f11 /tmp/meteo/odczyt.txt| tail -1 `
CA=`cut -d' ' -f3 /tmp/meteo/odczyt.txt | tail -1 `
W1=`cut -d' ' -f7 /tmp/meteo/odczyt.txt | tail -1 `
T0=`cut -d' ' -f15    /tmp/meteo/odczyt.txt | tail -1 `
T2=`cut -d' ' -f19  /tmp/meteo/odczyt.txt | tail -1 `
T4=`cut -d' ' -f23 /tmp/meteo/odczyt.txt | tail -1 `
T6=`cut -d' ' -f27 /tmp/meteo/odczyt.txt | tail -1 `
T3=`cut -d' ' -f21 /tmp/meteo/odczyt.txt | tail -1 `
T1=`cut -d' ' -f17 /tmp/meteo/odczyt.txt | tail -1 `
T5=`cut -d' ' -f25 /tmp/meteo/odczyt.txt | tail -1 `
T7=`cut -d' ' -f1     /tmp/meteo/odczyt.txt | tail -1 `
TW2=`cut -d' ' -f13     /tmp/meteo/odczyt.txt | tail -1 `
T8=`cut -d' ' -f1     /tmp/meteo/odczyt.txt | tail -1 `
T9=`cut -d' ' -f1     /tmp/meteo/odczyt.txt | tail -1 `
TC=`cut -d' ' -f5     /tmp/meteo/odczyt.txt | tail -1 `
W2=`cut -d' ' -f9     /tmp/meteo/odczyt.txt | tail -1 `

sqlite3 /mnt/dysk/meteo/meteo.db "CREATE TABLE IF NOT EXISTS odczyty(ID INTEGER PRIMARY KEY, data TEXT, time TEXT, CA TEXT, TC TEXT, W1 TEXT, W2 TEXT, TW1 TEXT, TW2 TEXT, T0 TEXT, T1 TEXT, T2 TEXT, T3 TEXT, T4 TEXT, T5 TEXT, T6 TEXT)"                       

sqlite3 /mnt/dysk/meteo/meteo.db "INSERT INTO odczyty(data, time, CA, TC, W1, W2, TW1, TW2, T0, T1, T2, T3, T4, T5, T6) values(\"$data\", \"$time\", \"$CA\", \"$TC\", \"$W1\", \"$W2\", \"$TW1\", \"$TW2\", \"$T0\", \"$T1\", \"$T2\", \"$T3\", \"$T4\", \"$T5\", \"$T6\");"

rm /tmp/meteo/odczyt.txt


A za chwilkę wezmę się za skrypt aby zapisywał do do bazy MySQL.

Co do przychwycenia danych zastanawiam się czy można to zrobić łatwiej :)


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 22 lut 2016, 12:05 
Offline
Użytkownik

Rejestracja: 7 sty 2016, 13:44
Posty: 78
Jak prawidłowo powinno wyglądać składnia MySQL aby zmienne dodało mi do bazy danych ? bo te które jest poniżej nie działa ?

#!/bin/sh
echo "?" > /dev/ttyACM0 && tail -f /dev/ttyACM0 >> /tmp/meteo/odczyt.txt &
sleep 3
killall -9 tail -f

#pobierz datę i czas
data=$(date +%Y-%m-%d)
time=$(date +%H:%M:%S)
TW1=`cut -d' ' -f11 /tmp/meteo/odczyt.txt| tail -1 `
CA=`cut -d' ' -f3 /tmp/meteo/odczyt.txt | tail -1 `
W1=`cut -d' ' -f7 /tmp/meteo/odczyt.txt | tail -1 `
T0=`cut -d' ' -f15    /tmp/meteo/odczyt.txt | tail -1 `
T2=`cut -d' ' -f19  /tmp/meteo/odczyt.txt | tail -1 `
T4=`cut -d' ' -f23 /tmp/meteo/odczyt.txt | tail -1 `
T6=`cut -d' ' -f27 /tmp/meteo/odczyt.txt | tail -1 `
T3=`cut -d' ' -f21 /tmp/meteo/odczyt.txt | tail -1 `
T1=`cut -d' ' -f17 /tmp/meteo/odczyt.txt | tail -1 `
T5=`cut -d' ' -f25 /tmp/meteo/odczyt.txt | tail -1 `
T7=`cut -d' ' -f1     /tmp/meteo/odczyt.txt | tail -1 `
TW2=`cut -d' ' -f13     /tmp/meteo/odczyt.txt | tail -1 `
T8=`cut -d' ' -f1     /tmp/meteo/odczyt.txt | tail -1 `
T9=`cut -d' ' -f1     /tmp/meteo/odczyt.txt | tail -1 `
TC=`cut -d' ' -f5     /tmp/meteo/odczyt.txt | tail -1 `
W2=`cut -d' ' -f9     /tmp/meteo/odczyt.txt | tail -1 `




mysql -h host -u root -p haslo -D meteo -e "INSERT INTO odczyty(data, time, CA, TC, W1, W2, TW1, TW2, T0, T1, T2, T3, T4, T5, T6) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""", ($data, $time, $CA, $TC, $W1, $W2, $TW1, $TW2, $T0, $T1, $T2, $T3, $T4, $T5, $T6));"
    

rm /tmp/meteo/odczyt.txt


Jak powinno wyglądać prawidłowo dodanie do bazy MySQL bo nie mogę nigdzie wygoglować

z góry dziękuję za pomoc :)


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 22 lut 2016, 12:43 
Offline
Administrator
Awatar użytkownika

Rejestracja: 9 kwie 2010, 23:28
Posty: 14176
Lokalizacja: Warszawa
VALUES ($data, $time, $CA, $TC, $W1, $W2, $TW1, $TW2, $T0, $T1, $T2, $T3, $T4, $T5, $T6);"

_________________
http://eko.one.pl - prawie wszystko o OpenWrt


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 22 lut 2016, 17:52 
Offline
Użytkownik

Rejestracja: 7 sty 2016, 13:44
Posty: 78
obsy pisze:
VALUES ($data, $time, $CA, $TC, $W1, $W2, $TW1, $TW2, $T0, $T1, $T2, $T3, $T4, $T5, $T6);"


Przy tej składni wywalało mi błąd:

ERROR 1064 (42000) at line 1: 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 ':46:14, 1006.84, 17.50, 60.50, 49.20, 13.60, 22.00, 22.50, 14.06, 22.12, 20.62, ' at line 1


i zapis w tej postaci dopiero nie powoduje błędu

mysql -h host -u root -phaslo -D meteo -e "INSERT INTO odczyty (id, data, time, CA, TC, W1, W2, TW1, TW2, T0, T1, T2, T3, T4, T5, T6) VALUES (' ', '$data', '$time', '$CA', '$TC', '$W1', '$W2', '$TW1', '$TW2', '$T0', '$T1', '$T2', '$T3', '$T4', '$T5', '$T6')"


Może komuś się przyda na przyszłość


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 26 gru 2016, 16:34 
Offline
Użytkownik

Rejestracja: 28 lis 2015, 08:40
Posty: 19
Podłączyłem pod leonardo 5szt. ds18b20 i dht11, wgrałem kod, oto wynik:
root@in:~# cat /dev/ttyACM0
 ; Wil: 38.00 % ; TWil: 22.00 *C ; T0: 20.75 *C ; T1: 21.12 *C ; T2: 21.12 *C ; T3: 21.12 *C ; T4: 20.81 *C ; OK

 ; Wil: 38.00 % ; TWil: 22.00 *C ; T0: 20.81 *C ; T1: 21.12 *C ; T2: 21.12 *C ; T3: 21.12 *C ; T4: 20.81 *C ; OK

Stworzyłem bazę rrdtool:
root@in:/mnt/sda2/rrd# rrdtool create ./dane.rrd -s 60 DS:T0:GAUGE:180:U:U DS:T1:GAUGE:180:U:U DS:T2:GAUGE:180:U:U DS:T3:GAUGE:180:U:U DS:T4:GAUGE:180:U:U DS:Wil:GAUGE:180:U:U DS:TWil:GAUGE:180:U:U RRA:MIN:0.5:4:44640 RRA:AVERAGE:0.5:4:44640 RRA:MAX:0.5:4:44640

Może lepiej stworzyć bazę z innymi nazwami poszczególnych czujników np:
root@in:/mnt/sda2/rrd# rrdtool create ./dane.rrd -s 60 DS:t-0:GAUGE:180:U:U DS:t-1:GAUGE:180:U:U DS:t-2:GAUGE:180:U:U DS:t-3:GAUGE:180:U:U DS:t-4:GAUGE:180:U:U DS:wil-0:GAUGE:180:U:U DS:twil-0:GAUGE:180:U:U RRA:MIN:0.5:4:44640 RRA:AVERAGE:0.5:4:44640 RRA:MAX:0.5:4:44640

Co należałoby wpisać w skrypcie bash który miałby aktualizować bazę danych?
Czy T0; T1; ... można uznać za znaki symbolizujace to że po nich jest pomiar z pierwszej, drugiej, itd czujki?


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 26 gru 2016, 19:02 
Offline
Użytkownik

Rejestracja: 12 kwie 2010, 20:03
Posty: 76
T0, T1, itd. to nazwy zmiennych, które przechowują wartości z czujników, więc jeśli chcesz stosować inne nazwy to musisz je również zmienić w skrypcie aktualizującym.

_________________
TP-Link TL-WDR3600 v1.5 - Gargoyle 1.6.2.2 by obsy +CREATIVE SB Play +Logitech Z506 +Medion OR24V +DVB-T MT4171 +MP00202AC +3xDS18B20 +HIH-4000-002 +MPXHZ6115A


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 26 gru 2016, 21:39 
Offline
Użytkownik

Rejestracja: 28 lis 2015, 08:40
Posty: 19
W pierwotnym tutorialu w skrypcie ładującym bazę rrdtool podane były ścieżki do sczytywanych czujek. Jak to zrobić żeby rrdtool wiedzał że dane pochodzą z /dev/ttyACM0?


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 27 gru 2016, 06:37 
Offline
Administrator
Awatar użytkownika

Rejestracja: 9 kwie 2010, 23:28
Posty: 14176
Lokalizacja: Warszawa
Nie będzie wiedział i nie musi wiedzieć. rrdtool musisz nakarmić danymi, a skąd one pochodzą to już jak ci wygodnie.

_________________
http://eko.one.pl - prawie wszystko o OpenWrt


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
 Tytuł: Re: Stacja Meteo na OWFS
Post: 7 sty 2017, 00:03 
Offline
Użytkownik

Rejestracja: 28 lis 2015, 08:40
Posty: 19
Rrdtool zaczął przyjmować dane z jednego czujnika:
#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
int incomingByte = 0;

void setup(void)
{
  // start serial port
  Serial.begin(9600);

  // Start up the library
  sensors.begin();
}

void loop(void)
{
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.print("");
  Serial.println(sensors.getTempCByIndex(0)); 
 
               
}
Baza danych:
rrdtool create ./dane5.rrd -s 60 DS:temp_dom:GAUGE:180:U:U RRA:MIN:0.5:4:44640 RRA:AVERAGE:0.5:4:44640 RRA:MAX:0.5:4:44640
Skrypt uruchamiany co minutę:
#!/bin/sh
echo -n > /tmp/wykresy/odczyt
cat /dev/ttyACM0 |  grep -m1 "" >> /tmp/wykresy/odczyt

RRD=/mnt/sda2/rrd/dane5.rrd
TOOL='/usr/bin/rrdtool'
NOW=`date -u +%s`
TEMPDOM=`sed 's/^[ ]*//' /tmp/wykresy/odczyt`

$TOOL update $RRD $NOW:$TEMPDOM;
Możliwy jest bezpośredni zapis w rrdtool?


Na górę
 Wyświetl profil  
Odpowiedz z cytatem  
Wyświetl posty nie starsze niż:  Sortuj wg  
Nowy temat Odpowiedz w temacie  [ Posty: 261 ]  Przejdź na stronę Poprzednia  1 ... 9, 10, 11, 12, 13, 14  Następna

Strefa czasowa UTC+1godz.


Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 7 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów

Szukaj:
Przejdź do:  
designed by digi-led.pl
...Copyright © 2010-2013, Ekipa openrouter.info