diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h
index 7b1b7a918..b9b80e409 100644
--- a/sonoff/language/bg-BG.h
+++ b/sonoff/language/bg-BG.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h
index e52c016ae..4dd4fee75 100644
--- a/sonoff/language/cs-CZ.h
+++ b/sonoff/language/cs-CZ.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h
index fe56fd1e3..6c40194f1 100644
--- a/sonoff/language/de-DE.h
+++ b/sonoff/language/de-DE.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h
index dd78f92f2..0d97ed1bb 100644
--- a/sonoff/language/el-GR.h
+++ b/sonoff/language/el-GR.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h
index 24e8b51d2..011aaf57d 100644
--- a/sonoff/language/en-GB.h
+++ b/sonoff/language/en-GB.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/es-ES.h b/sonoff/language/es-ES.h
index 9195550a7..9606fe6dd 100644
--- a/sonoff/language/es-ES.h
+++ b/sonoff/language/es-ES.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h
index 76b6c9a57..b62d1f66f 100644
--- a/sonoff/language/fr-FR.h
+++ b/sonoff/language/fr-FR.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/he-HE.h b/sonoff/language/he-HE.h
index f021da461..9dcce3b4d 100644
--- a/sonoff/language/he-HE.h
+++ b/sonoff/language/he-HE.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h
index 396688de4..e5d0074d4 100644
--- a/sonoff/language/hu-HU.h
+++ b/sonoff/language/hu-HU.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h
index f9d22f797..86fa01a67 100644
--- a/sonoff/language/it-IT.h
+++ b/sonoff/language/it-IT.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/ko-KO.h b/sonoff/language/ko-KO.h
index 009a293c3..41045c635 100644
--- a/sonoff/language/ko-KO.h
+++ b/sonoff/language/ko-KO.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h
index 15b0cc1e8..5f06c626c 100644
--- a/sonoff/language/nl-NL.h
+++ b/sonoff/language/nl-NL.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h
index c2222d820..088a552d1 100644
--- a/sonoff/language/pl-PL.h
+++ b/sonoff/language/pl-PL.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h
index 51ead6a24..5c1d00807 100644
--- a/sonoff/language/pt-BR.h
+++ b/sonoff/language/pt-BR.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h
index 50183aaa5..d4d7139ef 100644
--- a/sonoff/language/pt-PT.h
+++ b/sonoff/language/pt-PT.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h
index 7236b0204..71905b925 100644
--- a/sonoff/language/ru-RU.h
+++ b/sonoff/language/ru-RU.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "А"
diff --git a/sonoff/language/sk-SK.h b/sonoff/language/sk-SK.h
index dab219890..092461cfe 100644
--- a/sonoff/language/sk-SK.h
+++ b/sonoff/language/sk-SK.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/sv-SE.h b/sonoff/language/sv-SE.h
index 0a2f99d5e..2af574665 100644
--- a/sonoff/language/sv-SE.h
+++ b/sonoff/language/sv-SE.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h
index f2471f81c..fc758185b 100755
--- a/sonoff/language/tr-TR.h
+++ b/sonoff/language/tr-TR.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "A"
diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h
index 016ece4a9..e6e2d069a 100644
--- a/sonoff/language/uk-UK.h
+++ b/sonoff/language/uk-UK.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "А"
diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h
index 3669262b2..b076b3f79 100644
--- a/sonoff/language/zh-CN.h
+++ b/sonoff/language/zh-CN.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "安"
diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h
index e628fe77a..7ec20363a 100644
--- a/sonoff/language/zh-TW.h
+++ b/sonoff/language/zh-TW.h
@@ -591,6 +591,10 @@
#define D_SENSOR_ZIGBEE_RXD "Zigbee Rx"
#define D_SENSOR_SOLAXX1_TX "SolaxX1 Tx"
#define D_SENSOR_SOLAXX1_RX "SolaxX1 Rx"
+#define D_SENSOR_IBEACON_TX "iBeacon TX"
+#define D_SENSOR_IBEACON_RX "iBeacon RX"
+#define D_SENSOR_RDM6300_RX "RDM6300 RX"
+#define D_SENSOR_CC1101_CS "CC1101 CS"
// Units
#define D_UNIT_AMPERE "安"
diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h
index 8da44f338..92f1b7c2e 100644
--- a/sonoff/sonoff_template.h
+++ b/sonoff/sonoff_template.h
@@ -191,6 +191,7 @@ enum UserSelectablePins {
GPIO_SOLAXX1_RX, // Solax Inverter rx pin
GPIO_ZIGBEE_TX, // Zigbee Serial interface
GPIO_ZIGBEE_RX, // Zigbee Serial interface
+ GPIO_RDM6300_RX, // RDM6300 RX
GPIO_SENSOR_END };
// Programmer selectable GPIO functionality
@@ -262,6 +263,7 @@ const char kSensorNames[] PROGMEM =
D_SENSOR_OLED_RESET "|"
D_SENSOR_SOLAXX1_TX "|" D_SENSOR_SOLAXX1_RX "|"
D_SENSOR_ZIGBEE_TXD "|" D_SENSOR_ZIGBEE_RXD "|"
+ D_SENSOR_RDM6300_RX "|"
;
// User selectable ADC0 functionality
@@ -662,6 +664,9 @@ const uint8_t kGpioNiceList[] PROGMEM = {
GPIO_SOLAXX1_TX, // Solax Inverter tx pin
GPIO_SOLAXX1_RX, // Solax Inverter rx pin
#endif
+#ifdef USE_RDM6300
+ GPIO_RDM6300_RX,
+#endif
};
const uint8_t kModuleNiceList[] PROGMEM = {
diff --git a/sonoff/xsns_51_rdm6300.ino b/sonoff/xsns_51_rdm6300.ino
new file mode 100644
index 000000000..7fc168d7d
--- /dev/null
+++ b/sonoff/xsns_51_rdm6300.ino
@@ -0,0 +1,178 @@
+/*
+ xsns_51_rdm6300.ino - Support for RDM6300 NFC Tag Reader
+
+ Copyright (C) 2019 Gerhard Mutz and Theo Arends
+
+ 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 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+
+#ifdef USE_RDM6300
+
+#define XSNS_51 51
+
+#define RDM6300_BAUDRATE 9600
+
+#include
+
+#define RDM_TIMEOUT 100
+char rdm_uid_str[10];
+
+// 2 seconds block time
+#define RDM6300_BLOCK 2*10
+
+uint8_t rdm_blcnt;
+TasmotaSerial *RDM6300_Serial = nullptr;
+
+void RDM6300_Init() {
+ if (pin[GPIO_RDM6300_RX] < 99) {
+ RDM6300_Serial = new TasmotaSerial(pin[GPIO_RDM6300_RX],-1,1);
+ if (RDM6300_Serial->begin(RDM6300_BAUDRATE)) {
+ if (RDM6300_Serial->hardwareSerial()) {
+ ClaimSerial();
+ }
+ }
+ }
+ rdm_blcnt=0;
+}
+
+// 14 bytes payload; // RFID DATA FRAME FORMAT: 1byte head (value: 2), 10byte data (2byte version + 8byte tag), 2byte checksum, 1byte tail (value: 3)
+void RDM6300_ScanForTag() {
+ char rdm_buffer[14];
+ uint8_t rdm_index;
+ uint8_t rdm_array[6];
+
+ if (!RDM6300_Serial) return;
+
+ if (rdm_blcnt>0) {
+ rdm_blcnt--;
+ while (RDM6300_Serial->available()) RDM6300_Serial->read();
+ return;
+ }
+
+ if (RDM6300_Serial->available()) {
+
+ char c=RDM6300_Serial->read();
+ if (c!=2) return;
+ // head detected
+ // read rest of message 11 more bytes
+ rdm_index=0;
+ uint32_t cmillis=millis();
+ while (1) {
+ if (RDM6300_Serial->available()) {
+ char c=RDM6300_Serial->read();
+ if (c==3) {
+ // tail marker
+ break;
+ }
+ rdm_buffer[rdm_index++]=c;
+ if (rdm_index>13) {
+ // illegal message
+ return;
+ }
+ }
+ if ((millis()-cmillis)>RDM_TIMEOUT) {
+ // timeout
+ return;
+ }
+ }
+
+ // block for 2 seconds
+ rdm_blcnt=RDM6300_BLOCK;
+
+ // calc checksum,
+ rm6300_hstring_to_array(rdm_array,sizeof(rdm_array),rdm_buffer);
+ uint8_t accu=0;
+ for (uint8_t count=0;count<5;count++) {
+ accu^=rdm_array[count];
+ }
+ if (accu!=rdm_array[5]) {
+ // checksum error
+ return;
+ }
+
+ // copy 4 hex bytes
+ memcpy(rdm_uid_str,&rdm_buffer[2],8);
+ rdm_uid_str[9]=0;
+
+ Response_P(PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime(DT_LOCAL).c_str());
+ ResponseAppend_P(PSTR(",\"RDM6300\":{\"UID\":\"%s\"}}"), rdm_uid_str);
+ MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
+/*
+ char command[24];
+ sprintf(command,"event RDM6300=%s",rdm_uid_str);
+ ExecuteCommand(command, SRC_RULE);
+ */
+ }
+
+
+}
+
+uint8_t rm6300_hexnibble(char chr) {
+ uint8_t rVal = 0;
+ if (isdigit(chr)) {
+ rVal = chr - '0';
+ } else {
+ if (chr >= 'A' && chr <= 'F') rVal = chr + 10 - 'A';
+ if (chr >= 'a' && chr <= 'f') rVal = chr + 10 - 'a';
+ }
+ return rVal;
+}
+
+// convert hex string to int array
+void rm6300_hstring_to_array(uint8_t array[], uint8_t len, char buffer[])
+{
+ char *cp=buffer;
+ for (uint8_t i = 0; i < len; i++) {
+ uint8_t val = rm6300_hexnibble(*cp++) << 4;
+ array[i]= val | rm6300_hexnibble(*cp++);
+ }
+}
+
+#ifdef USE_WEBSERVER
+const char HTTP_RDM6300[] PROGMEM =
+ "{s}RDM6300 " "UID" "{m}%s" "{e}";
+
+void RDM6300_Show(void) {
+ if (!RDM6300_Serial) return;
+ if (!rdm_uid_str[0]) strcpy(rdm_uid_str,"????");
+ WSContentSend_PD(HTTP_RDM6300,rdm_uid_str);
+}
+#endif // USE_WEBSERVER
+
+/*********************************************************************************************\
+ * Interface
+\*********************************************************************************************/
+
+bool Xsns51(byte function)
+{
+ bool result = false;
+
+ switch (function) {
+ case FUNC_INIT:
+ RDM6300_Init();
+ break;
+ case FUNC_EVERY_100_MSECOND:
+ RDM6300_ScanForTag();
+ break;
+#ifdef USE_WEBSERVER
+ case FUNC_WEB_SENSOR:
+ RDM6300_Show();
+ break;
+#endif // USE_WEBSERVER
+ }
+ return result;
+}
+
+#endif // USE_RDM6300