Page 1 of 1

tdtool.py + tellstick net + sensorer

Posted: Fri Mar 17, 2023 9:45 am
by mwd123
Problemet löst.

Re: tdtool.py + tellstick net + sensorer

Posted: Fri Mar 17, 2023 9:45 am
by mwd123
eof

Re: tdtool.py + tellstick net + sensorer

Posted: Fri Mar 17, 2023 9:45 am
by Jerbe
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.
Vad får du ut om du bara skriver "tdtool.py -l"?

Re: tdtool.py + tellstick net + sensorer

Posted: Fri Mar 17, 2023 9:45 am
by kea
Lyckades du läsa ut temperaturen från dina sensorer med tdtool.py?

Re: tdtool.py + tellstick net + sensorer

Posted: Fri Mar 17, 2023 9:45 am
by mwd123
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.

Re: tdtool.py + tellstick net + sensorer

Posted: Fri Mar 17, 2023 9:45 am
by kea
Hej,

Jag öppnade en support ticket på tdtool.py och svaret var:
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.
Tydligen skall det gå att läsa ut temperaturen via api'n men att det inte är implementerat.

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

Posted: Fri Mar 17, 2023 9:45 am
by mwd123
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

Re: tdtool.py + tellstick net + sensorer

Posted: Fri Mar 17, 2023 9:45 am
by mwd123
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()));
}
}

Re: tdtool.py + tellstick net + sensorer

Posted: Fri Mar 17, 2023 9:45 am
by kea
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!

Re: tdtool.py + tellstick net + sensorer

Posted: Fri Mar 17, 2023 9:45 am
by kea
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... :D

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()));

?>
Så rundar jag av med ett shell script som kör härligheten via elinks, och läser ut xml datan i shell variabler.

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



Re: tdtool.py + tellstick net + sensorer

Posted: Fri Mar 17, 2023 9:45 am
by mwd123
Aha, smidigt, kunde du köra den filen från shell eller hur gör du det?

Mvh

Re: tdtool.py + tellstick net + sensorer

Posted: Fri Mar 17, 2023 9:45 am
by kea
Påtade in single.php på "min" linux webserver och kör sen elinks -dump...

tdtool.py + tellstick net + sensorer

Posted: Fri Mar 17, 2023 9:45 am
by esbemb
tdtool.py med sensor funktioner finns, kolla engelska forum i kategorin general