Help us develop local access using TellStick Net, build your own firmware

We are developing the support for accessing the TellStick Net from you local network. We do not believe in predatory vendor lock-in. We are not happy with the situation that you are required to use our Telldus Live! service with your TellStick Net, even if the service rocks :).

We belive you should have the ability to use whatever thirdparty service you like, or even develop your own!

The reason for the requirement of Telldus Live! is due to the limited time we had before the launch. We simply prioritized the cloud service before the local access since we believe this is the main advantage TellStick Net has over TellStick Duo.

We have now reached a point where we really need your help and input on this. We have therefore released a custom firmware, prepared for local access only, which you can build and hack on your own.

The firmware includes all the protocols supported by TellStick Net version 3 and TellStick Duo version 5. To communicate with the device, read the [doxygen:TellStickNet.html protocol documentation].

The code is hosted in a git repository available on our server. You need to checkout the t114 branch using:
$ git clone -b t114 http://git.telldus.com/tellstick-net.git

There is also a sample client software available in the 'client' folder. It is written in python and shows both the autodiscovery feature as well as sending a simple command.

The firmware is released under GPL.

Comments

1. Linus Engback -- 12 years ago

Ok, so I read through, downloaded the source and from what I can tell it does not look bad.

So the example client is built in Python, also my choise of language for these things. It sends away a message encoded as a series of ons and offs I take it? Anyone has an idea on how where to find and implementation of something which can be used to generate these series?

The code in the rf directory seems to be concerned with receiving messages. Anyone knows how you're supposed to read these messages? I havn't found a command to poll for updates, and as the connection is UDP it can not be pushed back.

This will be great eventually!

2. Micke Prag -- 12 years ago

It sends away a message encoded as a series of ons and offs I take it? Anyone has an idea on how where to find and implementation of something which can be used to generate these series?

Correct. The protocol used is described here http://developer.telldus.com/doxygen/html/TellStickNet.html and here http://developer.telldus.com/doxygen/TellStick.html

For encoding example, please see the code for telldus-core. The protocol is implemented in the Protocol*.cpp files. For instance, Arc Tech codeswitch used in the example client can be found in ProtocolNexa.cpp

It is recommended though to help us implement support for TellStick Net through the telldus-core software. This way you will gain all of the protocols implemented and also all the available third party applications.

The code in the rf directory seems to be concerned with receiving messages. Anyone knows how you're supposed to read these messages?

This is not implemented at all yet.

3. Toël Hartmann -- 12 years ago

The README file says the Hi-Tech C Pro compiler is required. Will the lite version work for compiling the code instead? Where are the old release (9.66) hidden on http://www.microchip.com?

4. Rasmus Eneman -- 12 years ago

@toël Use the FTP at: ftp.microchip.com Username: Compilers-RO Password: C0mP!0511

I rely need receiving support. Will try to add it myself but as I don't have any Tellsick yet (still waiting...) I can't test. If anyone else developed this functionality I would be very grateful.

5. Tomas Chmelar -- 12 years ago

I'm trying to build this custom firmware, but the final TellStickNet.hex seems not to be working.

Official firmware has about 212K, but my output has only 77K. I tried it on Debian 6, using HCPIC18-pro-9.63PL3-linux.run compiler (demo), make finishes without error, but after upload to tellstick, it doesn't communicate with telldus live website. When I launch TellStickNetFlasher-fw4.exe to upload official firmware, it shows, that current version is 0.

If I replace hex file with official firmware after build, it uploads successfully, so the problem has to be in a hex file, not in an upload.

I want to implement sending received commands from tellstick NET to my application using TCP channel and since I'm unable to compile working firmware without any custom changes, it makes me very sad.

Is there any way to debug tellstick NET to see, what's wrong? Is there any emulator for windows/linux to check the firmware before upload?

6. Rasmus Eneman -- 12 years ago

@tomas this firmware is for local access, you won't be able to find it on the web service. If you want to use it you will have to try to find it over broadcast as specified in http://developer.telldus.com/doxygen/html/TellStickNet.html

Message receiving and decoding seems to be implanted. The only thing missing is to construct a dhp message and send it. You would also have to save where received messages should be sent (to which ip/port) if they not shall be broadcasted.

Still waiting for my net but I'm optimistic that it shouldn't be too hard to add receiving functionality.

7. Tomas Chmelar -- 12 years ago

@rasmus Thanks a lot. I missed, that it will lost connectivity to telldus live.

I tried to compile it with some of my basic POC changes and it works!! Thanks again. Now I'm able to connect to TellStickNET through TCP (tested by putty) and !receive! and send messages. That's awesome.

8. Rasmus Eneman -- 12 years ago

@tomas did you add TCP and receive support? If so that's awesome! Would you like to share you changes? :)

9. Micke Prag -- 12 years ago

Just wondering one thing. Why do you want TCP support? UDP is so much easier to implement (on all platforms) and it will not limit the number of applications using the device simultaneously.

10. Rasmus Eneman -- 12 years ago

TCP is more reliable and isn't necessary that much harder to implement. And I don't plan to use the tellstick from multiple sources (I will use it from my server wich will handle everything). And as the 443MHz communication isn't especially reliable it's nice to know that the message at least came that far.

11. Tomas Chmelar -- 12 years ago

@rasmus OK, it's only POC for now, but you can try it:

  • it accepts only 1 connection
  • listens on port 666
  • DHCP is turn off due to some infinite loop(you have to find default IP by broadcast)
  • it's not bulletproof, it remembers only 1 last received signal for sending to client
  • it transfers received signal to connected client in some basic format (taken from current log)
  • transfering signal to tellstick is in the same format as on UDP socket

You can test it by some tellnet client

http://uloz.to/xMFo1Qs/tell-diff

12. Rasmus Eneman -- 12 years ago

@thomas nice! will try it later :)

Currently I'm trying to build the "official" (got my tellsticks today, wohoo!) I'm using Ubuntu 12.04 and PICC18 9.66 in lite mode while compiling I get this error:

/usr/hitech/picc-18/pro/9.66/include/legacy/ppic18f67j60.h:28: error[985]: qualifiers redeclared
/usr/hitech/picc-18/pro/9.66/include/legacy/ppic18f67j60.h:28: error[1098]: conflicting declarations for variable "GODONE" (/usr/hitech/picc-18/pro/9.66/include/pic18f67j60.h:2596)
make[2]: *** [rf.p1] Error 1
make[1]: *** [CMakeFiles/TellStickNet.dir/all] Error 2
make: *** [all] Error 2

Does anyone know what this error depends on and/or how to fix it?

13. Rasmus Eneman -- 12 years ago

I downloaded 9.63PL3 and it gets further before it crashes at

/home/rasmus/Development/tellstick/tellstick-net/tcpip/ETH97J60.c: 338: (765) degenerate unsigned comparison (warning)
plib/i2c/i2c1eeap.c: 24: (766) degenerate signed comparison (warning)
plib/i2c/i2c1eeap.c: 36: (766) degenerate signed comparison (warning)
/home/rasmus/Development/tellstick/tellstick-net/tcpip/TCP.c: 2009: (1257) local variable "_buffer" is used but never given a value (warning)
/home/rasmus/Development/tellstick/tellstick-net/firmware/tellsticknet.c: 54: (712) can't generate code for this expression
(908) exit status = 1
make[2]: *** [TellStickNet.hex] Error 1
make[1]: *** [CMakeFiles/TellStickNet.dir/all] Error 2
make: *** [all] Error 2

It feels like I'm doing something wrong

14. Rasmus Eneman -- 12 years ago

I managed to compile it by re-installing the compiler and re-download the source.

As DHCP didn't work in @tomas mod I tried to make it broadcast when a message were received instead using code from thomas and from debug.c. I also disabled the LED (put every call to pwm.c in #IFDEF as debug works.

But I messed up bad, apparently. Now the Tellstick responds TellStickNet:ACCAXXXXXXXX::X on discover (MAC address works, it's just obfuscated but there is no activation code). But what is a real pain in the ass is that it can't upload new firmwares to the Tellstick (I also tried TellsticNetFlasher in wine which failed). The Tellstick works as in it still can receive UDP messages and send 443MHz messages.

Is there way to flash firmware without using the network?

15. Rasmus Eneman -- 12 years ago

I think I probably know what happened. I probably allocated (statically) to much RAM so now it runs out of memory when I upload a new firmware. What is the smallest possible firmware that I can try to upload? Or should I flash the device manually using a PIC flasher? I have ordered a Pic Kit 3 but it won't land until middle September :(.

Still don't know why activation code fail though...

@tomas out of RAM may be your problem to when getting bootloop by DHCP.

16. Rasmus Eneman -- 12 years ago

Sorry for multiposting, if you want just remove the above posts as no one will have use for them.

I were able to flash it through the recovery way in windows. (Tried it in Linux but it didn't work, is this why the Linux guide were missing?)

I now have disabled LED (configurable via a compile flag) and enabled broadcast of received messages.

I also have a Java program that does all communication with the Tellsticks and can encode Nexa switch case & selflearning messages.

Of course you can get the sourcecode if interested. Catch me at pie.or.paj@…

Thanks to Telldus for a awesome product and the open source firmware. Thanks to Tomas for sharing his firmware from where I took some code.

17. Richard TROUVE -- 12 years ago

@thomas, I've just have prepared my own configuration, and firmware X is running. I'm interrested by your code, could you share your source code ? Thanks in advance

18. Micke Prag -- 11 years ago

The firmware is now also available on GitHub to make it easier to fork and share code. https://github.com/telldus/tellstick-net

19. Ole Morten Rønning -- 11 years ago

I get the same error as in 13. when making the t114 branch with 9.63PL3. Main branch is OK.

Neither 9.80 nor 9.66 works on main branch. Readme for t114 branch contains wrong git command. Will check out main ...

So, which compiler version will compile the t114 branch?

20. Mads Bergdal -- 11 years ago

@rasmus, how can I get a look at your code. Can't see your full e-mail address here.

@ole morten, did you solve your comile problem? I get the same error with the same compiler.

21. Sigbjørn Tvedt -- 10 years ago

Now that this code has been merged with the master branch, I am wondering if it possible for you to release a compiled version of the firmware containing this code.?

22. Richard Huber -- 9 years ago

How up to date is this article? It seems like if Microship is recommending another c-compiler.

http://www.microchip.com/DevelopmentTools/ProductDetails.aspx?PartNO=SW500007

branch t114 doesn't exist any more either, does it?

/Richard

23. Hali Batsuiba -- 8 years ago

Howdy

I wonder what is the current status of this project?

br -M-