Styr tellstick från flera datorer samtidigt

Moderator: Telldus

Post Reply
jonasl
Posts: 5
Joined: Thu Jan 18, 2018 11:08 am

Styr tellstick från flera datorer samtidigt

Post by jonasl » Thu Jan 18, 2018 11:08 am

Jag skaffade mig en tellstick för några dagar sedan och har skrivit lite mjukvara för att kunna kontrollera lamporna från flera datorer samtidigt.

Mjukvaran består av två delar, en serverdel skriven i C, som jag kör på min Linuxdator. Samt en klientdel, skriven i C#, som körs på min stationära Windows XP-dator och min Windows Vista-laptop. Tellstick-donglen sitter i Linuxdatorn.

Klienterna kommunicerar med servern över TCP via ett enkelt klartextprotokoll för att lista vilka lampor som finns tillgängliga samt slå av eller slå på dem.

Klientprogrammet fungerar på samma sätt som Telldus Systray-program, förutom att konfigurationen av lampor görs på servern.

På servern finns en enkel konfigurationsfil, enligt följande:

Code: Select all

[general]
password=mypass

[unit]
name=Vardagsrummet
oncmd=rfcmd /dev/tellstick NEXA G 1 1
offcmd=rfcmd /dev/tellstick NEXA G 1 0

[unit]
name=Sovrummet
oncmd=rfcmd /dev/tellstick NEXA A 2 1
offcmd=rfcmd /dev/tellstick NEXA A 2 0
När en klient ansluter till servern så skickar den först lösenord, och sedan begär den en lista av alla enheter.

Exempel

Code: Select all

CLIENT: tellstick/mypass
CLIENT: names
SERVER: name 1 Vardagsrummet
SERVER: name 2 Sovrummet
CLIENT: status
SERVER: status 1 on
SERVER: status 2 off
När en klient slår på en enhet sker följande:

Code: Select all

CLIENT: on 2
SERVER: status 2 on
När status ändras så skickas meddelandet ut till alla ansluta klienter, så att alla datorer är synkade vad gäller aktuell status på lamporna.

Skärmdump på systray-menyn:
Image

Skärmdump på inställningar:
Image

Om någon är intresserad av programmet så lägger jag gärna ut källkoden som GPL, och eventuellt installationspaket.

Jag planerar också att göra en Javaapplikation till min mobiltelefon för att ansluta till servern som mitt nästa projekt.

riksvag
Posts: 51
Joined: Thu Jan 18, 2018 11:08 am

Post by riksvag » Thu Jan 18, 2018 11:08 am

Enormt snyggt. Man kan inte få en serverdel som går att köra på windows?

jonasl
Posts: 5
Joined: Thu Jan 18, 2018 11:08 am

Post by jonasl » Thu Jan 18, 2018 11:08 am

Borde fungera att kompilera serverdelen för Windows, åtminstone om man använder cygwin, men det betyder att den skulle köra i ett konsollfönster vilket inte är det optimala för Windows. Helst vill man ha det som en Windows service i bakgrunden.

Serverdelen kräver dock att det finns ett kommandoradsverktyg för att slå av och på lamporna, typ rfcmd för Linux. Har inte sett om det finns något sådant för Windows.

Har själv inget behov av att köra serverdelen i Windows så jag har inte undersökt detta.

fredrik.gullberg
Site Admin
Posts: 285
Joined: Thu Jan 18, 2018 11:08 am
Location: Lund
Contact:

Post by fredrik.gullberg » Thu Jan 18, 2018 11:08 am

Riktigt snyggt program!

Det finns inget motsvarande rfcmd för windows.. Det finns dock tdtool, som använder dll:en och därmed även de fördefinierade enheterna i TelldusSetup.

http://www.telldus.se/wiki/index.php?title=Tdtool
Fredrik Gullberg
Telldus Technologies

bosundmark
Posts: 14
Joined: Thu Jan 18, 2018 11:08 am

Re: Styr tellstick från flera datorer samtidigt

Post by bosundmark » Thu Jan 18, 2018 11:08 am

Hej!

Jag är mycket intresserad av ditt lilla serverprogram. Just nu har jag bara ett jättesimpelt cgi-bin script som kan ta emot URL'er för att tända ock släcka men jag har inte satt upp någon login eller så då den sitter på mitt hemnät.

Jag har också funderat på en java app till mobilen men tiden räcker inte till... :-P

Jag har i alla fall skrivit en liten app i JavaFx som kopplar till webservern för att styra lamporna. Mycket enkelt att skriva snygga GUI men det finns inte på så många telefoner ännu tyvärr. http://www.javafx.com/ Fungerar utmärkt på PC med Win eller Linux dock.

-Bosse
jonasl wrote:Jag skaffade mig en tellstick för några dagar sedan och har skrivit lite mjukvara för att kunna kontrollera lamporna från flera datorer samtidigt.

Mjukvaran består av två delar, en serverdel skriven i C, som jag kör på min Linuxdator. Samt en klientdel, skriven i C#, som körs på min stationära Windows XP-dator och min Windows Vista-laptop. Tellstick-donglen sitter i Linuxdatorn.

Klienterna kommunicerar med servern över TCP via ett enkelt klartextprotokoll för att lista vilka lampor som finns tillgängliga samt slå av eller slå på dem.

Klientprogrammet fungerar på samma sätt som Telldus Systray-program, förutom att konfigurationen av lampor görs på servern.

På servern finns en enkel konfigurationsfil, enligt följande:

Code: Select all

[general]
password=mypass

[unit]
name=Vardagsrummet
oncmd=rfcmd /dev/tellstick NEXA G 1 1
offcmd=rfcmd /dev/tellstick NEXA G 1 0

[unit]
name=Sovrummet
oncmd=rfcmd /dev/tellstick NEXA A 2 1
offcmd=rfcmd /dev/tellstick NEXA A 2 0
När en klient ansluter till servern så skickar den först lösenord, och sedan begär den en lista av alla enheter.

Exempel

Code: Select all

CLIENT: tellstick/mypass
CLIENT: names
SERVER: name 1 Vardagsrummet
SERVER: name 2 Sovrummet
CLIENT: status
SERVER: status 1 on
SERVER: status 2 off
När en klient slår på en enhet sker följande:

Code: Select all

CLIENT: on 2
SERVER: status 2 on
När status ändras så skickas meddelandet ut till alla ansluta klienter, så att alla datorer är synkade vad gäller aktuell status på lamporna.

Skärmdump på systray-menyn:
Image

Skärmdump på inställningar:
Image

Om någon är intresserad av programmet så lägger jag gärna ut källkoden som GPL, och eventuellt installationspaket.

Jag planerar också att göra en Javaapplikation till min mobiltelefon för att ansluta till servern som mitt nästa projekt.
- "Research is what I'm doing when I don't know what I'm doing"

jonasl
Posts: 5
Joined: Thu Jan 18, 2018 11:08 am

Post by jonasl » Thu Jan 18, 2018 11:08 am

Hej

Ursäkta att jag inte svarat tidigare, jag har inte varit inne här på ett tag. Ska aktivera e-postnotifiering så att jag inte missar fler svar.

Jag har lagt upp källkoden till mitt serverprogram på launchpad, adressen är https://code.launchpad.net/homecontrol

Källkoden till Windows-klienten kan laddas från http://hem.passagen.se/sawak/HomeControl.zip

Mitt Java-program finns fortfarande bara i tanken. Väntar på att mitt mobilabonnemang skall gå ut så ska jag köpa mig en Android-mobil, det öppnar lite mer möjligheter. Helst vill jag ha en planlösning som visar vilka lampor som är aktiverade, samt ha möjlighet att slå av/på lampor genom att trycka i planlösningen.

filifjonkan
Posts: 9
Joined: Thu Jan 18, 2018 11:08 am

Post by filifjonkan » Thu Jan 18, 2018 11:08 am

Jojustdet!
Precis vad man behöver. Mina tankar är bara marginellt annorlunda. Tellsticken ska sitta i min omflashade router ASUS WL500gpv2 (redan ordnat, openwrt+x-wrt). Sen vill man ju optimalt ha all funktionalitet som finns i tex Nexahome, med olika inputs, soltider, scenarion (viktigt) etc. Dvs en Nexahome-server på en embedded-linux-burk och en klient som kan köras var som helst, webbläsare alltså.

När man surfar runt på utländska home automation siter inser man att det finns otroligt mycket där ute redan.

Så min fråga blir: Är det någon som sett en "Nexahome"-server för embedded linux samt en webklient för själva administrationen?

N3rox
Posts: 18
Joined: Thu Jan 18, 2018 11:08 am

Post by N3rox » Thu Jan 18, 2018 11:08 am

Hur går det? Blev det någon android telefon? Är själv påväg att köpa mig en men skulle vara roligt om det fanns någon sådan app så man kunde styra och se vilka lampor som är tända. Min tellstick sitter i en UMR så skulle det funka till den så hade det varit nice som fan.
jonasl wrote:Hej

Ursäkta att jag inte svarat tidigare, jag har inte varit inne här på ett tag. Ska aktivera e-postnotifiering så att jag inte missar fler svar.

Jag har lagt upp källkoden till mitt serverprogram på launchpad, adressen är https://code.launchpad.net/homecontrol

Källkoden till Windows-klienten kan laddas från http://hem.passagen.se/sawak/HomeControl.zip

Mitt Java-program finns fortfarande bara i tanken. Väntar på att mitt mobilabonnemang skall gå ut så ska jag köpa mig en Android-mobil, det öppnar lite mer möjligheter. Helst vill jag ha en planlösning som visar vilka lampor som är aktiverade, samt ha möjlighet att slå av/på lampor genom att trycka i planlösningen.

jonasl
Posts: 5
Joined: Thu Jan 18, 2018 11:08 am

Post by jonasl » Thu Jan 18, 2018 11:08 am

filifjonkan wrote:Jojustdet!
Precis vad man behöver. Mina tankar är bara marginellt annorlunda. Tellsticken ska sitta i min omflashade router ASUS WL500gpv2 (redan ordnat, openwrt+x-wrt). Sen vill man ju optimalt ha all funktionalitet som finns i tex Nexahome, med olika inputs, soltider, scenarion (viktigt) etc. Dvs en Nexahome-server på en embedded-linux-burk och en klient som kan köras var som helst, webbläsare alltså.

När man surfar runt på utländska home automation siter inser man att det finns otroligt mycket där ute redan.

Så min fråga blir: Är det någon som sett en "Nexahome"-server för embedded linux samt en webklient för själva administrationen?
Ja jag håller med, lite mer avancerade funktioner i slimmad C-kod för embedded Linux vore trevligt.

Det var en bra idé att lägga administration som ett webinterface. Sen får man ha några enkla klienter till Android, Windows och Linux för att slå av och på lampor. En inbyggd webserver i programmet vore kanske det bästa för embedded Linux, så slipper man PHP och liknande. Man får väl kör den på en annan port än 80 i värsta fall om routern redan har en webserver. I ditt fall kanske det bästa vore någon plugin till openwrt så man får in administrationen i samma webgränssnitt.

Jag har inte så många lampor att kontrollera hemma så jag har inte använt min tellstick så mycket, har inte titta på NexaHome eller motsvarande program. Ska nog installera det någon dag för att se hur det fungerar och vilka funktioner som finns. Kan dock inte lova att jag har tid och ork att implementera motsvarande i C-kod för Linux. :)

jonasl
Posts: 5
Joined: Thu Jan 18, 2018 11:08 am

Post by jonasl » Thu Jan 18, 2018 11:08 am

N3rox wrote:Hur går det? Blev det någon android telefon? Är själv påväg att köpa mig en men skulle vara roligt om det fanns någon sådan app så man kunde styra och se vilka lampor som är tända. Min tellstick sitter i en UMR så skulle det funka till den så hade det varit nice som fan.
Ingen Android-telefon ännu, har dock tittat lite på utvecklingsmiljön för Android och den verkar trevlig att jobba med.

Post Reply