1. Cześć Gość. Przeglądasz forum dzięki firmie QNAP oraz zespołowi QNAP Club Polska.

Synology jako serwer monitoringu temperatury pomieszczeń

Dyskusja w 'Konfiguracja - Instrukcje "How To"' rozpoczęta przez użytkownika piter76, 16 Kwiecień 2012.

Ładowanie...
  1. Pepek
    Offline

    Pepek Nowy użytkownik Noobie

    Dołączył:
    22 Luty 2013
    Wiadomości:
    21
    Local Time:
    15:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS112
    mam taki
    Kod (Text):
    1. TTY /dev/usb/ttyUSB0
    2. READ_TIME 1000
    3. LOG_TYPE 1
    4. LOG_FORMAT "%.2C"
    5. CNT_FORMAT "%.2C"
    6. HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%"
    7. SENSORS 2
    8. ROM 0 0x28 0x98 0x53 0x63 0x01 0x00 0x00 0x66
    9. ROM 1 0x28 0x9E 0x3B 0x63 0x01 0x00 0x00 0xFB
    temperatura.sh
    Kod (Text):
    1. #!/bin/sh
    2.  
    3. ILE=1
    4. LOGS='/volume1/web/temperatura/logs'
    5. RCFILE='/volume1/web/temperatura'
    6. cd $RCFILE
    7.  
    8. ### Dla bazy tekstowej :
    9. for i in $( seq 0 $ILE ); do
    10.  
    11. DATA=`date +"%d.%m.%Y; %H:%M:%S; "`
    12. TEMP=`digitemp_DS9097 -q -c $RCFILE/.digitemprc -t $i`
    13. OUT=`printf "% 7s\n" "$TEMP";`
    14.  
    15. echo "$DATA$OUT" >> $LOGS/sensor_$i.txt
    16.  
    17. done
    18. ### ^^^^^ Koniec dla bazy tekstowej
    19.  
    20. ### Odkomentuj jesli masz bazę MySQL a zakomentuj wpisy dla bazy tekstowej
    21. #digitemp_DS9097m -q -c $RCFILE/.digitemprc -e

    EDIT POST
    odnośnie mojego poprzedniego postu
    Działa wporządku już.
    Doszedłem do wnisku że gdy się odznaczy Pokaż na wykresach to jest OK
    [Nieprawidłowy link obrazu]:http://viskomp.home.pl/1.png
    Gdy jest zaznaczone to mam
    [Nieprawidłowy link obrazu]:http://viskomp.home.pl/2.png
    A zwykłe słupki wogóle mi niedziałają
    [Nieprawidłowy link obrazu]:http://viskomp.home.pl/3.png
    Bez zmian jakieś sugestie??
     
  2. mariuszsal
    Offline

    mariuszsal Moderator Q's Excellence

    Dołączył:
    15 Maj 2012
    Wiadomości:
    2 315
    Miejscowość:
    Lublin
    Local Time:
    17:17
    Oceny:
    +546 / 9 / -2
    Followers:
    2
    QNAP:
    TS-x53
    Ethernet:
    802.11a
    TS-x53 802.11a
    Albo coś urwałeś z pliku albo masz nie źle. Wyedytuj go zgodnie z oryginałem, reszta od HUM_FORMAT zostaw swoje..

    Poniżej poprawny format logowania w pliku .digitemprc:

    Kod (Text):
    1. TTY /dev/ttyUSB0
    2. READ_TIME 1000
    3. LOG_TYPE 1
    4. LOG_FORMAT "%d.%m.%Y; %H:%M:%S; %.2C"
    5. CNT_FORMAT "%d.%m.%Y; %H:%M:%S; %.2C"
     
  3. Pepek
    Offline

    Pepek Nowy użytkownik Noobie

    Dołączył:
    22 Luty 2013
    Wiadomości:
    21
    Local Time:
    15:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS112
    Już wszystko dziala. Zapisuje do pliku i poprawnie prezentuje wyniki.
    Teraz postanowilem przerobic to na baze mysql ale przy wykonaniu pliku tenperatura.sh mam blędy. Mianowicie zakomentowalem dane tekstowe i odkomentowalem ostatni wiersz i w nim mam błedy
    Kod (Text):
    1. #!/bin/sh
    2.  
    3. ILE=3
    4. LOGS='/volume1/web/temperatura/logs'
    5. RCFILE='/volume1/web/temperatura'
    6. cd $RCFILE
    7.  
    8. ### Dla bazy tekstowej :
    9. #for i in $( seq 0 $ILE ); do
    10. #
    11. #DATA=`date +"%d.%m.%Y; %H:%M:%S; "`
    12. #TEMP=`digitemp_DS9097 -q -c $RCFILE/.digitemprc -t $i`
    13. #OUT=`printf "% 7s\n" "$TEMP";`
    14. #
    15. #echo "$DATA$OUT" >> $LOGS/sensor_$i.txt
    16. #
    17. #done
    18. ### ^^^^^ Koniec dla bazy tekstowej
    19.  
    20. ### Odkomentuj jesli masz bazę MySQL a zakomentuj wpisy dla bazy tekstowej
    21. digitemp_DS9097m -q -c $RCFILE/.digitemprc -e
    oryginalnie było
    Kod (Text):
    1. digitemp_DS9097m -q -c $RCFILE/.digitemprc -e
    ale niema takiego polecenia i usunąlem literke "m" ale teraz mam że argument -e jest niepoprawny, zmieniłem go na -a, temp w konsoli pokaazuje ale do bazy nic niezapisauje. Używa ktoś tego z bazą MySql a nie na plikach?
     
  4. mariuszsal
    Offline

    mariuszsal Moderator Q's Excellence

    Dołączył:
    15 Maj 2012
    Wiadomości:
    2 315
    Miejscowość:
    Lublin
    Local Time:
    17:17
    Oceny:
    +546 / 9 / -2
    Followers:
    2
    QNAP:
    TS-x53
    Ethernet:
    802.11a
    TS-x53 802.11a
    Gdyby ktoś chciał dalej monitorować swoje temperatury na nowym DSM 4.2 to przygotowałem nowe drivery (na razie Marvell i Cedarview)
    Instalacja była omawiana już na forum. Jak będą problemy to pytamy. Jeśli ktoś potrzebuje na inne platformy to albo kompiluje sam (są już źródła) lub pisze to przygotuję.

    http://dslub.dyndns.info/index.php?dir=ftdi%2F
     
  5. prychol
    Offline

    prychol Nowy użytkownik Noobie

    Dołączył:
    17 Lipiec 2011
    Wiadomości:
    19
    Local Time:
    17:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Witam
    Od kilku dni męczę się z uruchomieniem pomiarów. Rezultat jest taki,że albo w logu mam samą datę bez temperatury albo dwie daty i temperatura, albo wcale nie chce logować, poniżej przykład:
    25.03.2013; 11:14:01;
    25.03.2013; 11:15:01;
    25.03.2013; 12:49:01; 25.03.2013; 12:49:02; 21.69
    25.03.2013; 12:50:01; 25.03.2013; 12:50:02; 21.75

    Moje pliki:
    temperatura.sh
    Kod (Text):
    1. #!/bin/sh
    2.  
    3. ILE=1
    4. LOGS='/volume1/web/temperatura/logs'
    5. RCFILE='/volume1/web/temperatura'
    6. cd $RCFILE
    7.  
    8. ### Dla bazy tekstowej :
    9. for i in $( seq 0 $ILE ); do
    10.  
    11. DATA=`date +"%d.%m.%Y; %H:%M:%S; "`
    12. TEMP=`digitemp_DS9097 -q -c $RCFILE/.digitemprc -t $i`
    13. OUT=`printf "% 7s\n" "$TEMP";`
    14.  
    15. echo "$DATA$OUT" >> $LOGS/sensor_$i.txt
    16.  
    17. done
    18. ### ^^^^^ Koniec dla bazy tekstowej
    19.  
    20. ### Odkomentuj jesli masz bazę MySQL a zakomentuj wpisy dla bazy tekstowej
    21. #digitemp_DS9097 -q -c $RCFILE/.digitemprc -e
    .digitemprc
    Kod (Text):
    1. TTY /dev/usb/ttyUSB0
    2. READ_TIME 1000
    3. LOG_TYPE 1
    4. LOG_FORMAT "%d.%m.%Y; %H:%M:%S; %.2C"
    5. CNT_FORMAT "%d.%m.%Y; %H:%M:%S; %.2C"
    6. HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%"
    7. SENSORS 1
    8. ROM 0 0x10 0x86 0x6C 0x5E 0x02 0x08 0x00 0x67
     
  6. Pepek
    Offline

    Pepek Nowy użytkownik Noobie

    Dołączył:
    22 Luty 2013
    Wiadomości:
    21
    Local Time:
    15:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS112
    w .digitemp daj
    Kod (Text):
    1. LOG_FORMAT "%.2C"
    2. CNT_FORMAT "%.2C"
    3. HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%"
    zamiast
    Kod (Text):
    1. LOG_FORMAT "%d.%m.%Y; %H:%M:%S; %.2C"
    2. CNT_FORMAT "%d.%m.%Y; %H:%M:%S; %.2C"
    3. HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%"
    I z tego co widzę masz jeden sensor więc w temperatura.sh
    zmienna ile=0 ponieważ maszyny liczą liczby od zera
    Kod (Text):
    1. #!/bin/sh
    2.  
    3. ILE=0
    4. LOGS='/volume1/web/temperatura/logs'
    5. RCFILE='/volume1/web/temperatura'
    6. cd $RCFILE
    7.  
     
  7. prychol
    Offline

    prychol Nowy użytkownik Noobie

    Dołączył:
    17 Lipiec 2011
    Wiadomości:
    19
    Local Time:
    17:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Dzięki @Pepek, już działa :). W logu mam podobnie jak Ty przed temperaturą 3 spacje zamiast jednej.
    Ale teraz kolejny problem, ponieważ chciałbym logować do bazy mysql, ale niestety nie mogę.
    I teraz tak wygląda mój plik temperatura.sh:
    Kod (Text):
    1. #!/bin/sh
    2.  
    3. ILE=0
    4. LOGA='/volume1/web/temperatura/logs'
    5. RCFILE='/volume1/web/temperatura'
    6. cd $RCFILE
    7.  
    8. ### Dla bazy tekstowej :
    9. #for i in $( seq 0 $ILE ); do
    10.  
    11. #DATA=`date +"%d.%m.%Y; %H:%M:%S; "`
    12. #TEMP=`digitemp_DS9097 -q -c $RCFILE/.digitemprc -t $i`
    13. #OUT=`printf "% 7s\n" "$TEMP";`
    14.  
    15. #echo "$DATA$OUT" >> $LOGS/sensor_$i.txt
    16.  
    17. #done
    18. ### ^^^^^ Koniec dla bazy tekstowej
    19.  
    20. ### Odkomentuj jesli masz bazę MySQL a zakomentuj wpisy dla bazy tekstowej
    21. digitemp_DS9097 -q -c $RCFILE/.digitemprc -e
    Po ręcznym uruchomieniu pliku dostaję komunikat:
    Kod (Text):
    1. # ./temperatura.sh
    2. digitemp_DS9097: invalid option -- e
    3. DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
    4. GNU Public License v2.0 - http://www.digitemp.com
    5. Compiled for DS9097
    6.  
    7.  
    8. Usage: digitemp [-s -i -I -U -l -r -v -t -a -d -n -o -c]
    9.                 -i                            Initalize .digitemprc file
    10.                 -I                            Initalize .digitemprc file w/sorted serial #s
    11.                 -w                            Walk the full device tree
    12.                 -s /dev/ttyS0                 Set serial port
    13.                 -l /var/log/temperature       Send output to logfile
    14.                 -c digitemp.conf              Configuration File
    15.                 -r 1000                       Read delay in mS
    16.                 -v                            Verbose output
    17.                 -t 0                          Read Sensor #
    18.                 -q                            No Copyright notice
    19.                 -a                            Read all Sensors
    20.                 -d 5                          Delay between samples (in sec.)
    21.                 -n 50                         Number of times to repeat
    22.                                               0=loop forever
    23.                 -A                            Treat DS2438 as A/D converter
    24.                 -O"counter format string"      See description below
    25.                 -o 2                          Output format for logfile
    26.                 -o"output format string"      See description below
    27.                 -H"Humidity format string"    See description below
    28.  
    29. Logfile formats:  1 = One line per sensor, time, C, F (default)
    30.                   2 = One line per sample, elapsed time, temperature in C
    31.                   3 = Same as #2, except temperature is in F
    32.         #2 and #3 have the data seperated by tabs, suitable for import
    33.         into a spreadsheet or other graphing software.
    34.  
    35.         The format string uses strftime tokens plus 5 special ones for
    36.         digitemp - %s for sensor #, %C for centigrade, %F for fahrenheit,
    37.         %R to output the hex serial number, and %N for seconds since Epoch.
    38.         The case of the token is important! The default format string is:
    39.         "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F" which gives you an
    40.         output of: May 24 21:25:43 Sensor 0 C: 23.66 F: 74.59
    41.  
    42.         The counter format string has 2 special specifiers:
    43.         %n is the counter # and %C is the count in decimal.
    44.         The humidity format uses %h for the humidity in percent
    45.  
    46. Press any key to continue...
    47.  
     
  8. Pepek
    Offline

    Pepek Nowy użytkownik Noobie

    Dołączył:
    22 Luty 2013
    Wiadomości:
    21
    Local Time:
    15:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS112
    co do MySQL sprawa jest bardzo skomplikowana i ja osobiście poddałem się. -e wywala błąd bo niema takiego parametru zastępowałem go -t ale to i tak niewiele daje. Brak zapytań zapisujących sczytane dane do bazy. Ogólnie pisałem w sprawie do autora wątku, sam powiedział że na Synology nie udało się zrobić bo coś trzeba specjalnie przekompilowywać. On to uruchomił ale na normalnym Linuxie.

    Także u mnie to działa na plikach tekstowych. Napewno wolniej ale bajer jest i działa :)
     
  9. prychol
    Offline

    prychol Nowy użytkownik Noobie

    Dołączył:
    17 Lipiec 2011
    Wiadomości:
    19
    Local Time:
    17:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Aha, no to nie ma co dalej męczyć tematu MySQL :)
    To teraz kolejny problem już z samą stroną www. Po wyświetleniu strony mam taki komunikat:
    Kod (Text):
    1. Warning: include_once(ofc-library/open_flash_chart_object.php): failed to open stream: No such file or directory in /volume1/web/temperatura/index.php on line 46 Warning: include_once(): Failed opening 'ofc-library/open_flash_chart_object.php' for inclusion (include_path='.:/usr/syno/php/lib/php') in /volume1/web/temperatura/index.php on line 46
    [Nieprawidłowy link obrazu]:http://89.67.40.6/foto/pronas/Schowek01.jpg
    konfigurator.php wygląda tak:
    [Nieprawidłowy link obrazu]:http://89.67.40.6/foto/pronas/Schowek03.jpg
    Cokolwiek nie wpiszę i daję Zapisz ustawienia, to żadne zmiany nie są zapamiętane.
    Idzie to wszystko jak po grudzie. Na razie jest jeden czujnik, ale zamierzam podłączyć jeszcze 8 sztuk, które teraz są podłączone do komputera.
     
  10. Pepek
    Offline

    Pepek Nowy użytkownik Noobie

    Dołączył:
    22 Luty 2013
    Wiadomości:
    21
    Local Time:
    15:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS112
    co do pierwszego punktu też miałem ten warning i żeby w oczy nie kuło to po prostu zakomentowałem 46 linijkę kodu w index.php - nie wpływa to na działanie termometru.

    A co do konfiguratora to pokaż plik.config.php
     
  11. prychol
    Offline

    prychol Nowy użytkownik Noobie

    Dołączył:
    17 Lipiec 2011
    Wiadomości:
    19
    Local Time:
    17:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Po zakomentowaniu index.php wyświetla się pusta strona:
    [Nieprawidłowy link obrazu]:http://89.67.40.6/foto/pronas/Schowek04.jpg

    config.php
    Kod (Text):
    1. <?php
    2. define("DB_NAME", "digitemp");              // nazwa bazy
    3. define("DB_USER", "digitemp");              // użytkownika bazy
    4. define("DB_PASS", "digitemp");              // hasło bazy
    5. define("DB_HOST", "localhost");             // adres dostępu do bazy
    6. define("DB_TABLE_PREFIX", "");
    7.  
    8. $sensor[0] = "sensor_0.txt";//test
    9.  
    10. $sim_kol = array(   "r" => "Czerwony",
    11.                     "g" => "Zielowny",
    12.                     "b" => "Niebieski",
    13.                     "c" => "Jasnoniebieski",                   
    14.                     "o" => "Pomorańczowy",
    15.                     "p" => "Fioletowy",
    16.                     "y" => "Żółty" );
    17.  
    18. define(KONFIGURATOR, true);
    19. define(PATH, '/var/web/temperatura/');
    20. define(LOGS, '/var/web/temperatura/logs/');
    21. define(CRON, 1); //Co ile minut odbywają sie pomiary temperatur
    22. define(OS, 1); // Który sensor do dany dla osi X
    23. define(LINIA, 30); // Długość pojedynczej linii pomiaru
    24. define(BAZA, "text"); // Rodzaj bazy danych ( text lub mysql )
    25. define(SIMPLE, 1); // Korekcja pomiarow dla widoku simple.php 0 - bez korekcji, 1 - przedostatni pomiar
    26. define(DWIE_KOLUMNY, true); //Widok osobno.php w jednej lub dwuch kolumnach
    27.  
    28. ?>
     
  12. Pepek
    Offline

    Pepek Nowy użytkownik Noobie

    Dołączył:
    22 Luty 2013
    Wiadomości:
    21
    Local Time:
    15:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS112
    w jakim katalogu masz ten programik czy nie w /volume1/web/temperatura/ ?

    jeśli tak to zmień
    Kod (Text):
    1. define(PATH, '/var/web/temperatura/');
    2. define(LOGS, '/var/web/temperatura/logs/');
    na
    Kod (Text):
    1. define(PATH, '/volume1/web/temperatura/');
    2. define(LOGS, '/volume1/web/temperatura/logs/');
     
  13. prychol
    Offline

    prychol Nowy użytkownik Noobie

    Dołączył:
    17 Lipiec 2011
    Wiadomości:
    19
    Local Time:
    17:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
  14. Pepek
    Offline

    Pepek Nowy użytkownik Noobie

    Dołączył:
    22 Luty 2013
    Wiadomości:
    21
    Local Time:
    15:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS112
    już sam nie wiem może
    Kod (Text):
    1. define(OS, 1); // Który sensor do dany dla osi X
    ustaw (OS, 0)

    a ile masz już wyników zczytanych danych w .txt ?
     
  15. prychol
    Offline

    prychol Nowy użytkownik Noobie

    Dołączył:
    17 Lipiec 2011
    Wiadomości:
    19
    Local Time:
    17:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Ustawiłem (OS, 0) i dalej to samo.
    Plik .txt wyczyściłem teraz trochę i mam teraz trochę ponad 1000 wyników
     
  16. Pepek
    Offline

    Pepek Nowy użytkownik Noobie

    Dołączył:
    22 Luty 2013
    Wiadomości:
    21
    Local Time:
    15:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS112
    patrząc jeszcze na swój plik. spróbuj w konfigurator.php zmienić kilka linijek
    na takie:
    Kod (Text):
    1. function lista($ile = 2) {
    Kod (Text):
    1. function zapisz($ile = 1) {
    Kod (Text):
    1. function alarms($ile = 1) {
     
  17. prychol
    Offline

    prychol Nowy użytkownik Noobie

    Dołączył:
    17 Lipiec 2011
    Wiadomości:
    19
    Local Time:
    17:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Niestety, dalej bez zmian
     
  18. unr3al2
    Offline

    unr3al2 Guest

    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Sprawdź czy w wynikach nie masz błędów.
    Jak będą to je skasuj.
     
  19. prychol
    Offline

    prychol Nowy użytkownik Noobie

    Dołączył:
    17 Lipiec 2011
    Wiadomości:
    19
    Local Time:
    17:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    OK, już bangla :D
    Kolega @Pepek podesłał swoje pliki, które podmieniłem i zaczęło hulać.
    A czy ktoś wie, czy w Digitempie można wprowadzić korekty jak np. w Lämpömittari (jeden z czujników bardzo się "rozjeżdża" przy wyższych temperaturach).
    Oto wprowadzone korekty:
    [Nieprawidłowy link obrazu]:http://89.67.40.6/foto/pronas/Schowek06.jpg
     
  20. Pepek
    Offline

    Pepek Nowy użytkownik Noobie

    Dołączył:
    22 Luty 2013
    Wiadomości:
    21
    Local Time:
    15:17
    Oceny:
    +0 / 0 / -0
    Followers:
    0
    Synology:
    DS112
    Moim zdaniem nie.
    digitemp jest tylko do ogólnie pojętego sczytywania danych z 1-wire - można uruchomić z parametrami http://linux.die.net/man/1/digitemp

    Aby jakieś korekcje na czujniku robić trzeba by było w samym kodzie php robić do konkretnego czujnika jakieś kalkulacje i wyliczenia żeby prawidłowo pokazywał w Twoim przypadku.
     

Poleć tę stronę