tdtool.py + tellstick net + sensorer
Moderator: Telldus
tdtool.py + tellstick net + sensorer
Problemet löst.
Last edited by mwd123 on Sat Aug 11, 2012 7:42 am, edited 1 time in total.
Re: tdtool.py + tellstick net + sensorer
eof
Last edited by mwd123 on Sat Aug 11, 2012 7:42 am, edited 2 times in total.
Now using Tellstick NET + NEXA & PLUGWISE
http://homeauto.does-it.net powered by gadgets from m.nu
http://homeauto.does-it.net powered by gadgets from m.nu
Re: tdtool.py + tellstick net + sensorer
Vad får du ut om du bara skriver "tdtool.py -l"?mwd123 wrote:Hej!
Har köpt mig en tellstick net och 2st oregon tempsensorer för att mäta temp och luftfuktighet. tanken med dessa är att jag ska kunna få in värdena i rrdtool som ritar grafer åt mig och presenterar på en liten lokal websida som jag har, men jag har inte lyckats klura ut hur jag listar sensorerna med tdtool.py, och sedan sparar värdena i en txtfil, är det någon som kan hjälpa mig lite med detta?
Jag har kommit en liten bit på väg, jag har lyckats få igång tdtool.py med telldus live, så jag kan nu slå av och på enheter med denna, men den kan inte lista sensorer, och dess data osv, är det någon som redan implementerat detta och kan tänka sig att låna ut sin kod? eller vet nån sida där det ev finns beskrivet hur man gör? jag håller just nu på med att mecka i api.telldus.com med sensorerna för att klura ut hur jag ska få in de i tdtool.py, men det går lite segt
Jag hittade även "poll-koden" men vet inte riktigt hur jag ska göra ändock.
Har hållit på nästan ett dygn i sträck nu och inte kommit någon vart, så alla tips är välkomna
Tacksam för all hjälp om någon är intresserad.
Re: tdtool.py + tellstick net + sensorer
Lyckades du läsa ut temperaturen från dina sensorer med tdtool.py?
Re: tdtool.py + tellstick net + sensorer
Hej
Nej jag lyckades inte med det tyvärr jag fick göra iordning en php-sida och wgetta infon därifrån, osv.
Men om någon fixar tdtool.py så att den kan läsa temp osv så vore det guld värt.
Nej jag lyckades inte med det tyvärr jag fick göra iordning en php-sida och wgetta infon därifrån, osv.
Men om någon fixar tdtool.py så att den kan läsa temp osv så vore det guld värt.
Now using Tellstick NET + NEXA & PLUGWISE
http://homeauto.does-it.net powered by gadgets from m.nu
http://homeauto.does-it.net powered by gadgets from m.nu
Re: tdtool.py + tellstick net + sensorer
Hej,
Jag öppnade en support ticket på tdtool.py och svaret var:
Det verkar som att vi har samma behov, läsa ut sensor värden i linux.
Verkar som att du lyckats köra ditt php script via wget, jag fastnar ännu på "We have no access token, connect us".... skulle du kunna posta ditt script?
Jag öppnade en support ticket på tdtool.py och svaret var:
Tydligen skall det gå att läsa ut temperaturen via api'n men att det inte är implementerat.Kanske refererar du till vårt python exempel tdtool.py? Detta är endast ett exempel för att visa hur du från Python kan kommunicera med vårt API för Telldus Live!
Vill du bygga ut exemplet med stöd för sensorer får du gärna skicka tillbaka dina ändringar. Det finns säkert fler som kan ha nytta av dom.
Det verkar som att vi har samma behov, läsa ut sensor värden i linux.
Verkar som att du lyckats köra ditt php script via wget, jag fastnar ännu på "We have no access token, connect us".... skulle du kunna posta ditt script?
Re: tdtool.py + tellstick net + sensorer
Du måste hårdkoda in dina tokens i index.php, efter där det står PRIVATE KEY och PUBLIC KEY i begäran, så sätter du in din token efter. typ såhär:
if (isset($_GET['Sensor1-Info'])) {
$consumer = new HTTP_OAuth_Consumer(constant('PUBLIC_KEY'), constant('PRIVATE_KEY'),'xxxxxxxxxxxxxxxxxXXXXXXXXXXX', 'xxxxxxxxxxxxxxxxXXXXXXXXXXXXXXX');
$params = array('id'=> 22222);
$response = $consumer->sendRequest(constant('REQUEST_URI').'/sensor/info', $params, 'GET');
echo '<pre>';
echo( htmlentities($response->getBody()));
}
?><p><a href="index.php?Sensor2-Info">Sensor2 Info</a></p><?php
if (isset($_GET['Sensor2-Info'])) {
$consumer = new HTTP_OAuth_Consumer(constant('PUBLIC_KEY'), constant('PRIVATE_KEY'),'xxxxxxxxxxxxxxxxXXXXXXXXXXXXXXXXXXX', 'xxxxxxxxxxxxxxxxxxxXXXXXXXXXXXXXXXXX');
$params = array('id'=> 11111);
$response = $consumer->sendRequest(constant('REQUEST_URI').'/sensor/info', $params, 'GET');
echo '<pre>';
echo( htmlentities($response->getBody()));
}
du byter där ut xxxxxxxxxxxxxxxxx osv mot din token och token secret. och använder du ovanstående script så får du fylla i rätt id för dina sensorer oxå.
Mitt script som jag kör kör att wgetta och sedan spara ner värdena i en textfil för att läsa med rrdtool ser ut såhär:
#!/bin/bash
/bin/rm -rf /usr/local/bin/index.php?Sensor*
cd /usr/local/bin/
/usr/bin/wget http://192.168.0.32/test2/index.php?Sensor1-Info
/usr/bin/wget http://192.168.0.32/test2/index.php?Sensor2-Info
/bin/cat /usr/local/bin/index.php?Sensor1-Info | /bin/grep temp | /bin/sed 's/[^0-9.]*//g' > /srv/www/htdocs/rrdtool/temps0.txt
/bin/cat /usr/local/bin/index.php?Sensor1-Info | /bin/grep humidity | /bin/sed 's/[^0-9.]*//g' > /srv/www/htdocs/rrdtool/luftinne.txt
/bin/cat /usr/local/bin/index.php?Sensor2-Info | /bin/grep temp | /bin/sed 's/[^0-9.]*//g' > /srv/www/htdocs/rrdtool/temps1.txt
/bin/cat /usr/local/bin/index.php?Sensor2-Info | /bin/grep humidity | /bin/sed 's/[^0-9.]*//g' > /srv/www/htdocs/rrdtool/luftute.txt
Mvh
if (isset($_GET['Sensor1-Info'])) {
$consumer = new HTTP_OAuth_Consumer(constant('PUBLIC_KEY'), constant('PRIVATE_KEY'),'xxxxxxxxxxxxxxxxxXXXXXXXXXXX', 'xxxxxxxxxxxxxxxxXXXXXXXXXXXXXXX');
$params = array('id'=> 22222);
$response = $consumer->sendRequest(constant('REQUEST_URI').'/sensor/info', $params, 'GET');
echo '<pre>';
echo( htmlentities($response->getBody()));
}
?><p><a href="index.php?Sensor2-Info">Sensor2 Info</a></p><?php
if (isset($_GET['Sensor2-Info'])) {
$consumer = new HTTP_OAuth_Consumer(constant('PUBLIC_KEY'), constant('PRIVATE_KEY'),'xxxxxxxxxxxxxxxxXXXXXXXXXXXXXXXXXXX', 'xxxxxxxxxxxxxxxxxxxXXXXXXXXXXXXXXXXX');
$params = array('id'=> 11111);
$response = $consumer->sendRequest(constant('REQUEST_URI').'/sensor/info', $params, 'GET');
echo '<pre>';
echo( htmlentities($response->getBody()));
}
du byter där ut xxxxxxxxxxxxxxxxx osv mot din token och token secret. och använder du ovanstående script så får du fylla i rätt id för dina sensorer oxå.
Mitt script som jag kör kör att wgetta och sedan spara ner värdena i en textfil för att läsa med rrdtool ser ut såhär:
#!/bin/bash
/bin/rm -rf /usr/local/bin/index.php?Sensor*
cd /usr/local/bin/
/usr/bin/wget http://192.168.0.32/test2/index.php?Sensor1-Info
/usr/bin/wget http://192.168.0.32/test2/index.php?Sensor2-Info
/bin/cat /usr/local/bin/index.php?Sensor1-Info | /bin/grep temp | /bin/sed 's/[^0-9.]*//g' > /srv/www/htdocs/rrdtool/temps0.txt
/bin/cat /usr/local/bin/index.php?Sensor1-Info | /bin/grep humidity | /bin/sed 's/[^0-9.]*//g' > /srv/www/htdocs/rrdtool/luftinne.txt
/bin/cat /usr/local/bin/index.php?Sensor2-Info | /bin/grep temp | /bin/sed 's/[^0-9.]*//g' > /srv/www/htdocs/rrdtool/temps1.txt
/bin/cat /usr/local/bin/index.php?Sensor2-Info | /bin/grep humidity | /bin/sed 's/[^0-9.]*//g' > /srv/www/htdocs/rrdtool/luftute.txt
Mvh
Now using Tellstick NET + NEXA & PLUGWISE
http://homeauto.does-it.net powered by gadgets from m.nu
http://homeauto.does-it.net powered by gadgets from m.nu
Re: tdtool.py + tellstick net + sensorer
Och i index.php för att se id osv på sensorerna:
?><p><a href="index.php?listSensors">List Sensors</a></p><?php
if (isset($_GET['listSensors'])) {
$consumer = new HTTP_OAuth_Consumer(constant('PUBLIC_KEY'), constant('PRIVATE_KEY'),'xxxxxxxxxxxxxxxxxxxxxxxx, 'xxxxxxxxxxxxxxxxxxxxxx);
$params = array();
$response = $consumer->sendRequest(constant('REQUEST_URI').'/sensors/list', $params, 'GET');
echo '<pre>';
echo( htmlentities($response->getBody()));
}
}
?><p><a href="index.php?listSensors">List Sensors</a></p><?php
if (isset($_GET['listSensors'])) {
$consumer = new HTTP_OAuth_Consumer(constant('PUBLIC_KEY'), constant('PRIVATE_KEY'),'xxxxxxxxxxxxxxxxxxxxxxxx, 'xxxxxxxxxxxxxxxxxxxxxx);
$params = array();
$response = $consumer->sendRequest(constant('REQUEST_URI').'/sensors/list', $params, 'GET');
echo '<pre>';
echo( htmlentities($response->getBody()));
}
}
Now using Tellstick NET + NEXA & PLUGWISE
http://homeauto.does-it.net powered by gadgets from m.nu
http://homeauto.does-it.net powered by gadgets from m.nu
Re: tdtool.py + tellstick net + sensorer
Lysande! Fick det att fungera, allt annat än rumsrent, men ändå bra!
Någon mörk kväll skall jag ta och städa upp min kod lite.
Jag valde att dumpa ut index.php via elinks, och så kör jag cut på datan.
Tusen tack!
Någon mörk kväll skall jag ta och städa upp min kod lite.
Jag valde att dumpa ut index.php via elinks, och så kör jag cut på datan.
Tusen tack!
Re: tdtool.py + tellstick net + sensorer
EDIT: 16.08.12 - Städade upp shell scriptet, kör xmllint endast en gång.
Tydligen var det en mörk kväll ikäll...
För att göra det enkelt valde jag att klämma in allt i en enda .php fil, denhär kan vem som helst testa, kör med telldus demo user.
Så rundar jag av med ett shell script som kör härligheten via elinks, och läser ut xml datan i shell variabler.
Tydligen var det en mörk kväll ikäll...
För att göra det enkelt valde jag att klämma in allt i en enda .php fil, denhär kan vem som helst testa, kör med telldus demo user.
Code: Select all
<?php
session_start();
require_once 'HTTP/OAuth/Consumer.php';
// Keys for demo user from http://api.telldus.com/keys/showToken
define('PUBLIC_KEY', 'FEHUVEW84RAFR5SP22RABURUPHAFRUNU');
define('PRIVATE_KEY', 'ZUXEVEGA9USTAZEWRETHAQUBUR69U6EF');
define('TOKEN', '0af6933e26366c308117c191784fb48e04eab090c');
define('TOKEN_SECRET', '6f206a2e194af3d4c3dc36e749edbd52');
define('URL', 'http://api.telldus.com'); //https should be used in production!
define('REQUEST_TOKEN', constant('URL').'/oauth/requestToken');
define('AUTHORIZE_TOKEN', constant('URL').'/oauth/authorize');
define('ACCESS_TOKEN', constant('URL').'/oauth/accessToken');
define('REQUEST_URI', constant('URL').'/xml');
define('BASE_URL', 'http://'.$_SERVER["SERVER_NAME"].dirname($_SERVER['REQUEST_URI']));
$consumer = new HTTP_OAuth_Consumer(constant('PUBLIC_KEY'), constant('PRIVATE_KEY'),
constant('TOKEN'), constant('TOKEN_SECRET'));
// Get temperature for sensor with ID 105473
// OBS: Demo sensor 105473 är en dummy sensor, därför ger den alltid samma
// värden och last updated någon gång år 2013!!!
$params = array('id'=> 105473);
$response = $consumer->sendRequest(constant('REQUEST_URI').'/sensor/info', $params, 'GET');
echo( htmlentities($response->getBody()));
?>
Code: Select all
# Get data from telldus and redirect output to file.
# - cut to get rid of empty spaes before the xml data
# - pipe through xmllint in order to get a grepable xml file
elinks http://MY_WEB_SERVER/single.php -dump -dump-width 440 |\
cut -c4- | xmllint --format - > out.xml
# Split the data into shell variables
LASTUPDATE=$(grep lastUpdated out.xml | cut -d" " -f4)
TEMP=$(grep temp out.xml | cut -d\" -f4)
HUMIDITY=$(grep humidity out.xml | cut -d\" -f4)
# Print the data
echo $(date) $LASTUPDATE $TEMP $HUMIDITY
Last edited by kea on Thu Aug 16, 2012 11:28 am, edited 5 times in total.
Re: tdtool.py + tellstick net + sensorer
Aha, smidigt, kunde du köra den filen från shell eller hur gör du det?
Mvh
Mvh
Now using Tellstick NET + NEXA & PLUGWISE
http://homeauto.does-it.net powered by gadgets from m.nu
http://homeauto.does-it.net powered by gadgets from m.nu
Re: tdtool.py + tellstick net + sensorer
Påtade in single.php på "min" linux webserver och kör sen elinks -dump...
tdtool.py + tellstick net + sensorer
tdtool.py med sensor funktioner finns, kolla engelska forum i kategorin general