#!/usr/bin/perl # welche werte sollen geholt werden? my %Daten = ( # Name => [ Adresse onewire, uuid-Volkszaehler , Faktor ] "WWKessel" => ["28-0000022c2dd7", "834c8be0-293c-11e3-8abd-911b2ff9df4c" , 0.001] , # in GradC "WWVorlauf" => ["28-0000022bef46", "860f8b30-2940-11e3-92d2-b39a45aed701" , 0.001] , # in GradC "HzRueckl" => ["28-0000022bfba8", "793354f0-2941-11e3-8965-b9f953ac51a9" , 0.001] , # in GradC "HzVorl" => ["28-0000022bfbf2", "9482c580-2941-11e3-a953-0f05013168f3" , 0.001] , # in GradC "Abgas" => ["28-0000022c0f2d", "be748340-2941-11e3-8286-edbdc7c926b3" , 0.001] , # in GradC "HzKessel" => ["28-0000022c1388", "d96476a0-2941-11e3-81f9-27853072856e" , 0.001] , # in GradC "WWRueckl" => ["28-0000022c2742", "3336aa50-2942-11e3-8a3c-61212ee448b1" , 0.001] , # in GradC "HzRaum" => ["28-0000023cc9e7", "4e3a22c0-2942-11e3-af9b-1b95cbbaf179" , 0.001] , # in GradC ); # ****************** Werte lesen while (($name) = each(%Daten)){ $addr = $Daten{$name}[0] ; $fak = $Daten{$name}[2] ; # Abfragen $sensor_temp = `cat /sys/bus/w1/devices/${addr}/w1_slave 2>&1`; #print $sensor_temp ; # checken if ( !($sensor_temp =~ /\ YES/ ) ) { delete $Daten{$name}; print "CRC == FALSE\n"; next; #wieder zu while hochspringen } if ( ($sensor_temp =~ /85000/ ) ) { # t=85000 ist der defaultwert ohne Wandlung delete $Daten{$name}; print "t=85000\n"; next; #wieder zu while hochspringen } # decodieren $sensor_temp =~ /t=(\-?\d+)/i; # ALT: geht nicht bei Minusgraden$sensor_temp =~ /t=(\d+)/i; $val = (($1*$fak)-0); if ($val == 0) { delete $Daten{$name}; print "t=0\n"; next; #wieder zu while hochspringen } # Wert im Hash ablegen $Daten{$name}[3] = $val ; # plotten print " --> $name = $val\n"; } # ****************** Wert in die Datenbank schreiben if (1) { use LWP::UserAgent; while (($name) = each(%Daten)){ $uuid = $Daten{$name}[1] ; $val = $Daten{$name}[3] ; print $uuid . " : " . $val . "\n"; my $server_endpoint = "http://rasp1/middleware.php/data/${uuid}.json?value=" . $val; #print "serverget = " . $server_endpoint . "\n"; # set custom HTTP request header fields my $req = HTTP::Request->new(POST => $server_endpoint); $req->header('content-type' => 'application/json'); $req->header('x-auth-token' => 'kfksj48sdfj4jd9d'); # add POST data to HTTP request body $req->content(" "); my $ua = LWP::UserAgent->new; my $resp = $ua->request($req); if ($resp->is_success) { my $message = $resp->decoded_content; print "Received reply: $message\n"; } else { print "HTTP GET error code: ", $resp->code, "\n"; print "HTTP GET error message: ", $resp->message, "\n"; } } }