X-Git-Url: https://git.rvb.name/rtl-433.git/blobdiff_plain/337eb4ba945097205fbb6a3ca7912fb0697092d1..a3166201c6f1fa7e56c7e4b86083a42fffb0c568:/src/devices/elv.c~ diff --git a/src/devices/elv.c~ b/src/devices/elv.c~ deleted file mode 100644 index 958bf67..0000000 --- a/src/devices/elv.c~ +++ /dev/null @@ -1,145 +0,0 @@ -#include "rtl_433.h" - -uint16_t AD_POP(uint8_t bb[BITBUF_COLS], uint8_t bits, uint8_t bit) { - uint16_t val = 0; - uint8_t i, byte_no, bit_no; - for (i=0;i=1&&dec[0]<=3?types[dec[0]-1]:"?"); - fprintf(stdout, "ID=%d,",dec[1]); - fprintf(stdout, "SEQNO=%d,",dec[2]); - fprintf(stdout, "TOTAL=%d,",dec[3]|dec[4]<<8); - fprintf(stdout, "CURRENT=%d,",dec[5]|dec[6]<<8); - fprintf(stdout, "PEAK=%d\n",dec[7]|dec[8]<<8); - - return 1; -} - -static int ws2000_callback(uint8_t bb[BITBUF_ROWS][BITBUF_COLS],int16_t bits_per_row[BITBUF_ROWS]) { - // based on http://www.dc3yc.privat.t-online.de/protocol.htm - uint8_t dec[13]; - uint8_t nibbles=0; - uint8_t bit=11; // preamble - char* types[]={"!AS3", "AS2000/ASH2000/S2000/S2001A/S2001IA/ASH2200/S300IA", "!S2000R", "!S2000W", "S2001I/S2001ID", "!S2500H", "!Pyrano", "!KS200/KS300"}; - uint8_t check_calculated=0, sum_calculated=0; - uint8_t i; - uint8_t stopbit; - uint8_t sum_received; - - dec[0] = AD_POP (bb[0], 4, bit); bit+=4; - stopbit= AD_POP (bb[0], 1, bit); bit+=1; - if (!stopbit) { -//fprintf(stderr, "!stopbit\n"); - return 0; - } - check_calculated ^= dec[0]; - sum_calculated += dec[0]; - - // read nibbles with stopbit ... - for (i = 1; i <= (dec[0]==4?12:8); i++) { - dec[i] = AD_POP (bb[0], 4, bit); bit+=4; - stopbit= AD_POP (bb[0], 1, bit); bit+=1; - if (!stopbit) { -//fprintf(stderr, "!stopbit %i\n", i); - return 0; - } - check_calculated ^= dec[i]; - sum_calculated += dec[i]; - nibbles++; - } - - if (check_calculated) { -//fprintf(stderr, "check_calculated (%d) != 0\n", check_calculated); - return 0; - } - - // Read sum - sum_received = AD_POP (bb[0], 4, bit); bit+=4; - sum_calculated+=5; - sum_calculated&=0xF; - if (sum_received != sum_calculated) { -//fprintf(stderr, "sum_received (%d) != sum_calculated (%d) ", sum_received, sum_calculated); - return 0; - } - -//for (i = 0; i < nibbles; i++) fprintf(stderr, "%02X ", dec[i]); fprintf(stderr, "\n"); - - fprintf(stdout, "SENSOR:TYPE=ELV_WEATHER,"); - fprintf(stdout, "TYPE=%s,", dec[0]<=7?types[dec[0]]:"?"); - fprintf(stdout, "ID= %d,", dec[1]&7); - if(dec[0]==4) { - fprintf(stdout, "PRESSURE=%d,", 200+dec[10]*100+dec[9]*10+dec[8]); - } - fprintf(stdout, "TEMP=%s%d.%d,", dec[1]&8?"-":"", dec[4]*10+dec[3], dec[2]); - fprintf(stdout, "HUMIDITY=%d.%d\n", dec[7]*10+dec[6], dec[5]); - - return 1; -} - -r_device elv_em1000 = { - /* .id = */ 7, - /* .name = */ "ELV EM 1000", - /* .modulation = */ OOK_PWM_D, - /* .short_limit = */ 750/4, - /* .long_limit = */ 7250/4, - /* .reset_limit = */ 30000/4, - /* .json_callback = */ &em1000_callback, -}; - -r_device elv_ws2000 = { - /* .id = */ 8, - /* .name = */ "ELV WS 2000", - /* .modulation = */ OOK_PWM_D, - /* .short_limit = */ (602+(1155-602)/2)/4, - /* .long_limit = */ ((1755635-1655517)/2)/4, // no repetitions - /* .reset_limit = */ ((1755635-1655517)*2)/4, - /* .json_callback = */ &ws2000_callback, -};