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 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.

Comments

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.

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?

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?

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.

@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.

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.

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.

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.