tdtool.py + tellstick net + sensorer
Posted: Fri Mar 17, 2023 9:45 am
Problemet löst.
A little text to describe your forum
https://forum.telldus.com/
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.
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.
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