rtl433  UNKNOWN
RTL-433 utility
s3318p.c File Reference

Conrad Electronics S3318P outdoor sensor. More...

Functions

static int s3318p_callback (r_device *decoder, bitbuffer_t *bitbuffer)
 Largely the same as esperanza_ews, kedsum. More...
 

Variables

static char * output_fields []
 
r_device s3318p
 

Detailed Description

Conrad Electronics S3318P outdoor sensor.

Copyright (C) 2016 Martin Hauke Enhanced (C) 2019 Christian W. Zuckschwerdt zany@.nosp@m.triq.nosp@m..net

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

Function Documentation

◆ s3318p_callback()

static int s3318p_callback ( r_device decoder,
bitbuffer_t bitbuffer 
)
static

Largely the same as esperanza_ews, kedsum.

See also
esperanza_ews.c kedsum.c

Transmit Interval: every ~50s. Message Format: 40 bits (10 nibbles).

Byte:      0        1        2        3        4
Nibble:    1   2    3   4    5   6    7   8    9   10
Type:   00 IIIIIIII ??CCTTTT TTTTTTTT HHHHHHHH WB??XXXX
  • 0: Preamble
  • I: sensor ID (changes on battery change)
  • C: channel number
  • T: temperature
  • H: humidity
  • W: tx-button pressed
  • B: low battery
  • ?: unknown meaning
  • X: CRC-4 poly 0x3 init 0x0 xor last 4 bits

Example data:

[01] {42} 04 15 66 e2 a1 00 : 00000100 00010101 01100110 11100010 10100001 00 ---> Temp/Hum/Ch:23.2/46/1

Temperature:

  • Sensor sends data in °F, lowest supported value is -90°F
  • 12 bit unsigned and scaled by 10 (Nibbles: 6,5,4)
  • in this case "011001100101" = 1637/10 - 90 = 73.7 °F (23.17 °C)

Humidity:

  • 8 bit unsigned (Nibbles 8,7)
  • in this case "00101110" = 46

Channel number: (Bits 10,11) + 1

  • in this case "00" –> "00" +1 = Channel1

Battery status: (Bit 33) (0 normal, 1 voltage is below ~2.7 V)

  • TX-Button: (Bit 32) (0 indicates regular transmission, 1 indicates requested by pushbutton)

Random Code / Device ID: (Nibble 1)

  • changes on every battery change

References bitbuffer_extract_bytes(), bitbuffer_find_repeated_row(), bitbuffer::bits_per_row, crc4(), DATA_DOUBLE, DATA_FORMAT, DATA_INT, data_make(), DATA_STRING, and decoder_output_data().

Variable Documentation

◆ output_fields

char* output_fields[]
static
Initial value:
= {
"model",
"id",
"channel",
"battery",
"button",
"temperature_F",
"humidity",
"mic",
NULL
}

◆ s3318p

r_device s3318p
Initial value:
= {
.name = "Conrad S3318P Temperature & Humidity Sensor",
.modulation = OOK_PULSE_PPM,
.short_width = 1900,
.long_width = 3800,
.gap_limit = 4400,
.reset_limit = 9400,
.decode_fn = &s3318p_callback,
.disabled = 0,
.fields = output_fields
}
Pulse Position Modulation. Short gap = 0, Long = 1.
Definition: r_device.h:12
static char * output_fields[]
Definition: s3318p.c:103
static int s3318p_callback(r_device *decoder, bitbuffer_t *bitbuffer)
Largely the same as esperanza_ews, kedsum.
Definition: s3318p.c:58