Det stämmer. Förtillfället är det bara att knacka förhand som gäller i Linux. TelldusCenter kommer att komma det med när vissa saker är lösta.Daniel wrote:Om jag har förstått det rätt så är alltså tdtool det rekommenderade (supportade) verktyget för att styra sin Tellstick? Det rekommenderade sättet att confa det hela, är det att knacka sin tellstick.conf för hand?
Confa bort QTCore?
Moderator: Telldus
-
- Site Admin
- Posts: 2243
- Joined: Fri Mar 17, 2023 9:45 am
- Location: Lund
- Contact:
Micke Prag
Software
Telldus Technologies
Software
Telldus Technologies
massa grafiskt lullull har man ändå inte på servern så de känns inte som något ni behöver ha brottom med. tdtool funkar riktigt nice o jag gillar att kunna dimma!micke.prag wrote:Det stämmer. Förtillfället är det bara att knacka förhand som gäller i Linux. TelldusCenter kommer att komma det med när vissa saker är lösta.Daniel wrote:Om jag har förstått det rätt så är alltså tdtool det rekommenderade (supportade) verktyget för att styra sin Tellstick? Det rekommenderade sättet att confa det hela, är det att knacka sin tellstick.conf för hand?
Hejmicke.prag wrote:Det stämmer. Förtillfället är det bara att knacka förhand som gäller i Linux. TelldusCenter kommer att komma det med när vissa saker är lösta.Daniel wrote:Om jag har förstått det rätt så är alltså tdtool det rekommenderade (supportade) verktyget för att styra sin Tellstick? Det rekommenderade sättet att confa det hela, är det att knacka sin tellstick.conf för hand?
Låter bra men nu är jag inte direkt intresserad av TelldusCenter som ett GUI för att hantera mottagare, utan jag tänkte höra om det går att lägga till mottagare i tellstick.conf på något annat sätt än att manuellt ändra i filen?
Eller är det ngt som också kommer?
Går det att anropa telldus-core på något sätt?
Jag har sett att man ska kunna anropa tdAddDevice() på något sätt om man arbetar mot en dll i windows.
Är inte så jätteinsatt i detta, men försöker förstå vad det finns för möjligheter att lägga till mottagare på ett smidigt sätt.
Det jag är mest intresserad är hur man fixar detta genom PHP, men kan jag få till det i konsollen så är inte PHP långt borta.
MVH Niclas
-
- Site Admin
- Posts: 2243
- Joined: Fri Mar 17, 2023 9:45 am
- Location: Lund
- Contact:
Ska du jobba med php kan du kolla:
http://developer.telldus.se/browser/trunk/bindings/php
http://developer.telldus.se/browser/trunk/bindings/php
Micke Prag
Software
Telldus Technologies
Software
Telldus Technologies
Tackar för det otroligt snabba svaret
Jag har kollat en del på PHP-wrappern, men så som jag förstått det så stödjer den bara några av funktionerna. Tex
TELLDUS_TURNON | TELLDUS_TURNOFF | TELLDUS_BELL | TELLDUS_DIM
Jag kan inte se hur man lägger till mottagare via wrappern?
PS. Kompilering av wrappern till Debian fungerade rätt smärtfritt, men för OS X var det värre. Har du lyckats med det? DS
Tack på förhand!
/niclas
Jag har kollat en del på PHP-wrappern, men så som jag förstått det så stödjer den bara några av funktionerna. Tex
TELLDUS_TURNON | TELLDUS_TURNOFF | TELLDUS_BELL | TELLDUS_DIM
Jag kan inte se hur man lägger till mottagare via wrappern?
PS. Kompilering av wrappern till Debian fungerade rätt smärtfritt, men för OS X var det värre. Har du lyckats med det? DS
Tack på förhand!
/niclas
-
- Site Admin
- Posts: 2243
- Joined: Fri Mar 17, 2023 9:45 am
- Location: Lund
- Contact:
Hej igen
Nu har jag försökt satt mig in i koden för wrappern en del och det har gått framåt
Jag har dock fastnat på tdGetDeviceParameter();
De tillägg jag har gjort är dessa:
php_telldus.h
telldus.c
När jag sedan ska kalla på funktionen får jag problem. Jag vet inte vilka argument funktionen vill ha. Kör jag:
får jag:
Vad jag förstår utav det där är att första argumentet ska vara en int, andra och tredje en char.
Kör jag däremot (testade med A och B bara):
Så får jag:
Så då gick jag djupare i telldus-core för att se vad tdGetDeviceParameter egentligen gör och då hittade jag detta i telldus-core.cpp:
Och därifrån så sökte jag lite på allt som anropade "getDeviceParameter" i hela svn-trädet och hittade tex detta:
Från detta så tror jag att jag förstått vad tdGetDeviceParameter() vill ha för argument.
ID är för vilken mottagare man vill hämta information från
NAME är värdet jag ville hämta, tex UNIT eller HOUSE
DEFAULTVALUE är ett standardvärde som returneras om NAME inte hittas.
Har jag förstått rätt?
Tyvärr så får jag fortfarande samma (argument 2 ska vara long men är string) fel från PHP om jag nu istället anropar med:
tdGetDeviceParameter(2,"unit","error");
Så vart har jag gjort fel, jag kan inte hitta vart tdGetDeviceParameter() anger att den vill ha en LONG?!?!
Jag har inte kommit in på tdSet.....() än, men jag såg att tdAddDevice() inte tar emot något argument, kan det vara så att man först måste anropa tex tdSetName(), tdSetProtocol(), tdSetModel(), tdSetDeviceParameter() vilket sätter dessa parametrar i något sorts "minne" och sedan när man anropar tdAddDevice() så skrivs detta "minne" till tellstick.conf?
Eller är jag helt ute och cyklar?
Kan tillägga att jag inte är speciellt hemma på detta språk, vilket det nu än är
MVH Niclas
Nu har jag försökt satt mig in i koden för wrappern en del och det har gått framåt
Jag har dock fastnat på tdGetDeviceParameter();
De tillägg jag har gjort är dessa:
php_telldus.h
Code: Select all
PHP_FUNCTION(tdGetDeviceParameter);
Code: Select all
PHP_FE(tdGetDeviceParameter, NULL)
PHP_FUNCTION(tdGetDeviceParameter)
{
long id;
char *param;
char *name;
char *value;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll", &id, &name, &value) == FAILURE) {
RETURN_NULL();
}
param = tdGetDeviceParameter( id, name, value);
RETURN_STRING( param, 1 );
}
Code: Select all
cat telldus-core.h | grep tdGetDeviceParameter
Code: Select all
TELLSTICK_API char * WINAPI tdGetDeviceParameter(int intDeviceId, const char *strName, const char *defaultValue);
Kör jag däremot (testade med A och B bara):
Code: Select all
tdGetDeviceParameter(2,"A","B")
Code: Select all
tdGetDeviceParameter() expects parameter 2 to be long, string given
Code: Select all
char * WINAPI tdGetDeviceParameter(int intDeviceId, const char *strName, const char *defaultValue){
std::string strReturn = "";
try{
Manager *manager = Manager::getInstance();
strReturn = manager->getDeviceParameter(intDeviceId, strName);
if (strReturn.empty()) {
strReturn = defaultValue;
}
}
catch(exception e){
handleException(e);
}
return wrapStdString(strReturn);
}
Code: Select all
((DeviceNexa*)dev)->setHouse(settings.getDeviceParameter(intDeviceId, "house")); ((DeviceNexa*)dev)->setUnit(settings.getDeviceParameter(intDeviceId, "unit"));
ID är för vilken mottagare man vill hämta information från
NAME är värdet jag ville hämta, tex UNIT eller HOUSE
DEFAULTVALUE är ett standardvärde som returneras om NAME inte hittas.
Har jag förstått rätt?
Tyvärr så får jag fortfarande samma (argument 2 ska vara long men är string) fel från PHP om jag nu istället anropar med:
tdGetDeviceParameter(2,"unit","error");
Så vart har jag gjort fel, jag kan inte hitta vart tdGetDeviceParameter() anger att den vill ha en LONG?!?!
Jag har inte kommit in på tdSet.....() än, men jag såg att tdAddDevice() inte tar emot något argument, kan det vara så att man först måste anropa tex tdSetName(), tdSetProtocol(), tdSetModel(), tdSetDeviceParameter() vilket sätter dessa parametrar i något sorts "minne" och sedan när man anropar tdAddDevice() så skrivs detta "minne" till tellstick.conf?
Eller är jag helt ute och cyklar?
Kan tillägga att jag inte är speciellt hemma på detta språk, vilket det nu än är
MVH Niclas
-
- Site Admin
- Posts: 2243
- Joined: Fri Mar 17, 2023 9:45 am
- Location: Lund
- Contact:
Börja med att läsa på hur php-extensions fungerar. Ditt felmeddelande kommer från php inte telldus-core.
Kolla upp vad följande kod gör:
Kolla upp vad följande kod gör:
Code: Select all
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll", &id, &name, &value) == FAILURE) {
Micke Prag
Software
Telldus Technologies
Software
Telldus Technologies