Posted: Fri Mar 17, 2023 9:45 am
Vi ska absolut ta och titta på det
Det är 3 koder för CO uttagen, ON, OFF och LEARN, kanske därför du inte fick det att fungera? elr?krambriw wrote:Med en LWMR-210 lyckades jag dock ej trots att jag körde samma koder och att den styrs perfekt från fjärren. Den "lär nog in" signalen med högre noggranhet
Nu finns ju version 2 ute, blir jag tvungen att köpa en ny Tellstick eller har ni nåt inbytesprogram? Det enda jag vill göra är att sätta absolutnivå på en Nexa-dimmer, vilket ironiskt nog är exakt det enda som inte går att göra med v1 men med v2. Det hade dessutom sparat mig ett par dagars felsökning om mjukvaran hade kollat versionnumret och upplyst om att stickan var för gammal.micke.prag wrote:Eftersom det ännu inte finns en version 2 av TellStick har vi inte heller bestämt hur vi ska göra med användare som har version 1 av TellStick men som vill uppgradera.
Vi kommer att ta ställning till detta när den nya finns till försäljning.
Code: Select all
{
{0x38, 0xcc, 0x9f},
{0x38, 0xcd, 0x6f},
{0x38, 0xce, 0x3f},
{0x38, 0xcf, 0xaf},
{0x17, 0xac, 0x4f},
{0x17, 0xad, 0xbf},
{0x17, 0xae, 0xef},
{0x17, 0xaf, 0x7f},
{0x8c, 0xec, 0xef},
{0x8c, 0xed, 0x1f},
{0x8c, 0xee, 0x4f},
{0x8c, 0xef, 0xdf},
{0x2a, 0x1c, 0xff},
{0x2a, 0x1d, 0x0f},
{0x2a, 0x1e, 0x5f},
{0x2a, 0x1f, 0x1f},
{0x0f, 0x0d, 0xc0},
{0xff, 0x0d, 0xe0},
{0xff, 0xff, 0xd0},
{0x00, 0x04, 0x20},
{0x00, 0x08, 0xb0},
{0x00, 0x0c, 0xc0},
};
Code: Select all
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char **argv )
{
const char ssss = 85;
const char sssl = 84; // 0
const char slss = 69; // 1
const char c0 = sssl;
const char c1 = slss;
char txStr[100] = {
'R', 5, 'T',
114,60,1,1,
105,
ssss,ssss,
c0,c0,c1,c1,c1,c0,c0,c0,c1,c1,c0,c0,c1,c1, //Huskod
c0,c0, //Knapp
c1,c0,c0,c1, //Checksum?
// c1,c1,c1,c1, //On
// c0,c0,c0,c0, //Off
c1,c0,c1,c0, //learn
ssss,
'+'};
printf("%s", txStr);
exit(0);
}
Code: Select all
./gao | tdtool --raw -
Tusen takk. Dette fungerer som bare f*. Tusen takk, da er jeg vel berget. Jeg skal forbedre det littegran, og poster gjerne resultatet.micke.prag wrote:Här är ett litet testprogram ni kan använda för att generera GAO-koder.
Jag har tyvärr inte haft möjlighet att testa det ännu dock:Det är bara att pipa programmet till tdtool för att testa:Code: Select all
SNIP!
Code: Select all
./gao | tdtool --raw -
Code: Select all
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
void transmit( unsigned int device, unsigned int check, unsigned int val )
{
const char ssss = 85;
const char sssl = 84; // 0
const char slss = 69; // 1
const char bits[2] = {sssl,slss};
int i;
char txStr[100];
char preamble[] = {'R', 5, 'T', 114,60,1,1,105,ssss,ssss};
memcpy(txStr, preamble, sizeof(preamble));
size_t pos = sizeof(preamble);
for(i=15;i>=0;i--) txStr[pos++]=bits[(device>>i)&0x01];
for(i=3;i>=0;i--) txStr[pos++]=bits[(check>>i)&0x01];
for(i=3;i>=0;i--) txStr[pos++]=bits[(val>>i)&0x01];
txStr[pos++] = ssss;
txStr[pos++] = '+';
txStr[pos++] = 0;
FILE* fpipe = popen("tdtool --raw -", "w");
if (fpipe==NULL) {
printf("Problem with pipe.\n");
} else {
/* printf("%s", txStr); */
fprintf(fpipe, "%s", txStr);
fclose(fpipe);
}
}
int main( int argc, char **argv )
{
unsigned int device = 0;
unsigned int check = 0;
unsigned int mask = 0;
unsigned int invmask;
unsigned int val=0;
int i;
int pause = 0;
if (argc<4) {
printf("Usage: %s device(hex) checksum(hex/binary) value(decimal)\n", argv[0]);
printf(" device id is 4 hex digits\n");
printf(" checksum is either 1 hex digit, or 4 binary digits, where ?\
acts as a wildcard\n allowing multiple combinations to be tried at 1 second intevals.\n");
printf(" value is 0-15, where 0=off, 15=on and 10=learn\n");
exit(0);
}
sscanf(argv[1],"%x",&device);
sscanf(argv[3],"%i",&val);
if (strlen(argv[2])<4) {
sscanf(argv[2],"%x",&check);
check = check & 0x0f;
invmask = 0x0f;
} else {
for (i=0; i<4;i++) {
if (argv[2][i]=='1') {
check |= 1 << (3-i);
} else if (argv[2][i]=='?') {
mask |= 1 << (3-i);
}
}
invmask = mask^0x0f;
}
for (i=0;i<16;i++) {
if ((i&invmask)==check) {
printf("Sending: %04x %x %i\n",device, i, val);
if (pause) sleep(1);
transmit(device,i,val);
pause = 1; /* Pause before next transmit */
}
}
exit(0);
}