126

Odp: Skrypty do stacji meteo

Witam
Mam problem z wyświetlaniem wykresów. Postawiłem system na innym routerze i nie wiem czy do końca poprawnie skonfigurowałem php+lighttpd. Mógłbym prosić o sprawdzenie konfiguracji? Wykresy jakby się ładowały ale ostatecznie nic się nie wyświetla na stronie.

# lighttpd configuration file
# 
## modules to load
# all other module should only be loaded if really neccesary
# - saves some time
# - saves memory
server.modules = ( 
#    "mod_rewrite", 
#    "mod_redirect", 
#    "mod_alias", 
#    "mod_auth", 
#    "mod_status", 
#    "mod_setenv",
#    "mod_fastcgi",
#    "mod_proxy",
#    "mod_simple_vhost",
    "mod_cgi",
#    "mod_ssi",
#    "mod_usertrack",
#    "mod_expire",
#    "mod_webdav"
)

# force use of the "write" backend (closes: #2401)
server.network-backend = "write"

## a static document-root, for virtual-hosting take look at the 
## server.virtual-* options
server.document-root = "/www/www1/"

## where to send error-messages to
#server.errorlog = "/var/log/lighttpd/error.log"

## files to check for if .../ is requested
index-file.names = ( "index.html", "default.html", "index.htm", "index.php", "default.htm" )

## mimetype mapping
mimetype.assign = (  
    ".pdf"   => "application/pdf",
    ".class" => "application/octet-stream",
    ".pac"   => "application/x-ns-proxy-autoconfig",
    ".swf"   => "application/x-shockwave-flash",
    ".wav"   => "audio/x-wav",
    ".gif"   => "image/gif",
    ".jpg"   => "image/jpeg",
    ".jpeg"  => "image/jpeg",
    ".png"   => "image/png",
    ".svg"   => "image/svg+xml",
    ".css"   => "text/css",
    ".html"  => "text/html",
    ".htm"   => "text/html",
    ".js"    => "text/javascript",
    ".txt"   => "text/plain",
    ".dtd"   => "text/xml",
    ".xml"   => "text/xml",
        ".php"   => "text/php"
 )

## Use the "Content-Type" extended attribute to obtain mime type if possible
#mimetypes.use-xattr = "enable"

## send a different Server: header
## be nice and keep it at lighttpd
#server.tag = "lighttpd"

$HTTP["url"] =~ "\.pdf$" {
    server.range-requests = "disable"
}

##
# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

######### Options that are good to be but not neccesary to be changed #######

## bind to port (default: 80)
server.port = 90

## bind to localhost (default: all interfaces)
#server.bind = "localhost"

## error-handler for status 404
#server.error-handler-404 = "/error-handler.html"
#server.error-handler-404 = "/error-handler.php"

## to help the rc.scripts
server.pid-file = "/var/run/lighttpd.pid"


###### virtual hosts
##
##   If you want name-based virtual hosting add the next three settings and load
##   mod_simple_vhost
##
## document-root =
##   virtual-server-root + virtual-server-default-host + virtual-server-docroot or
##   virtual-server-root + http-host + virtual-server-docroot
##
#simple-vhost.server-root = "/home/weigon/wwwroot/servers/"
#simple-vhost.default-host = "grisu.home.kneschke.de"
#simple-vhost.document-root = "/pages/"


## 
## Format: <errorfile-prefix><status>.html
## -> ..../status-404.html for 'File not found'
#server.errorfile-prefix = "/www/error-"

## virtual directory listings
#server.dir-listing = "enable"

## send unhandled HTTP-header headers to error-log
#debug.dump-unknown-headers = "enable"

### only root can use these options
#
# chroot() to directory (default: no chroot() )
#server.chroot = "/"

## change uid to <uid> (default: don't care)
#server.username = "nobody"
#
server.upload-dirs = ( "/tmp" )

## change uid to <uid> (default: don't care)
#server.groupname = "nobody"

#### compress module
#compress.cache-dir          = "/dev/null/"
#compress.filetype           = ("text/plain", "text/html")

#### proxy module
## read proxy.txt for more info
#proxy.server = (
#    ".php" => (
#        "localhost" => (
#            "host" => "192.168.0.101",
#            "port" => 80
#        )
#    )
#)

#### fastcgi module
## read fastcgi.txt for more info
#fastcgi.server = (
#    ".php" => (
#        "localhost" => (
#            "socket" => "/tmp/php-fastcgi.socket",
#            "bin-path" => "/usr/local/bin/php"
#        )
#    )
#)

#### CGI module
cgi.assign = ( ".pl"  => "/usr/bin/perl", ".cgi" => "/usr/bin/perl", ".php" => "/usr/bin/php-cgi", )

#### SSL engine
#ssl.engine = "enable"
#ssl.pemfile = "server.pem"

#### status module
#status.status-url = "/server-status"
#status.config-url = "/server-config"

#### auth module
## read authentification.txt for more info
#auth.backend = "plain"
#auth.backend.plain.userfile = "lighttpd.user"
#auth.backend.plain.groupfile = "lighttpd.group"
#auth.require = (
#    "/server-status" => ( 
#        "method"  => "digest",
#        "realm"   => "download archiv",
#        "require" => "group=www|user=jan|host=192.168.2.10"
#    ),
#    "/server-info" => ( 
#        "method"  => "digest",
#        "realm"   => "download archiv",
#        "require" => "group=www|user=jan|host=192.168.2.10"
#    )
#)

#### url handling modules (rewrite, redirect, access)
#url.rewrite = ( "^/$" => "/server-status" )
#url.redirect = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )

#### both rewrite/redirect support back reference to regex conditional using %n
#$HTTP["host"] =~ "^www\.(.*)" {
#    url.redirect = ( "^/(.*)" => "http://%1/$1" )
#}

#### expire module
#expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")

#### ssi
#ssi.extension = ( ".shtml" )

#### setenv
#setenv.add-request-header  = ( "TRAV_ENV" => "mysql://user@host/db" )
#setenv.add-response-header = ( "X-Secret-Message" => "42" )

#### variable usage:
## variable name without "." is auto prefixed by "var." and becomes "var.bar"
#bar = 1
#var.mystring = "foo"

## integer add
#bar += 1
## string concat, with integer cast as string, result: "www.foo1.com"
#server.name = "www." + mystring + var.bar + ".com"
## array merge
#index-file.names = (foo + ".php") + index-file.names
#index-file.names += (foo + ".php")

#### include
#include /etc/lighttpd/lighttpd-inc.conf
## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf"
#include "lighttpd-inc.conf"

#### include_shell
#include_shell "echo var.a=1"
## the above is same as:
#var.a=1

#### webdav
#$HTTP["url"] =~ "^/webdav($|/)" {
# webdav.activate = "enable"
# webdav.is-readonly = "enable"
# webdav.sqlite-db-name = "/var/run/lighttpd-webdav-lock.db"
#}
[PHP]

zend.ze1_compatibility_mode = Off

; Language Options

engine = On
;short_open_tag = Off
precision    =  12
y2k_compliance = On
output_buffering = Off
;output_handler =
zlib.output_compression = Off
;zlib.output_compression_level = -1
;zlib.output_handler =
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 100

;open_basedir =
disable_functions =
disable_classes =

; Colors for Syntax Highlighting mode.  Anything that's acceptable in
; <span style="color: ???????"> would work.
;highlight.string  = #DD0000
;highlight.comment = #FF9900
;highlight.keyword = #007700
;highlight.bg      = #FFFFFF
;highlight.default = #0000BB
;highlight.html    = #000000

;ignore_user_abort = On
;realpath_cache_size = 16k
;realpath_cache_ttl = 120

; Miscellaneous

expose_php = On

; Resource Limits

max_execution_time = 30    ; Maximum execution time of each script, in seconds.
max_input_time = 60    ; Maximum amount of time each script may spend parsing request data.
;max_input_nesting_level = 64
memory_limit = 8M    ; Maximum amount of memory a script may consume.

; Error handling and logging

; Error Level Constants:
; E_ALL             - All errors and warnings (includes E_STRICT as of PHP 6.0.0)
; E_ERROR           - fatal run-time errors
; E_RECOVERABLE_ERROR  - almost fatal run-time errors
; E_WARNING         - run-time warnings (non-fatal errors)
; E_PARSE           - compile-time parse errors
; E_NOTICE          - run-time notices (these are warnings which often result
;                     from a bug in your code, but it's possible that it was
;                     intentional (e.g., using an uninitialized variable and
;                     relying on the fact it's automatically initialized to an
;                     empty string)
; E_STRICT            - run-time notices, enable to have PHP suggest changes
;                     to your code which will ensure the best interoperability
;                     and forward compatibility of your code
; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
;                     initial startup
; E_COMPILE_ERROR   - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR      - user-generated error message
; E_USER_WARNING    - user-generated warning message
; E_USER_NOTICE     - user-generated notice message
; E_DEPRECATED      - warn about code that will not work in future versions
;                     of PHP
; E_USER_DEPRECATED - user-generated deprecation warnings
;
; Common Values:
;   E_ALL & ~E_NOTICE  (Show all errors, except for notices and coding standards warnings.)
;   E_ALL & ~E_NOTICE | E_STRICT  (Show all errors, except for notices)
;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
;   E_ALL | E_STRICT  (Show all errors, warnings and notices including coding standards.)
; Default Value: E_ALL & ~E_NOTICE
error_reporting  =  E_ALL & ~E_NOTICE & ~E_STRICT

display_errors = On
display_startup_errors = Off
log_errors = Off
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
;report_zend_debug = 0
track_errors = Off
;html_errors = Off
;docref_root = "/phpmanual/"
;docref_ext = .html
;error_prepend_string = "<font color=#ff0000>"
;error_append_string = "</font>"
; Log errors to specified file.
;error_log = /var/log/php_errors.log
; Log errors to syslog.
;error_log = syslog

; Data Handling

;arg_separator.output = "&amp;"
;arg_separator.input = ";&"
variables_order = "EGPCS"
request_order = "GP"
register_globals = Off
register_long_arrays = Off
register_argc_argv = On
auto_globals_jit = On
post_max_size = 8M
;magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
;default_charset = "iso-8859-1"
;always_populate_raw_post_data = On

; Paths and Directories

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
doc_root = "/www/www1"
user_dir =
extension_dir = "/usr/lib/php"
enable_dl = On
cgi.force_redirect = 0
;cgi.nph = 1
;cgi.redirect_status_env = ;
cgi.fix_pathinfo=1
;fastcgi.impersonate = 1;
;fastcgi.logging = 0
;cgi.rfc2616_headers = 0

; File Uploads

file_uploads = On
upload_tmp_dir = "/tmp"
upload_max_filesize = 20M
max_file_uploads = 200

; Fopen wrappers

allow_url_fopen = On
allow_url_include = Off
;from="john@doe.com"
;user_agent="PHP"
default_socket_timeout = 60
;auto_detect_line_endings = Off

; Dynamic Extensions

;extension=ctype.so
;extension=curl.so
;extension=dom.so
;extension=exif.so
;extension=ftp.so
extension=gd.so
;extension=gmp.so
;extension=hash.so
;extension=iconv.so
;extension=json.so
;extension=ldap.so
;extension=mbstring.so
;extension=mcrypt.so
;extension=mysql.so
;extension=openssl.so
;extension=pcre.so
;extension=pdo.so
;extension=pdo-mysql.so
;extension=pdo-pgsql.so
;extension=pdo_sqlite.so
;extension=pgsql.so
;extension=session.so
;extension=soap.so
;extension=sockets.so
;extension=sqlite.so
;extension=sqlite3.so
;extension=tokenizer.so
;extension=xml.so
;extension=xmlreader.so
;extension=xmlwriter.so

; Module Settings

[APC]
apc.enabled = 1
apc.shm_segments = 1    ;The number of shared memory segments to allocate for the compiler cache.
apc.shm_size = 4M    ;The size of each shared memory segment.

[Date]
;date.timezone =
;date.default_latitude = 31.7667
;date.default_longitude = 35.2333
;date.sunrise_zenith = 90.583333
;date.sunset_zenith = 90.583333

[filter]
;filter.default = unsafe_raw
;filter.default_flags =

[iconv]
;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1

[sqlite]
;sqlite.assoc_case = 0

[sqlite3]
;sqlite3.extension_dir =

[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=

[MySQL]
mysql.allow_local_infile = On
mysql.allow_persistent = On
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off

[PostgresSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0

[Session]
session.save_handler = files
session.save_path = "/tmp"
session.use_cookies = 1
;session.cookie_secure =
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor     = 100
session.gc_maxlifetime = 1440
session.bug_compat_42 = On
session.bug_compat_warn = On
session.referer_check =
session.entropy_length = 0
;session.entropy_file = /dev/urandom
session.entropy_file =
;session.entropy_length = 16
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 4
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="

[mbstring]
;mbstring.language = Japanese
;mbstring.internal_encoding = EUC-JP
;mbstring.http_input = auto
;mbstring.http_output = SJIS
;mbstring.encoding_translation = Off
;mbstring.detect_order = auto
;mbstring.substitute_character = none;
;mbstring.func_overload = 0
;mbstring.strict_detection = Off
;mbstring.http_output_conv_mimetype=
;mbstring.script_encoding=

[gd]
gd.jpeg_ignore_warning = 0

[exif]
;exif.encode_unicode = ISO-8859-15
;exif.decode_unicode_motorola = UCS-2BE
;exif.decode_unicode_intel    = UCS-2LE
;exif.encode_jis =
;exif.decode_jis_motorola = JIS
;exif.decode_jis_intel    = JIS

[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5

[sysvshm]
;sysvshm.init_mem = 10000

[ldap]
ldap.max_links = -1

[mcrypt]
;mcrypt.algorithms_dir=
;mcrypt.modes_dir=

127

Odp: Skrypty do stacji meteo

Włącz logowanie błędów i zobacz czy czegoś nie wyświetla. Strona testowa php działa?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

128

Odp: Skrypty do stacji meteo

w logowaniu błędów mam tylko info o tym że serwer wystartował. Php info działa bez problemu... dalsze sugestie??

129

Odp: Skrypty do stacji meteo

/usr/bin/php-cgi /www/ta/strona.php wykonaj

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

130

Odp: Skrypty do stacji meteo

root@Gargoyle:~# /usr/bin/php-cgi /www/www1/index.php
PHP Warning:  Module 'gd' already loaded in Unknown on line 0
X-Powered-By: PHP/5.4.5
Content-type: text/html

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Temperatura</title>
        <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
        <script type="text/javascript">
$(function() {
Highcharts.setOptions({
lang: {
months: ['Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Śierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień'],
weekdays: ['Nie', 'Pon', 'Wt', 'Śr', 'Czw', 'Pt', 'Sob'] },
global: {
    useUTC: false
    }
}),
        window.chart = new Highcharts.StockChart({
            chart: {
                renderTo: 'container'
            },
xAxis: {
        type: 'datetime',
        dateTimeLabelFormats: {
        second: '%d-%m-%y<br/>%H:%M:%S',
        minute: '%d-%m<br/>%H:%M',
        hour: '%d-%m<br/>%H:%M',
        day: '%Y<br/>%d-%m',
        week: '%Y<br/>%d-%m',
        month: '%m-%Y',
        year: '%Y'
        }
    },
rangeSelector: {
buttons: [{
    type: 'day',
    count: 1,
    text: '24godziny'
}, {
    type: 'day',
    count: 7,
    text: 'tydzień'
}, {
    type: 'month',
    count: 1,
    text: 'miesiac'
}, {
    type: 'year',
    count: 1,
    text: 'rok'
}, {
    type: 'all',
    text: 'wszystko'
}],
    selected: 0
},
        title: {
                text: 'Temperatura'
        },
yAxis: {
        title: {
            text: 'Temperatura ( °C )'
        },
},
        series: [{
                        name: 'Solar',
                        data: [[1380189388000,12.69],[1380189443000,12.69],[1380189606000,12.63],[1380190206000,12.56],[1380190806000,12.63],[1380191406000,12.75],[1380191670000,12.75],[1380192006000,12.75],[1380192606000,12.81],[1380193206000,12.81],[1380193806000,12.63],[1380194406000,12.38],[1380195006000,12.31],[1380195350000,12.69],[1380195383000,12.69],[1380195606000,42.00],[1380196207000,37.75],[1380197407000,28.13],[1380198007000,27.06],[1380198607000,24.00],[1380199207000,19.69],[1380199807000,17.31],[1380200407000,15.44],[1380201007000,13.75],[1380201607000,13.00],[1380202207000,12.19],[1380202807000,11.44],[1380203407000,10.81],[1380204007000,10.38],[1380204607000,9.88],[1380205207000,9.56],[1380205807000,9.44],[1380206407000,9.25],[1380207007000,9.13],[1380207607000,9.06],[1380208207000,8.75],[1380208807000,8.56],[1380209407000,8.38],[1380210007000,8.19],[1380210607000,8.13],[1380211207000,8.00],[1380211807000,7.94],[1380212407000,7.88],[1380213007000,7.88],[1380213607000,7.75],[1380214207000,7.69],[1380214807000,7.50],[1380215407000,7.38],[1380216007000,7.25],[1380216607000,7.19],[1380217207000,7.13],[1380217807000,7.06],[1380218407000,7.00],[1380219007000,7.00],[1380219607000,6.94],[1380220207000,6.94],[1380220807000,6.88],[1380221407000,6.81],[1380222007000,6.75],[1380222607000,6.56],[1380223207000,6.31],[1380223807000,6.13],[1380224407000,5.81],[1380225007000,5.56],[1380225607000,5.44],[1380226207000,5.25],[1380226807000,5.06],[1380227407000,4.88],[1380227865000,4.81]
,[1380228007000,4.75],[1380228607000,4.63]
,[1380229206000,4.44]
,[1380229806000,4.06]
,[1380230406000,3.88]
,[1380231006000,3.69]
,[1380231606000,3.44]
,[1380232206000,3.44]
,[1380232806000,3.38]
,[1380233406000,3.44]
,[1380233416000,3.44]
,[1380234011000,3.50]
,[1380234011000,3.50]
,[1380234184000,3.56]
,[1380234184000,3.56]
,[1380234606000,3.56]
,[1380234606000,3.56]
,[1380235206000,3.69]
,[1380235206000,3.69]
,[1380235806000,3.81]
,[1380235806000,3.81]
,[1380236406000,3.94]
,[1380236406000,3.94]
,[1380237006000,4.06]
,[1380237006000,4.06]
,[1380237606000,4.19]
,[1380237606000,4.19]
,[1380238206000,4.25]
,[1380238206000,4.25]
,[1380238806000,4.44]
,[1380238806000,4.44]
,[1380239406000,4.50]
,[1380239406000,4.50]
,[1380240006000,4.50]
,[1380240007000,4.50]
,[1380240606000,4.63]
,[1380240607000,4.63]
,[1380241206000,4.75]
,[1380241207000,4.75]
,[1380241806000,4.81]
,[1380241807000,4.81]
,[1380242406000,4.88]
,[1380242407000,4.88]
,[1380243006000,5.00]],
                        type: 'spline',
                        shadow: true,
                        tooltip: {
                            valueDecimals: '2',
                            valueSuffix: ' °C'
                            }
                        },{
                        name: 'Zbiornik góra',
                        data: [[1380189388000,30.38],[1380189443000,30.38],[1380189606000,30.31],[1380190206000,30.25],[1380190806000,30.06],[1380191406000,29.94],[1380191670000,29.88],[1380192006000,29.81],[1380192606000,29.69],[1380193206000,29.56],[1380193806000,29.44],[1380194406000,28.94],[1380195006000,28.88],[1380195350000,28.75],[1380195383000,28.69],[1380195606000,28.13],[1380196207000,27.25],[1380197407000,27.25],[1380198007000,27.13],[1380198607000,27.06],[1380199207000,27.06],[1380199807000,26.94],[1380200407000,26.81],[1380201007000,26.63],[1380201607000,26.31],[1380202207000,25.69],[1380202807000,25.44],[1380203407000,25.44],[1380204007000,25.06],[1380204607000,25.00],[1380205207000,24.94],[1380205807000,24.88],[1380206407000,24.88],[1380207007000,24.81],[1380207607000,24.75],[1380208207000,24.63],[1380208807000,24.63],[1380209407000,24.63],[1380210007000,24.63],[1380210607000,24.50],[1380211207000,24.44],[1380211807000,24.38],[1380212407000,24.38],[1380213007000,24.25],[1380213607000,24.19],[1380214207000,24.13],[1380214807000,23.94],[1380215407000,23.75],[1380216007000,23.69],[1380216607000,23.63],[1380217207000,23.56],[1380217807000,23.44],[1380218407000,23.31],[1380219007000,23.25],[1380219607000,23.25],[1380220207000,23.19],[1380220807000,23.50],[1380221407000,28.06],[1380222007000,31.38],[1380222607000,33.25],[1380223207000,35.88],[1380223807000,38.25],[1380224407000,40.06],[1380225007000,41.25],[1380225607000,41.94],[1380226207000,43.44],[1380226807000,45.88],[1380227407000,46.50],[1380227865000,48.38]
,[1380228007000,48.94],[1380228607000,50.50]
,[1380229206000,51.56]
,[1380229806000,52.56]
,[1380230406000,53.44]
,[1380231006000,54.13]
,[1380231606000,54.06]
,[1380232206000,46.25]
,[1380232806000,46.69]
,[1380233406000,61.19]
,[1380233416000,61.25]
,[1380234011000,62.44]
,[1380234184000,65.00]
,[1380234606000,66.06]
,[1380235206000,65.06]
,[1380235806000,65.63]
,[1380236406000,66.13]
,[1380237006000,66.44]
,[1380237606000,66.75]
,[1380238206000,67.06]
,[1380238806000,67.38]
,[1380239406000,67.63]
,[1380240006000,67.94]
,[1380240606000,68.25]
,[1380241206000,68.56]
,[1380241806000,68.81]
,[1380242407000,69.19]
,[1380243007000,69.44]
,[1380243607000,69.69]
,[1380244207000,69.94]
,[1380244807000,70.13]
,[1380245407000,70.38]
,[1380246007000,70.50]
,[1380246607000,70.63]
,[1380247207000,70.75]
,[1380247807000,70.81]
,[1380248407000,70.88]
,[1380249007000,71.00]
,[1380249607000,71.06]
,[1380250207000,71.13]
,[1380250807000,71.19]
,[1380251407000,71.19]
,[1380252007000,71.19]
,[1380252607000,71.13]
,[1413485407000,62.19]
],
                        type: 'spline',
                        shadow: true,
                        tooltip: {
                            valueDecimals: '2',
                            valueSuffix: ' °C'
                            }
                        },{
                        name: 'Zbiornik dól',
                        data: [[1380284407000,41.25]
,[1380285007000,43.25]
,[1380285607000,44.69]
,[1380286207000,46.00]
,[1380286807000,47.25]
,[1380287407000,47.81]
,[1380288007000,46.88]
,[1380288607000,46.00]
,[1380289207000,45.69]
,[1380289807000,45.50]
,[1380290407000,45.44]
,[1380291007000,45.31]
,[1380291607000,44.81]
,[1380292207000,44.63]
,[1380292807000,44.50]
,[1380293407000,44.38]
,[1380294007000,44.25]
,[1380294607000,44.00]
,[1380295207000,43.75]
,[1380295807000,43.13]
,[1380296407000,42.94]
,[1380297007000,42.81]
,[1380297607000,42.50]
,[1380298207000,41.94]
,[1380298807000,40.81]
,[1380299407000,40.31]
,[1380456607000,40.94]
,[1380457207000,41.88]
,[1380457807000,42.44]
,[1380458407000,42.81]
,[1380459007000,43.44]
,[1380459607000,44.31]
,[1380460207000,44.94]
,[1413485407000,22.06]
],
                        type: 'spline',
                        shadow: true,
                        tooltip: {
                            valueDecimals: '2',
                            valueSuffix: ' °C'
                            }
                        },{
                        name: 'Pokój',
                        data: [[1380189443000,21.44],[1380189606000,21.50],[1380190206000,21.69],[1380190806000,21.88],[1380191406000,21.94],[1380191670000,22.00],[1380192006000,22.00],[1380192606000,21.88],[1380193206000,21.94],[1380193806000,21.94],[1380194406000,22.00],[1380195006000,22.06],[1380195383000,25.75],[1380195606000,22.19],[1380196207000,22.25],[1380197407000,22.25],[1380198007000,22.25],[1380198607000,22.38],[1380199207000,22.31],[1380199807000,22.13],[1380200407000,22.06],[1380201007000,22.06],[1380201607000,22.13],[1380202207000,22.06],[1380202807000,21.94],[1380203407000,21.88],[1380204007000,21.81],[1380204607000,21.88],[1380205207000,21.88],[1380205807000,21.81],[1380206407000,21.94],[1380207007000,21.88],[1380207607000,21.81],[1380208207000,21.81],[1380208807000,21.75],[1380209407000,21.81],[1380210007000,21.94],[1380210607000,21.94],[1380211207000,21.94],[1380211807000,21.94],[1380212407000,21.88],[1380213007000,21.94],[1380213607000,22.00],[1380214207000,21.94],[1380214807000,21.88],[1380215407000,21.81],[1380216007000,21.81],[1380216607000,21.81],[1380217207000,21.81],[1380217807000,21.75],[1380218407000,21.75],[1380219007000,21.81],[1380219607000,21.75],[1380220207000,21.75],[1380220807000,21.69],[1380221407000,21.69],[1380222007000,21.69],[1380222607000,21.63],[1380223207000,21.69],[1380223807000,21.69],[1380224407000,21.75],[1380225007000,21.75],[1380225607000,21.81],[1380226207000,21.88],[1380226807000,21.81],[1380227407000,21.81],[1380227865000,21.81]
,[1380228007000,21.81],[1380228607000,21.81]
,[1380229206000,21.81]
,[1380229806000,21.94]
,[1380230406000,22.00]
,[1380231006000,22.00]
,[1380231606000,21.81]
,[1380232206000,21.75]
,[1380232806000,21.75]
,[1380233406000,21.81]
,[1380233416000,21.81]
,[1380234011000,22.00]
,[1380234184000,21.94]
,[1380234606000,21.94]
,[1380235206000,21.94]
,[1380235806000,22.00]
,[1380236406000,21.75]
,[1380237006000,21.75]
,[1380237606000,21.69]
,[1380238206000,21.63]
,[1380238806000,21.63]
,[1380239406000,21.63]
,[1380240006000,21.56]
,[1380240606000,21.56]
,[1380241206000,21.69]
,[1380241806000,21.56]
,[1380242406000,21.56]
,[1380243006000,21.63]
,[1380243606000,21.56]
,[1380244206000,21.63]
,[1380244806000,21.56]
,[1380245406000,21.56]
,[1380246006000,21.56]
,[1380246606000,21.56]
,[1380247206000,21.56]
,[1380247806000,21.50]
,[1380248406000,21.50]
,[1380249006000,21.44]
,[1380249606000,21.44]
,[1413485407000,24.50]
],
                        type: 'spline',
                        shadow: true,
                        tooltip: {
                            valueDecimals: '2',
                            valueSuffix: ' °C'
                            }
                        },{
                        name: 'Piwnica',
                        data: [[1380189388000,18.75],[1380189443000,18.75],[1380189606000,18.69],[1380190206000,18.69],[1380190806000,18.63],[1380191406000,18.63],[1380191670000,18.63],[1380192006000,18.63],[1380192606000,18.56],[1380193206000,18.63],[1380193806000,18.56],[1380194406000,18.69],[1380195006000,18.69],[1380195350000,18.63],[1380195383000,18.63],[1380195606000,18.63],[1380196207000,18.75],[1380197407000,18.69],[1380198007000,18.63],[1380198607000,18.56],[1380199207000,18.56],[1380199807000,18.50],[1380200407000,18.50],[1380201007000,18.44],[1380201607000,18.44],[1380202207000,18.38],[1380202807000,18.38],[1380203407000,18.31],[1380204007000,18.25],[1380204607000,18.25],[1380205207000,18.19],[1380205807000,18.13],[1380206407000,18.19],[1380207007000,18.13],[1380207607000,18.13],[1380208207000,18.13],[1380208807000,18.06],[1380209407000,18.13],[1380210007000,18.13],[1380210607000,18.06],[1380211207000,18.06],[1380211807000,18.06],[1380212407000,18.06],[1380213007000,18.06],[1380213607000,18.00],[1380214207000,18.00],[1380214807000,18.00],[1380215407000,18.00],[1380216007000,17.94],[1380216607000,18.00],[1380217207000,17.94],[1380217807000,17.94],[1380218407000,17.94],[1380219007000,17.94],[1380219607000,17.88],[1380220207000,17.88],[1380220807000,17.94],[1380221407000,17.94],[1380222007000,18.00],[1380222607000,18.06],[1380223207000,18.06],[1380223807000,18.06],[1380224407000,18.13],[1380225007000,18.13],[1380225607000,18.13],[1380226207000,18.13],[1380226807000,18.19],[1380227407000,18.19],[1380227865000,18.19]
,[1380228007000,18.19],[1380228607000,18.25]
,[1380229206000,18.25]
,[1380229806000,18.31]
,[1380230406000,18.38]
,[1380231006000,18.38]
,[1380231606000,18.38]
,[1380232206000,18.38]
,[1380232806000,18.31]
,[1380233406000,18.31]
,[1380233416000,18.31]
,[1380234011000,18.38]
,[1380234184000,18.31]
,[1380234606000,18.38]
,[1380235206000,18.38]
,[1380235806000,18.44]
,[1380236406000,18.44]
,[1380237006000,18.44]
,[1380237606000,18.50]
,[1380238207000,18.50]
,[1380238807000,18.44]
,[1380239407000,18.50]
,[1380240007000,18.50]
,[1380240607000,18.50]
,[1380241207000,18.50]
,[1380241807000,18.56]
,[1380242407000,18.56]
,[1380243007000,18.56]
,[1380243607000,18.56]
,[1380244207000,18.56]
,[1380244807000,18.63]
,[1380245407000,18.56]
,[1380246007000,18.56]
,[1380246607000,18.63]
,[1380247207000,18.56]
,[1380247807000,18.63]
,[1380248407000,18.69]
,[1380249007000,18.63]
,[1380249607000,18.63]
,[1380250207000,18.63]
,[1380250807000,18.69]
,[1380251407000,18.63]
,[1380252007000,18.69]
,[1380252607000,18.69]],
                        type: 'spline',
                        shadow: true,
                        tooltip: {
                            valueDecimals: '2',
                            valueSuffix: ' °C'
                            }
                        }]         });
});
        </script>
    </head>
    <body>
<script src="js/highstock.js"></script>
<script src="js/modules/exporting.js"></script>
<script type="text/javascript" src="js/themes/dark-green.js"></script>
<table rules="all" border=1 width="60%"><tr width="60%">
</b><td align="center"><INPUT TYPE=button class=przycisk style="height:50;width:150" VALUE="CA&#321;O&#346;&#262" onclick="window.location.href='?id=?' "></td></b>

<td align="center"><INPUT TYPE=button class=przycisk style="height:50;width:150" VALUE="SOLAR" onclick="window.location.href='?id=3' "></td>
<td align="center"><INPUT TYPE=button class=przycisk style="height:50;width:150" VALUE="ZBIORNIK GÓRA" onclick="window.location.href='?id=2' "></td>
<td align="center"><INPUT TYPE=button class=przycisk style="height:50;width:150" VALUE="ZBIORNIK DÓL" onclick="window.location.href='?id=0' "></td>
<td align="center"><INPUT TYPE=button class=przycisk style="height:50;width:150" VALUE="POKÓJ" onclick="window.location.href='?id=1' "></td>
<td align="center"><INPUT TYPE=button class=przycisk style="height:50;width:150" VALUE="PIWNICA" onclick="window.location.href='?id=4' "></td>
<tr>
<td align="center"><b>Temperatura</b></td>
<td align="center"><b>12.06
°C</b></td>
<td align="center"><b>62.19
°C</b></td>
<td align="center"><b>22.06
°C</b></td>
<td align="center"><b>24.50
°C</b></td>
<td align="center"><b>20.00
°C</b></td>


</table><br>
<div id="container" style="height: 500px"></div><br>

    </body>

</html>root@Gargoyle:~#

131

Odp: Skrypty do stacji meteo

Więc działa poza tym drobnym warningiem. Zrób lighttpd przez fastcgi, opis masz przy okazji owncloud.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

132 (edytowany przez xury 2014-11-03 08:55:03)

Odp: Skrypty do stacji meteo

Napisałem skrypt, który wykorzystuje do odczytu temperatury czujnik ATD-100 z systemu Satel Integra.
Dodatkowo potrzebny jest moduł ETHM-1 wpięty w sieć lokalną oraz uaktywniona opcja "Integracja"
Skrypt może bezpośrednio generować odczyty do pliku np. 0.txt
By tworzyć wykres trzeba go dodać do crona.
Skrypt może też symulować wyjście danych jak z digitempa.

#!/bin/bash
#!/bin/bash
# atdtemp v.1.0 by Xury
# Wypisuje info o centrali alarmowej
# Skladnia: atdtemp <ip> <port>
# np. atdtemp 192.168.2.8 7094
if [ $# != 2 ]; then

    echo "Musisz podać IP i port ethm-1"
    echo "Przykład: intver.sh 192.168.2.8 7094"
exit 1
fi
hex="$(echo -en "\xFE\xFE\x7D\x1B\x4F\xAA\xFE\x0D" | nc $1 $2 | hexdump -v -e ' 1/1 "%02X" " "')"
#----------------------------------------------------------------------------------------------------------------
#UWAGA!!
#Ramkę wysyłaną do ETHM-1 trzeba zmodyfikować pod woją konfigurację.
#W tym konkretnym przypadku czujnik ATD-100 jest na na pozycji 27 czyli 1B. Jest to czwarty wysyłany bajt - \0x1B
#Po nim jeszcze są dwa bajty sumy kontrolnej, które ulegną zmianie jeśli zostanie zmieniony numer czujnika
#Należy sobie obliczyć samemu sumę kontrolną i wpisać ją zamiast \x4F\xAA
#----------------------------------------------------------------------------------------------------------------
tablica=($hex)
temp=$(echo "obase=10; ibase=16; ${tablica[5]}" | bc )
#echo $temp
temp=$[$temp - 110]
modulo=$[$temp % 2]
if [ $modulo == 1 ]; then
    modulo=5
else
    modulo=0
fi
temp=$[$temp / 2]

#echo "Temperatura: " $temp "." $modulo

#date | awk '{print $2,$3,$4,"Sensor 0 C:",t"."m," "}'  t=$temp m=$modulo > /www/meteo2.txt

date +%s | awk '{print ",["$1"000,"t"."m"]"}' t=$temp m=$modulo    >> /www/0.txt

133 (edytowany przez Jaack 2014-11-19 00:08:10)

Odp: Skrypty do stacji meteo

A czy nie macie czasami problemu z niewłaściwą datą zapisu temperatury?
U mnie kiedy router odłączę od prądu i podepnę z powrotem to na 99% dostaję jeden wpis który tworzy krzaki takie jak na screenie na końcu tego posta.
Rozumiem, że powodem tego jest fakt, że PHP pobiera czas, który jest niezgodny z rzeczywistym, co skutkuje nowym wpisem, ze starą datą.
Z tego wynika, że OpenWRT tylko co jakiś czas zapisuje aktualną datę i czas w nieulotnej pamięci - nie mam nic przeciwko.
Teraz ustawiłem żeby skrypt się uruchamiał z opóźnieniem tak aby OpenWRT mogło zaktualizować czas przez NTP (o ile będzie internet działać - stąd nie jest to idealne rozwiązanie).

Myślałem nad tym by ustawić jakieś zabezpieczenie i chyba najprostszym wydaje się sprawdzenie czy ostatni wpis w pierwszym pliku (0.txt) ma datę/czas mniejszy niż aktualnie mam zamiar zapisać.
Jeśli tak, to zapisuję, jeśli nie to dane kasuję.

Czy ktoś umiałby to napisać w PHP?

screen wykresów

BTW. nie używam crona, ponieważ ja nasłuchuję temperatur przesyłanych po połączeniu szeregowym z arduino, które niejako automatyzuje mi pracę grzejnika z zaworem termoelektrycznym (całkiem ładnie mi się to sprawdza).

134

Odp: Skrypty do stacji meteo

Router nie ma zegara czasu rzeczywistego. Więc zanim podłączy się do internetu i zaktualizuje czas to na routerze masz albo rok 1970 albo jedną z ostatnich dat jeżeli jakiś masz automat to tego. Po prostu nie oprogramowałeś sobie takiej sytuacji.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

135

Odp: Skrypty do stacji meteo

Ale rzecz w tym, że nie dorabiałem niczego pamiętającego czas, to dlaczego tak się dzieje, skąd on bierze tę datę?
Jak byś ten problem rozwiązał Cezary? :-)

136

Odp: Skrypty do stacji meteo

Który system masz?
- czyste openwrt AA nie ma nic takiego
- gargoyle zapisuje ładnie godzinę co 4h, później przy starcie odtwarza ostatnią zapisaną
- openwrt BB szuka po /etc czasu ostatniej modyfikacji pliku

Tak czy siak - oprogramuj to sobie, np. nie zapisuj pomiarów jeżeli nie masz dostępu do internetu. Lub zapisuj uptime routera który później możesz przerobić na właściwą datę jak będzie ustawiony właściwy czas. Lub zrób sobie sprzętowy rtc na usb i z niego odczytuj czas.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

137

Odp: Skrypty do stacji meteo

Widzisz, to byłem nieprecyzyjny w wypowiedzi, mam Gargoyle.
Czyli to tłumaczy wszystko - dzięki.

A czt ntp ma jakąś flagę żeby sprawdzić czy udało mu się zaktualizować czas?
W skrypcie w pythonie bym ją odpytał i jeśli tak, to ok, a jeśli nie, to dane bym wrzucał z zanotowaniem uptime w jakiś pliczek i jak by w końcu zsynchronizował czas, to mógłbym je wrzucić na wykres bez straty :-)

138

Odp: Skrypty do stacji meteo

Nie znam takiej "flagi". Zostaje chyba porównywanie czegoś lub np. próba odczytania czasu w internetu.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

139 (edytowany przez Jaack 2014-11-17 08:56:25)

Odp: Skrypty do stacji meteo

To zanim wejdę w główną pętlę mojego "odbieradła" mógłbym wykonać takie polecenie:

ntpd -n -q -p XXX

gdzie: XXX to serwer ntp, który chciałbym pobrać z UCI.
Sprawdzić czy coś zwraca - jeśli nie, to OK, a jeśli zwraca, to są to błędy, więc wtedy musiałbym przeczekać ileś czasu i spróbować ponownie.

Aby pobrać dane z UCI msuiałbym wykonać poniższe polecenie, ale kilka serwerów (w przypadku gargoyle mam 3) trzeba podać po  po kilku "-p".

uci get system.ntp.server

Nie bardzo umiem to tak skonstruować żeby w pętli rozbił te dane na styl:

ntpd -n -q -p $1 -p $2 -p $3

Ktoś pomoże? :-)

140

Odp: Skrypty do stacji meteo

Przecież masz to w /etc/init.d/sysntpd?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

141

Odp: Skrypty do stacji meteo

Nie pomyślałem, żeby tam poszukać.
Poniżej kod, który u mnie zadziałał, w pythonie wywołuję ten skrypt subprocessem, przechwytuję output, jeśli jest pusty, to jest OK, a jeśli nie to znaczy że są błędy.
Nie wiem czy da się lepiej zaciągąć functions.sh.
Nie wiem czy to poprawne czy eleganckie, ale na pewno działa - może ktoś wie jak to lepiej albo poprawniej napisać?

#!/bin/sh
# Copyright (C) 2011 OpenWrt.org
# Skrypt do testowania ntp - jak OK, to nic nie zwraca.
. $IPKG_INSTROOT/lib/functions.sh

local peers
local args="-n -q"
config_load system
config_get peers ntp server

if [ -n "$peers" ]; then
        local peer
        for peer in $peers; do
                append args "-p $peer"
        done
fi

/usr/sbin/ntpd $args

142

Odp: Skrypty do stacji meteo

A nie prościej jest pobrać ostatnią zapisaną datę z pliku pomiarów i porównać ją z bieżącym czasem ?

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

143

Odp: Skrypty do stacji meteo

Jaack napisał/a:

Myślałem nad tym by ustawić jakieś zabezpieczenie i chyba najprostszym wydaje się sprawdzenie czy ostatni wpis w pierwszym pliku (0.txt) ma datę/czas mniejszy niż aktualnie mam zamiar zapisać.
Jeśli tak, to zapisuję, jeśli nie to dane kasuję.

Czy ktoś umiałby to napisać w PHP?

Tak że wpadłem na to, ale niestety nie jestem na tyle dobry w PHP żeby to ogarnąć...
Jeśli chciałbyś pomóc to byłbym wdzięczny wink

144

Odp: Skrypty do stacji meteo

Ups smile nie zauważyłem.
Niestety w php Ci nie pomogę ale w bash'u jest to dość proste więc jak Ci pasuje to wieczorem coś skleję smile

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

145

Odp: Skrypty do stacji meteo

Byłbym wdzięczy ;-)
W ogóle spróbuję ten pliczek meteo.php sobie przepisać w pythonie czy bashu, bo aktualnie to mam swoisty wrapper w pythonie, który podaje dane tak żeby meteo.php bez żadnych przeróbek odzczytał dane, a nie lubię rozwiązań na około ;-)

146 (edytowany przez wabikboy 2014-11-18 11:44:06)

Odp: Skrypty do stacji meteo

pokaż mi tylko w jaki sposób masz zapisane dane w pliku z pomiarami.

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

147 (edytowany przez xury 2014-11-18 16:01:22)

Odp: Skrypty do stacji meteo

Jak chcesz w bashu to zainteresuj się ostatnią linijką z mojego skryptu powyżej.

date +%s | awk '{print ",["$1"000,"t"."m"]"}' t=$temp m=$modulo    >> /www/0.txt

Generuje ona timestamp i pobiera dane o temperaturze z $temp i $modulo. Potem zapisuje gotową ramkę do 0.txt
Zmienna $temp to liczba całkowita temperatury (np. 22), zmienna modulo to dziesiątki po kropce.

148

Odp: Skrypty do stacji meteo

Tu nie chodzi o generowanie wyniku lecz o porównanie ostatniej zapisanej daty pomiaru z bieżącym czasem.

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile

149 (edytowany przez xury 2014-11-18 18:12:56)

Odp: Skrypty do stacji meteo

No to odejmij jedną od drugiej i podziel przez 1000 a dostaniesz ilość sekund pomiędzy pomiarami.

By odczytać ostatni wpis to by było coś w stylu:

$ostatnie[$id] = file_get_contents($path.$id, NULL, NULL, filesize($path.$id) - 20, 20);

Pisałem po omacku więc jeśli coś nie tak to już sam poprawić.

150

Odp: Skrypty do stacji meteo

Nadal źle smile
Nie chodzi o samo wyciągnięcie danych tylko jeszcze trzeba porównać te dane z czasem routera który aktualizuje się po pewnym czasie z internetu aby nie robił się bałagan na wykresie jak wyżej.

np coś takiego:

#!/bin/sh

jakas_data="2014-11-18 18:10:09"

last_data=$(date -d "$jakas_data" +%s)


if [ "$last_data" -gt `date +%s` ] ; then
echo 1
fi

Jeśli zwraca 1 znaczy że źle
Jak dostanę to o co prosiłem tzn format daty zapisanej w pliku to zrobie gotowca

TL-WR1043ND: HDD-USB, extroot, LCD, Pilot, MP3 - Radio Player, NAS, Torrent, FTP, Sterowanie głosem, Komunikaty Głosowe, Termometr, PowerSwitch - Sterownik oświetlenia, Budzik, LTE - ODU IDU 200
Raspberry Pi + HDMI-VGA + Lcd Controller + Lcd z laptopa = Pogodynka smile