Page 1 of 1

Vart lagras enhetskonf i Windows?

Posted: Fri Mar 17, 2023 9:45 am
by phromo
Vart lagras motsvarigheten till telldus.conf (linux) i Windows? (som tdtool och Telldus Center använder)

/ Martin

Re: Vart lagras enhetskonf i Windows?

Posted: Fri Mar 17, 2023 9:45 am
by z3eed
phromo wrote:Vart lagras motsvarigheten till telldus.conf (linux) i Windows? (som tdtool och Telldus Center använder)

/ Martin
Registret:

HKEY_CURRENT_USER\SOFTWARE\Telldus


Går att få det att lägga sig i LOCAL_MACHINE om man vill ha en webserver som styr.
Kolla sidan 3 (min post) i forumet "Webserver IIS för Tellstick"

Hur lagras informationen om enheterna i Registret ?

Posted: Fri Mar 17, 2023 9:45 am
by tcmsklas
Hej

Det är ju allt gott och väl att man kan hitta sker och ting i Registryt, men hur är det kodat?

Jag behöver kunna läsa ut koden för enheten inte bara namn & typ.

Jag jobbar på att integrera Sqeezebox plug-in PowerCenter med Telldus-core.
Det som fattas mig är att skriva en ersättare för "bottlerocket" som anropar Telldus-core i stället. PowerCenter anropar br med bla enhetskod som parameter - men Telldus-core vill ha enhetsindex... Jag har inte hittat något sätt att få ut enhetskoden ur registryt.

Alternativet är att ändra i PowerCenters Perl-script. Ingen höjdare för mig

tcmsklas

Posted: Fri Mar 17, 2023 9:45 am
by riksvag
Det vore kul om du fick till en sådan plugin. Skulle vara praktiskt att kunna styra ström till omkrinenheter med hjälp av boom-en

Så här är det kodat, om jag fattar det rätt:

Under HKEY_CURRENT_USER\SOFTWARE\Telldus\Devices\[Devicenummer]\

finns ett antal nycklar.

En nyckel heter "0" och innehåller enhetskod minus ett. Om enheten alltså har enhetskod "6" så finns det en femma i nyckel "0".

En nyckel heter "1" och innehåller huskod. Huskod "A" visas i nycklen som "0" och så vidare.

Fler funktioner i Telldus-core

Posted: Fri Mar 17, 2023 9:45 am
by tcmsklas
Hej,

Under tiden har jag kommit till samma resultat som riksvag. Det allra snyggaste vore ju förstås om telldus-core kunde utökas med "tdGetDeviceCode(str tdDeviceName)" och "tdGetDeviceId(str tdDeviceName) så är man helt oberoende av registryt (och därmed OS - man måste ju tänka på våra Linuxhackande kamrater också ! :-) ).

/Klas

Posted: Fri Mar 17, 2023 9:45 am
by tcmsklas
Vet inte om det har något med saken att göra att jag har min Tellstick installerad på en box som kör WHS - mina tdDevices ligger under HKEY_CURRENT_MACHINE\Software\Telldus. Under HKEY_CURRENT_USER ligger bara "Example Device". Eftersom jag är en VB hackare måste jag också hitta på ett sätt att kopiera från HKEY_LOCAL_MACHINE till HKEY_CURRENT_USER\Software\VB and VBA Program Settings\.....

Klas

Posted: Fri Mar 17, 2023 9:45 am
by tcmsklas
Jag har lyckats göra en "br" ersättare i VB6 - inte idealiskt men funkar. Jag kan dela med mig till intresserade, om någon talar om hur man lägger in en bilaga i en posting

Klas

Posted: Fri Mar 17, 2023 9:45 am
by micke.prag
Jag hänger inte riktigt med i era banor här. Känns inte som ni använder APIt helt rätt. Ni behöver inte ansluta till registret för att få ut informationen. Allting går att få ut från telldus-core.
PowerCenter anropar br med bla enhetskod som parameter - men Telldus-core vill ha enhetsindex... Jag har inte hittat något sätt att få ut enhetskoden ur registryt.
telldus-core ska inte ha ett enhetsindex utan alltid ett id. Det finns bara en funktion som använder index och den får bara kallas på i en loop. Det är tdGetDeviceId()
Det allra snyggaste vore ju förstås om telldus-core kunde utökas med "tdGetDeviceCode(str tdDeviceName)" och "tdGetDeviceId(str tdDeviceName) så är man helt oberoende av registryt (och därmed OS - man måste ju tänka på våra Linuxhackande kamrater också ! ).
Du är helt oberoende av registryt. telldus-core är helt plattformsoberoende.
Vad ska dessa funktioner göra som du inte kan få ut av biblioteket idag?
Vet inte om det har något med saken att göra att jag har min Tellstick installerad på en box som kör WHS - mina tdDevices ligger under HKEY_CURRENT_MACHINE\Software\Telldus. Under HKEY_CURRENT_USER ligger bara "Example Device". Eftersom jag är en VB hackare måste jag också hitta på ett sätt att kopiera från HKEY_LOCAL_MACHINE till HKEY_CURRENT_USER\Software\VB and VBA Program Settings\.....
Varför behöver du kopiera över detta? Behöver ni överhuvud-taget ansluta till registret använder ni inte vårt API rätt. Ni riskerar även att programmet inte fungerar som det ska då vi inte garanterar på något vis hur enheterna sparas och kan mycket väl ändras mellan versionerna. Vi garanterar bara funktionaliteten då ni går genom våra funktioner.

Posted: Fri Mar 17, 2023 9:45 am
by tcmsklas
Micke,

Vi har ett antal mixups och missförstånd oss emellan.
det här med ID respektive index är inte riktigt solklart och ger lätt upphov till frustration. Jag tror att jag har greppat vad som är vad, i alla fall fungerar min VB6 kod!

Jag håller inte med dig här: Jag har tyvärr inte hittat någon funktion som returnerar enhetens "address" (huskod+nummer). Du får gärna korrigera mig om jag har fel!

En annan lustighet är att dokumentationen för Telldus-core anger att funktionerna börjar med "td", det VB exempel som följer med Telldus installation visar att funktionerna ska anropas med prefixet "dev".

Anledning till ev kopiering av registry-keys är att VB6 endast tillhandahåller funktioner för att hantera hiven HKEY_CURRENT_USER. Med lite VB power usage kan emellertid även andra hives hanteras, men är krånligare.

Det kanske är på sin plats att förklara hela installationen:

Jag har en Squeezeserver som körs på samma maskin som Telldus. Squeezeservern manövreras av en WiFi remote controller. Till dessa enheter finns plugins (skrivna i Perl och körs på servern) och applets (skrivna i lua och körs på fjärren). Jag har hittat en Plugin/applet som heter PowerCenter. Problemet med den är att den den är att den utnyttjar en liten applikation som heter BottleRocket (br) för att kontrollera ett X10 interface (via "hardware handshake" på en RS232 seriekanal) som heter Firecracker.

"br" vill bl.a ha huskod och enhet som parameter. Nu har jag två alternativ: antingen skirva om plugin/applet så att TelldusCore kan anropas direkt, eller skriva en "br-emulator". Eftersom varken Perl eller lua ingår i min kunskapsbas föll jag för det senare alternativet. Mindre snyggt eftersom jag måste "bypassa" TelldusCore och gå direkt till registryt för att hitta enhetsaddresser att matcha mot anropet till br för att sedan kunna anropa devTurnOn/Off med ID som parameter. Självklart skulle jag vilja använda mig av enbart Tellduscore!

Klas

Posted: Fri Mar 17, 2023 9:45 am
by micke.prag
tcmsklas wrote:Jag håller inte med dig här: Jag har tyvärr inte hittat någon funktion som returnerar enhetens "address" (huskod+nummer). Du får gärna korrigera mig om jag har fel!
Du kan använda funktionen tdGetDeviceParameter() för detta. Det är något som jag starkt avrekommenderar att göra. Mer om det nedan.
tcmsklas wrote:En annan lustighet är att dokumentationen för Telldus-core anger att funktionerna börjar med "td", det VB exempel som följer med Telldus installation visar att funktionerna ska anropas med prefixet "dev".
Detta för att du antagligen skriver mot TellUsbD101.dll som är vårt 1.x bibliotek. telldus-core är för 2.x och där har alla funktionerna prefixet td
tcmsklas wrote:Anledning till ev kopiering av registry-keys är att VB6 endast tillhandahåller funktioner för att hantera hiven HKEY_CURRENT_USER. Med lite VB power usage kan emellertid även andra hives hanteras, men är krånligare.8
Åter igen, Telldus inställningar i registret ska inte läsas av tredjeparts-program. Detta gör endast att programmet kan sluta fungera mot en senare version av vår programvara.
tcmsklas wrote: "br" vill bl.a ha huskod och enhet som parameter. Nu har jag två alternativ: antingen skirva om plugin/applet så att TelldusCore kan anropas direkt, eller skriva en "br-emulator". Eftersom varken Perl eller lua ingår i min kunskapsbas föll jag för det senare alternativet. Mindre snyggt eftersom jag måste "bypassa" TelldusCore och gå direkt till registryt för att hitta enhetsaddresser att matcha mot anropet till br för att sedan kunna anropa devTurnOn/Off med ID som parameter. Självklart skulle jag vilja använda mig av enbart Tellduscore!
Att skriva pluginet enligt alternativ ett är vad som bör göras. Att lita på enheters inställning är inget bra alternativ av en mycket enkel anledning. Det finns inget sätt garantera att en enhet har en viss inställning. Alla enhets-inställningar är protokoll-beroende. T.ex. protokollet "sartano" har endast en inställning; "code". Hur skulle den passa in mot br?

Posted: Fri Mar 17, 2023 9:45 am
by micke.prag
Kom på en annan sak. Någonstans måste enheterna listas för att visa namnet på displayen? Kan inte då enhetens id vara "enhetskoden"?

Vill br då styra A1 så kan enhet 1 i telldus-core användas.
Detta gör att man skippar huskoden helt och t.ex. B3 fortfarande blir enhet 3 i telldus-core.

Posted: Fri Mar 17, 2023 9:45 am
by tcmsklas
Hej Micke,

Vi avslutar debatten här. Jag gillar inte ditt sätt att slå in öppna dörrar. Det enda jag vill är att kunna använda standardmetoder, se mina tidigare inlägg. Med funktionen du nämner kan det göras utan att jag behöver lära mig Perl och lua.

Eftersom jag kör SwitchKing håller jag mig till 1.x biblioteket sålänge. Jag kommer att byta/uppgradera när SwithKing kan köras med 2.x. Liksom jag kommer att uppgradera "br_replacer" då.

Funktionen du nämer "tdGetDeviceParamenter" finns inte dokumenterad på er wiki - därför visste jag inte om den.

Vore vidare bra om VB exemplet som kommer med installationen uppgraderas till 2.x bibilioteket.

PUNKT

Klas

Posted: Fri Mar 17, 2023 9:45 am
by micke.prag
Jag vill inte se detta som någon debatt utan snarare ett sätt att slussa er rätt i APIt.

Vilka öppna dörrar jag även stänger förstår jag inte heller. Det är uppenbarligen ett missförstånd här.

Tillgängliga funktioner, dokumenterade eller ej finnes här:
http://developer.telldus.se/doxygen/tel ... ource.html