Costech typ EMW100R - OK?

Moderator: Telldus

micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Post by micke.prag »

Vi ska absolut ta och titta på det
Micke Prag
Software
Telldus Technologies
schmelck
Posts: 1
Joined: Fri Mar 17, 2023 9:45 am

Post by schmelck »

Hei, vil bare si at jeg er også interessert i å få disse billige clas ohlson bryterne (http://www.clasohlson.se/Product/Produc ... d=41669431) til å fungere :)
tom_rosenback
Posts: 779
Joined: Fri Mar 17, 2023 9:45 am
Contact:

Post by tom_rosenback »

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 :cry:
Det är 3 koder för CO uttagen, ON, OFF och LEARN, kanske därför du inte fick det att fungera? elr?
//Tom

Senaste info och release om/av HomeAutomation hittas här http://karpero.mine.nu/ha
Latest info and release of HomeAutomation can be found here http://karpero.mine.nu/ha
eirikh
Posts: 25
Joined: Fri Mar 17, 2023 9:45 am

Post by eirikh »

+1 for this :)
to2
Posts: 17
Joined: Fri Mar 17, 2023 9:45 am

Også interessert!

Post by to2 »

Hei! Jeg fikk min Tellstick til jul og har fra før 5 stk. Everflourish Mottakere (EMW100R) i huset og er veldig interessert i å få Tellstick til å "kontrollere" disse :)
Mårten
Posts: 9
Joined: Fri Mar 17, 2023 9:45 am
Location: Uppsala

Post by Mårten »

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.
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.

F.ö, är checksummeberäkningen för everflourish/GAO ovan fortfarande okänd? Gäller i så fall fortfarande att den som knäcker checksumman får en v2-sticka?
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Post by micke.prag »

Ohh. ja. Till den som knäcker protokollet finns lite trevliga saker för.
Micke Prag
Software
Telldus Technologies
Mårten
Posts: 9
Joined: Fri Mar 17, 2023 9:45 am
Location: Uppsala

Post by Mårten »

Hmm, den där checksumman verkar inte trivial. Har nu provat CRC-4 med alla möjliga polynom och initialvärden. Har även testat att XOR:a crc:n med en konstant, utan framgång.

Det skumma är att det borde vara en rätt enkel algoritm eftersom processorn i mottagarkretsen gissningsvis är rätt klen. Men checksumman är inte xor:ad eller ihopadderad och nästa steg på komplexitetsskalan är väl crc.

Frågan är om man skulle dissekera en mottagare och kolla vad det är för processor dom använder. Det kan ju tänkas finnas färdiga lösningar för den processorn. Någon som känner för att ta isär sin mottagare?
Mårten
Posts: 9
Joined: Fri Mar 17, 2023 9:45 am
Location: Uppsala

Post by Mårten »

Hej! Tänkte bidra med siffrorna i text, så slipper andra sitta och knappa in alla ettor och nollor, ifall någon vill göra ett försök att knäcka checksumman. Tredje byten, mest signifikant nibble är checksumman.

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]
Snakehand
Posts: 15
Joined: Fri Mar 17, 2023 9:45 am

Brute force please

Post by Snakehand »

Jeg har virkelig behov for å kontrolere Everflurish sine brytere. Disse er omtrent de eneste som er merket at de tåler mer enn 1000W. Pr idag bruker jeg velleman K8055 + noen kretser for å interface med fjernstyringen. Kjøpte nyss en tellstick for å rydde i kabelsaleten.

Men jeg klarte selvsagt ikke å kontrolere ovenen med tellsticken. Men HVOR VANSKELIG kan det være å prøve alle 16 mulige checksums ??? Eventuelt bare lære mottageren opp på hus ID med kjente koder / checksums ?

Kan jeg få klare instrukser på hvordan jeg kan prøve dette med raw format ? Og hvordan sender jeg sender raw format fra Linux burken ?

Hvis ikke returnere jeg tellstick på gubbdagiset, jeg har en fungerende løsning idag, og hadde ikke forventet at dette skulle bli et slikt problem:-(
Snakehand
Posts: 15
Joined: Fri Mar 17, 2023 9:45 am

Hvordan løse problemet ....

Post by Snakehand »

Dette problemet kan lett løses uten å kunne cheksummen. Jeg skal prøve å lage et lite program son kan styre disse bryterne fra kommandolinjen:

eccmd xxxx bbbb 0-15

Hvor xxxx er hous code i hex
bbbb er checksum i binær
og 1-15 er nivå i desimal.

Trikset er at bbbb kan inneholde wildcards. Programmet prøver da alle mulige kombinasjoer av bits. Da kan man lett finne checksummen selv:

Feks prøv
0??? - virker ikke ( første bit = 1 )
10?? - virker ( andre bit = 0 )
100? - virker ( tredje bit = 0 )
1000 - virker ikke (fjerde bit = 1)

1001 vil da virke i alle tilfeller, og man bruker kun denne checksummen i sine script.
micke.prag
Site Admin
Posts: 2243
Joined: Fri Mar 17, 2023 9:45 am
Location: Lund
Contact:

Post by micke.prag »

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:

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);
}
Det är bara att pipa programmet till tdtool för att testa:

Code: Select all

./gao | tdtool --raw -
Micke Prag
Software
Telldus Technologies
Snakehand
Posts: 15
Joined: Fri Mar 17, 2023 9:45 am

Post by Snakehand »

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:

Code: Select all

SNIP!
Det är bara att pipa programmet till tdtool för att testa:

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. :D :wave:
Snakehand
Posts: 15
Joined: Fri Mar 17, 2023 9:45 am

Working solution

Post by Snakehand »

Her er programmet efcmd som lar meg styre Everflourish brytere fra kommandolinje, samt "knekke" checksum koden:

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);
}

sleep(1) kallet må muligens fjernes, siden programmet ikke kan sende 8 koder før 'learn' funksjonen stopper.
jochenbirch
Posts: 1
Joined: Fri Mar 17, 2023 9:45 am

Post by jochenbirch »

Kommer ni släppa en ny version på Telldus center när ni har löst detta?
Jag köpte en Tellstick igår och naturligtvis köpte jag dessa mottagare som det inte är stöd för...
Post Reply