Använda tdtool utan att ha fördef. enheter

Moderator: Telldus

dali
Posts: 24
Joined: Fri Mar 17, 2023 9:45 am

Använda tdtool utan att ha fördef. enheter

Post by dali »

Om detta ha besvarats innan så ber jag om ursäkt, jag har inte koll på vad som hänt i Tellstickvärlden det senaste året.

Finns det (eller kommer det inom en snar framtid) möjlighet att specifiera enhet och protokoll via commandline när man kör tdtool? Detta gick väl i gamla rfcmd?

Det jag vill göra är alltså nåt i stil med

Code: Select all

tdtool ARC A1 on
tdtool AC B2 dim 50
Likaså när DUO släpps, kommer det att gå att ta emot data med protokoll och id specifierade?

Anledningen till att jag frågar är att jag vill kunna använda tellsticken från en extern programvara utan att behöva ha enheterna konfade i både tellstick.conf och min egen programvara.
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Använda tdtool utan att ha fördef. enheter

Post by micke.prag »

dali wrote:Anledningen till att jag frågar är att jag vill kunna använda tellsticken från en extern programvara utan att behöva ha enheterna konfade i både tellstick.conf och min egen programvara.
Du ska inte ha enheterna konfigurerade i din programvara utan endast spara enheternas id. Under uppstart kan du synca din lista med tdGetNumberOfDevices(), tdGetName() och dom andra funktionerna exporterade från telldus-core.

Anledningen att enheterna ska vara förkonfigurerade (från dokumentationen):
All of the devices used by TellStick must be predefined before they can be used in any software. Under all platforms this can be done with the software TelldusCenter but under Linux this can also be done by editing the file /etc/tellstick.conf with your favorite text editor.

Having the devices preconfigured is an advantage to both the developer and the end user.
  • The end user might use more then one program for controlling his/her TellStick. By having the devices preconfigured he/she does not have to reconfigure the same devices twice. If some settings change in one of the devices, this change will affect all softwares using Telldus TellStick SDK.
  • Telldus continuously adds support for new devices. If a software defines it's own devices, the developer will have to keep the software up to date with new devices and settings implemented by Telldus. By querying Telldus Tellstick SDK all the new devices will be available automaticly to the end user.
Micke Prag
Software
Telldus Technologies
dali
Posts: 24
Joined: Fri Mar 17, 2023 9:45 am

Re: Använda tdtool utan att ha fördef. enheter

Post by dali »

micke.prag wrote:
dali wrote:Anledningen till att jag frågar är att jag vill kunna använda tellsticken från en extern programvara utan att behöva ha enheterna konfade i både tellstick.conf och min egen programvara.
Du ska inte ha enheterna konfigurerade i din programvara utan endast spara enheternas id. Under uppstart kan du synca din lista med tdGetNumberOfDevices(), tdGetName() och dom andra funktionerna exporterade från telldus-core.
Ska o ska... Det var ju inte riktigt svar på frågan, men jag antar att svaret är nej.

Om det ska vara möjligt att använda Tellstick till etablerade automatiseringssystem som Misterhouse, Homeseer, DomotiGa, m.fl. så håller det inte att kräva att enheterna ska vara definierade i tellstick.conf, eftersom de alla följer standarden att det är automatiseringsprogramvaran som hanterar enheterna.

Vore det inte en fördel för Telldus om dessa system supportade Tellstick?

Finns det något speciellt argument för att inte låta tdtool fungera som jag föreslår? Det ena alternativet behöver ju inte utesluta det andra...
micke.prag wrote:Anledningen att enheterna ska vara förkonfigurerade (från dokumentationen):
All of the devices used by TellStick must be predefined before they can be used in any software. Under all platforms this can be done with the software TelldusCenter but under Linux this can also be done by editing the file /etc/tellstick.conf with your favorite text editor.

Having the devices preconfigured is an advantage to both the developer and the end user.
  • The end user might use more then one program for controlling his/her TellStick. By having the devices preconfigured he/she does not have to reconfigure the same devices twice. If some settings change in one of the devices, this change will affect all softwares using Telldus TellStick SDK.
  • Telldus continuously adds support for new devices. If a software defines it's own devices, the developer will have to keep the software up to date with new devices and settings implemented by Telldus. By querying Telldus Tellstick SDK all the new devices will be available automaticly to the end user.
I mitt exempel ovan så skulle det ju krävas att man bara använder definierade protokoll, jag ser inte problemet...


Alternativet är väl att använda raw-kommandon, men då kan vi verkligen snacka om dubbelimplementering.


EDIT: I den här posten skriver du att det är nåt som kommer i framtida version och hänvisar till denna ticket.

Jag skriver inte detta för att gnälla, tvärtom vill jag hjälpa till att sprida användandet av Tellstick, bara detta går att lösa.
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Använda tdtool utan att ha fördef. enheter

Post by micke.prag »

Att bara implementera ett viss antal fördefinierade protokoll gör ju att programvaran blir oanvändbar för alla som använder något annat protokoll.
Många, dock inte alla, kommer redan ha sina enheter definierade när dom laddar ner ditt program. Att behöva konfigurera om enheterna är ju inte speciellt användarvänligt.
Om det ska vara möjligt att använda Tellstick till etablerade automatiseringssystem som Misterhouse, Homeseer, DomotiGa, m.fl. så håller det inte att kräva att enheterna ska vara definierade i tellstick.conf, eftersom de alla följer standarden att det är automatiseringsprogramvaran som hanterar enheterna.
Att enheterna finns lagrade i systemen är inget problem. Det är detaljerna som blir problem.
Oavsett vilket måste ju in ett stöd för telldus-core någonstans in i dessa system, ellerhur?
Enheterna måste i dessa system konfigureras att använda TellStick som "transportör" och inte X10, RFXCOM eller annat system. Vad hindrar då att de konfigureras som:
protokoll=telldus
id=telldus-id (det akutella id på enheten)
Wrappern kommer då översätta detta till motsvarande anrop till telldus-core.
Micke Prag
Software
Telldus Technologies
dali
Posts: 24
Joined: Fri Mar 17, 2023 9:45 am

Re: Använda tdtool utan att ha fördef. enheter

Post by dali »

Det blev visst lite fel, det handlar inte om en programvara jag utvecklat själv, utan att implementera stöd för Tellstick i etablerade program.

Om vi tar DomotiGa som exempel så är devicen konfigurerade att använda t.ex. AC, ARC, X10 som protokoll, och RfxCOM, HEYU, m.fl (t.ex Tellstick) som interface. Så funkar det, det är bara att acceptera.

Jag kan ju inte tvinga er att implementera stöd för detta, men det är ju synd om ni inte vill.

Frågan kvarstår, varför skulle ni inte kunna ge stöd för detta?
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Använda tdtool utan att ha fördef. enheter

Post by micke.prag »

Det handlar inte om att vi inte vill implementera det. Att vi inte gör det har två orsaker:
  • Maintanance - Att underhålla ytterligare ett verktyg tar extra tid. Ser man hur mycket som finns på vår TODO så blir detta prioriterat långt ner...
  • Det blir för många en "lättare utväg" i implementationen som på sikt försämrar användarupplevelsen. Vi tror starkt på att det api vi exporterar idag räcker för det man vill göra. Ibland med mer eller mindre kreativa lösningar.
Vi har redan sett detta hända. Innan telldus-core portades till Linux fanns bara rfcmd. I takt med att utvecklare som stod bakom många bra tredjepartsprojekt tröttnade, försvann möjligheten att använda systemet mot nyare typer av mottagare. Detta även om protokollet implementerades i rfcmd.
Det var då vi tog beslutet att själva inte längre underhålla rfcmd utan lägga krutet på något som är "framåt-kompatibelt". Detta är också varför parametrarna till tdMethods() ser ut som dom gör; för att vi ska kunna säkerhetställa att ett projekt kan fungera även efter det inte längre underhålls.

Som referens kan vi titta på hur SwitchKing gör. Utvecklarna bakom det projektet har, enligt min mening, hittat en kreativ och fungerande lösning.
I SwitchKing kan du redigera enheterna utan att behöva köra TelldusCenter. Konfigurerar man en enhet som dom inte lagt in kommer det upp en text som förklarar för användaren att just den typen av mottagare måste konfigureras genom TelldusCenter.
Detta gör att de flesta användarna kan använda SwitchKing fullt ut utan att behöva gå in i TelldusCenter. Skulle SwitchKing sluta utveckla sitt projekt eller vi komma ut med en ny version kommer användarna inte missa någon funktion.

Finns det några frågor hur man ska lösa en implementation för en viss programvara så försöker vi hjälpa till så mycket vi kan. Vi hjälper gärna till att klura ut hur man kan använda apit på olika sätt.

Jag hoppas du har förståelse för hur vi tänker.
Micke Prag
Software
Telldus Technologies
dali
Posts: 24
Joined: Fri Mar 17, 2023 9:45 am

Re: Använda tdtool utan att ha fördef. enheter

Post by dali »

Jag har förståelse för hur ni tänker, men jag håller inte riktigt med.

På vilket sätt blir det mer jobb för er om det skulle finnas en metod i stil med tdSendCommand(protocol, address, cmd) i telldus-core? Jag kan omöjligt se att det skulle medföra mer jobb än att inte ha det. Telldus-core har ju då fortfarande kontrollen över vad som går att göra och inte går att göra. I mina ögon skulle det vara en snygg lösning.

Det finns ju en vedertagen standard bland domotics-program att definiera enheter tillsammans med protokoll och adress på en hög nivå.
Att tvinga användare att hantera enheterna i tellstick.conf när de i övrigt kanske använder ett helt webbaserat gui känns tråkigt och inte direkt lockande.

Som jag ser det finns det två alternativ ifall inte ovanstående lösning går att få till, och det är
  • att som jag testat innan lägga till enheten i tellstick.conf med hjälp av tdAddDevice, köra kommandot, och sedan ta bort device med tdRemoveDevice. Det blir en ful ösning, men gör det smidigt att hantera alla protokoll.
  • att använda tdSendRawCommand och implementera stöd för protokollen i den programvara som ska användas. Inte heller det är nån snygg lösning, men den är nästan att föredra.
Jag kör idag med Rfxcom, men skule med glädje övergå till att köra Tellstick DUO om bara implementationen i DomotiGa går att lösa snyggt. Går det bara att komma fram till hur det ska lösas så kommer jag att fixa stödet i DomotiGa.
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Använda tdtool utan att ha fördef. enheter

Post by micke.prag »

tdSendCommand(protocol, address, cmd) kan absolut funka, och något vi får fundera på hur vi löser bäst. Tyvärr kommer det inte bli möjligt till 2.0 serien utan tidigast 2.1.

Däremot tycker jag inte man ska lämna ute alla dom som redan har enheter förkonfigurerade. Tittade genom koden som hastigast, skapar man en FSettings* dialog för varje typ av nya mottagare man ska stödja?
Där hade det isåfall varit lämpligt att användaren antingen kan välja en av sina redan befintliga enheter ur en lista eller mata in en manuell som i sin tur använder tdSendCommand().
På så sätt gör man alla användare nöjda. Både dom som vill ha sin konfiguration på ett ställe alternativt göra det enkelt för sig och konfigurera med TelldusCenter, men även dom som inte vill hålla på med flera olika system och kan tänka sig att mata in parametrar manuellt.

Hur låter det?
Micke Prag
Software
Telldus Technologies
dali
Posts: 24
Joined: Fri Mar 17, 2023 9:45 am

Re: Använda tdtool utan att ha fördef. enheter

Post by dali »

Nja, inte riktigt.
Man (oftast en utvecklare) definierar en devicetyp och anger vilket protikoll den stödjer.
Som användare skapar man sedan sitt device och anger vilket interface (av de som stödjer aktuellt protokoll) som ska styra devicet. Man skulle kunna skapa två interface, ett som använder device från tellstick.conf och ett som använder device ifrån DomotiGa's databas.

Den utveckling som behöver göras för att stödja Tellstick som interface är inte jättestor. Som workaround tills tdSendCommand finns tillgänglig skulle jag kunna skriva en wrapperfunktion som kör raw-kommandon.
Hur ser er roadmap ut? Finns det nåt ungefärligt datum när 2.1 ska släppas?

Hur kommer output från mottagaren i DUO'n att fungera? Kommer det att gå att få ut raw-format där? Blir det nån typ av socket att lyssna på?

Det är många frågor som måste få svar känner jag, men jag skulle absolut vilja testa Tellstick'en nu igen när ni dels fått ordning på räckvidden och dels så lär en DUO bli betydligt billigare än att köpa både sändare och mottagare från Rfxcom.
dali
Posts: 24
Joined: Fri Mar 17, 2023 9:45 am

Re: Använda tdtool utan att ha fördef. enheter

Post by dali »

Jag svarar på en av mina egna frågor.
Efter att ha skummat igenom koden för telldus-core så tolkar jag det som att man kan använda tdRegisterRawDeviceEvent för att registrera en callback-funktion som tar hand om allt som DUO'n får in.
Stämmer det Micke?

Jag blev riktigt sugen på att sätta igång med kodningen direkt. Har ni helt slut på testversionerna av DUO'n?
dali
Posts: 24
Joined: Fri Mar 17, 2023 9:45 am

Re: Använda tdtool utan att ha fördef. enheter

Post by dali »

Inga kommentarer/svar, Micke?
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Använda tdtool utan att ha fördef. enheter

Post by micke.prag »

RawEvents skickas vid alla events, ja. Dock finns det ingen hantering innan dessa skickas ut. Med andra ord kan datan skilja sig mellan olika produkter och mjukvaruversioner!

Tyvärr har vi inga fler Duo att skicka ut.
Micke Prag
Software
Telldus Technologies
dali
Posts: 24
Joined: Fri Mar 17, 2023 9:45 am

Re: Använda tdtool utan att ha fördef. enheter

Post by dali »

Vad menar du med att det inte sker någon hantering? Jag antar att eventet spottar ur sig samma typ av sträng som man skickar när man sänder raw?
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Re: Använda tdtool utan att ha fördef. enheter

Post by micke.prag »

dali wrote:Vad menar du med att det inte sker någon hantering?
Det är datan som kommer direkt från TellStick Duo. Ändrar vi något i protokollet som används kommer också denna sträng att ändras.
dali wrote:Jag antar att eventet spottar ur sig samma typ av sträng som man skickar när man sänder raw?
Nej
Micke Prag
Software
Telldus Technologies
dali
Posts: 24
Joined: Fri Mar 17, 2023 9:45 am

Re: Använda tdtool utan att ha fördef. enheter

Post by dali »

Kan du ge ett uförligare svar? Det där var aningen för kortfattat för att ge något.
Post Reply