Tellstick & iPhone - Tellit, new webApp

Moderator: Telldus

Postby to2 » Sat Jan 23, 2010 10:42 pm

Hi again!

I was trying to install the new version of tellit, but I keep getting this warning:
Code: Select all
Warning:  mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /var/www/index.php on line 584

Line 584:
Code: Select all
while($lamp=mysql_fetch_assoc($td_lamps)){

I have checked the tellstick.conf file to see that there actiually is units there, and there is ...

Any ideas?

-to2
to2
 
Posts: 17
Joined: Fri Dec 25, 2009 7:57 pm

Postby skorpion » Sun Jan 24, 2010 11:34 am

Oops :P

I have added a new column in the table tellit_item
Run this in mysql:
alter table tellit_item add column tdtoolid int(4);

/Niclas
skorpion
 
Posts: 74
Joined: Wed Mar 04, 2009 10:47 pm

Postby thoberre » Sun Jan 24, 2010 1:48 pm

Great!

Here is a few bugreports
How does the output from tdtool look in Linux?
The listing function does not work for OS X, as the first line has no. of items in item 0, pos 19 of the returned array.

That makes the section for tdtool around 246 like this:
Code: Select all
//Only used if tdtool is your specified executable
//This code reads your tdtool-list and puts it in the DB so it could be handled by tellit
if (1==1){
//if(stristr($tellstickExecutableFullPath,'tdtool')){
    exec($tellstickExecutableFullPath." -l",$o,$r);
    $td["nums"]=substr($o[0],19);

    for($i=1;$i<=$td["nums"];$i++){

I'm also using this
Code: Select all
$tellstickExecutableFullPath="export DYLD_LIBRARY_PATH=\"\"; /usr/bin/tdtool";

and it does not look like tellit is able to determine
Code: Select all
if(stristr($tellstickExecutableFullPath,'tdtool'))
out of this?

This is never true for some reason, so no commands are sent to my units:
Code: Select all
    //Switch on and off
    //t_exec syntax: t_exec($t_device,$t_house,$t_number,$t_toggle,$t_debug)
    if(isset($_GET["id"]) && !isset($_GET["remitem"]) && !isset($_GET["edititem"])){

Also on my wishlist:
Could the dimmable units be presented something like this http://www.berreinvest.no/iui/3rd-party ... index.html (a skeleton demo - see lamp 3)
thoberre
 
Posts: 12
Joined: Wed Jan 20, 2010 7:41 pm

Postby to2 » Sun Jan 24, 2010 1:54 pm

thoberre: the dimmable screen with % from 0 - 100 looks nice!

Skorpion: any scheduler for tellit soon? :)
to2
 
Posts: 17
Joined: Fri Dec 25, 2009 7:57 pm

Postby skorpion » Sun Jan 24, 2010 2:42 pm

Thoberre: When developing tellit on this version I have developing only on OS X
tdtool output should be the same on OS X and linux
Have you added your user to the sudoers file?
If you create a file like this, what output do you get?
<?php
system("whoami");
?>
the result should be the username that should be in the sudoers file
also the user that you used when you added lamps in TelldusCenter should be in the sudoers file

to2: I will add your scheduler when most bugs are solved
skorpion
 
Posts: 74
Joined: Wed Mar 04, 2009 10:47 pm

Postby thoberre » Sun Jan 24, 2010 3:56 pm

I have rights to run tdtool (I currently run the previous version with some mods), and the output is like this from tdtool -l:
Code: Select all
xxxxxx01:~ username$ tdtool -l
Number of devices: 5
10   DESIGN   ON
11   HJORNELAMPEN   ON
12   LAMPETT   OFF
21   LOFT   ON
22     TEST ON


And debugging with this:
Code: Select all
//Only used if tdtool is your specified executable
//This code reads your tdtool-list and puts it in the DB so it could be handled by tellit
if (1==1){
//if(stristr($tellstickExecutableFullPath,'tdtool')){
    exec($tellstickExecutableFullPath." -l",$o,$r);
    $td["nums"]=substr($o[0],-1);
   print_r ($o);
    for($i=1;$i<=substr($o[0],-1;$i++){

//Only used if tdtool is your specified executable
//This code reads your tdtool-list and puts it in the DB so it could be handled by tellit
if(stristr($tellstickExecutableFullPath,'tdtool')){
    exec($tellstickExecutableFullPath." -l",$o,$r);
    $td["nums"]=substr($o[0],-1);
    for($i=1;$i<=(substr($o[0],-1));$i++){



produces this for the array and populates the database correct:
Code: Select all
Array
(
    [0] => Number of devices: 5
    [1] => 10   DESIGN   ON
    [2] => 11   HJORNELAMPEN   ON
    [3] => 12   LAMPETT   OFF
    [4] => 21   LOFT   ON
    [5] => 22   TEST   ON

)


Doesn't look like this is a rights issue - my webserver user does not need sudo rights to run tdtool.

Update: Edited, hiding my lack of knowledge. Was confused by N end of line 2 and start of line 1. So anyhow index 0 of the array must be used on my system for reading no. of items on first line.
Last edited by thoberre on Sun Jan 24, 2010 7:57 pm, edited 1 time in total.
thoberre
 
Posts: 12
Joined: Wed Jan 20, 2010 7:41 pm

Postby skorpion » Sun Jan 24, 2010 5:48 pm

Hi again
I saw that I had hardcoded one line that should contain a variable.
On line 239
exec("sudo -u niclas tdtool -l",$o,$r);
change to this
exec($cmd_prefix."tdtool -l",$o,$r);

Thoberre: Ok, so if tellit populates the db correctly, thats quite good.
Whatabout setting debugging on
line 47:
$debugMode=2;

then comment out line 57: (i think its line 57 for you too, but it could be different)
#if(!isset($_GET["debug"])){
and the matching }

then add
echo $t_exec." ".$toggle." ".$t_arg;
after (about line 69)
exec($t_exec." ".$toggle." ".$t_arg);

When you turn on/off lamps now, you will first see a JS-popup containing some info.
Some are blank and som contain info.
The last lines looks like this for me
Code: Select all
EXECUTED:
sudo -u niclas/usr/bin/tdtool --on 4 1

dont bother of the last number, in my case 1, its a bug that has nothing to do with the real executed code.
The a new page will be open
What does it say?
Mine says
sudo -u niclas /usr/bin/tdtool --off 4

And for the dimmer-function, it looks very nice, and I will try to add it as soon as most bugs are solved.

/Niclas
skorpion
 
Posts: 74
Joined: Wed Mar 04, 2009 10:47 pm

Postby thoberre » Sun Jan 24, 2010 7:24 pm

It looks like ($_GET["id"]) is empty at line 266
Code: Select all
    if(isset($_GET["id"]) && !isset($_GET["remitem"]) && !isset($_GET["edititem"]))


print_f ($_GET); gives an empty array output.

Also debug=2 does not bring up any javastuff at all.
thoberre
 
Posts: 12
Joined: Wed Jan 20, 2010 7:41 pm

Postby skorpion » Mon Jan 25, 2010 5:32 am

thoberre wrote:It looks like ($_GET["id"]) is empty at line 266
Code: Select all
    if(isset($_GET["id"]) && !isset($_GET["remitem"]) && !isset($_GET["edititem"]))


print_f ($_GET); gives an empty array output.

Also debug=2 does not bring up any javastuff at all.


The variable $_GET["id"] is only set when you have pushed one button (on/off)
In the code, there is 2 places that launches this.
1 for dim and rfcmd
Code: Select all
                $t="doTheThing('?id=".$lamp['id']."&dim=".strstr($lamp['name'],"DIM")."');debug('Toggle','".$lamp['id']."','".$lamp['room']."','".$lamp['name']."','".$lamp['device']."','".$lamp['house']."','".$lamp['number']."','".$lamp['dimmer']."','".$cmd_prefix.$tellstickExecutableFullPath." ".$lamp['device']." ".$lamp['house']." ".$lamp['number']."')";

1 for on/off tdtool
Code: Select all
            $t="doTheThing('?id=".$lamp['id']."&dim=".strstr($lamp['name'],"DIM")."');debug('Toggle','".$lamp['id']."','','".$lamp['name']."','','','','','".$cmd_prefix.$tellstickExecutableFullPath." ".$status." ".$lamp["tdtoolid"]."')";


So I cant see why $_GET["id"] should be unset for you. The only thing I can come up with is that you either have JS off in your browser or you dont have the files "myFunc.js" and "httpAjax.js" in the correct directory.

Thanks for the bugreports everyone!!!

Kind Regards
Niclas
skorpion
 
Posts: 74
Joined: Wed Mar 04, 2009 10:47 pm

Postby thoberre » Mon Jan 25, 2010 11:58 am

It was actually all related to
Code: Select all
$tellstickExecutableFullPath="export DYLD_LIBRARY_PATH=\"\"; /usr/bin/tdtool";


Changed this to single quotes and it worked, triggering javafunctions again.

Code: Select all
$tellstickExecutableFullPath="export DYLD_LIBRARY_PATH=\'\'; /usr/bin/tdtool";


Still the number of devices is read from index 0 in the array (first line of tdtool -l output), so that had to be changed for me.

//Thom
thoberre
 
Posts: 12
Joined: Wed Jan 20, 2010 7:41 pm

Postby thoberre » Mon Jan 25, 2010 9:25 pm

A small additional wish:

I would like to add back the edit-function even when using tdtool, and view the panel grouped by room like with rfcmd.

The first to allow for the second :)

Thom
thoberre
 
Posts: 12
Joined: Wed Jan 20, 2010 7:41 pm

Postby skorpion » Wed Jan 27, 2010 10:25 am

Thoberre: I understand that you want those features back
The problem is that I need to find a easy way to edit/write tdtool's config. In OS X & Linux, this is a file & on Windows it's in the registry.
Best way would be if tdtool itself supported this.
>tdtool --del 3
or
>tdtool --add nexa a 1 --id 8

That would be easiest for me to fix.
Maybe someone of you know a better way if doing it?

/Niclas
skorpion
 
Posts: 74
Joined: Wed Mar 04, 2009 10:47 pm

Postby thoberre » Wed Jan 27, 2010 11:09 am

Hi,

I interpret it as Telldus wants us to use TelldusCenter to add/remove devices. Ref http://developer.telldus.se/browser/trunk/docs/telldus-core.dox.

However we could have the editfunction to edit "configextentions" like Room, Dimcapabilities, maybe a nicer name etc.

It looks like the php-binding would be the correct way in the future since this can return the methods (also dimming).

As a sidenote it would be nice if telldus_core would allow for adding/removing devices, and would be achievable by also exposing a method to list supported devicetypes.
thoberre
 
Posts: 12
Joined: Wed Jan 20, 2010 7:41 pm

How to get lamp in the db.

Postby Ole » Wed Jan 27, 2010 6:31 pm

Hi

How to add lamp to the db, in my installation i don´t get a menu item to "add lamp"

OSX 10.6.2 and MAMP

Cheers!
Ole
 
Posts: 9
Joined: Tue Jan 26, 2010 1:27 pm

Re: How to get lamp in the db.

Postby skorpion » Wed Jan 27, 2010 10:02 pm

NEW VERSION OUT!

Things I fixed:
FIXED Problem reading "tdtool --list" on different platforms
FIXED TDTOOL-compability in Debug-mode
FIXED All necessary mySQL-rows weren't defined

Download:
http://skorpion.se/tellit/zip/tellit_0.1.5.zip

Ole wrote:Hi

How to add lamp to the db, in my installation i don´t get a menu item to "add lamp"

OSX 10.6.2 and MAMP

Cheers!

If you are using TDTOOL as your executable you cant add lamps.

If you are using RFCMD, then you should be able to add lamps in "tool-icon" and on one line you should see "Add Lamp" or similar.

/niclas
skorpion
 
Posts: 74
Joined: Wed Mar 04, 2009 10:47 pm

PreviousNext

Return to Mac OS X

Who is online

Users browsing this forum: No registered users and 1 guest