From dab66ce9181888852817abe78e062e3923c75503 Mon Sep 17 00:00:00 2001
From: Susis Strolch
Date: Mon, 22 Jul 2019 10:39:47 +0200
Subject: [PATCH 1/5] =?UTF-8?q?fixing=20tx=5Fmode=202=20=C2=B0=20stabilize?=
=?UTF-8?q?=20emsuart=5Frx...=20=20=20We=20can=20get=20more=20than=2032=20?=
=?UTF-8?q?bytes=20because=20of=20the=20trailing=20BRK.=20=20=20So=20the?=
=?UTF-8?q?=20buffersize=20for=20Rx=20interrupt=20is=20(for=20safety)=20in?=
=?UTF-8?q?creased=20to=2036=20bytes.=20=20=20If=20length=20exceeds=2036?=
=?UTF-8?q?=20bytes=20we=20dump=20them=20to=20/dev/null?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
° reintroduced the phantomBreak flag again
We _must_ signal to Rx that we have a double break, otherwise
we get problems in emsuart_recvTask...
° add ems_dumpBuffer which shows TxBuffer before send and RxBuffer after
receive and applying phantomBreak.
The dump is activated in "log j" mode and used to debug the
protocol problems.
° change handling of ID bit 7
on system start we listen for telegram until we receive a valid one,
larger than 5 byte.
Depending on the bit7 of the source address we decide if we have a
Buderus EMS or a Junkers EMS bus.
This decision is used to set the variables emsIDMask (0x00 for Buderus,
0x80 for Junkers) and the emsPollAck buffer, used to send the propper
acknowledge, depending on EMS type.
° move poll acknowledge function (emsuart_tx_poll) from emsuart.cpp to ems.cpp
and rename to ems_pollAck
° add EMS_TX_REV_DETECT status for detecting the SourceID.7 bit and setting
emsIDMask and emsPollAck buffer accordingly
° set initial emsTxStatus to EMS_TX_REV_DETECT
° add 'log j' - jabber - for more extensive debug logs
---
src/ems-esp.cpp | 3 ++
src/ems.cpp | 139 +++++++++++++++++++++++++++++++++++++++---------
src/ems.h | 58 ++++++++++----------
src/emsuart.cpp | 49 +++++++++--------
src/emsuart.h | 1 -
5 files changed, 174 insertions(+), 76 deletions(-)
diff --git a/src/ems-esp.cpp b/src/ems-esp.cpp
index 5733a8367..3632f6644 100644
--- a/src/ems-esp.cpp
+++ b/src/ems-esp.cpp
@@ -1467,6 +1467,9 @@ void TelnetCommandCallback(uint8_t wc, const char * commandLine) {
} else if (strcmp(second_cmd, "n") == 0) {
ems_setLogging(EMS_SYS_LOGGING_NONE);
ok = true;
+ } else if (strcmp(second_cmd, "j") == 0) {
+ ems_setLogging(EMS_SYS_LOGGING_NONE);
+ ok = true;
}
}
diff --git a/src/ems.cpp b/src/ems.cpp
index b33c6c597..6bc10ddf9 100644
--- a/src/ems.cpp
+++ b/src/ems.cpp
@@ -226,7 +226,7 @@ void ems_init() {
EMS_Sys_Status.emsTxPkgs = 0;
EMS_Sys_Status.emxCrcErr = 0;
EMS_Sys_Status.emsRxStatus = EMS_RX_STATUS_IDLE;
- EMS_Sys_Status.emsTxStatus = EMS_TX_STATUS_IDLE;
+ EMS_Sys_Status.emsTxStatus = EMS_TX_REV_DETECT;
EMS_Sys_Status.emsRefreshed = false;
EMS_Sys_Status.emsPollEnabled = false; // start up with Poll disabled
EMS_Sys_Status.emsBusConnected = false;
@@ -235,8 +235,9 @@ void ems_init() {
EMS_Sys_Status.emsTxDisabled = false;
EMS_Sys_Status.emsPollFrequency = 0;
EMS_Sys_Status.txRetryCount = 0;
- EMS_Sys_Status.emsReverse = false;
EMS_Sys_Status.emsTxMode = 0;
+ EMS_Sys_Status.emsIDMask = 0x00;
+ EMS_Sys_Status.emsPollAck[0] = EMS_ID_ME;
// thermostat
EMS_Thermostat.setpoint_roomTemp = EMS_VALUE_SHORT_NOTSET;
@@ -361,11 +362,12 @@ void ems_setTxMode(uint8_t mode) {
// special case for Junkers. If tx_mode is 3 then set the reverse poll flag
// https://github.com/proddy/EMS-ESP/issues/103#issuecomment-495945850
if (mode == 3) {
- EMS_Sys_Status.emsReverse = true;
+ EMS_Sys_Status.emsIDMask = 0x80;
myDebug_P(PSTR("Forcing emsReverse for Junkers"));
} else {
- EMS_Sys_Status.emsReverse = false;
+ EMS_Sys_Status.emsIDMask = 0x00;
}
+ EMS_Sys_Status.emsPollAck[0] = EMS_ID_ME ^ EMS_Sys_Status.emsIDMask;
}
uint8_t ems_getTxMode() {
@@ -453,10 +455,19 @@ void ems_setLogging(_EMS_SYS_LOGGING loglevel) {
myDebug_P(PSTR("System Logging set to Solar Module only"));
} else if (loglevel == EMS_SYS_LOGGING_RAW) {
myDebug_P(PSTR("System Logging set to Raw mode"));
+ } else if (loglevel == EMS_SYS_LOGGING_JABBER) {
+ myDebug_P(PSTR("System Logging set to Jabber mode"));
}
}
}
+/**
+ * send a poll acknowledge
+ */
+void ems_tx_pollAck() {
+ emsuart_tx_buffer(&EMS_Sys_Status.emsPollAck[0], 1);
+}
+
/**
* Calculate CRC checksum using lookup table for speed
* len is length of all the data in bytes (including the header & CRC byte at end)
@@ -615,20 +626,26 @@ void _ems_sendTelegram() {
}
EMS_TxTelegram.data[EMS_TxTelegram.length - 1] = _crcCalculator(EMS_TxTelegram.data, EMS_TxTelegram.length); // add the CRC
- emsuart_tx_buffer(EMS_TxTelegram.data, EMS_TxTelegram.length); // send the telegram to the UART Tx
- EMS_TxQueue.shift(); // and remove from queue
+ _EMS_TX_STATUS _txStatus = emsuart_tx_buffer(EMS_TxTelegram.data, EMS_TxTelegram.length); // send the telegram to the UART Tx
+ if (EMS_TX_BRK_DETECT == _txStatus || EMS_TX_WTD_TIMEOUT == _txStatus) {
+ // Tx Error!
+ myDebug_P(PSTR("** error sending buffer: %s"),_txStatus == EMS_TX_BRK_DETECT ?
+ "BRK" : "WDTO");
+ // EMS_Sys_Status.emsTxStatus = EMS_TX_STATUS_IDLE;
+ }
+ EMS_TxQueue.shift(); // and remove from queue
return;
}
// create the header
- EMS_TxTelegram.data[0] = (EMS_Sys_Status.emsReverse) ? EMS_ID_ME | 0x80 : EMS_ID_ME; // src
+ EMS_TxTelegram.data[0] = EMS_ID_ME ^ EMS_Sys_Status.emsIDMask; // src
// dest
if (EMS_TxTelegram.action == EMS_TX_TELEGRAM_WRITE) {
EMS_TxTelegram.data[1] = EMS_TxTelegram.dest;
} else {
// for a READ or VALIDATE
- EMS_TxTelegram.data[1] = EMS_TxTelegram.dest | 0x80; // read has 8th bit set
+ EMS_TxTelegram.data[1] = (EMS_TxTelegram.dest ^ 0x80 ^ EMS_Sys_Status.emsIDMask); // read has 8th bit set
}
// complete the rest of the header depending on EMS or EMS+
@@ -671,9 +688,17 @@ void _ems_sendTelegram() {
}
// send the telegram to the UART Tx
- emsuart_tx_buffer(EMS_TxTelegram.data, EMS_TxTelegram.length);
+ _EMS_TX_STATUS _txStatus = emsuart_tx_buffer(EMS_TxTelegram.data, EMS_TxTelegram.length); // send the telegram to the UART Tx
+ if (EMS_TX_STATUS_OK == _txStatus || EMS_TX_STATUS_IDLE == _txStatus)
+ EMS_Sys_Status.emsTxStatus = EMS_TX_STATUS_WAIT;
+ else {
+ // Tx Error!
+ // Tx Error!
+ myDebug_P(PSTR("** error sending buffer: %s"),_txStatus == EMS_TX_BRK_DETECT ?
+ "BRK" : "WDTO");
+ EMS_Sys_Status.emsTxStatus = EMS_TX_STATUS_IDLE;
+ }
- EMS_Sys_Status.emsTxStatus = EMS_TX_STATUS_WAIT;
}
@@ -720,6 +745,57 @@ void _createValidate() {
EMS_TxQueue.unshift(new_EMS_TxTelegram); // add back to queue making it first to be picked up next (FIFO)
}
+/**
+ * dump a UART Tx or Rx buffer to console...
+ */
+void ems_dumpBuffer(const char *prefix, uint8_t *telegram, uint8_t length) {
+ uint32_t timestamp = millis();
+ static char output_str[200] = {0};
+ static char buffer[16] = {0};
+
+ if (EMS_Sys_Status.emsLogging != EMS_SYS_LOGGING_JABBER)
+ return;
+
+ // we only care about known devices
+ if (length) {
+ uint8_t dev = telegram[0] & 0x7F;
+ if (!((dev == 0x04)||(dev == 0x08)||(dev == 0x09)||(dev == 0x0a)
+ ||(dev == 0x01)||(dev == 0x0b)||(dev == 0x10)))
+ return;
+ }
+
+ strlcpy(output_str, "(", sizeof(output_str));
+ strlcat(output_str, COLOR_CYAN, sizeof(output_str));
+ strlcat(output_str, _smallitoa((uint8_t)((timestamp / 3600000) % 24), buffer), sizeof(output_str));
+ strlcat(output_str, ":", sizeof(output_str));
+ strlcat(output_str, _smallitoa((uint8_t)((timestamp / 60000) % 60), buffer), sizeof(output_str));
+ strlcat(output_str, ":", sizeof(output_str));
+ strlcat(output_str, _smallitoa((uint8_t)((timestamp / 1000) % 60), buffer), sizeof(output_str));
+ strlcat(output_str, ".", sizeof(output_str));
+ strlcat(output_str, _smallitoa3(timestamp % 1000, buffer), sizeof(output_str));
+ strlcat(output_str, COLOR_RESET, sizeof(output_str));
+ strlcat(output_str, ") ", sizeof(output_str));
+
+ strlcat(output_str, COLOR_YELLOW, sizeof(output_str));
+ strlcat(output_str, prefix, sizeof(output_str));
+
+ // show some EMS_Sys_Status entries
+ strlcat(output_str, _hextoa(EMS_Sys_Status.emsRxStatus, buffer), sizeof(output_str));
+ strlcat(output_str, " ", sizeof(output_str));
+ strlcat(output_str, _hextoa(EMS_Sys_Status.emsTxStatus, buffer), sizeof(output_str));
+ strlcat(output_str, ": ", sizeof(output_str));
+
+
+ // print whole buffer, don't interpret any data
+ for (int i = 0; i < (length); i++) {
+ strlcat(output_str, _hextoa(telegram[i], buffer), sizeof(output_str));
+ strlcat(output_str, " ", sizeof(output_str));
+ }
+
+ strlcat(output_str, COLOR_RESET, sizeof(output_str));
+
+ myDebug(output_str);
+}
/**
* Entry point triggered by an interrupt in emsuart.cpp
* length is the number of all the telegram bytes up to and including the CRC at the end
@@ -729,16 +805,28 @@ void _createValidate() {
void ems_parseTelegram(uint8_t * telegram, uint8_t length) {
static uint32_t _last_emsPollFrequency = 0;
+ ems_dumpBuffer("** [DEBUG MODE] ems_parseTelegram: ", telegram, length);
/*
* check if we just received a single byte
* it could well be a Poll request from the boiler for us, which will have a value of 0x8B (0x0B | 0x80)
* or either a return code like 0x01 or 0x04 from the last Write command
- * Roger Wilco: we have different types here:
- * EMS_ID_ME && length == 1 && EMS_TX_STATUS_IDLE && EMS_RX_STATUS_IDLE: polling request
- * EMS_ID_ME && length > 1 && EMS_TX_STATUS_IDLE && EMS_RX_STATUS_IDLE: direct telegram
- * (EMS_TX_SUCCESS || EMS_TX_ERROR) && EMS_TX_STATUS_WAIT: response, free the EMS bus
- *
- * In addition, it may happen that we where interrupted (f.e. by WIFI activity) and the
+ */
+
+ /*
+ * Detect the EMS bus type - Buderus or Junkers - and set emsIDMask accordingly.
+ * we wait for the first valid telegram and look at the SourceID.
+ * If Bit 7 is set we have a Buderus, otherwise a Junkers
+ */
+ if (EMS_Sys_Status.emsTxStatus == EMS_TX_REV_DETECT) {
+ if ((length >= 5) && (telegram[length - 1] == _crcCalculator(telegram, length))) {
+ EMS_Sys_Status.emsTxStatus = EMS_TX_STATUS_IDLE;
+ EMS_Sys_Status.emsIDMask = telegram[0] & 0x80;
+ EMS_Sys_Status.emsPollAck[0] = EMS_ID_ME ^ EMS_Sys_Status.emsIDMask;
+ } else
+ return; // ignore the whole telegram Rx Telegram while in DETECT mode
+ }
+
+ /* It may happen that we where interrupted (f.e. by WIFI activity) and the
* buffer isn't valid anymore, so we must not answer at all...
*/
if (EMS_Sys_Status.emsRxStatus != EMS_RX_STATUS_IDLE) {
@@ -752,8 +840,7 @@ void ems_parseTelegram(uint8_t * telegram, uint8_t length) {
uint8_t value = telegram[0]; // 1st byte of data package
// check first for a Poll for us
- // the poll has the MSB set - seems to work on both EMS and Junkers
- if ((value & 0x7F) == EMS_ID_ME) {
+ if ((value ^ 0x80 ^ EMS_Sys_Status.emsIDMask) == EMS_ID_ME) {
EMS_Sys_Status.emsTxCapable = true;
uint32_t timenow_microsecs = micros();
EMS_Sys_Status.emsPollFrequency = (timenow_microsecs - _last_emsPollFrequency);
@@ -766,7 +853,7 @@ void ems_parseTelegram(uint8_t * telegram, uint8_t length) {
} else {
// nothing to send so just send a poll acknowledgement back
if (EMS_Sys_Status.emsPollEnabled) {
- emsuart_tx_poll();
+ ems_tx_pollAck();
}
}
} else if (EMS_Sys_Status.emsTxStatus == EMS_TX_STATUS_WAIT) {
@@ -774,14 +861,14 @@ void ems_parseTelegram(uint8_t * telegram, uint8_t length) {
if (value == EMS_TX_SUCCESS) {
EMS_Sys_Status.emsTxPkgs++;
// got a success 01. Send a validate to check the value of the last write
- emsuart_tx_poll(); // send a poll to free the EMS bus
+ ems_tx_pollAck(); // send a poll to free the EMS bus
_createValidate(); // create a validate Tx request (if needed)
} else if (value == EMS_TX_ERROR) {
// last write failed (04), delete it from queue and dont bother to retry
if (EMS_Sys_Status.emsLogging == EMS_SYS_LOGGING_VERBOSE) {
myDebug_P(PSTR("** Write command failed from host"));
}
- emsuart_tx_poll(); // send a poll to free the EMS bus
+ ems_tx_pollAck(); // send a poll to free the EMS bus
_removeTxQueue(); // remove from queue
}
}
@@ -792,7 +879,7 @@ void ems_parseTelegram(uint8_t * telegram, uint8_t length) {
// ignore anything that doesn't resemble a proper telegram package
// minimal is 5 bytes, excluding CRC at the end
if (length <= 4) {
- //_debugPrintTelegram("Noisy data:", &EMS_RxTelegram COLOR_RED);
+ _debugPrintTelegram("Noisy data:", &EMS_RxTelegram, COLOR_RED);
return;
}
@@ -1035,7 +1122,7 @@ void _processType(_EMS_RxTelegram * EMS_RxTelegram) {
// if its an echo of ourselves from the master UBA, ignore. This should never happen mind you
if (EMS_RxTelegram->src == EMS_ID_ME) {
- // _debugPrintTelegram("echo:", EMS_RxTelegram, COLOR_WHITE);
+ _debugPrintTelegram("echo:", EMS_RxTelegram, COLOR_WHITE);
return;
}
@@ -1143,10 +1230,9 @@ void _processType(_EMS_RxTelegram * EMS_RxTelegram) {
}
}
- emsuart_tx_poll(); // send Acknowledgement back to free the EMS bus since we have the telegram
+ ems_tx_pollAck(); // send Acknowledgement back to free the EMS bus since we have the telegram
}
-
/**
* Check if hot tap water or heating is active
* using a quick hack for checking the heating. Selected Flow Temp >= 70
@@ -1684,7 +1770,8 @@ void _process_Version(_EMS_RxTelegram * EMS_RxTelegram) {
// check to see if its a Junkers Heatronic3, which has a different poll'ing logic
if (EMS_Boiler.product_id == EMS_PRODUCTID_HEATRONICS) {
- EMS_Sys_Status.emsReverse = true;
+ EMS_Sys_Status.emsIDMask = 0x80;
+ EMS_Sys_Status.emsPollAck[0] = EMS_ID_ME ^ EMS_Sys_Status.emsIDMask;
}
myESP.fs_saveConfig(); // save config to SPIFFS
diff --git a/src/ems.h b/src/ems.h
index 800577200..d06ba7f19 100644
--- a/src/ems.h
+++ b/src/ems.h
@@ -29,39 +29,39 @@
#define GPIO_H(mask) (GPIO_REG_WRITE(GPIO_OUT_W1TS_ADDRESS, (mask)))
#define GPIO_L(mask) (GPIO_REG_WRITE(GPIO_OUT_W1TC_ADDRESS, (mask)))
-#define RX_PULSE(pulse) \
- do { \
- GPIO_H(RX_MARK_MASK); \
- delayMicroseconds(pulse); \
- GPIO_L(RX_MARK_MASK); \
+#define RX_PULSE(pulse) \
+ do { \
+ GPIO_H(RX_MARK_MASK); \
+ delayMicroseconds(pulse); \
+ GPIO_L(RX_MARK_MASK); \
} while (0)
-#define TX_PULSE(pulse) \
- do { \
- GPIO_H(TX_MARK_MASK); \
- delayMicroseconds(pulse); \
- GPIO_L(TX_MARK_MASK); \
+#define TX_PULSE(pulse) \
+ do { \
+ GPIO_H(TX_MARK_MASK); \
+ delayMicroseconds(pulse); \
+ GPIO_L(TX_MARK_MASK); \
} while (0)
-#define LA_PULSE(pulse) \
- do { \
- GPIO_H(MARKERS_MASK); \
- delayMicroseconds(pulse); \
- GPIO_L(MARKERS_MASK); \
+#define LA_PULSE(pulse) \
+ do { \
+ GPIO_H(MARKERS_MASK); \
+ delayMicroseconds(pulse); \
+ GPIO_L(MARKERS_MASK); \
} while (0)
-#define INIT_MARKERS(void) \
- do { \
- pinMode(RX_MARK_PIN, OUTPUT); \
- pinMode(TX_MARK_PIN, OUTPUT); \
- GPIO_L(MARKERS_MASK); \
+#define INIT_MARKERS(void) \
+ do { \
+ pinMode(RX_MARK_PIN, OUTPUT); \
+ pinMode(TX_MARK_PIN, OUTPUT); \
+ GPIO_L(MARKERS_MASK); \
} while (0)
#else
-#define RX_PULSE(pulse) \
+#define RX_PULSE(pulse) \
{}
-#define TX_PULSE(pulse) \
+#define TX_PULSE(pulse) \
{}
-#define LA_PULSE(pulse) \
+#define LA_PULSE(pulse) \
{}
-#define INIT_MARKERS(void) \
+#define INIT_MARKERS(void) \
{}
#define RX_MARK_MASK
#define TX_MARK_MASK
@@ -124,7 +124,8 @@ typedef enum {
EMS_TX_STATUS_IDLE, // ready
EMS_TX_STATUS_WAIT, // waiting for response from last Tx
EMS_TX_WTD_TIMEOUT, // watchdog timeout during send
- EMS_TX_BRK_DETECT // incoming BRK during Tx
+ EMS_TX_BRK_DETECT, // incoming BRK during Tx
+ EMS_TX_REV_DETECT // waiting to detect reverse bit
} _EMS_TX_STATUS;
#define EMS_TX_SUCCESS 0x01 // EMS single byte after a Tx Write indicating a success
@@ -145,7 +146,8 @@ typedef enum {
EMS_SYS_LOGGING_BASIC, // only basic read/write messages
EMS_SYS_LOGGING_THERMOSTAT, // only telegrams sent from thermostat
EMS_SYS_LOGGING_SOLARMODULE, // only telegrams sent from thermostat
- EMS_SYS_LOGGING_VERBOSE // everything
+ EMS_SYS_LOGGING_VERBOSE, // everything
+ EMS_SYS_LOGGING_JABBER // lots of debug output...
} _EMS_SYS_LOGGING;
// status/counters since last power on
@@ -164,8 +166,9 @@ typedef struct {
bool emsTxCapable; // able to send via Tx
bool emsTxDisabled; // true to prevent all Tx
uint8_t txRetryCount; // # times the last Tx was re-sent
- bool emsReverse; // if true, poll logic is reversed
uint8_t emsTxMode; // handles Tx logic
+ uint8_t emsIDMask; // Buderus: 0x00, Junkers: 0x80
+ uint8_t emsPollAck[1]; // acknowledge buffer
} _EMS_Sys_Status;
// The Tx send package
@@ -390,6 +393,7 @@ typedef struct {
} _EMS_Type;
// function definitions
+extern void ems_dumpBuffer(const char *prefix, uint8_t *telegram, uint8_t length);
extern void ems_parseTelegram(uint8_t * telegram, uint8_t len);
void ems_init();
void ems_doReadCommand(uint16_t type, uint8_t dest, bool forceRefresh = false);
diff --git a/src/emsuart.cpp b/src/emsuart.cpp
index a701d25c3..a0bb11411 100644
--- a/src/emsuart.cpp
+++ b/src/emsuart.cpp
@@ -13,6 +13,7 @@
_EMSRxBuf * pEMSRxBuf;
_EMSRxBuf * paEMSRxBuf[EMS_MAXBUFFERS];
uint8_t emsRxBufIdx = 0;
+uint8_t phantomBreak= 0;
os_event_t recvTaskQueue[EMSUART_recvTaskQueueLen]; // our Rx queue
@@ -22,7 +23,7 @@ os_event_t recvTaskQueue[EMSUART_recvTaskQueueLen]; // our Rx queue
//
static void emsuart_rx_intr_handler(void * para) {
static uint8_t length;
- static uint8_t uart_buffer[EMS_MAXBUFFERSIZE];
+ static uint8_t uart_buffer[EMS_MAXBUFFERSIZE + 2];
// is a new buffer? if so init the thing for a new telegram
if (EMS_Sys_Status.emsRxStatus == EMS_RX_STATUS_IDLE) {
@@ -33,7 +34,9 @@ static void emsuart_rx_intr_handler(void * para) {
// fill IRQ buffer, by emptying Rx FIFO
if (USIS(EMSUART_UART) & ((1 << UIFF) | (1 << UITO) | (1 << UIBD))) {
while ((USS(EMSUART_UART) >> USRXC) & 0xFF) {
- uart_buffer[length++] = USF(EMSUART_UART);
+ uint8_t rx = USF(EMSUART_UART);
+ if (length < EMS_MAXBUFFERSIZE)
+ uart_buffer[length++] = rx;
}
// clear Rx FIFO full and Rx FIFO timeout interrupts
@@ -46,8 +49,9 @@ static void emsuart_rx_intr_handler(void * para) {
ETS_UART_INTR_DISABLE(); // disable all interrupts and clear them
USIC(EMSUART_UART) = (1 << UIBD); // INT clear the BREAK detect interrupt
- pEMSRxBuf->length = length;
- os_memcpy((void *)pEMSRxBuf->buffer, (void *)&uart_buffer, length); // copy data into transfer buffer, including the BRK 0x00 at the end
+ pEMSRxBuf->length = (length > EMS_MAXBUFFERSIZE) ? EMS_MAXBUFFERSIZE : length;
+ os_memcpy((void *)pEMSRxBuf->buffer, (void *)&uart_buffer, pEMSRxBuf->length); // copy data into transfer buffer, including the BRK 0x00 at the end
+ length = 0;
EMS_Sys_Status.emsRxStatus = EMS_RX_STATUS_IDLE; // set the status flag stating BRK has been received and we can start a new package
ETS_UART_INTR_ENABLE(); // re-enable UART interrupts
@@ -67,18 +71,21 @@ static void ICACHE_FLASH_ATTR emsuart_recvTask(os_event_t * events) {
uint8_t length = pCurrent->length; // number of bytes including the BRK at the end
pCurrent->length = 0;
- // validate and transmit the EMS buffer, excluding the BRK
+ if (phantomBreak) {
+ phantomBreak = 0;
+ length--; // remove phantom break from Rx buffer
+ }
+
if (length == 2) {
RX_PULSE(20);
// it's a poll or status code, single byte and ok to send on
ems_parseTelegram((uint8_t *)pCurrent->buffer, 1);
- } else if ((length > 4) && (length <= EMS_MAXBUFFERSIZE + 1) && (pCurrent->buffer[length - 2] != 0x00)) {
+ } else if ((length > 4) && (length <= EMS_MAXBUFFERSIZE + 1)) {
// ignore double BRK at the end, possibly from the Tx loopback
// also telegrams with no data value
RX_PULSE(40);
ems_parseTelegram((uint8_t *)pCurrent->buffer, length - 1); // transmit EMS buffer, excluding the BRK
}
- // memset(pCurrent->buffer, 0x00, EMS_MAXBUFFERSIZE); // wipe memory just to be safe
}
/*
@@ -122,10 +129,10 @@ void ICACHE_FLASH_ATTR emsuart_init() {
// UCFFT = RX FIFO Full Threshold (7 bit) = want this to be 31 for 32 bytes of buffer (default was 127)
// see https://www.espressif.com/sites/default/files/documentation/esp8266-technical_reference_en.pdf
//
- // change: we set UCFFT to 1 to get an immediate indicator about incoming trafffic.
+ // change: we set UCFFT to 1 to get an immediate indicator about incoming traffic.
// Otherwise, we're only noticed by UCTOT or RxBRK!
USC1(EMSUART_UART) = 0; // reset config first
- USC1(EMSUART_UART) = (0x01 << UCFFT) | (0x01 << UCTOT) | (1 << UCTOE); // enable interupts
+ USC1(EMSUART_UART) = (0x01 << UCFFT) | (0x01 << UCTOT) | (0 << UCTOE); // enable interupts
// set interrupts for triggers
USIC(EMSUART_UART) = 0xFFFF; // clear all interupts
@@ -133,7 +140,8 @@ void ICACHE_FLASH_ATTR emsuart_init() {
// enable rx break, fifo full and timeout.
// but not frame error UIFR (because they are too frequent) or overflow UIOF because our buffer is only max 32 bytes
- USIE(EMSUART_UART) = (1 << UIBD) | (1 << UIFF) | (1 << UITO);
+ // change: we don't care about Rx Timeout - it may lead to wrong readouts
+ USIE(EMSUART_UART) = (1 << UIBD) | (1 << UIFF) | (0 << UITO);
// set up interrupt callbacks for Rx
system_os_task(emsuart_recvTask, EMSUART_recvTaskPrio, recvTaskQueue, EMSUART_recvTaskQueueLen);
@@ -199,6 +207,7 @@ void ICACHE_FLASH_ATTR emsuart_tx_brk() {
*/
_EMS_TX_STATUS ICACHE_FLASH_ATTR emsuart_tx_buffer(uint8_t * buf, uint8_t len) {
_EMS_TX_STATUS result = EMS_TX_STATUS_OK;
+ ems_dumpBuffer("emsuart_tx_buffer: ", buf, len); // validate and transmit the EMS buffer, excluding the BRK
if (len) {
LA_PULSE(50);
// temp code until we get mode 2 working without resets
@@ -254,9 +263,9 @@ _EMS_TX_STATUS ICACHE_FLASH_ATTR emsuart_tx_buffer(uint8_t * buf, uint8_t len) {
// shorter busy poll...
#define EMSUART_BUSY_WAIT (EMSUART_BIT_TIME / 8)
-#define EMS_TX_TO_COUNT ((20 + 10000 / EMSUART_BIT_TIME) * 8)
+#define EMS_TX_TO_CHARS (2 + 20)
+#define EMS_TX_TO_COUNT ( (EMS_TX_TO_CHARS) * 10 * 8)
uint16_t wdc = EMS_TX_TO_COUNT;
-
ETS_UART_INTR_DISABLE(); // disable rx interrupt
// clear Rx status register
@@ -272,7 +281,6 @@ _EMS_TX_STATUS ICACHE_FLASH_ATTR emsuart_tx_buffer(uint8_t * buf, uint8_t len) {
USF(EMSUART_UART) = buf[i++]; // send each Tx byte
// wait for echo from busmaster
GPIO_L(TX_MARK_MASK);
-
while (((USS(EMSUART_UART) >> USRXC) & 0xFF) == _usrxc) {
delayMicroseconds(EMSUART_BUSY_WAIT); // burn CPU cycles...
if (--wdc == 0) {
@@ -301,11 +309,13 @@ _EMS_TX_STATUS ICACHE_FLASH_ATTR emsuart_tx_buffer(uint8_t * buf, uint8_t len) {
// wait until BRK detected...
while (!(USIR(EMSUART_UART) & (1 << UIBD))) {
- delayMicroseconds(EMSUART_BUSY_WAIT);
+ // delayMicroseconds(EMSUART_BUSY_WAIT);
+ delayMicroseconds(EMSUART_BIT_TIME);
}
USC0(EMSUART_UART) &= ~((1 << UCBRK) | (1 << UCLBE)); // disable loopback & clear
USIC(EMSUART_UART) = (1 << UIBD); // clear BRK detect IRQ
+ phantomBreak = 1;
}
GPIO_L(TX_MARK_MASK);
}
@@ -317,13 +327,8 @@ _EMS_TX_STATUS ICACHE_FLASH_ATTR emsuart_tx_buffer(uint8_t * buf, uint8_t len) {
/*
* Send the Poll (our own ID) to Tx as a single byte and end with a
- */
+ * *** moved to ems.cpp, renamed to ems_tx_pollAck
void ICACHE_FLASH_ATTR emsuart_tx_poll() {
- static uint8_t buf[1];
- if (EMS_Sys_Status.emsReverse) {
- buf[0] = {EMS_ID_ME | 0x80};
- } else {
- buf[0] = {EMS_ID_ME};
- }
- emsuart_tx_buffer(buf, 1);
+ static uint8_t buf[1] = {EMS_ID_ME ^ EMS_Sys_Status.emsIDMask};
}
+ */
\ No newline at end of file
diff --git a/src/emsuart.h b/src/emsuart.h
index 0777dcfd5..3a4f9da7e 100644
--- a/src/emsuart.h
+++ b/src/emsuart.h
@@ -37,4 +37,3 @@ void ICACHE_FLASH_ATTR emsuart_init();
void ICACHE_FLASH_ATTR emsuart_stop();
void ICACHE_FLASH_ATTR emsuart_start();
_EMS_TX_STATUS ICACHE_FLASH_ATTR emsuart_tx_buffer(uint8_t * buf, uint8_t len);
-void ICACHE_FLASH_ATTR emsuart_tx_poll();
From e680ae6066694cf566eba3d5d7deae13c21fa379 Mon Sep 17 00:00:00 2001
From: Susis Strolch
Date: Mon, 29 Jul 2019 10:00:52 +0200
Subject: [PATCH 2/5] =?UTF-8?q?=C2=B0=20fix=20compile=20time=20error=20in?=
=?UTF-8?q?=20ems.cpp=20(missing=20comment)=20=C2=B0=20show=20'echo:telegr?=
=?UTF-8?q?am'=20msg=20only=20in=20jabber=20mode=20=C2=B0=20fix=20wrong=20?=
=?UTF-8?q?value=20when=20applying=20'log=20j'?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/ems-esp.cpp | 2 +-
src/ems.cpp | 5 +++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/ems-esp.cpp b/src/ems-esp.cpp
index 3632f6644..d3468c2e1 100644
--- a/src/ems-esp.cpp
+++ b/src/ems-esp.cpp
@@ -1468,7 +1468,7 @@ void TelnetCommandCallback(uint8_t wc, const char * commandLine) {
ems_setLogging(EMS_SYS_LOGGING_NONE);
ok = true;
} else if (strcmp(second_cmd, "j") == 0) {
- ems_setLogging(EMS_SYS_LOGGING_NONE);
+ ems_setLogging(EMS_SYS_LOGGING_JABBER);
ok = true;
}
}
diff --git a/src/ems.cpp b/src/ems.cpp
index 6bc10ddf9..dbe01ac2d 100644
--- a/src/ems.cpp
+++ b/src/ems.cpp
@@ -879,7 +879,7 @@ void ems_parseTelegram(uint8_t * telegram, uint8_t length) {
// ignore anything that doesn't resemble a proper telegram package
// minimal is 5 bytes, excluding CRC at the end
if (length <= 4) {
- _debugPrintTelegram("Noisy data:", &EMS_RxTelegram, COLOR_RED);
+ // _debugPrintTelegram("Noisy data:", &EMS_RxTelegram, COLOR_RED);
return;
}
@@ -1122,7 +1122,8 @@ void _processType(_EMS_RxTelegram * EMS_RxTelegram) {
// if its an echo of ourselves from the master UBA, ignore. This should never happen mind you
if (EMS_RxTelegram->src == EMS_ID_ME) {
- _debugPrintTelegram("echo:", EMS_RxTelegram, COLOR_WHITE);
+ if (EMS_Sys_Status.emsLogging == EMS_SYS_LOGGING_JABBER)
+ _debugPrintTelegram("echo:", EMS_RxTelegram, COLOR_WHITE);
return;
}
From a32da99618bfec331b60f78ca48e9659019e10a5 Mon Sep 17 00:00:00 2001
From: Susis Strolch
Date: Mon, 29 Jul 2019 18:12:35 +0200
Subject: [PATCH 3/5] txmode2 / Junkers autodetect
* reduce logs in jabber mode
* disable explicit test for Junkers
* add HT3 document
---
HT3-Bus_Telegramme.html | 7862 +++++++++++++++++++++++++++++++++++++++
src/ems-esp.cpp | 2 +
src/ems.cpp | 13 +-
3 files changed, 7873 insertions(+), 4 deletions(-)
create mode 100644 HT3-Bus_Telegramme.html
diff --git a/HT3-Bus_Telegramme.html b/HT3-Bus_Telegramme.html
new file mode 100644
index 000000000..1a019762c
--- /dev/null
+++ b/HT3-Bus_Telegramme.html
@@ -0,0 +1,7862 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Übersicht
+ Telegramm Übersicht
+ ID 2
+ ID 7
+ ID 6
+ ID 190
+ ID 24
+ ID 25
+ ID 188
+ ID 27
+ ID 51
+ ID 52
+ ID 467...468
+ ID 26
+ ID 268
+ ID 296
+ ID 357...366
+ ID 367...376
+ ID 377...386
+ ID 677...684
+ ID 259
+ ID 260
+ ID 866
+ ID 868
+ ID 873
+ ID 874
+ ID 910
+ ID 913
+ ID 357_366_14_Modem
+ ID 377_387_4_Modem
+ ID 357...366_1x_Modem
+ ID 377...386_x_Modem
+
+
+
+Tabelle 1: Telegramm Übersicht
+
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
|
+
|
+
+
+
|
+
|
+
|
+
|
+
|
+
+
+ | Datum: |
+ 14.10.2016 |
+
|
+
|
+
|
+
+
+ | Version: |
+ 0.2.0 |
+
|
+
|
+
|
+
+
+
|
+
|
+
|
+
|
+
|
+
+
+ | Message-ID |
+ Telegramm(hex) |
+ Beschreibung |
+ Source-Werte (hex) |
+ Bemerkung |
+
+
+
|
+
|
+
|
+ (SO) |
+
|
+
+
+ | 2 |
+ SO TT 02 xy |
+ Software-Version / Busteilnehmer |
+ 88 |
+ TT = <Target-/Token-Nr> |
+
+
+ | 7 |
+ SO 00 07 xy |
+ Steuerung: EMS Token Status |
+ 88 |
+
|
+
+
+ | 6 |
+ SO 00 06 xy |
+ Datum / Zeit |
+ 90 | 98 |
+ Mit 14 und 17 Bytes Länge |
+
+
+ | 190 |
+ TT 00 BE xy |
+ ErrorCode / DisplayCode von Target |
+
|
+ TT = <Target-/Token-Nr> |
+
+
+ | 24 |
+ SO 00 18 xy |
+ Heizgerät: Kesseldaten |
+ 88 |
+ Mit 31 und 33 Bytes Länge |
+
+
+ | 25 |
+ SO 00 19 xy |
+ Heizgerät: Heizungsdaten |
+ 88 |
+
|
+
+
+ | 188 |
+ SO 00 BC xy |
+ Heizgerät: Hybrid (Wärmepumpe) |
+
|
+
|
+
+
+ | 27 |
+ SO 00 1B xy |
+ Sollwert Warmwasser |
+ 90 |
+
|
+
+
+ | 51 |
+ SO 00 33 xy |
+ Warmwasser: Daten von Steuerung |
+ 88 |
+
|
+
+
+ | 52 |
+ SO 00 34 xy |
+ Warmwasser: Daten von Steuerung | IPM |
+ 88 | Ax (x:=0...7) |
+ Mit 22,23 und 25 Bytes Länge |
+
+
+ | 467...468 |
+ SO 00 FF xy 00 D3...D4 |
+ Betriebsart WW-System |
+ 90 |
+
|
+
+
+ | 26 |
+ SO 08 1A xy |
+ Heizkreis: Systemwerte |
+ 90 |
+
|
+
+
+ | 268 |
+ SO 00 FF xy 00 0C |
+ Heizkreis: von IPM1/IPM2 für Mischer |
+ Ax (x:=0...7) |
+
|
+
+
+ | 296 |
+ SO 00 FF xy 00 28 |
+ Heizkreis: Fehlermeldungen |
+ 90 |
+
|
+
+
+ | 357...366 |
+ SO 00 FF xy 00 65...6E |
+ Heizkreis: Bauart1 |
+ 90 |
+
|
+
+
+ | 367...376 |
+ SO 00 FF xy 00 6F...78 |
+ Heizkreis: Temperaturniveau |
+ 90 | 9x (x:=8...F) |
+
|
+
+
+ | 377...386 |
+ SO 00 FF xy 00 79...82 |
+ Heizkreis: Bauart2 |
+ 90 |
+
|
+
+
+ | 677...684 |
+ SO 00 FF xy 01 A5...AC |
+ Heizkreis: Systemwerte |
+ 90 | 98 |
+ Cxyz-Controller (z.B. CW100) |
+
+
+ | 259 |
+ SO 00 FF xy 00 03 |
+ Solar: Solardaten von ISM1 |
+ B0 |
+
|
+
+
+ | 260 |
+ SO 00 FF xy 00 04 |
+ Solar: Solardaten von ISM2 |
+ B0 |
+ Mit 24 und 35 Bytes Länge |
+
+
+ | 866 |
+ SO 00 FF xy 02 62 |
+ Solar: Solardaten von MS100 |
+ B0 |
+ EMS2-Bus |
+
+
+ | 868 |
+ SO 00 FF xy 02 64 |
+ Solar: Solardaten von MS100 |
+ B0 |
+ EMS2-Bus |
+
+
+ | 873 |
+ SO 00 FF xy 02 69 |
+ Solar: Solardaten von MS100 |
+ B0 |
+ EMS2-Bus |
+
+
+ | 874 |
+ SO 00 FF xy 02 6A |
+ Solar: Solardaten von MS100 |
+ B0 |
+ EMS2-Bus |
+
+
+ | 910 |
+ SO 00 FF xy 02 8E |
+ Solar: Solardaten von MS100 |
+ B0 |
+ EMS2-Bus |
+
+
+ | 913 |
+ SO 00 FF xy 02 91 |
+ Solar: Solardaten von MS100 |
+ B0 |
+ EMS2-Bus |
+
+
+ | 357_14...366_14 |
+ SO TA FF 0E 00 65...6E |
+ Modem-CMD: Betriebsart setzen |
+ 8D | C8 |
+ TA = <Target-Nr> |
+
+
+ | 377_4 ...386_4 |
+ SO TA FF 04 00 79...82 |
+ Modem-CMD: Betriebsart setzen |
+ 8D | C8 |
+ TA = <Target-Nr> |
+
+
+ | 357_17...366_17 |
+ SO TA FF 11 00 65...6E |
+ Modem-CMD: Temp-Niveau setzen |
+ 8D | C8 |
+ TA = <Target-Nr> |
+
+
+ | 377_7 ...386_7 |
+ SO TA FF 07 00 79...82 |
+ Modem-CMD: Temp-Niveau setzen |
+ 8D | C8 |
+ TA = <Target-Nr> |
+
+
+
|
+
|
+
|
+
|
+
|
+
+
+ | 1: ( Hi-Byte * 256 + Lo-Byte ) / 10 |
+
|
+ Calculation-Type: 1 |
+
+
+ | 2: ( Byte3 * 65536 + Byte2 * 256 + Byte1 ) |
+
|
+ Calculation-Type: 2 |
+
+
+ | 3: ( Byte4 * 1048576 + Byte3 * 65536 + Byte2 * 256 + Byte1 ) |
+
|
+ Calculation-Type: 3 |
+
+
+ | 4: ( Type 3 ) / 10 |
+
|
+ Calculation-Type: 4 |
+
+
+ | 5: ( Type 3 ) / 1000 |
+
|
+ Calculation-Type: 5 |
+
+
+
+
+Tabelle 2: ID 2
+
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
|
+
+
+
|
+
|
+ Message-ID: 2_x_0 |
+
|
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+ Beispiel (Hex) |
+
+
+
|
+ 16Byte |
+
|
+
|
+
|
+
+
+
|
+
|
+ Telegramm: Software-Version / Busteilnehmer |
+
|
+
|
+
+
+ | 0 |
+ SO |
+
|
+ Source |
+ 88 |
+
+
+ | 1 |
+ TT |
+ <Token-/Target-Nr> (Geräteadr. Ungleich 0) |
+ Target |
+ 18 |
+
+
+ | 2 |
+ 02 |
+
|
+ 2_x_0 |
+ 02 |
+
+
+ | 3 |
+ xy |
+ Telegramm-Offset (hier 0...9). |
+
|
+ 00 |
+
+
+ | 4 |
+ xy |
+ Erste Erkennung Busteilnehmer |
+ 2_0_0 |
+ 5F |
+
+
+
|
+
|
+ - 00 = Variantenerkennung in Betrieb oder fehlerhaft |
+
|
+
|
+
+
+
|
+
|
+ ….. |
+
|
+
|
+
+
+
|
+
|
+ - 5F = Heatronic III |
+
|
+
|
+
+
+
|
+
|
+ - 64 = Schaltmodul IPM1 |
+
|
+
|
+
+
+
|
+
|
+ - 65 = Solarmodul ISM1 |
+
|
+
|
+
+
+
|
+
|
+ - 66 = Schaltmodul IPM2 |
+
|
+
|
+
+
+
|
+
|
+ - 67 = Solarmodul ISM2 |
+
|
+
|
+
+
+
|
+
|
+ - 67 = Solarmodul ISM2 |
+
|
+
|
+
+
+
|
+
|
+ - 69 = Witterungsgeführter Regler FW100 |
+
|
+
|
+
+
+
|
+
|
+ - 6A = Witterungsgeführter Regler FW200 |
+
|
+
|
+
+
+
|
+
|
+ - 6B = Raumtemperaturregler FR100 |
+
|
+
|
+
+
+
|
+
|
+ - 6C = Raumtemperaturregler FR110 |
+
|
+
|
+
+
+
|
+
|
+ - 6D = Fernbedienung FB 10 |
+
|
+
|
+
+
+
|
+
|
+ - 6E = Fernbedienung FB100 |
+
|
+
|
+
+
+
|
+
|
+ - 6F = Raumtemperaturregler FR10 |
+
|
+
|
+
+
+
|
+
|
+ ….. |
+
|
+
|
+
+
+
|
+
|
+ - BD = KM200 |
+
|
+
|
+
+
+
|
+
|
+ - BF = Raumtemperaturregler FR120 |
+
|
+
|
+
+
+
|
+
|
+ - C0 = Witterungsgefuehrter Regler FW120 |
+
|
+
|
+
+
+
|
+
|
+ ….. |
+
|
+
|
+
+
+ | 5 |
+ xy |
+ Software-Familie |
+ 2_1_0 |
+ 22 |
+
+
+ | 6 |
+ xy |
+ Version der Softwarefamilie |
+ 2_2_0 |
+ 04 |
+
+
+ | 7 |
+ xy |
+ Zweite Erkennung Busteilnehmern |
+ 2_3_0 |
+ 00 |
+
+
+ | 8 |
+ xy |
+ Kennzahl f. Grosse Änderung in HW- und SW |
+ 2_4_0 |
+ 00 |
+
+
+ | 9 |
+ xy |
+ Kennzahl f. Kleine Änderung in HW- und SW |
+ 2_5_0 |
+ 00 |
+
+
+ | 10 |
+ xy |
+ Dritte Erkennung Busteilnehmern |
+ 2_6_0 |
+ 00 |
+
+
+ | 11 |
+ xy |
+ Kennzahl f. Kleine Änderung in HW- und SW |
+ 2_7_0 |
+ 00 |
+
+
+ | 12 |
+ xy |
+ Kennzahl f. Grosse Änderung in HW- und SW |
+ 2_8_0 |
+ 00 |
+
+
+ | 13 |
+ xy |
+ Markenidentifizierung |
+ 2_9_0 |
+ 00 |
+
+
+
|
+
|
+ - 00 = keine Markenerkennung |
+
|
+
|
+
+
+
|
+
|
+ - 01 = Bosch |
+
|
+
|
+
+
+
|
+
|
+ - 02 = Junkers |
+
|
+
|
+
+
+
|
+
|
+ - 03 = Buderus |
+
|
+
|
+
+
+
|
+
|
+ ….. |
+
|
+
|
+
+
+ | 14 |
+ <CRC> |
+ CRC |
+
|
+ 63 |
+
+
+ | 15 |
+ <Ende> |
+ Ende |
+
|
+ 00 |
+
+
+
+
+Tabelle 3: ID 7
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID: 7_x_y |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 21Byte |
+
|
+
|
+
+
+
|
+
|
+ EMS Token Status |
+
|
+
+
+ | 0 |
+ SO |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ 07 |
+
|
+ 7_x_y |
+
+
+ | 3 |
+ xy |
+ Telegramm-Offset (hier 0...14). |
+
|
+
+
+ | 4 |
+ Bit0...Bit7 |
+ EMS Token Status 8: EMS Master |
+ 7_0_0 bis |
+
+
+
|
+
|
+ - EMS Token Status 9 … 15 |
+ 7_0_7 |
+
+
+ | 5 |
+ Bit0...Bit7 |
+ EMS Token Status 16 … 23 |
+ 7_1_0 bis |
+
+
+
|
+
|
+
|
+ 7_1_7 |
+
+
+ | 6 |
+ Bit0...Bit7 |
+ Busadresse 24 vorhanden |
+ 7_2_0 bis |
+
+
+
|
+
|
+ - EMS Token Status 25 … 31 |
+ 7_2_7 |
+
+
+ | 7 |
+ Bit0...Bit7 |
+ Busadresse 32:Mischerstellmotor im HK1 vorhanden |
+ 7_3_0 bis |
+
+
+
|
+
|
+ - EMS Token Status 33 … 39 |
+ 7_3_7 |
+
+
+ | 8 |
+ Bit0...Bit7 |
+ Busadresse 40:Warmwassersystem im HK1 vorhanden |
+ 7_4_0 bis |
+
+
+
|
+
|
+ - EMS Token Status 41 … 47 |
+ 7_4_7 |
+
+
+ | 9 |
+ Bit0...Bit7 |
+ Busadresse 48:Solarmodul vorhanden |
+ 7_5_0 bis |
+
+
+
|
+
|
+ - EMS Token Status 49 … 55 |
+ 7_5_7 |
+
+
+ | 10 |
+ Bit0...Bit7 |
+ Busadresse 56:Fernbedienung f. HK1 vorhanden |
+ 7_6_0 bis |
+
+
+
|
+
|
+ - EMS Token Status 57 … 63 |
+ 7_6_7 |
+
+
+ | 11 |
+ Bit0...Bit7 |
+ Busadresse 64:Temperaturfühler im HK1 vorhanden |
+ 7_7_0 bis |
+
+
+
|
+
|
+ - EMS Token Status 65 … 71 |
+ 7_7_7 |
+
+
+ | 12 |
+ Bit0...Bit7 |
+ Status für Busadresse 72...79 |
+ 7_8_0 bis |
+
+
+
|
+
|
+
|
+ 7_8_7 |
+
+
+ | 13 |
+ Bit0...Bit7 |
+ EMS Token Status 80 … 87 |
+ 7_9_0 bis |
+
+
+
|
+
|
+
|
+ 7_9_7 |
+
+
+ | 14 |
+ Bit0...Bit7 |
+ EMS Token Status 88 … 95 |
+ 7_10_0 bis |
+
+
+
|
+
|
+
|
+ 7_10_7 |
+
+
+ | 15 |
+ Bit0...Bit7 |
+ EMS Token Status 96 … 103 |
+ 7_11_0 bis |
+
+
+
|
+
|
+
|
+ 7_11_7 |
+
+
+ | 16 |
+ Bit0...Bit7 |
+ EMS Token Status 104 … 111 |
+ 7_12_0 bis |
+
+
+
|
+
|
+
|
+ 7_12_7 |
+
+
+ | 17 |
+ Bit0...Bit7 |
+ EMS Token Status 112 … 119 (Cascaded EMS) |
+ 7_13_0 bis |
+
+
+
|
+
|
+
|
+ 7_13_7 |
+
+
+ | 18 |
+ Bit0...Bit7 |
+ EMS Token Status 120 … 127 (Cascaded EMS) |
+ 7_14_0 bis |
+
+
+
|
+
|
+
|
+ 7_14_7 |
+
+
+ | 19 |
+ <CRC> |
+ CRC |
+
|
+
+
+ | 20 |
+ <Ende> |
+ Ende Marker |
+
|
+
+
+
+
+Tabelle 4: ID 6
+
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+
|
+ Message-ID:6_x_y |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 14Byte |
+ 17Byte |
+
|
+
|
+
+
+
|
+
|
+
|
+ Datum/Zeit – Telegramm |
+
|
+
+
+ | 0 |
+ 90 | 98 |
+ 90 | 98 |
+ Source :=90h oder :=98h |
+ Source |
+
+
+ | 1 |
+ 00 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ 06 |
+ 06 |
+
|
+ 6_x_y |
+
+
+ | 3 |
+ xy |
+ xy |
+ Telegramm-Offset (hier 0...6|10). |
+
|
+
+
+ | 4 |
+ xy |
+ xy |
+ Jahr (Wert + 2000)dez. |
+ 6_0_0 |
+
+
+ | 5 |
+ xy |
+ xy |
+ Monat (01 … 12)dez. |
+ 6_1_0 |
+
+
+ | 6 |
+ xy |
+ xy |
+ Stunden (00 … 23)dez. |
+ 6_2_0 |
+
+
+ | 7 |
+ xy |
+ xy |
+ Tag (01 … 31)dez. |
+ 6_3_0 |
+
+
+ | 8 |
+ xy |
+ xy |
+ Minute (00 … 59)dez. |
+ 6_4_0 |
+
+
+ | 9 |
+ xy |
+ xy |
+ Sekunde (00 … 59)dez. |
+ 6_5_0 |
+
+
+ | 10 |
+ xy |
+ xy |
+ Wochentag |
+ 6_6_0 |
+
+
+
|
+
|
+
|
+ 01=Montag; 02=Dienstag;... für Fxyz – Regler |
+
|
+
+
+
|
+
|
+
|
+ 00=Montag; 01=Dienstag;... für Cxyz – Regler |
+
|
+
+
+ | 11 |
+ Bit0...Bit7 |
+ Bit0...Bit7 |
+ Uhrstatus |
+
|
+
+
+
|
+ Bit0 |
+ Bit0 |
+ - Sommerzeit |
+ 6_7_0 |
+
+
+
|
+ Bit1 |
+ Bit1 |
+ - Funkempfang vorhanden |
+ 6_7_1 |
+
+
+
|
+ Bit2 |
+ Bit2 |
+ - Funksignal vorhanden |
+ 6_7_2 |
+
+
+
|
+ Bit3...Bit7 |
+ Bit3...Bit7 |
+ - Immer 0 |
+
|
+
+
+ | 12 |
+ <CRC> |
+ xy |
+ Token-Adresse des aktuellen RTC-Owner |
+ 6_8_0 |
+
+
+ | 13 |
+ <Ende> |
+ xy |
+ Automatische Sommer/Winter Umschaltung |
+ 6_9_0 |
+
+
+ | 14 |
+
|
+ xy |
+ RTC Benutzer Kalibierungswert |
+ 6_10_0 |
+
+
+ | 15 |
+
|
+ <CRC> |
+
|
+
|
+
+
+ | 16 |
+
|
+ <Ende> |
+
|
+
|
+
+
+
+
+Tabelle 5: ID 190
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID: 190_x_0 |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 11Byte |
+
|
+
|
+
+
+
|
+
|
+ ErrorCode von Target-/Token |
+
|
+
+
+ | 0 |
+ TT |
+ Target-/Token Nummer |
+ Source |
+
+
+ | 1 |
+ 00 |
+ - 00 = An Alle |
+ Target |
+
+
+ | 2 |
+ BE |
+
|
+ 190_x_0 |
+
+
+ | 3 |
+ 00 |
+ Immer 0 |
+
|
+
+
+ | 4 |
+ xy |
+ Bus-Adresse des Fehlercodes |
+ 190_0_0 |
+
+
+ | 5 |
+ Hi-Byte |
+ Displaycode |
+ 190_1_0 |
+
+
+ | 6 |
+ Lo-Byte |
+
+
+ | 7 |
+ Hi-Byte |
+ Cause Code |
+ 190_3_0 |
+
+
+ | 8 |
+ Lo-Byte |
+
+
+ | 9 |
+ <CRC> |
+ CRC |
+
|
+
+
+ | 10 |
+ <Ende> |
+ Ende Marker |
+
|
+
+
+
+
+Tabelle 6: ID 24
+
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+
|
+ Message-ID:24_x_y |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 31Byte |
+ 33Byte |
+
|
+
|
+
+
+
|
+
|
+
|
+ Kessel-Telegramm: Heizgerät |
+
|
+
+
+ | 0 |
+ 88 |
+ 88 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ 18 |
+ 18 |
+
|
+ 24_x_y |
+
+
+ | 3 |
+ xy |
+ xy |
+ Telegramm-Offset (hier 0...25). |
+
|
+
+
+ | 4 |
+ xy |
+ xy |
+ Vorlauf Soll-Temperatur |
+ 24_0_0 |
+
+
+ | 5 |
+ Hi-Byte |
+ Hi-Byte |
+ Vorlauf Ist-Temperatur |
+ 24_1_0 |
+
+
+ | 6 |
+ Lo-Byte |
+ Lo-Byte |
+
+
+ | 7 |
+ xy |
+ xy |
+ Kessel maximale Leistung (76/84/100; 100)% |
+ 24_3_0 |
+
+
+ | 8 |
+ 0-100 |
+ 0-100 |
+ Aktuelle Brennerleistung in % |
+ 24_4_0 |
+
+
+ | 9 |
+ Bit0...Bit7 |
+ Bitfeld |
+ Betriebsmode |
+
|
+
+
+
|
+ Bit0 |
+ Bit1 |
+ - Heizungs-Mode |
+ 24_5_0 |
+
+
+
|
+ Bit1 |
+ Bit2 |
+ - Warmwasser-Mode |
+ 24_5_1 |
+
+
+
|
+ Bit2 |
+ Bit3:=0 |
+ - Status Servicebetrieb |
+ 24_5_2 |
+
+
+
|
+ Bit3 |
+ Bit4 |
+ - Brennerflamme an |
+ 24_5_3 |
+
+
+
|
+ Bit4 |
+ Bit5:=0 |
+ - Aufheizphase des Wärmeerzeugers |
+ 24_5_4 |
+
+
+
|
+ Bit5 |
+ Bit6:=0 |
+ - Verriegelnder Fehler |
+ 24_5_5 |
+
+
+
|
+ Bit6 |
+ Bit7:=0 |
+ - Blockierender Fehler |
+ 24_5_6 |
+
+
+
|
+ Bit7 |
+ Bit8:=0 |
+ - Status Wartungsanforderung |
+ 24_5_7 |
+
+
+ | 10 |
+ Bit0...Bit7 |
+ Bit0...Bit7 |
+ Status Heizbetrieb |
+
|
+
+
+
|
+ Bit0 |
+ Bit0 |
+ - Heizbetrieb im Bussystem |
+ 24_6_0 |
+
+
+
|
+ Bit1 |
+ Bit1 |
+ - Wärmeanforderung (durch Schalter) |
+ 24_6_1 |
+
+
+
|
+ Bit2 |
+ Bit2 |
+ - Wärmeanforderung bei Betriebsart: Frost |
+ 24_6_2 |
+
+
+
|
+ Bit3 |
+ Bit3 |
+ - Wärmeanforderung im WW-Betrieb bei Betriebsart: Frost |
+ 24_6_3 |
+
+
+
|
+ Bit4 |
+ Bit4 |
+ - Interne Wärmeanforderung bei WW |
+ 24_6_4 |
+
+
+
|
+ Bit5 |
+ Bit5 |
+ - Wärmeanforderung f. WW-Erkennung im Bussystem |
+ 24_6_5 |
+
+
+
|
+ Bit6 |
+ Bit6 |
+ - Wärmeanforderung |
+ 24_6_6 |
+
+
+
|
+ Bit7 |
+ Bit7 |
+ - Wärmeanforderung im Testmodus |
+ 24_6_7 |
+
+
+ | 11 |
+ Bit0...Bit7 |
+ Bit0...Bit7 |
+ Betriebs-Status |
+
|
+
+
+
|
+ Bit0 |
+ Bit0 |
+ - Brenner an (Relais-Signal erste Brennstufe) |
+ 24_7_0 |
+
+
+
|
+ Bit1 |
+ Bit1 |
+ - Brenner an (Relais-Signal zweite Brennstufe) |
+ 24_7_1 |
+
+
+
|
+ Bit2 |
+ Bit2 |
+ - Lüfter an (Relais-Signal f. Lüfter) |
+ 24_7_2 |
+
+
+
|
+ Bit3 |
+ Bit3 |
+ - Zündung an (Relais-Signal f. Zündung) |
+ 24_7_3 |
+
+
+
|
+ Bit4 |
+ Bit4 |
+ - Ölvorwärmer an (Relais-Signal f. Ölvorwärmer) |
+ 24_7_4 |
+
+
+
|
+ Bit5 |
+ Bit5 |
+ - Heizungspumpe an (Relais-Signal f. HP) |
+ 24_7_5 |
+
+
+
|
+ Bit6 |
+ Bit6 |
+ - 3-Wege-Ventil auf Speicherladung |
+ 24_7_6 |
+
+
+
|
+ Bit7 |
+ Bit7 |
+ - Zirkulationspumpe an (Relais-Signal f. ZP) |
+ 24_7_7 |
+
+
+ | 12 |
+ Bit0...Bit7 |
+ Bit0...Bit7 |
+ Status 1 |
+
|
+
+
+
|
+ Bit0 |
+ Bit0 |
+ - Meldesignal Abgasklappe f. Freigabe Ölbrenner |
+ 24_8_0 |
+
+
+
|
+ Bit1 |
+ Bit1 |
+ - Signal vom Luftdruckschalter |
+ 24_8_1 |
+
+
+
|
+ Bit2 |
+ Bit2 |
+ - Signal vom Flüssiggasbrenner |
+ 24_8_2 |
+
+
+
|
+ Bit3 |
+ Bit3 |
+ - Signal vom Gasdruckwächter |
+ 24_8_3 |
+
+
+
|
+ Bit4 |
+ Bit4 |
+ - Signal vom externen Ein-/Aus-Schalter |
+ 24_8_4 |
+
+
+
|
+ Bit5 |
+ Bit5 |
+ - Digitales Eingangssignal |
+ 24_8_5 |
+
+
+
|
+ Bit6 |
+ Bit6 |
+ - Signal vom Sicherheitstemperaturbegrenzer (TB) |
+ 24_8_6 |
+
+
+
|
+ Bit7 |
+ Bit7 |
+ - Signal vom Raumthermostat |
+ 24_8_7 |
+
+
+ | 13 |
+ Hi-Byte |
+ Hi-Byte |
+ WW-Temperatur Speicherfühler1 |
+ 24_9_0 |
+
+
+ | 14 |
+ Lo-Byte |
+ Lo-Byte |
+ - (0x8300 := Nicht vorhanden) |
+
+
+ | 15 |
+ Hi-Byte |
+ Hi-Byte |
+ WW-Temperatur Speicherfühler2 |
+ 24_11_0 |
+
+
+ | 16 |
+ Lo-Byte |
+ Lo-Byte |
+ - (0x8000 | 0x7D00 := Nicht vorhanden) |
+
+
+ | 17 |
+ Hi-Byte |
+ Hi-Byte |
+ Temperatur Kessel-Rücklauf |
+ 24_13_0 |
+
+
+ | 18 |
+ Lo-Byte |
+ Lo-Byte |
+ - (0x8000 | 0x7D00 := Nicht vorhanden) |
+
+
+ | 19 |
+ Hi-Byte |
+ Hi-Byte |
+ Ionisationsstrom |
+ 24_15_0 |
+
+
+ | 20 |
+ Lo-Byte |
+ Lo-Byte |
+
+
+ | 21 |
+ FF |
+ FF |
+ Anlagendruck am Wärmeerzeuger |
+ 24_17_0 |
+
+
+
|
+
|
+
|
+ - (FF := ungültig) |
+
|
+
+
+ | 22 |
+ Hi-Byte |
+ Hi-Byte |
+ Displaycode |
+ 24_18_0 |
+
+
+ | 23 |
+ Lo-Byte |
+ Lo-Byte |
+
+
+ | 24 |
+ Hi-Byte |
+ Hi-Byte |
+ Cause Code |
+ 24_20_0 |
+
+
+ | 25 |
+ Lo-Byte |
+ Lo-Byte |
+
+
+ | 26 |
+ 00 |
+ FF |
+ Warmwasserdurchfluss-Menge |
+ 24_22_0 |
+
+
+
|
+
|
+
|
+ - (FF := ungültig) |
+
+
+ | 27 |
+ Bit0...Bit7 |
+ Bit0...Bit7 |
+ Status 2 |
+
|
+
+
+
|
+ Bit0 |
+ Bit0 |
+ - Status Speicherlade-Pumpe (SP) |
+ 24_23_0 |
+
+
+
|
+ Bit1 |
+ Bit1 |
+ - Flüssiggasventil an |
+ 24_23_1 |
+
+
+
|
+ Bit2 |
+ Bit2 |
+ - Status Gaswärmepumpe |
+ 24_23_2 |
+
+
+
|
+ Bit3 |
+ Bit3 |
+ - Status d. Relais im Schaltmodul UM10 |
+ 24_23_3 |
+
+
+
|
+ Bit4 |
+ Bit4 |
+ - Zirkulationspumpe an (Relais-Signal f. ZP) |
+ 24_23_4 |
+
+
+
|
+ Bit5 |
+ Bit5 |
+ - Status Brenner Relais |
+ 24_23_5 |
+
+
+
|
+ Bit6 |
+ Bit6 |
+ - FB reservierte Bit |
+ 24_23_6 |
+
+
+
|
+ Bit7 |
+ Bit7 |
+ - FB reservierte Bit |
+ 24_23_7 |
+
+
+ | 28 |
+ Bit0...Bit7 |
+ Bit0...Bit7 |
+ Status 3 |
+
|
+
+
+
|
+ Bit0 |
+ Bit0 |
+ - Status der Füllfunktion |
+ 24_24_0 |
+
+
+
|
+ Bit1 |
+ Bit1 |
+ - Status Schaltmodul UM10 |
+ 24_24_1 |
+
+
+
|
+ Bit2 |
+ Bit2 |
+ - UM10 Signal für Brenner-Blockierung |
+ 24_24_2 |
+
+
+
|
+ Bit3 |
+ Bit3 |
+ - Brennerfreigabe durch Schaltmodul |
+ 24_24_3 |
+
+
+
|
+ Bit4 |
+ Bit4 |
+ - Status Brenneranlauf im Schaltmodul |
+ 24_24_4 |
+
+
+
|
+ Bit5 |
+ Bit5 |
+ - Heizbetrieb blockiert bei Heatronic III |
+ 24_24_5 |
+
+
+
|
+ Bit6 |
+ Bit6 |
+ - STB – Test aktiv |
+ 24_24_6 |
+
+
+
|
+ Bit7 |
+ Bit7 |
+ - Tastensperre ein |
+ 24_24_7 |
+
+
+ | 29 |
+ <CRC> |
+ Hi-Byte |
+ CRC | Hi-Byte - Ansauglufttemperatur |
+ xy | 24_25_0 |
+
+
+ | 30 |
+ <Ende> |
+ Lo-Byte |
+ Ende | Lo-Byte - Ansauglufttemperatur |
+
|
+
+
+ | 31 |
+ – |
+ <CRC> |
+ -– | CRC |
+
|
+
+
+ | 32 |
+ – |
+ <Ende> |
+ –- | Ende |
+
|
+
+
+
+
+Tabelle 7: ID 25
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:25_x_0 |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 33Byte |
+
|
+
|
+
+
+
|
+
|
+ Kessel-Telegramm: Heizgerät |
+
|
+
+
+ | 0 |
+ 88 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ 19 |
+
|
+ 25_x_0 |
+
+
+ | 3 |
+ xy |
+ Telegramm-Offset (hier 0...25). |
+
|
+
+
+ | 4 |
+ Hi-Byte |
+ Außentemperatur |
+ 25_0_0 |
+
+
+ | 5 |
+ Lo-Byte |
+
+
+ | 6 |
+ Hi-Byte |
+ Maximale Temperatur |
+ 25_2_0 |
+
+
+ | 7 |
+ Lo-Byte |
+ - 0x8000 = Sensorunterbrechung / Fühler nicht vorhanden |
+
+
+
|
+
|
+ - 0x7FFF = Sensorkurzschluss |
+
|
+
+
+ | 8 |
+ Hi-Byte |
+ Abgastemperatur |
+ 25_4_0 |
+
+
+ | 9 |
+ Lo-Byte |
+ - 0x8000 = Sensorunterbrechung / Fühler nicht vorhanden |
+
+
+
|
+
|
+ - 0x7FFF = Sensorkurzschluss |
+
|
+
+
+ | 10 |
+ Hi-Byte |
+ Gasdruck / Luftdruck |
+ 25_6_0 |
+
+
+ | 11 |
+ Lo-Byte |
+ - 0xFFFF = Sensorunterbrechung / Fühler nicht vorhanden |
+
+
+ | 12 |
+ xy |
+ Taktsperre im Zweipunkt Betrieb |
+ 25_8_0 |
+
+
+ | 13 |
+ xy |
+ Modulationsbereich Heizungspumpe (HP) |
+ 25_9_0 |
+
+
+ | 14 |
+ Byte 3 |
+ Brennerstarts Total (für Warmwasser und Heizung) |
+ 25_10_0 |
+
+
+ | 15 |
+ Byte 2 |
+ „ ( Calculation-Type: 2 ) |
+
+
+ | 16 |
+ Byte 1 |
+ „ |
+
+
+ | 17 |
+ Byte 3 |
+ Betriebsminuten Brenner Total (für Warmwasser und Heizung) |
+ 25_13_0 |
+
+
+ | 18 |
+ Byte 2 |
+ „ ( Calculation-Type: 2 ) |
+
+
+ | 19 |
+ Byte 1 |
+ „ |
+
+
+ | 20 |
+ Byte 3 |
+ Betriebszeit f. Zweite Brennerstufe |
+ 25_16_0 |
+
+
+ | 21 |
+ Byte 2 |
+ „ ( Calculation-Type: 2 ) |
+
+
+ | 22 |
+ Byte 1 |
+ „ |
+
+
+ | 23 |
+ Byte 3 |
+ Betriebsminuten Brenner (nur Heizung) |
+ 25_19_0 |
+
+
+ | 24 |
+ Byte 2 |
+ „ ( Calculation-Type: 2 ) |
+
+
+ | 25 |
+ Byte 1 |
+ „ |
+
+
+ | 26 |
+ Byte 3 |
+ Brennerstarts (nur Heizung) |
+ 25_22_0 |
+
+
+ | 27 |
+ Byte 2 |
+ „ ( Calculation-Type: 2 ) |
+
+
+ | 28 |
+ Byte 1 |
+ „ |
+
+
+ | 29 |
+ Hi-Byte |
+ Temperatur an hydraulischer Weiche |
+ 25_25_0 |
+
+
+ | 30 |
+ Lo-Byte |
+ - 0x8000 = Sensorunterbrechung / Fühler nicht vorhanden |
+
+
+
|
+
|
+ - 0x7FFF = Sensorkurzschluss |
+
|
+
+
+ | 31 |
+ <CRC> |
+ CRC |
+
|
+
+
+ | 32 |
+ <Ende> |
+ Ende Marker |
+
|
+
+
+
+
+Tabelle 8: ID 188
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:188_x_y |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+
|
+
|
+
|
+
+
+
|
+
|
+ Kessel-Telegramm: Heizgerät |
+
|
+
+
+ | 0 |
+ 88 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ BC |
+
|
+ 188_x_y |
+
+
+ | 3 |
+ xy |
+ Telegramm-Offset (hier 0...13). |
+
|
+
+
+ | 4 |
+ Hi-Byte |
+ Temperatur Puffer-Speicher oben |
+ 188_0_0 |
+
+
+ | 5 |
+ Lo-Byte |
+
+
+ | 6 |
+ Hi-Byte |
+ Temperatur Puffer-Speicher unten |
+ 188_2_0 |
+
+
+ | 7 |
+ Lo-Byte |
+
+
+ | 8 |
+ Hi-Byte |
+ Temperatur Vorlauf Verflüssiger |
+ 188_4_0 |
+
+
+ | 9 |
+ Lo-Byte |
+
+
+ | 10 |
+ Hi-Byte |
+ Temperatur Rücklauf Verflüssiger |
+ 188_6_0 |
+
+
+ | 11 |
+ Lo-Byte |
+
+
+ | 12 |
+ Bit0...Bit7 |
+ Betriebs-Status1 |
+
|
+
+
+
|
+ Bit0 |
+ - Wärmepumpe |
+ 188_8_0 |
+
+
+
|
+ Bit1 |
+
|
+ 188_8_1 |
+
+
+
|
+ Bit2 |
+
|
+ 188_8_2 |
+
+
+
|
+ Bit3 |
+
|
+ 188_8_3 |
+
+
+
|
+ Bit4 |
+ - Status Abtaumöglichkeit an W-Pumpe |
+ 188_8_4 |
+
+
+
|
+ Bit5 |
+
|
+ 188_8_5 |
+
+
+
|
+ Bit6 |
+
|
+ 188_8_6 |
+
+
+
|
+ Bit7 |
+
|
+ 188_8_7 |
+
+
+ | 13 |
+ Bit0...Bit7 |
+ Betriebs-Status2 |
+
|
+
+
+
|
+ Bit0 |
+ - Abtaufunktion an W-Pumpe |
+ 188_9_0 |
+
+
+
|
+ Bit1 |
+ - Status Verdichter |
+ 188_9_1 |
+
+
+
|
+ Bit2 |
+ - Fehlerstatus Wärmepumpe |
+ 188_9_2 |
+
+
+
|
+ Bit3 |
+
|
+ 188_9_3 |
+
+
+
|
+ Bit4 |
+
|
+ 188_9_4 |
+
+
+
|
+ Bit5 |
+
|
+ 188_9_5 |
+
+
+
|
+ Bit6 |
+
|
+ 188_9_6 |
+
+
+
|
+ Bit7 |
+
|
+ 188_9_7 |
+
+
+ | 14 |
+ <CRC> |
+ CRC |
+
|
+
+
+ | 15 |
+ <Ende> |
+ Ende |
+
|
+
+
+
+
+Tabelle 9: ID 27
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:27_0_0 |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 7Byte |
+
|
+
|
+
+
+
|
+
|
+ Telegramm: Solltemperatur WW-System |
+
|
+
+
+ | 0 |
+ 90 |
+ |
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ 1B |
+
|
+ 27_x_0 |
+
+
+ | 3 |
+ 00 |
+ Immer 00 |
+
|
+
+
+ | 4 |
+ 32 |
+ Sollwert Warmwasser-Temperatur |
+ 27_0_0 |
+
+
+ | 5 |
+ <CRC> |
+ CRC |
+
|
+
+
+ | 6 |
+ <Ende> |
+ Ende Marker |
+
|
+
+
+
+
+Tabelle 10: ID 51
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID: 51_x_y |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+
|
+
|
+
|
+
+
+
|
+
|
+ Kessel-Telegramm: Warmwasser |
+
|
+
+
+ | 0 |
+ 88 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ 33 |
+
|
+ 51_x_y |
+
+
+ | 3 |
+ xy |
+ Telegramm-Offset (hier 0...12). |
+
|
+
+
+ | 4 |
+ xy |
+ Soll-Temperatur Warmwasser |
+ 51_0_0 |
+
+
+ | 5 |
+ xy |
+
|
+ 51_1_0 |
+
+
+ | 6 |
+ xy |
+ Soll-Temperatur Warmwasser |
+ 51_2_0 |
+
+
+ | 7 |
+ xy |
+ Temperaturhysterese bei T-Soll |
+ 51_3_0 |
+
+
+ | 8 |
+ xy |
+
|
+ 51_4_0 |
+
+
+ | 9 |
+ xy |
+
|
+ 51_5_0 |
+
+
+ | 10 |
+ xy |
+
|
+ 51_6_0 |
+
+
+ | 11 |
+ xy |
+
|
+ 51_7_0 |
+
+
+ | 12 |
+ xy |
+
|
+ 51_8_0 |
+
+
+ | 13 |
+ xy |
+
|
+ 51_9_0 |
+
+
+ | 14 |
+ xy |
+
|
+ 51_10_0 |
+
+
+ | 15 |
+ xy |
+
|
+ 51_11_0 |
+
+
+ | 16 |
+ xy |
+
|
+ 51_12_0 |
+
+
+ | 17 |
+ <CRC> |
+
|
+
|
+
+
+ | 18 |
+ <Ende> |
+
|
+
|
+
+
+
+
+Tabelle 11: ID 52
+
+
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
|
+
|
+
+
+
|
+
|
+
|
+
|
+ Message-ID: 52_x_y |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+
|
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 23Byte |
+ 22Byte |
+ 25Byte |
+
|
+
|
+
+
+
|
+
|
+
|
+
|
+ Kessel-Telegramm: Warmwasser |
+
|
+
+
+ | 0 |
+ 88 |
+ 88 |
+ 88 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+ 00 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ 34 |
+ 34 |
+ 34 |
+
|
+ 52_x_y |
+
+
+ | 3 |
+ xy |
+ xy |
+ xy |
+ Telegramm-Offset (hier 0...17). |
+
|
+
+
+ | 4 |
+ xy |
+ xy |
+ xy |
+ Soll-Temperatur Warmwasser |
+ 52_0_0 |
+
+
+ | 5 |
+ Hi-Byte |
+ Hi-Byte |
+ Hi-Byte |
+ Ist-Temperatur Warmwasser |
+ 52_1_0 |
+
+
+ | 6 |
+ Lo-Byte |
+ Lo-Byte |
+ Lo-Byte |
+ - 0x8000 = Sensorunterbrechung / Fühler nicht vorhanden |
+
+
+
|
+
|
+
|
+
|
+ - 0x7FFF = Sensorkurzschluss |
+
|
+
+
+ | 7 |
+ Hi-Byte |
+ Hi-Byte |
+ Hi-Byte |
+ Ist-Temperatur im Warmwasser - Speicher |
+ 52_3_0 |
+
+
+ | 8 |
+ Lo-Byte |
+ Lo-Byte |
+ Lo-Byte |
+ - 0x8000 = Sensorunterbrechung / Fühler nicht vorhanden |
+
+
+
|
+
|
+
|
+
|
+ - 0x7FFF = Sensorkurzschluss |
+
|
+
+
+ | 9 |
+ Bit0...Bit7 |
+ Bit0...Bit7 |
+ Bit0...Bit7 |
+ Warmwasser-Status |
+
|
+
+
+
|
+ Bit0 |
+ Bit0 |
+ Bit0 |
+ - WW-Bereitung im Normalbetrieb |
+ 52_5_0 |
+
+
+
|
+ Bit1 |
+ Bit1 |
+ Bit1 |
+ - Einmalige Speicher-Ladung |
+ 52_5_1 |
+
+
+
|
+ Bit2 |
+ Bit2 |
+ Bit2 |
+ - Thermische Desinfektion |
+ 52_5_2 |
+
+
+
|
+ Bit3 |
+ Bit3 |
+ Bit3 |
+ - Speicherladung im WW-System |
+ 52_5_3 |
+
+
+
|
+ Bit4 |
+ Bit4 |
+ Bit4 |
+ - Speicherladung im Nachwärmsystem |
+ 52_5_4 |
+
+
+
|
+ Bit5 |
+ Bit5 |
+ Bit5 |
+ - Erreichter Sollwert Warmwasser-Temperatur |
+ 52_5_5 |
+
+
+
|
+ Bit6 |
+ Bit6 |
+ Bit6 |
+ - Warmwasserbetrieb |
+ 52_5_6 |
+
+
+
|
+ Bit7 |
+ Bit7 |
+ Bit7 |
+ - Status f. Art der Warmwasserbereitung |
+ 52_5_7 |
+
+
+
|
+
|
+
|
+
|
+ -- 0 = Warmwasserteilvorrang |
+
|
+
+
+
|
+
|
+
|
+
|
+ -- 1 = Warmwasservorrang |
+
|
+
+
+ | 10 |
+ Bit0...Bit7 |
+ Bit0...Bit7 |
+ Bit0...Bit7 |
+ WW-Fehlersignale |
+
|
+
+
+
|
+ Bit0 |
+ Bit0 |
+ Bit0 |
+ - WW-Temperaturfühler 1 defekt |
+ 52_6_0 |
+
+
+
|
+ Bit1 |
+ Bit1 |
+ Bit1 |
+ - WW-Temperaturfühler 2 defekt |
+ 52_6_1 |
+
+
+
|
+ Bit2 |
+ Bit2 |
+ Bit2 |
+ - WW-System wird nicht aufgeheizt |
+ 52_6_2 |
+
+
+
|
+ Bit3 |
+ Bit3 |
+ Bit3 |
+ - Thermische Desinfektion ist nicht in Betrieb |
+ 52_6_3 |
+
+
+
|
+ Bit4 |
+ Bit4 |
+ Bit4 |
+ - WW ist nicht blockiert |
+ 52_6_4 |
+
+
+
|
+ Bit5...Bit7 |
+ Bit5...Bit7 |
+ Bit5...Bit7 |
+ - Immer 0 |
+ 52_6_5 bis |
+
+
+
|
+
|
+
|
+
|
+
|
+ 52_6_7 |
+
+
+ | 11 |
+ Bit0...Bit7 |
+ Bit0...Bit7 |
+ Bit0...Bit7 |
+ Zirkulationspumpen-Status |
+
|
+
+
+
|
+ Bit0 |
+ Bit0 |
+ Bit0 |
+ - Zirkulationspumpe (ZP) im Normalbetrieb |
+ 52_7_0 |
+
+
+
|
+ Bit1 |
+ Bit1 |
+ Bit1 |
+ - Zirkulationspumpe (ZP) an bei einmaliger Speicherladung |
+ 52_7_1 |
+
+
+
|
+ Bit2 |
+ Bit2 |
+ Bit2 |
+ - Zirkulationspumpe (ZP) an |
+ 52_7_2 |
+
+
+
|
+ Bit3 |
+ Bit3 |
+ Bit3 |
+ - Ansteuersignal f. Zirkulationspumpe (ZP) |
+ 52_7_3 |
+
+
+
|
+ Bit4...Bit7 |
+ Bit4...Bit7 |
+ Bit4...Bit7 |
+ - Immer 0 |
+
|
+
+
+ | 12 |
+ 0...4 |
+ 0...4 |
+ 0...4 |
+ Bauart des Warmwassersystems |
+ 52_8_0 |
+
+
+
|
+
|
+
|
+
|
+ - 0 = ohne Warmwasserbereitung |
+
|
+
+
+
|
+
|
+
|
+
|
+ - 1 = nach Durchlaufprinzip |
+
|
+
+
+
|
+
|
+
|
+
|
+ - 2 = Druckloser Speicher |
+
|
+
+
+
|
+
|
+
|
+
|
+ - 3 = Warmwasser-Speicherprinzip |
+
|
+
+
+
|
+
|
+
|
+
|
+ - 4 = Schichtlade-Speicher |
+
|
+
+
+ | 13 |
+ xy |
+ xy |
+ xy |
+ Aktuelle Wasserduchflussmenge |
+ 52_9_0 |
+
+
+ | 14 |
+ Byte 3 |
+ Byte 3 |
+ Byte 3 |
+ Betriebszeit Warmwasser-Erzeugung (Minuten) |
+ 52_10_0 |
+
+
+ | 15 |
+ Byte 2 |
+ Byte 2 |
+ Byte 2 |
+
+
+ | 16 |
+ Byte 1 |
+ Byte 1 |
+ Byte 1 |
+
+
+ | 17 |
+ Byte 3 |
+ Byte 3 |
+ Byte 3 |
+ Anzahl Brennerstarts für Warmwassererzeugung |
+ 52_13_0 |
+
+
+ | 18 |
+ Byte 2 |
+ Byte 2 |
+ Byte 2 |
+
+
+ | 19 |
+ Byte 1 |
+ Byte 1 |
+ Byte 1 |
+
+
+ | 20 |
+ xy |
+ <CRC> |
+ xy |
+ Modulationsbereich ZP im WW-System 1 |
+ 52_16_0 |
+
+
+ | 21 |
+ <CRC> |
+ <Ende> |
+ Hi-Byte |
+ Hi-Byte Warmwasser Eingangstemperatur |
+ 52_17_0 |
+
+
+ | 22 |
+ <Ende> |
+ -- |
+ Lo-Byte |
+ Lo-Byte Warmwasser Eingangstemperatur |
+
|
+
+
+
|
+
|
+
|
+
|
+ - 0x8000 = Sensorunterbrechung / Fühler nicht vorhanden |
+
|
+
+
+
|
+
|
+
|
+
|
+ - 0x7FFF = Sensorkurzschluss |
+
|
+
+
+ | 23 |
+
|
+
|
+ <CRC> |
+
|
+
|
+
+
+ | 24 |
+
|
+
|
+ <Ende> |
+
|
+
|
+
+
+
+
+Tabelle 12: ID 467...468
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:467_x_0 bis 468_x_0 |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 11Byte |
+
|
+
|
+
+
+
|
+
|
+ Telegramm: Betriebsart WW-System |
+
|
+
+
+ | 0 |
+ 90 |
+ |
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 00 |
+ Immer 00 |
+ EMS Type(H) |
+
+
+ | 5 |
+ D3 / D4 |
+ WW-System |
+
|
+
+
+
|
+
|
+ - D3=WW-System1 |
+ 467_0_0 |
+
+
+
|
+
|
+ - D4=WW-System2 |
+ 468_0_0 |
+
+
+ | 6 |
+ xy |
+ Betriebsart Warmwasser-System |
+
|
+
+
+
|
+
|
+ - 0=Automatikbetrieb f. WW-Speicher |
+
|
+
+
+
|
+
|
+ - 1=Automatikbetrieb b. Kombigerät aktiv |
+
|
+
+
+
|
+
|
+ - 2=Automatikbetrieb b. Kombigerät ausgeschaltet |
+
|
+
+
+
|
+
|
+ - 3=Automatikbetrieb i. Urlaubsmodus f. WW-Speicher |
+
|
+
+
+
|
+
|
+ - 4=Urlaubsfunktion eingeschaltet a. Kombigerät |
+
|
+
+
+
|
+
|
+ - 5=Urlaubsfunktion ausgeschaltet a. Kombigerät |
+
|
+
+
+
|
+
|
+ - 6=Fest eingestellte Speichertemperatur im Urlaubsprogramm |
+
|
+
+
+
|
+
|
+ - 7=Thermische Desinfektion f. WW-Speicher |
+
|
+
+
+
|
+
|
+ - 8=Warmwasser sofort |
+
|
+
+
+
|
+
|
+ - 9=Estrichtrocknung in Betrieb oder angehalten |
+
|
+
+
+ | 7 |
+ xy |
+ Wert f. Temperaturreduzierung bei solarer Unterstuetzung |
+ 467_1_0 bis 468_1_0 |
+
+
+ | 8 |
+ xy |
+ Status der letzten thermischen Desinfektion |
+ 467_2_0 bis 468_2_0 |
+
+
+
|
+
|
+ - 0=Abgeschlossen |
+
|
+
+
+
|
+
|
+ - 1=In Betrieb |
+
|
+
+
+
|
+
|
+ - 2=Abgebrochen |
+
|
+
+
+ | 9 |
+ <CRC> |
+ CRC |
+
|
+
+
+ | 10 |
+ <Ende> |
+ Ende Marker |
+
|
+
+
+
+
+Tabelle 13: ID 26
+
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
|
+
+
+
|
+
|
+ Message-ID:26_x_0 |
+
|
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+ Beispiel (Hex) |
+
+
+
|
+ 11Byte |
+
|
+
|
+
|
+
+
+
|
+
|
+ Telegramm: Heizkreis Systemwerte |
+
|
+
|
+
+
+ | 0 |
+ 90 |
+
|
+ Source |
+
|
+
+
+ | 1 |
+ 08 |
+ Target = Steuerung |
+ Target |
+
|
+
+
+ | 2 |
+ 1A |
+ Immer 1A |
+ 26_x_0 |
+
|
+
+
+ | 3 |
+ xy |
+ Telegramm-Offset (hier 0...4). |
+
|
+
|
+
+
+ | 4 |
+ 26 |
+ Sollwert f. Vorlauftemperatur im Heizkreis |
+ 26_0_0 |
+
|
+
+
+ | 5 |
+ 64 |
+ Maximale Leistung des Wärmeerzeugers |
+ 26_1_0 |
+
|
+
+
+ | 6 |
+ 64 |
+ Sollwert f. Drehzahl der Umwälzpumpe |
+ 26_2_0 |
+
|
+
+
+ | 7 |
+ 0 / FF |
+ Status f. Aufheizen mit hohem Wirkungsgrad |
+ 26_3_0 |
+
|
+
+
+ | 8 |
+ 3 |
+ Betriebsart f. Umwälzpumpe im Energiesparmodus |
+ 26_4_0 |
+
|
+
+
+ | 9 |
+ <CRC> |
+ CRC |
+
|
+
|
+
+
+ | 10 |
+ <Ende> |
+ Ende Marker |
+
|
+
|
+
+
+
+
+Tabelle 14: ID 268
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:268_x_0 |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 14Byte |
+
|
+
|
+
+
+
|
+
|
+ IPM – Telegramm (Schaltmodul) |
+
|
+
+
+ | 0 |
+ A0...A7 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 00 |
+ Immer 00 |
+ EMS Type(H) |
+
+
+ | 5 |
+ 0C |
+ Immer 0C |
+ EMS Type(L) |
+
+
+ | 6 |
+ 0...2 |
+ Bauart des Heizkreises (Mischer ja/nein) |
+
|
+
+
+
|
+
|
+ - 0=Nicht vorhanden |
+
|
+
+
+
|
+
|
+ - 1=Ungemischter Heizkreis |
+ 268_0_0 |
+
+
+
|
+
|
+ - 2=Gemischter Heizkreis |
+ 268_0_1 |
+
+
+ | 7 |
+ 0...1 |
+ Status Heizungspumpe im Heizkreis |
+ 268_1_0 |
+
+
+
|
+
|
+ - 0=Pumpe aus |
+
|
+
+
+
|
+
|
+ - 1=Pumpe Ein |
+
|
+
+
+ | 8 |
+ xy |
+ Mischer Position (Prozentwert) |
+ 268_2_0 |
+
+
+ | 9 |
+ Hi-Byte |
+ Vorlauftemperatur 'Ist' für gemischten Heizkreis |
+ 268_3_0 |
+
+
+ | 10 |
+ Lo-Byte |
+
+
+ | 11 |
+ xy |
+ Sollwert Vorlauftemperatur (Grad) |
+ 268_5_0 |
+
+
+ | 12 |
+ <CRC> |
+ CRC |
+
|
+
+
+ | 13 |
+ <Ende> |
+ Ende Marker |
+
|
+
+
+
+
+Tabelle 15: ID 296
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:296_x_0 |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 32Byte |
+
|
+
|
+
+
+
|
+
|
+ Telegramm: Heizkreis Fehlermeldungen |
+
|
+
+
+ | 0 |
+ 90 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+ Offset auf nächste Fehlermeldung |
+ EMS Offset |
+
+
+ | 4 |
+ 00 |
+ Immer 00 |
+ EMS Type(H) |
+
+
+ | 5 |
+ 28 |
+ Fehler |
+ EMS Type(L) |
+
+
+ | 6 |
+ xy1 |
+ Fehler1: Display-Code1 |
+ 296_0_0 |
+
+
+ | 7 |
+ xy2 |
+ Fehler1: Display-Code2 |
+ 296_1_0 |
+
+
+ | 8 |
+ Hi-Byte |
+ Fehler1: Fehlercode |
+ 296_2_0 |
+
+
+ | 9 |
+ Lo-Byte |
+
|
+
|
+
+
+ | 10 |
+ xy |
+ Fehler1: Jahr (+2000) |
+ 296_4_0 |
+
+
+ | 11 |
+ xy |
+ Fehler1: Monat |
+ 296_5_0 |
+
+
+ | 12 |
+ xy |
+ Fehler1: Stunde |
+ 296_6_0 |
+
+
+ | 13 |
+ xy |
+ Fehler1: Tag |
+ 296_7_0 |
+
+
+ | 14 |
+ xy |
+ Fehler1: Minute |
+ 296_8_0 |
+
+
+ | 15 |
+ Hi-Byte |
+ Fehler1: Minute (Reserviert) |
+ 296_9_0 |
+
+
+ | 16 |
+ Lo-Byte |
+
|
+
|
+
+
+ | 17 |
+ xy |
+ Fehler1: Busadresse |
+ 296_11_0 |
+
+
+ | 18 |
+ xy1 |
+ Fehler2: Display-Code1 |
+ 296_12_0 |
+
+
+ | 19 |
+ xy2 |
+ Fehler2: Display-Code2 |
+ 296_13_0 |
+
+
+ | 20 |
+ Hi-Byte |
+ Fehler2: Fehlercode |
+ 296_14_0 |
+
+
+ | 21 |
+ Lo-Byte |
+
|
+
|
+
+
+ | 22 |
+ xy |
+ Fehler2: Jahr (+2000) |
+ 296_16_0 |
+
+
+ | 23 |
+ xy |
+ Fehler2: Monat |
+ 296_17_0 |
+
+
+ | 24 |
+ xy |
+ Fehler2: Stunde |
+ 296_18_0 |
+
+
+ | 25 |
+ xy |
+ Fehler2: Tag |
+ 296_19_0 |
+
+
+ | 26 |
+ xy |
+ Fehler2: Minute |
+ 296_20_0 |
+
+
+ | 27 |
+ Hi-Byte |
+ Fehler2: Minute (Reserviert) |
+ 296_21_0 |
+
+
+ | 28 |
+ Lo-Byte |
+
|
+
|
+
+
+ | 29 |
+ xy |
+ Fehler2: Busadresse |
+ 296_23_0 |
+
+
+ | 30 |
+ <CRC> |
+ CRC |
+
|
+
+
+ | 31 |
+ <Ende> |
+ Ende Marker |
+
|
+
+
+
+
+Tabelle 16: ID 357...366
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:357_x_0 bis 366_x_0 |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 29Byte |
+
|
+
|
+
+
+
|
+
|
+ Telegramm: Heizkreis Steuerung |
+
|
+
+
+
|
+
|
+ (Bauart des Heizkreises) |
+
|
+
+
+ | 0 |
+ 90 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 00 |
+ Immer 00 |
+ EMS Type(H) |
+
+
+ | 5 |
+ 65...6E |
+ Heizkreis x |
+ EMS Type(L) |
+
+
+
|
+ 65 |
+ 65=Heizkreis1 |
+ 357_0_0 |
+
+
+
|
+ 66 |
+ 66=Heizkreis2 |
+ 358_0_0 |
+
+
+
|
+ 67 |
+ 67=Heizkreis3 |
+ 359_0_0 |
+
+
+
|
+ 68 |
+ 68=Heizkreis4 |
+ 360_0_0 |
+
+
+
|
+ 69 |
+ 69=Heizkreis5 |
+ 361_0_0 |
+
+
+
|
+ 6A |
+ 6A=Heizkreis6 |
+ 362_0_0 |
+
+
+
|
+ 6B |
+ 6B=Heizkreis7 |
+ 363_0_0 |
+
+
+
|
+ 6C |
+ 6C=Heizkreis8 |
+ 364_0_0 |
+
+
+
|
+ 6D |
+ 6D=Heizkreis9 |
+ 365_0_0 |
+
+
+
|
+ 6E |
+ 6E=Heizkreis10 |
+ 366_0_0 |
+
+
+ | 6 |
+ 0...3 |
+ Bauart-Werte |
+ 357_1_0 bis |
+
+
+
|
+
|
+ - 0=Nicht vorhanden |
+ 366_1_0 |
+
+
+
|
+
|
+ - 1=Ungemischter Heizkreis ohne Schaltmodul IPM |
+
|
+
+
+
|
+
|
+ - 2=Ungemischter Heizkreis mit Schaltmodul IPM |
+
|
+
+
+
|
+
|
+ - 3=Gemischter Heizkreis |
+
|
+
+
+ | 7 |
+ 0...2 |
+ Fernbedienung für Heizkreis x |
+
|
+
+
+
|
+
|
+ - 0=Nicht vorhanden |
+
|
+
+
+
|
+
|
+ - 1=Fernbedienung FB 10 |
+
|
+
+
+
|
+
|
+ - 2=Fernbedienung FB100 |
+
|
+
+
+ | 8 |
+ 0...4 |
+ Bauart des Heizkreis x |
+
|
+
+
+
|
+
|
+ - 0=nicht definiert |
+ 357_2_0 bis |
+
+
+
|
+
|
+ - 1=Fußpunkt/Endpunkt |
+ 366_2_0 |
+
+
+
|
+
|
+ - 2=Radiatoren |
+
|
+
+
+
|
+
|
+ - 3=Konvektoren |
+
|
+
+
+
|
+
|
+ - 4=Fußbodenheizung |
+
|
+
+
+ | 9 |
+ z.B. 19 |
+ Fußpunkt für Heizkurve (in Grad) |
+ 357_3_0 bis |
+
+
+
|
+
|
+
|
+ 366_3_0 |
+
+
+ | 10 |
+ z.B. 30 |
+ Endpunkt für Heizkurve (in Grad) |
+ 357_4_0 bis |
+
+
+
|
+
|
+
|
+ 366_4_0 |
+
+
+ | 11 |
+ z.B. 50 |
+ Maximale Vorlauftemperatur (in Grad) für Heizkreis x |
+ 357_5_0 bis |
+
+
+
|
+
|
+
|
+ 366_5_0 |
+
+
+ | 12 |
+
|
+ Raumeinfluss-Faktor (%) im Heizkreis x |
+ 357_6_0 bis |
+
+
+
|
+
|
+
|
+ 366_6_0 |
+
+
+ | 13 |
+ 0...2 |
+ Raumeinfluss im Heizkreis x bei Betriebsart |
+ 357_7_0 bis |
+
+
+
|
+
|
+ - 0=nicht definiert |
+ 366_7_0 |
+
+
+
|
+
|
+ - 1=Normalbetrieb / Sparbetrieb / Frostschutzbetrieb |
+
|
+
+
+
|
+
|
+ - 2=Sparbetrieb / Frostschutzbetrieb |
+
|
+
+
+ | 14 |
+
|
+ Einstellung dauerhafte Raumtemperatur-Korrektur im Heizkreis x |
+ 357_8_0 bis |
+
+
+
|
+
|
+
|
+ 366_8_0 |
+
+
+ | 15 |
+ 0...3 |
+ Betriebsart Raumtemperaturfühler für Heizkreis x |
+ 357_9_0 bis |
+
+
+
|
+
|
+ - 0=nicht definiert |
+ 366_9_0 |
+
+
+
|
+
|
+ - 1=Externer Temperaturfühler |
+
|
+
+
+
|
+
|
+ - 2=Interner Temperaturfühler |
+
|
+
+
+
|
+
|
+ - 3=Temperatur im Sparmodus |
+
|
+
+
+
|
+
|
+
|
+
|
+
+
+ | 16 |
+ 0/FF |
+ Status für Temperaturniveau Frost |
+ 357_10_0 bis |
+
+
+
|
+
|
+ - 0 = Aus |
+ 366_10_0 |
+
+
+
|
+
|
+ - FF = Ein |
+
|
+
+
+ | 17 |
+ z.B. 2B |
+ Abschaltung (Außentemperaturgesteuert) von Heizkreis x |
+ 357_11_0 bis |
+
+
+
|
+
|
+ - (in 0.5 Grad Schritten) |
+ 366_11_0 |
+
+
+ | 18 |
+
|
+ Frostgrenztemperatur für Heizkreis x |
+ 357_12_0 bis |
+
+
+
|
+
|
+ - (in 0.5 Grad Schritten) |
+ 366_12_0 |
+
+
+ | 19 |
+ 0...6 |
+ Aktives Heizprogramm im Heizkreis x |
+ 357_13_0 bis |
+
+
+
|
+
|
+ - 0=nicht definiert |
+ 366_13_0 |
+
+
+
|
+
|
+ - 1-6=Nummer des aktiven Heizprogramms |
+
|
+
+
+
|
+
|
+ - (1:A; 2:=B;3:=C; …) |
+
|
+
+
+ | 20 |
+ 0....4 |
+ Betriebsart für den Heizkreis x |
+ 357_14_0 bis |
+
+
+
|
+
|
+ - 0=nicht definiert |
+ 366_14_0 |
+
+
+
|
+
|
+ - 1=Betrieb im Frostschutzmodus |
+
|
+
+
+
|
+
|
+ - 2=Betrieb im Sparmodus |
+
|
+
+
+
|
+
|
+ - 3=Betrieb im Normalmodus |
+
|
+
+
+
|
+
|
+ - 4=Automatikbetrieb |
+
|
+
+
+ | 21 |
+ z.B. 14 |
+ Temperaturniveau für Betriebsart Frost im Heizkreis x |
+ 357_15_0 bis |
+
+
+
|
+
|
+ - (in 0.5 Grad Schritten) |
+ 366_15_0 |
+
+
+ | 22 |
+ z.B. 28 |
+ Temperaturniveau für Betriebsart Sparen im Heizkreis x |
+ 357_16_0 bis |
+
+
+
|
+
|
+ - (in 0.5 Grad Schritten) |
+ 366_16_0 |
+
+
+ | 23 |
+ z.B. 2B |
+ Temperaturniveau für Betriebsart Normal im Heizkreis x |
+ 357_17_0 bis |
+
+
+
|
+
|
+ - (in 0.5 Grad Schritten) |
+ 366_17_0 |
+
+
+ | 24 |
+ 0...3 |
+ Aufheizgeschwindigkeit für Heizkreis x |
+ 357_18_0 bis |
+
+
+
|
+
|
+ - 0=nicht definiert |
+ 366_18_0 |
+
+
+
|
+
|
+ - 1=Langsam |
+
|
+
+
+
|
+
|
+ - 2=Normal |
+
|
+
+
+
|
+
|
+ - 3=Schnell |
+
|
+
+
+ | 25 |
+ 0...4 |
+ Urlaubsprogramm Betriebsart für Heizkreis x |
+ 357_19_0 bis |
+
+
+
|
+
|
+ - 0=nicht definiert |
+ 366_19_0 |
+
+
+
|
+
|
+ - 1=Betrieb im Frostschutzmodus |
+
|
+
+
+
|
+
|
+ - 2=Betrieb im Sparmodus |
+
|
+
+
+
|
+
|
+ - 3=Betrieb im Normalmodus |
+
|
+
+
+
|
+
|
+ - 4=Automatikbetrieb |
+
|
+
+
+ | 26 |
+
|
+ Optimierungseinfluss für solare Unterstützung im Heizkreis x |
+ 357_20_0 bis |
+
+
+
|
+
|
+ - (in 1 Grad Schritten) |
+ 366_20_0 |
+
+
+ | 27 |
+ <CRC> |
+ CRC |
+
|
+
+
+ | 28 |
+ <Ende> |
+ Ende Marker |
+
|
+
+
+
+
+Tabelle 17: ID 367...376
+
+
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
|
+
|
+
+
+
|
+
|
+
|
+
|
+ Message-ID:367_x_0 bis 376_x_0 |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 17Byte |
+ 14Byte |
+ 9Byte |
+
|
+
|
+
+
+
|
+
|
+
|
+
|
+ Telegramm: Heizkreis Steuerung |
+
|
+
+
+
|
+
|
+
|
+
|
+ (Temperaturniveau für den Heizkreis) |
+
|
+
+
+ | 0 |
+ 90 | 9x |
+ 90 | 9x |
+ 90 | 9x |
+ (wobei: x:= 8...F) |
+ Source |
+
+
+ | 1 |
+ 00 |
+ 00 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+ FF |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+ xy |
+ xy |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 00 |
+ 00 |
+ 00 |
+ Immer 00 |
+ EMS Type(H) |
+
+
+ | 5 |
+ 6F...78 |
+ 6F...78 |
+ 6F...78 |
+ Heizkreis-Zuordnung |
+ EMS Type(L) |
+
+
+
|
+
|
+
|
+
|
+ 6F=Heizkreis1 |
+ 367_0_0 |
+
+
+
|
+
|
+
|
+
|
+ 70=Heizkreis2 |
+ 368_0_0 |
+
+
+
|
+
|
+
|
+
|
+ 71=Heizkreis3 |
+ 369_0_0 |
+
+
+
|
+
|
+
|
+
|
+ 72=Heizkreis4 |
+ 370_0_0 |
+
+
+
|
+
|
+
|
+
|
+ 73=Heizkreis5 |
+ 371_0_0 |
+
+
+
|
+
|
+
|
+
|
+ 74=Heizkreis6 |
+ 372_0_0 |
+
+
+
|
+
|
+
|
+
|
+ 75=Heizkreis7 |
+ 373_0_0 |
+
+
+
|
+
|
+
|
+
|
+ 76=Heizkreis8 |
+ 374_0_0 |
+
+
+
|
+
|
+
|
+
|
+ 77=Heizkreis9 |
+ 375_0_0 |
+
+
+
|
+
|
+
|
+
|
+ 78=Heizkreis10 |
+ 376_0_0 |
+
+
+ | 6 |
+ 0...3 |
+ 0...3 |
+ 0...3 |
+ Betriebsart Heizung: |
+ 367_0_0 bis |
+
+
+
|
+
|
+
|
+
|
+ - 0=nicht definiert |
+ 376_0_0 |
+
+
+
|
+
|
+
|
+
|
+ - 1=Frost |
+
|
+
+
+
|
+
|
+
|
+
|
+ - 2=Sparen |
+
|
+
+
+
|
+
|
+
|
+
|
+ - 3=Heizen |
+
|
+
+
+ | 7 |
+ 0...5 |
+ 0...5 |
+ <CRC> |
+ Betriebsart Heizkreis | | CRC |
+ 367_1_0 bis |
+
+
+
|
+
|
+
|
+
|
+ - 0=nicht definiert |
+ 376_1_0 |
+
+
+
|
+
|
+
|
+ – |
+ - 1=dauernd |
+
|
+
+
+
|
+
|
+
|
+ – |
+ - 2=Automatikbetrieb |
+
|
+
+
+
|
+
|
+
|
+ – |
+ - 3=Urlaub |
+
|
+
+
+
|
+
|
+
|
+ – |
+ - 4=Estrichtrocknung im StandbyModus |
+
|
+
+
+
|
+
|
+
|
+ – |
+ - 5=Estrichtrocknung in Betrieb |
+
|
+
+
+ | 8 |
+ Hi-Byte |
+ Hi-Byte |
+ <Ende> |
+ Soll-Temperatur (HK1 bis HK10) | | Ende Marker |
+ 367_2_0 bis |
+
+
+ | 9 |
+ Lo-Byte |
+ Lo-Byte |
+ – |
+ 376_2_0 |
+
+
+ | 10 |
+ Hi-Byte |
+ Hi-Byte |
+ – |
+ Ist-Temperatur (HK1 bis HK10 vom Regler) |
+ 367_4_0 bis |
+
+
+ | 11 |
+ Lo-Byte |
+ Lo-Byte |
+ – |
+ 376_4_0 |
+
+
+ | 12 |
+ Hi-Byte |
+ <CRC> |
+ – |
+ T-Raum FB10x | CRC |
+ 367_6_0 |
+
+
+ | 13 |
+ Lo-Byte |
+ <Ende> |
+ – |
+ T-Raum FB10x | Ende Marker |
+
|
+
+
+ | 14 |
+ 00 … 07 |
+ – |
+ – |
+ Temperaturwert für solare Unterstützung der Vorlauftemperatur |
+ 367_8_0 |
+
+
+ | 15 |
+ <CRC> |
+ – |
+ – |
+ CRC |
+
|
+
+
+ | 16 |
+ <Ende> |
+ – |
+ – |
+ Ende Marker |
+
|
+
+
+
+
+Tabelle 18: ID 377...386
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:377_x_0 bis 386_x_0 |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 19Byte |
+
|
+
|
+
+
+
|
+
|
+ Telegramm: Heizkreis Steuerung |
+
|
+
+
+ | 0 |
+ 90 |
+ (Bauart des Heizkreises) |
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 00 |
+ Immer 00 |
+ EMS Type(H) |
+
+
+ | 5 |
+ 79...82 |
+ Heizkreis x Kennung |
+ EMS Type(L) |
+
+
+
|
+
|
+ 79=Heizkreis1 |
+ 377_0_0 |
+
+
+
|
+
|
+ 7A=Heizkreis2 |
+ 378_0_0 |
+
+
+
|
+
|
+ 7B=Heizkreis3 |
+ 379_0_0 |
+
+
+
|
+
|
+ 7C=Heizkreis4 |
+ 380_0_0 |
+
+
+
|
+
|
+ 7D=Heizkreis5 |
+ 381_0_0 |
+
+
+
|
+
|
+ 7E=Heizkreis6 |
+ 382_0_0 |
+
+
+
|
+
|
+ 7F=Heizkreis7 |
+ 383_0_0 |
+
+
+
|
+
|
+ 80=Heizkreis8 |
+ 384_0_0 |
+
+
+
|
+
|
+ 81=Heizkreis9 |
+ 385_0_0 |
+
+
+
|
+
|
+ 82=Heizkreis10 |
+ 386_0_0 |
+
+
+ | 6 |
+ 0...3 |
+ Bauart-Werte |
+ 377_0_0 bis |
+
+
+
|
+
|
+ - 0=Nicht vorhanden |
+ 386_0_0 |
+
+
+
|
+
|
+ - 1=Ungemischter Heizkreis ohne Schaltmodul IPM |
+
|
+
+
+
|
+
|
+ - 2=Ungemischter Heizkreis mit Schaltmodul IPM |
+
|
+
+
+
|
+
|
+ - 3=Gemischter Heizkreis |
+
|
+
+
+ | 7 |
+
|
+ Anpassungsfaktor im Heizkreis x |
+ 377_1_0 bis |
+
+
+
|
+
|
+
|
+ 386_1_0 |
+
+
+ | 8 |
+
|
+ Verstärkungsfaktor im Heizkreis x |
+ 377_2_0 bis |
+
+
+
|
+
|
+
|
+ 386_2_0 |
+
+
+ | 9 |
+
|
+ Maximale Vorlauftemperatur im Heizkreis x |
+ 377_3_0 bis |
+
+
+
|
+
|
+
|
+ 386_3_0 |
+
+
+ | 10 |
+ 0...4 |
+ Betriebsart für Heizkreis x |
+ 377_4_0 bis |
+
+
+
|
+
|
+ - 0=nicht definiert |
+ 386_4_0 |
+
+
+
|
+
|
+ - 1=Betrieb im Frostschutzmodus |
+
|
+
+
+
|
+
|
+ - 2=Betrieb im Sparmodus |
+
|
+
+
+
|
+
|
+ - 3=Betrieb im Normalmodus |
+
|
+
+
+
|
+
|
+ - 4=Automatikbetrieb |
+
|
+
+
+ | 11 |
+
|
+ Temperaturniveau bei Betriebsart Frost |
+ 377_5_0 bis |
+
+
+
|
+
|
+ - (in 0.5 Grad Schritten) |
+ 386_5_0 |
+
+
+ | 12 |
+
|
+ Temperaturniveau bei Betriebsart Sparen |
+ 377_6_0 bis |
+
+
+
|
+
|
+ - (in 0.5 Grad Schritten) |
+ 386_6_0 |
+
+
+ | 13 |
+
|
+ Temperaturniveau bei Betriebsart Normal |
+ 377_7_0 bis |
+
+
+
|
+
|
+ - (in 0.5 Grad Schritten) |
+ 386_7_0 |
+
+
+ | 14 |
+
|
+ Urlaubsprogramm Betriebsart für Heizkreis x |
+ 377_8_0 bis |
+
+
+
|
+
|
+ - ( Werte wie bei Byte:10 Betriebsart Heizkreis) |
+ 386_8_0 |
+
+
+ | 15 |
+ 0/FF |
+ Status Optimierungsfunktion im Heizkreis x |
+ 377_9_0 bis |
+
+
+
|
+
|
+ - 0 = Aus |
+ 386_9_0 |
+
+
+
|
+
|
+ - FF = Ein |
+
|
+
+
+ | 16 |
+ 0...6 |
+ Aktiviertes Heizprogramm |
+ 377_10_0 bis |
+
+
+
|
+
|
+ - 0=Nicht definiert |
+ 386_10_0 |
+
+
+
|
+
|
+ - 1-6=Nummer des aktiven Heizprogramms |
+
|
+
+
+
|
+
|
+ - (1=A; 2=B; 3=C; …) |
+
|
+
+
+ | 17 |
+ <CRC> |
+ CRC |
+
|
+
+
+ | 18 |
+ <Ende> |
+ Ende Marker |
+
|
+
+
+
+
+Tabelle 19: ID 677...684
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:677_x_0 bis 684_x_0 |
+
|
+
+
+ | Byte |
+
|
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+
|
+
|
+
|
+
+
+
|
+
|
+ Telegramm: Heizkreis Steuerung |
+
|
+
+
+
|
+
|
+ (Temperaturniveau für den Heizkreis) |
+
|
+
+
+ | 0 |
+ 90 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 01 |
+ Immer 01 |
+ EMS Type(H) |
+
+
+ | 5 |
+ A5...AC |
+ Heizkreis-Zuordnung |
+ EMS Type(L) |
+
+
+
|
+
|
+ A5=Heizkreis1 |
+ 677_0_0 |
+
+
+
|
+
|
+ A6=Heizkreis2 |
+ 678_0_0 |
+
+
+
|
+
|
+ A7=Heizkreis3 |
+ 679_0_0 |
+
+
+
|
+
|
+ A8=Heizkreis4 |
+ 680_0_0 |
+
+
+
|
+
|
+ A9=Heizkreis5 |
+ 681_0_0 |
+
+
+
|
+
|
+ AA=Heizkreis6 |
+ 682_0_0 |
+
+
+
|
+
|
+ AB=Heizkreis7 |
+ 683_0_0 |
+
+
+
|
+
|
+ AC=Heizkreis8 |
+ 684_0_0 |
+
+
+ | 6 |
+ Hi-Byte |
+ Ist-Raumtemperatur (HK1 bis HK8) |
+ 677_0_0 bis |
+
+
+ | 7 |
+ Lo-Byte |
+ 684_0_0 |
+
+
+ | 8 |
+ xy |
+ Status Heizkreis |
+ 6xy_2_0 |
+
+
+ | 9 |
+ xy |
+
|
+ 6xy_3_0 |
+
+
+ | 10 |
+ xy |
+
|
+ 6xy_4_0 |
+
+
+ | 11 |
+ xy |
+
|
+ 6xy_5_0 |
+
+
+ | 12 |
+ xy |
+ Soll-Raumtemperatur (HK1 bis HK8) |
+ 6xy_6_0 |
+
+
+ | 13 |
+ xy |
+
|
+ 6xy_7_0 |
+
+
+ | 14 |
+ Hi-Byte |
+
|
+ 6xy_8_0 |
+
+
+ | 15 |
+ Lo-Byte |
+
|
+
+
+ | 16 |
+ xy |
+
|
+ 6xy_10_0 |
+
+
+ | 17 |
+ xy |
+ Temperatur-Niveau |
+ 6xy_11_0 |
+
+
+ | 18 |
+ xy |
+
|
+ 6xy_12_0 |
+
+
+ | 19 |
+ Hi-Byte |
+
|
+ 6xy_13_0 |
+
+
+ | 20 |
+ Lo-Byte |
+
|
+
+
+ | 21 |
+ Hi-Byte |
+
|
+ 6xy_15_0 |
+
+
+ | 22 |
+ Lo-Byte |
+
|
+
+
+ | 23 |
+ xy |
+
|
+ 6xy_17_0 |
+
+
+ | 24 |
+ xy |
+
|
+ 6xy_18_0 |
+
+
+ | 25 |
+ xy |
+
|
+ 6xy_19_0 |
+
+
+ | 26 |
+ xy |
+
|
+ 6xy_20_0 |
+
+
+ | 27 |
+ xy |
+ Betriebsstatus (HK1 bis HK8) {Auto / Manuell} |
+ 6xy_21_0 |
+
+
+ | 28 |
+ Hi-Byte |
+
|
+ 6xy_22_0 |
+
+
+ | 29 |
+ Lo-Byte |
+
|
+
+
+ | 30 |
+ xy |
+
|
+ 6xy_24_0 |
+
+
+ | 31 |
+ xy |
+
|
+ 6xy_25_0 |
+
+
+ | 32 |
+ xy |
+
|
+ 6xy_26_0 |
+
+
+ | 33 |
+ Hi-Byte |
+
|
+ 6xy_27_0 |
+
+
+ | 34 |
+ Lo-Byte |
+
|
+
+
+ | 35 |
+ xy |
+
|
+ 6xy_29_0 |
+
+
+ | 36 |
+ xy |
+
|
+ 6xy_30_0 |
+
+
+ | 37 |
+ <CRC> |
+ CRC |
+
|
+
+
+ | 38 |
+ <Ende> |
+ Ende Marker |
+
|
+
+
+
+
+Tabelle 20: ID 259
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:259_x_0 |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 21Byte |
+
|
+
|
+
+
+
|
+
|
+ ISM Solar-Telegramm |
+
|
+
+
+ | 0 |
+ B0 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 00 |
+ Immer 00 |
+ EMS Type(H) |
+
+
+ | 5 |
+ 03 |
+ Immer 03 |
+ EMS Type(L) |
+
+
+ | 6 |
+ xy |
+ Optimierungsfaktor WW mit solarer Unterstützung |
+ 259_0_0 |
+
+
+ | 7 |
+ xy |
+ Optimierungsfaktor Heiz. mit solarer Unterstützung |
+ 259_1_0 |
+
+
+ | 8 |
+ Hi-Byte |
+ Solarertrag in der letzten Stunde (Wh) |
+ 259_2_0 |
+
+
+ | 9 |
+ Lo-Byte |
+
+
+ | 10 |
+ Hi-Byte |
+ Solarkollektor1 Temperatur T1 |
+ 259_4_0 |
+
+
+ | 11 |
+ Lo-Byte |
+
+
+ | 12 |
+ Hi-Byte |
+ Solarspeicher Temperatur T2 |
+ 259_6_0 |
+
+
+ | 13 |
+ Lo-Byte |
+
+
+ | 14 |
+ Bit0...Bit7 |
+ Betriebsart Solarpumpe (1. Kollektorfeld) |
+
|
+
+
+
|
+ Bit0 |
+ - Solarpumpe (SP); 0=aus; 1=ein |
+ 259_8_0 |
+
+
+
|
+ Bit1 |
+ - Relaysignal Umwälzpumpe(PE) bei thermischer Desinfektion |
+ 259_8_1 |
+
+
+
|
+ Bit2..Bit7 |
+ - Immer 0 |
+
|
+
+
+ | 15 |
+ Bit0...Bit7 |
+ Solar Systemstatus |
+
|
+
+
+
|
+ Bit0 |
+ - Abschaltung 1.Kollektorfeld bei Stagnation |
+ 259_9_0 |
+
+
+
|
+
|
+ -- 0 =Nein |
+
|
+
+
+
|
+
|
+ -- 1 =Ja (5 Grad Hysterese) |
+
|
+
+
+
|
+ Bit1 |
+ - Status Temperatur bei thermischer Desinfektion |
+ 259_9_1 |
+
+
+
|
+ Bit2 |
+ - Status Solarspeicher |
+ 259_9_2 |
+
+
+
|
+
|
+ -- 0 =Nicht voll geladen |
+
|
+
+
+
|
+
|
+ -- 1 =Voll geladen (2 Grad Hysterese) |
+
|
+
+
+
|
+ Bit3-8 |
+ Immer 0 |
+
|
+
+
+ | 16 |
+ Byte 3 |
+ Laufzeit Solarpumpe (Minuten) |
+
|
+
+
+ | 17 |
+ Byte 2 |
+ „ ( Calculation-Type: 2 ) |
+ 259_10_0 |
+
+
+ | 18 |
+ Byte 1 |
+ „ |
+
|
+
+
+ | 19 |
+ <CRC> |
+ CRC |
+
|
+
+
+ | 20 |
+ <Ende> |
+ Ende Marker |
+
|
+
+
+
+
+Tabelle 21: ID 260
+
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+
|
+ Message-ID:260_x_y |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+
|
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 24Byte |
+ 35Byte |
+
|
+
|
+
+
+
|
+
|
+
|
+ ISM Solar-Telegramm |
+
|
+
+
+ | 0 |
+ B0 |
+ B0 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+ xy |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 00 |
+ 00 |
+ Immer 00 |
+ EMS Type(H) |
+
+
+ | 5 |
+ 04 |
+ 04 |
+ Immer 04 |
+ EMS Type(L) |
+
+
+ | 6 |
+ Hi-Byte T3 |
+ Hi-Byte T3 |
+ Temperatur T3 im Pufferspeicher f. Rücklaufanhebung |
+ 260_0_0 |
+
+
+ | 7 |
+ Lo-Byte T3 |
+ Lo-Byte T3 |
+
+
+ | 8 |
+ Hi-Byte |
+ Hi-Byte |
+ Heizungsrücklauftemperatur |
+ 260_2_0 |
+
+
+ | 9 |
+ Lo-Byte |
+ Lo-Byte |
+
+
+ | 10 |
+ Hi-Byte T5 |
+ Hi-Byte T5 |
+ Temperatur T5 im Pufferspeicher (oben) |
+ 260_4_0 |
+
+
+ | 11 |
+ Lo-Byte T5 |
+ Lo-Byte T5 |
+
+
+ | 12 |
+ Hi-Byte T6 |
+ Hi-Byte T6 |
+ Temperatur T6 im Bereitschaftsspeicher (unten) |
+ 260_6_0 |
+
+
+ | 13 |
+ Lo-Byte T6 |
+ Lo-Byte T6 |
+
+
+ | 14 |
+ Hi-Byte |
+ Hi-Byte |
+ Temperatur 2. Kollektorfeld |
+ 260_8_0 |
+
+
+ | 15 |
+ Lo-Byte |
+ Lo-Byte |
+
+
+ | 16 |
+ Hi-Byte |
+ Hi-Byte |
+ Temperatur TB im Pufferspeicher (oben) |
+ 260_10_0 |
+
+
+ | 17 |
+ Lo-Byte |
+ Lo-Byte |
+
+
+ | 18 |
+ Hi-Byte |
+ Hi-Byte |
+ Temperatur TC im Vorrang-/Nachrangspeicher |
+ 260_12_0 |
+
+
+ | 19 |
+ Lo-Byte |
+ Lo-Byte |
+
+
+ | 20 |
+ Hi-Byte |
+ Hi-Byte |
+ Temperatur am externen Wärmetauscher f. Solarsystem |
+ 260_14_0 |
+
+
+ | 21 |
+ Lo-Byte |
+ Lo-Byte |
+
+
+ | 22 |
+ <CRC> |
+ Bit0...Bit7 |
+ Status 1 |
+
|
+
+
+
|
+
|
+ Bit0 |
+ - Betriebsart Ventil (DWU) f. Rücklaufanhebung |
+ 260_16_0 |
+
+
+
|
+
|
+ Bit1 |
+ - Relaisansteuerung f. Umwälzpumpe Umladesystem |
+ 260_16_1 |
+
+
+
|
+
|
+ Bit2 |
+ - Umwälzpumpe (PA) im 2. Kollektorfeld |
+ 260_16_2 |
+
+
+
|
+
|
+ Bit3 |
+ - Relaisansteuerung f. Umwälzpumpe (PB) Umladesystem |
+ 260_16_3 |
+
+
+
|
+
|
+ Bit4 |
+ - Betriebsart Umwälzpumpe (PC)/Umschaltventil |
+ 260_16_4 |
+
+
+
|
+
|
+ Bit5 |
+ - Betriebsart Umwälzpumpe (PD) im Sekundärkreis |
+ 260_16_5 |
+
+
+
|
+
|
+ Bit6 |
+ - Relaissignal bei Option F |
+ 260_16_6 |
+
+
+
|
+
|
+ Bit7 |
+ - unbenutzt |
+ 260_16_7 |
+
+
+ | 23 |
+ <Ende> |
+ Bit0...Bit7 |
+ Status 2 |
+
|
+
+
+
|
+
|
+ Bit0 |
+ - Ansteuerung Ventil DWU1 f. Rücklaufanhebung |
+ 260_17_0 |
+
+
+
|
+
|
+ Bit1 |
+ - Status maximale Temperatur im Umladespeicher |
+ 260_17_1 |
+
+
+
|
+
|
+ Bit2 |
+ - Status Umwälzpumpe (PA) im 2.Kollektorfeld (Stagnation) |
+ 260_17_2 |
+
+
+
|
+
|
+ Bit3 |
+ - Maximaltemperatur erreicht im WW-Speicher B |
+ 260_17_3 |
+
+
+
|
+
|
+ Bit4 |
+ - WW-Speicher geladen |
+ 260_17_4 |
+
+
+
|
+
|
+ Bit5 |
+ - Testmodus (Speicherladung Vorrangspeicher) |
+ 260_17_5 |
+
+
+
|
+
|
+ Bit6 |
+ - Maximaltemperatur erreicht im WW-Speicher C |
+ 260_17_6 |
+
+
+
|
+
|
+ Bit7 |
+ - Testmodus |
+ 260_17_7 |
+
+
+ | 24 |
+
|
+ Byte 3 |
+ Betriebszeit f. Solarmumpe (PA) im zweiten Kollektorfeld |
+ 260_18_0 |
+
+
+ | 25 |
+
|
+ Byte 2 |
+
+
+ | 26 |
+
|
+ Byte 1 |
+
+
+ | 27 |
+
|
+ Hi-Byte |
+ Zeitintervall f. Überprüfung ob Speicher C geladen wird |
+ 260_21_0 |
+
+
+ | 28 |
+
|
+ Lo-Byte |
+
|
+
|
+
+
+ | 29 |
+
|
+ Hi-Byte |
+ Temperatur TF 1 in Wärmequelle |
+ 260_23_0 |
+
+
+ | 30 |
+
|
+ Lo-Byte |
+
|
+
|
+
+
+ | 31 |
+
|
+ Hi-Byte |
+ Temperatur TF 2 in Wärmesenke |
+ 260_25_0 |
+
+
+ | 32 |
+
|
+ Lo-Byte |
+
|
+
|
+
+
+ | 33 |
+
|
+ <CRC> |
+
|
+
|
+
+
+ | 34 |
+
|
+ <Ende> |
+
|
+
|
+
+
+
+
+Tabelle 22: ID 866
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:866 |
+
|
+
+
+ | Byte |
+
|
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+
|
+
|
+
|
+
+
+
|
+
|
+ MS100 Solar-Telegramm |
+
|
+
+
+ | 0 |
+ B0 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 02 |
+ Immer 02 |
+ EMS Type(H) |
+
+
+ | 5 |
+ 62 |
+ Immer 62 |
+ EMS Type(L) |
+
+
+ | 6 |
+ Hi-Byte |
+ Solarkollektor1 Temperatur |
+ 866_0_0 |
+
+
+ | 7 |
+ Lo-Byte |
+
+
+ | 8 |
+ Hi-Byte |
+ Solarspeicher Temperatur unten |
+ 866_2_0 |
+
+
+ | 9 |
+ Lo-Byte |
+
+
+ | 10 |
+ Hi-Byte |
+ Solarspeicher Temperatur mittlerer Sensor |
+ 866_4_0 |
+
+
+ | 11 |
+ Lo-Byte |
+
+
+ | 12 |
+ Hi-Byte |
+ Solarkollektor2 Temperatur |
+ 866_6_0 |
+
+
+ | 13 |
+ Lo-Byte |
+
+
+ | 14 |
+ Hi-Byte |
+ Solarspeicher Beipass Temperatur |
+ 866_8_0 |
+
+
+ | 15 |
+ Lo-Byte |
+
+
+ | 16 |
+ Hi-Byte |
+ Solarspeicher Beipass Return-Temperatur |
+ 866_10_0 |
+
+
+ | 17 |
+ Lo-Byte |
+
+
+ | 18 |
+ Hi-Byte |
+
|
+ 866_12_0 |
+
+
+ | 19 |
+ Lo-Byte |
+
+
+ | 20 |
+ Hi-Byte |
+
|
+ 866_14_0 |
+
+
+ | 21 |
+ Lo-Byte |
+
+
+ | 22 |
+ Hi-Byte |
+
|
+ 866_16_0 |
+
+
+ | 23 |
+ Lo-Byte |
+
|
+
+
+ | 24 |
+ Hi-Byte |
+
|
+ 866_18_0 |
+
+
+ | 25 |
+ Lo-Byte |
+
|
+
+
+ | 26 |
+ Hi-Byte |
+
|
+ 866_20_0 |
+
+
+ | 27 |
+ Lo-Byte |
+
|
+
+
+ | 28 |
+ Hi-Byte |
+
|
+ 866_22_0 |
+
+
+ | 29 |
+ Lo-Byte |
+
|
+
+
+ | 30 |
+ Hi-Byte |
+
|
+ 866_24_0 |
+
+
+ | 31 |
+ Lo-Byte |
+
|
+
+
+ | 32 |
+ <CRC> |
+
|
+
|
+
+
+ | 33 |
+ <Ende> |
+
|
+
|
+
+
+
+
+Tabelle 23: ID 868
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:868_x_y |
+
|
+
+
+ | Byte |
+
|
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+
|
+
|
+
|
+
+
+
|
+
|
+ MS100 Solar-Telegramm |
+
|
+
+
+ | 0 |
+ B0 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 02 |
+ Immer 02 |
+ EMS Type(H) |
+
+
+ | 5 |
+ 64 |
+ Immer 64 |
+ EMS Type(L) |
+
+
+ | 6 |
+ xy |
+
|
+ 868_0_0 |
+
+
+ | 7 |
+ xy |
+
|
+ 868_1_0 |
+
+
+ | 8 |
+ Bit0...Bit7 |
+
|
+ 868_2_x |
+
+
+
|
+ Bit0 |
+
|
+ 868_2_0 |
+
+
+
|
+ Bit1 |
+
|
+ 868_2_1 |
+
+
+
|
+ Bit2 |
+
|
+ 868_2_2 |
+
+
+
|
+ Bit3 |
+
|
+ 868_2_3 |
+
+
+
|
+ Bit4 |
+
|
+ 868_2_4 |
+
+
+
|
+ Bit5 |
+
|
+ 868_2_5 |
+
+
+
|
+ Bit6 |
+
|
+ 868_2_6 |
+
+
+
|
+ Bit7 |
+
|
+ 868_2_7 |
+
+
+ | 9 |
+ Bit0...Bit7 |
+ Solar Systemstatus |
+ 868_3_x |
+
+
+
|
+ Bit0 |
+ - Abschaltung 1.Kollektorfeld bei Stagnation |
+ 868_3_0 |
+
+
+
|
+
|
+ -- 0 =Nein |
+
|
+
+
+
|
+
|
+ -- 1 =Ja |
+
|
+
+
+
|
+ Bit1 |
+ -- 1 =Solarspeicher maximale Temperatur erreicht |
+ 868_3_1 |
+
+
+
|
+ Bit2 |
+ -- 1 =Solarspeicher minimale Temperatur erreicht |
+ 868_3_2 |
+
+
+
|
+ Bit3 |
+
|
+ 868_3_3 |
+
+
+
|
+ Bit4 |
+
|
+ 868_3_4 |
+
+
+
|
+ Bit5 |
+
|
+ 868_3_5 |
+
+
+
|
+ Bit6 |
+
|
+ 868_3_6 |
+
+
+
|
+ Bit7 |
+
|
+ 868_3_7 |
+
+
+ | 10 |
+ xy |
+
|
+ 868_4_0 |
+
+
+ | 11 |
+ xy |
+
|
+ 868_5_0 |
+
+
+ | 12 |
+ xy |
+
|
+ 868_6_0 |
+
+
+ | 13 |
+ xy |
+
|
+ 868_7_0 |
+
+
+ | 14 |
+ xy |
+
|
+ 868_8_0 |
+
+
+ | 15 |
+ xy |
+ Aktuelle Solarpumpen – Leistung |
+ 868_9_0 |
+
+
+ | 16 |
+ xy |
+
|
+ 868_10_0 |
+
+
+ | 17 |
+ xy |
+ 868_11_0 |
+
+
+ | 18 |
+ xy |
+
|
+ 868_12_0 |
+
+
+ | 19 |
+ xy |
+ 868_13_0 |
+
+
+ | 20 |
+ xy |
+
|
+ 868_14_0 |
+
+
+ | 21 |
+ xy |
+ 868_15_0 |
+
+
+ | 22 |
+ <CRC> |
+
|
+
|
+
+
+ | 23 |
+ <Ende> |
+
|
+
|
+
+
+
+
+Tabelle 24: ID 873
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:873_x_0 |
+
|
+
+
+ | Byte |
+
|
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+
|
+
|
+
|
+
+
+
|
+
|
+ MS100 Solar-Telegramm |
+
|
+
+
+ | 0 |
+ B0 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 02 |
+ Immer 02 |
+ EMS Type(H) |
+
+
+ | 5 |
+ 69 |
+ Immer 69 |
+ EMS Type(L) |
+
+
+ | 6 |
+ Byte 4 |
+ Solarertrag letzte Stunde |
+ 873_0_0 |
+
+
+ | 7 |
+ Byte 3 |
+ „ |
+
+
+ | 8 |
+ Byte 2 |
+ „ ( Calculation-Type: 4 ) |
+
+
+ | 9 |
+ Byte 1 |
+ „ |
+
+
+ | 10 |
+ Byte 4 |
+ Solarertrag aktueller Tag |
+ 873_4_0 |
+
+
+ | 11 |
+ Byte 3 |
+ „ |
+
+
+ | 12 |
+ Byte 2 |
+ „ |
+
+
+ | 13 |
+ Byte 1 |
+ „ |
+
+
+ | 14 |
+ Byte 4 |
+ Solarertrag Summe |
+ 873_8_0 |
+
+
+ | 15 |
+ Byte 3 |
+ „ |
+
+
+ | 16 |
+ Byte 2 |
+ „ |
+
+
+ | 17 |
+ Byte 1 |
+ „ |
+
+
+ | 18 |
+ <CRC> |
+
|
+
|
+
+
+ | 19 |
+ <Ende> |
+
|
+
|
+
+
+
+
+Tabelle 25: ID 874
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:874_x_0 |
+
|
+
+
+ | Byte |
+
|
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+
|
+
|
+
|
+
+
+
|
+
|
+ MS100 Solar-Telegramm |
+
|
+
+
+ | 0 |
+ B0 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 02 |
+ Immer 02 |
+ EMS Type(H) |
+
+
+ | 5 |
+ 6A |
+ Immer 6A |
+ EMS Type(L) |
+
+
+ | 6 |
+ xy |
+
|
+ 874_0_0 |
+
+
+ | 7 |
+ xy |
+
|
+ 874_1_0 |
+
+
+ | 8 |
+ xy |
+
|
+ 874_2_0 |
+
+
+ | 9 |
+ xy |
+
|
+ 874_3_0 |
+
+
+ | 10 |
+ xy |
+
|
+ 874_4_0 |
+
+
+ | 11 |
+ xy |
+
|
+ 874_5_0 |
+
+
+ | 12 |
+ xy |
+
|
+ 874_6_0 |
+
+
+ | 13 |
+ xy |
+
|
+ 874_7_0 |
+
+
+ | 14 |
+ xy |
+
|
+ 874_8_0 |
+
+
+ | 15 |
+ xy |
+
|
+ 874_9_0 |
+
+
+ | 16 |
+ Bit0...Bit7 |
+
|
+ 874_10_x |
+
+
+
|
+ Bit0 |
+
|
+ 874_10_0 |
+
+
+
|
+ Bit1 |
+
|
+ 874_10_1 |
+
+
+
|
+ Bit2 |
+ - Solarpumpe (SP); 0=aus; 1=ein |
+ 874_10_2 |
+
+
+
|
+ Bit3 |
+
|
+ 874_10_3 |
+
+
+
|
+ Bit4 |
+
|
+ 874_10_4 |
+
+
+
|
+ Bit5 |
+
|
+ 874_10_5 |
+
+
+
|
+ Bit6 |
+
|
+ 874_10_6 |
+
+
+
|
+ Bit7 |
+
|
+ 874_10_7 |
+
+
+ | 17 |
+ xy |
+
|
+ 874_11_0 |
+
+
+ | 18 |
+ xy |
+
|
+ 874_12_0 |
+
+
+ | 19 |
+ xy |
+ 874_13_0 |
+
+
+ | 20 |
+ xy |
+
|
+ 874_14_0 |
+
+
+ | 21 |
+ xy |
+ 874_15_0 |
+
+
+ | 22 |
+ <CRC> |
+
|
+
|
+
+
+ | 23 |
+ <Ende> |
+
|
+
|
+
+
+
+
+Tabelle 26: ID 910
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:910_x_0 |
+
|
+
+
+ | Byte |
+
|
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+
|
+
|
+
|
+
+
+
|
+
|
+ MS100 Solar-Telegramm |
+
|
+
+
+ | 0 |
+ B0 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 02 |
+ Immer 02 |
+ EMS Type(H) |
+
+
+ | 5 |
+ 8E |
+ Immer 8E |
+ EMS Type(L) |
+
+
+ | 6 |
+ Byte 4 |
+ Solarertrag letzte Stunde |
+ 910_0_0 |
+
+
+ | 7 |
+ Byte 3 |
+ „ |
+
+
+ | 8 |
+ Byte 2 |
+ „ ( Calculation-Type: 4 ) |
+
+
+ | 9 |
+ Byte 1 |
+ „ |
+
+
+ | 10 |
+ Byte 4 |
+ Solarertrag aktueller Tag |
+ 910_4_0 |
+
+
+ | 11 |
+ Byte 3 |
+ „ |
+
+
+ | 12 |
+ Byte 2 |
+ „ ( Calculation-Type: 5 ) |
+
+
+ | 13 |
+ Byte 1 |
+ „ |
+
+
+ | 14 |
+ Byte 4 |
+ Solarertrag Summe |
+ 910_8_0 |
+
+
+ | 15 |
+ Byte 3 |
+ „ |
+
+
+ | 16 |
+ Byte 2 |
+ „ ( Calculation-Type: 4 ) |
+
+
+ | 17 |
+ Byte 1 |
+ „ |
+
+
+ | 18 |
+ <CRC> |
+
|
+
|
+
+
+ | 19 |
+ <Ende> |
+
|
+
|
+
+
+
+
+Tabelle 27: ID 913
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:913_x_0 |
+
|
+
+
+ | Byte |
+
|
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+
|
+
|
+
|
+
+
+
|
+
|
+ MS100 Solar-Telegramm |
+
|
+
+
+ | 0 |
+ B0 |
+
|
+ Source |
+
+
+ | 1 |
+ 00 |
+
|
+ Target |
+
+
+ | 2 |
+ FF |
+
|
+ EMS Marker |
+
+
+ | 3 |
+ xy |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 02 |
+ Immer 02 |
+ EMS Type(H) |
+
+
+ | 5 |
+ 91 |
+ Immer 91 |
+ EMS Type(L) |
+
+
+ | 6 |
+ Byte 4 |
+ Laufzeit Solarpumpe (Minuten) |
+ 913_0_0 |
+
+
+ | 7 |
+ Byte 3 |
+ „ |
+
+
+ | 8 |
+ Byte 2 |
+ „ ( Calculation-Type: 2 ) |
+
+
+ | 9 |
+ Byte 1 |
+ „ |
+
+
+ | 10 |
+ xy |
+
|
+ 913_4_0 |
+
+
+ | 11 |
+ xy |
+
|
+ 913_5_0 |
+
+
+ | 12 |
+ xy |
+
|
+ 913_6_0 |
+
+
+ | 13 |
+ xy |
+
|
+ 913_7_0 |
+
+
+ | 14 |
+ xy |
+
|
+ 913_8_0 |
+
+
+ | 15 |
+ xy |
+
|
+ 913_9_0 |
+
+
+ | 16 |
+ xy |
+
|
+ 913_10_0 |
+
+
+ | 17 |
+ xy |
+
|
+ 913_11_0 |
+
+
+ | 18 |
+ <CRC> |
+
|
+
|
+
+
+ | 19 |
+ <Ende> |
+
|
+
|
+
+
+
+
+Tabelle 28: ID 357_366_14_Modem
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:357_14_0 bis 366_14_0 |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 9Byte |
+
|
+
|
+
+
+
|
+
|
+ Modem-CMD:: Betriebsart setzen |
+
|
+
+
+ | 0 |
+ 8D |
+ Source: Modem |
+ Source |
+
+
+ | 1 |
+ 10 |
+ Target |
+ Target |
+
+
+ | 2 |
+ FF |
+ EMS-Type |
+ EMS Marker |
+
+
+ | 3 |
+ 0E |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 00 |
+
|
+ EMS Type(H) |
+
+
+ | 5 |
+ 65...6E |
+ Heizkreis x |
+ EMS Type(L) |
+
+
+
|
+
|
+ 65=Heizkreis1 |
+
|
+
+
+
|
+
|
+ 66=Heizkreis2 |
+
|
+
+
+
|
+
|
+ 67=Heizkreis3 |
+
|
+
+
+
|
+
|
+ 68=Heizkreis4 |
+
|
+
+
+
|
+
|
+ 69=Heizkreis5 |
+
|
+
+
+
|
+
|
+ 6A=Heizkreis6 |
+
|
+
+
+
|
+
|
+ 6B=Heizkreis7 |
+
|
+
+
+
|
+
|
+ 6C=Heizkreis8 |
+
|
+
+
+
|
+
|
+ 6D=Heizkreis9 |
+
|
+
+
+
|
+
|
+ 6E=Heizkreis10 |
+
|
+
+
+ | 6 |
+ 0...4 |
+ Heizkreisbetriebsart-Werte |
+ 357_14_0 bis |
+
+
+
|
+
|
+ - 0=Nicht definiert |
+ 366_14_0 |
+
+
+
|
+
|
+ - 1=Betrieb im Frostschutzmodus |
+
|
+
+
+
|
+
|
+ - 2=Betrieb im Sparmodus |
+
|
+
+
+
|
+
|
+ - 3=Betrieb im Normalmodus |
+
|
+
+
+
|
+
|
+ - 4=Automatikbetrieb |
+
|
+
+
+ | 7 |
+ <CRC> |
+ CRC |
+
|
+
+
+ | 8 |
+ <Ende> |
+ Ende Marker |
+
|
+
+
+
+
+Tabelle 29: ID 377_387_4_Modem
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
+
+
|
+
|
+ Message-ID:377_4_0 bis 386_4_0 |
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
+
+
|
+ 9Byte |
+
|
+
|
+
+
+
|
+
|
+ Modem-CMD: Betriebsart setzen |
+
|
+
+
+ | 0 |
+ 8D |
+ Source: Modem |
+ Source |
+
+
+ | 1 |
+ 10 |
+ Target |
+ Target |
+
+
+ | 2 |
+ FF |
+ EMS-Type |
+ EMS Marker |
+
+
+ | 3 |
+ 04 |
+
|
+ EMS Offset |
+
+
+ | 4 |
+ 00 |
+
|
+ EMS Type(H) |
+
+
+ | 5 |
+ 79...82 |
+ Heizkreis x Kennung |
+ EMS Type(L) |
+
+
+
|
+
|
+ 79=Heizkreis1 |
+
|
+
+
+
|
+
|
+ 7A=Heizkreis2 |
+
|
+
+
+
|
+
|
+ 7B=Heizkreis3 |
+
|
+
+
+
|
+
|
+ 7C=Heizkreis4 |
+
|
+
+
+
|
+
|
+ 7D=Heizkreis5 |
+
|
+
+
+
|
+
|
+ 7E=Heizkreis6 |
+
|
+
+
+
|
+
|
+ 7F=Heizkreis7 |
+
|
+
+
+
|
+
|
+ 80=Heizkreis8 |
+
|
+
+
+
|
+
|
+ 81=Heizkreis9 |
+
|
+
+
+
|
+
|
+ 82=Heizkreis10 |
+
|
+
+
+ | 6 |
+ 0...4 |
+ Heizkreisbetriebsart-Werte |
+ 357_4_0 bis |
+
+
+
|
+
|
+ - 0=Nicht definiert |
+ 366_4_0 |
+
+
+
|
+
|
+ - 1=Betrieb im Frostschutzmodus |
+
|
+
+
+
|
+
|
+ - 2=Betrieb im Sparmodus |
+
|
+
+
+
|
+
|
+ - 3=Betrieb im Normalmodus |
+
|
+
+
+
|
+
|
+ - 4=Automatikbetrieb |
+
|
+
+
+ | 7 |
+ <CRC> |
+ CRC |
+
|
+
+
+ | 8 |
+ <Ende> |
+ Ende Marker |
+
|
+
+
+
+
+Tabelle 30: ID 357...366_1x_Modem
+
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
|
+
|
+
+
+
|
+
|
+ Message-ID:357_1x_0 bis 366_1x_0 |
+
|
+
|
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
|
+
|
+
+
+
|
+ 9Byte |
+
|
+ Betriebsart |
+
|
+
|
+
+
+
|
+
|
+ Modem-CMD: Temperatur-Niveau setzen (Betriebsart Normal/Sparen/Frost) |
+ Normal |
+ Sparen |
+ Frost |
+
+
+ | 0 |
+ 8D |
+ Source: Modem |
+ Source |
+ Source |
+ Source |
+
+
+ | 1 |
+ 10 |
+ Target |
+ Target |
+ Target |
+ Target |
+
+
+ | 2 |
+ FF |
+ EMS-Type |
+ EMS Marker |
+ EMS Marker |
+ EMS Marker |
+
+
+ | 3 |
+ 11/10/0F |
+ EMS-Offset |
+ 11 (hex) |
+ 10 (hex) |
+ F (hex) |
+
+
+ | 4 |
+ 00 |
+
|
+ EMS Type(H) |
+ EMS Type(H) |
+ EMS Type(H) |
+
+
+ | 5 |
+ 65...6E |
+ Heizkreis x |
+ EMS Type(L) |
+ EMS Type(L) |
+ EMS Type(L) |
+
+
+
|
+
|
+ 65=Heizkreis1 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 66=Heizkreis2 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 67=Heizkreis3 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 68=Heizkreis4 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 69=Heizkreis5 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 6A=Heizkreis6 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 6B=Heizkreis7 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 6C=Heizkreis8 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 6D=Heizkreis9 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 6E=Heizkreis10 |
+
|
+
|
+
|
+
+
+ | 6 |
+
|
+ Temperaturniveau für Betriebsart: y im Heizkreis x |
+ 357_17_0 bis |
+ 357_16_0 bis |
+ 357_15_0 bis |
+
+
+
|
+
|
+ - (in 0.5 Grad Schritten) |
+ 366_17_0 |
+ 366_16_0 |
+ 366_15_0 |
+
+
+ | 7 |
+ <CRC> |
+ CRC |
+
|
+
|
+
|
+
+
+ | 8 |
+ <Ende> |
+ Ende Marker |
+
|
+
|
+
|
+
+
+
+
+Tabelle 31: ID 377...386_x_Modem
+
+
+
+
+
+
+
+ | HT Bus-Telegramme |
+
|
+
|
+
|
+
+
+
|
+
|
+ Message-ID:377_x_0 bis 386_x_0 |
+
|
+
|
+
|
+
+
+ | Byte |
+ Werte (Hex) |
+ Bemerkung |
+ Bedeutung / ID |
+
|
+
|
+
+
+
|
+ 9Byte |
+
|
+
|
+
|
+
|
+
+
+
|
+
|
+ Modem-CMD: Temperatur-Niveau setzen (Betriebsart Normal/Sparen/Frost) |
+ Normal |
+ Sparen |
+ Frost |
+
+
+ | 0 |
+ 8D |
+ Source: Modem |
+ Source |
+ Source |
+ Source |
+
+
+ | 1 |
+ 10 |
+ Target |
+ Target |
+ Target |
+ Target |
+
+
+ | 2 |
+ FF |
+ EMS-Type |
+ EMS Marker |
+ EMS Marker |
+ EMS Marker |
+
+
+ | 3 |
+ 07/06/05 |
+ EMS-Offset |
+ 7 (hex) |
+ 6 (hex) |
+ 5 (hex) |
+
+
+ | 4 |
+ 00 |
+
|
+ EMS Type(H) |
+ EMS Type(H) |
+ EMS Type(H) |
+
+
+ | 5 |
+ 79...82 |
+ Heizkreis x Kennung |
+ EMS Type(L) |
+ EMS Type(L) |
+ EMS Type(L) |
+
+
+
|
+
|
+ 79=Heizkreis1 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 7A=Heizkreis2 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 7B=Heizkreis3 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 7C=Heizkreis4 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 7D=Heizkreis5 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 7E=Heizkreis6 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 7F=Heizkreis7 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 80=Heizkreis8 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 81=Heizkreis9 |
+
|
+
|
+
|
+
+
+
|
+
|
+ 82=Heizkreis10 |
+
|
+
|
+
|
+
+
+ | 6 |
+ 0...4 |
+ Temperaturniveau für Betriebsart: y im Heizkreis x |
+ 377_7_0 bis |
+ 377_6_0 bis |
+ 377_5_0 bis |
+
+
+
|
+
|
+ - (in 0.5 Grad Schritten) |
+ 386_7_0 |
+ 386_6_0 |
+ 386_5_0 |
+
+
+ | 7 |
+ <CRC> |
+ CRC |
+
|
+
|
+
|
+
+
+ | 8 |
+ <Ende> |
+ Ende Marker |
+
|
+
|
+
|
+
+
+
+
+
+
diff --git a/src/ems-esp.cpp b/src/ems-esp.cpp
index d3468c2e1..b1e27b031 100644
--- a/src/ems-esp.cpp
+++ b/src/ems-esp.cpp
@@ -419,6 +419,8 @@ void showInfo() {
myDebug_P(PSTR(" System logging set to Thermostat only"));
} else if (sysLog == EMS_SYS_LOGGING_SOLARMODULE) {
myDebug_P(PSTR(" System logging set to Solar Module only"));
+ } else if (sysLog == EMS_SYS_LOGGING_JABBER) {
+ myDebug_P(PSTR(" System logging set to Jabber"));
} else {
myDebug_P(PSTR(" System logging set to None"));
}
diff --git a/src/ems.cpp b/src/ems.cpp
index dbe01ac2d..56128df59 100644
--- a/src/ems.cpp
+++ b/src/ems.cpp
@@ -441,7 +441,7 @@ _EMS_SYS_LOGGING ems_getLogging() {
}
void ems_setLogging(_EMS_SYS_LOGGING loglevel) {
- if (loglevel <= EMS_SYS_LOGGING_VERBOSE) {
+ if (loglevel <= EMS_SYS_LOGGING_JABBER) {
EMS_Sys_Status.emsLogging = loglevel;
if (loglevel == EMS_SYS_LOGGING_NONE) {
myDebug_P(PSTR("System Logging set to None"));
@@ -642,7 +642,7 @@ void _ems_sendTelegram() {
// dest
if (EMS_TxTelegram.action == EMS_TX_TELEGRAM_WRITE) {
- EMS_TxTelegram.data[1] = EMS_TxTelegram.dest;
+ EMS_TxTelegram.data[1] = EMS_TxTelegram.dest ^ EMS_Sys_Status.emsIDMask;
} else {
// for a READ or VALIDATE
EMS_TxTelegram.data[1] = (EMS_TxTelegram.dest ^ 0x80 ^ EMS_Sys_Status.emsIDMask); // read has 8th bit set
@@ -756,6 +756,7 @@ void ems_dumpBuffer(const char *prefix, uint8_t *telegram, uint8_t length) {
if (EMS_Sys_Status.emsLogging != EMS_SYS_LOGGING_JABBER)
return;
+/*
// we only care about known devices
if (length) {
uint8_t dev = telegram[0] & 0x7F;
@@ -763,6 +764,7 @@ void ems_dumpBuffer(const char *prefix, uint8_t *telegram, uint8_t length) {
||(dev == 0x01)||(dev == 0x0b)||(dev == 0x10)))
return;
}
+*/
strlcpy(output_str, "(", sizeof(output_str));
strlcat(output_str, COLOR_CYAN, sizeof(output_str));
@@ -796,6 +798,7 @@ void ems_dumpBuffer(const char *prefix, uint8_t *telegram, uint8_t length) {
myDebug(output_str);
}
+
/**
* Entry point triggered by an interrupt in emsuart.cpp
* length is the number of all the telegram bytes up to and including the CRC at the end
@@ -805,7 +808,7 @@ void ems_dumpBuffer(const char *prefix, uint8_t *telegram, uint8_t length) {
void ems_parseTelegram(uint8_t * telegram, uint8_t length) {
static uint32_t _last_emsPollFrequency = 0;
- ems_dumpBuffer("** [DEBUG MODE] ems_parseTelegram: ", telegram, length);
+ ems_dumpBuffer("ems_parseTelegram: ", telegram, length);
/*
* check if we just received a single byte
* it could well be a Poll request from the boiler for us, which will have a value of 0x8B (0x0B | 0x80)
@@ -927,7 +930,7 @@ void ems_parseTelegram(uint8_t * telegram, uint8_t length) {
// if we are in raw logging mode then just print out the telegram as it is
// but still continue to process it
- if (EMS_Sys_Status.emsLogging == EMS_SYS_LOGGING_RAW) {
+ if ((EMS_Sys_Status.emsLogging == EMS_SYS_LOGGING_RAW)) {
_debugPrintTelegram("", &EMS_RxTelegram, COLOR_WHITE, true);
}
@@ -1915,9 +1918,11 @@ void _process_Version(_EMS_RxTelegram * EMS_RxTelegram) {
* Do a read command for the version with the src having the MSB set
*/
void _ems_detectJunkers() {
+#ifdef JUNKERS_DETECT
char s[30] = {0};
snprintf(s, sizeof(s), "%02X %02X %02X 00 %02X", (EMS_ID_ME | 0x80), (EMS_ID_BOILER | 0x080), EMS_TYPE_Version, EMS_MAX_TELEGRAM_LENGTH);
ems_sendRawTelegram(s);
+#endif
}
/*
From 573ebcffeb910c2931870391ff1eb8d19515c4aa Mon Sep 17 00:00:00 2001
From: Susis Strolch
Date: Mon, 29 Jul 2019 21:35:22 +0200
Subject: [PATCH 4/5] txstatus: remove all references and settings
---
src/ems-esp.cpp | 11 --------
src/ems.cpp | 19 --------------
src/emsuart.cpp | 68 +------------------------------------------------
3 files changed, 1 insertion(+), 97 deletions(-)
diff --git a/src/ems-esp.cpp b/src/ems-esp.cpp
index b1e27b031..0e0ae8c3c 100644
--- a/src/ems-esp.cpp
+++ b/src/ems-esp.cpp
@@ -1147,8 +1147,6 @@ bool FSCallback(MYESP_FSACTION action, const JsonObject json) {
EMSESP_Status.shower_alert = json["shower_alert"];
EMSESP_Status.publish_time = json["publish_time"] | DEFAULT_PUBLISHTIME;
- ems_setTxMode(json["tx_mode"]);
-
EMSESP_Status.listen_mode = json["listen_mode"];
ems_setTxDisabled(EMSESP_Status.listen_mode);
@@ -1170,8 +1168,6 @@ bool FSCallback(MYESP_FSACTION action, const JsonObject json) {
json["shower_alert"] = EMSESP_Status.shower_alert;
json["publish_time"] = EMSESP_Status.publish_time;
json["heating_circuit"] = EMSESP_Status.heating_circuit;
- json["tx_mode"] = ems_getTxMode();
-
return true;
}
@@ -1300,12 +1296,6 @@ bool SettingsCallback(MYESP_FSACTION action, uint8_t wc, const char * setting, c
myDebug_P(PSTR("Error. Usage: set heating_circuit <1 | 2>"));
}
}
-
- // tx delay/ tx mode
- if (((strcmp(setting, "tx_mode") == 0) || (strcmp(setting, "tx_delay") == 0)) && (wc == 2)) {
- ems_setTxMode(atoi(value));
- ok = true;
- }
}
if (action == MYESP_FSACTION_LIST) {
@@ -1332,7 +1322,6 @@ bool SettingsCallback(MYESP_FSACTION action, uint8_t wc, const char * setting, c
myDebug_P(PSTR(" shower_timer=%s"), EMSESP_Status.shower_timer ? "on" : "off");
myDebug_P(PSTR(" shower_alert=%s"), EMSESP_Status.shower_alert ? "on" : "off");
myDebug_P(PSTR(" publish_time=%d"), EMSESP_Status.publish_time);
- myDebug_P(PSTR(" tx_mode=%d"), ems_getTxMode());
}
return ok;
diff --git a/src/ems.cpp b/src/ems.cpp
index 56128df59..3b1422e4b 100644
--- a/src/ems.cpp
+++ b/src/ems.cpp
@@ -235,7 +235,6 @@ void ems_init() {
EMS_Sys_Status.emsTxDisabled = false;
EMS_Sys_Status.emsPollFrequency = 0;
EMS_Sys_Status.txRetryCount = 0;
- EMS_Sys_Status.emsTxMode = 0;
EMS_Sys_Status.emsIDMask = 0x00;
EMS_Sys_Status.emsPollAck[0] = EMS_ID_ME;
@@ -356,24 +355,6 @@ bool ems_getPoll() {
return EMS_Sys_Status.emsPollEnabled;
}
-void ems_setTxMode(uint8_t mode) {
- EMS_Sys_Status.emsTxMode = mode;
-
- // special case for Junkers. If tx_mode is 3 then set the reverse poll flag
- // https://github.com/proddy/EMS-ESP/issues/103#issuecomment-495945850
- if (mode == 3) {
- EMS_Sys_Status.emsIDMask = 0x80;
- myDebug_P(PSTR("Forcing emsReverse for Junkers"));
- } else {
- EMS_Sys_Status.emsIDMask = 0x00;
- }
- EMS_Sys_Status.emsPollAck[0] = EMS_ID_ME ^ EMS_Sys_Status.emsIDMask;
-}
-
-uint8_t ems_getTxMode() {
- return EMS_Sys_Status.emsTxMode;
-}
-
bool ems_getEmsRefreshed() {
return EMS_Sys_Status.emsRefreshed;
}
diff --git a/src/emsuart.cpp b/src/emsuart.cpp
index a0bb11411..834718524 100644
--- a/src/emsuart.cpp
+++ b/src/emsuart.cpp
@@ -171,36 +171,6 @@ void ICACHE_FLASH_ATTR emsuart_start() {
ETS_UART_INTR_ENABLE();
}
-/*
- * Send a BRK signal
- * Which is a 11-bit set of zero's (11 cycles)
- */
-void ICACHE_FLASH_ATTR emsuart_tx_brk() {
- uint32_t tmp;
-
- // must make sure Tx FIFO is empty
- while (((USS(EMSUART_UART) >> USTXC) & 0xFF) != 0)
- ;
-
- tmp = ((1 << UCRXRST) | (1 << UCTXRST)); // bit mask
- USC0(EMSUART_UART) |= (tmp); // set bits
- USC0(EMSUART_UART) &= ~(tmp); // clear bits
-
- // To create a 11-bit we set TXD_BRK bit so the break signal will
- // automatically be sent when the tx fifo is empty
- tmp = (1 << UCBRK);
- GPIO_H(TX_MARK_MASK);
- USC0(EMSUART_UART) |= (tmp); // set bit
-
- if (EMS_Sys_Status.emsTxMode <= 1) { // classic mode and ems+ (0, 1)
- delayMicroseconds(EMSUART_TX_BRK_WAIT);
- } else if (EMS_Sys_Status.emsTxMode == 3) { // junkers mode
- delayMicroseconds(EMSUART_TX_WAIT_BRK - EMSUART_TX_LAG); // 1144 (11 Bits)
- }
-
- USC0(EMSUART_UART) &= ~(tmp); // clear bit
- GPIO_L(TX_MARK_MASK);
-}
/*
* Send to Tx, ending with a
@@ -210,35 +180,7 @@ _EMS_TX_STATUS ICACHE_FLASH_ATTR emsuart_tx_buffer(uint8_t * buf, uint8_t len) {
ems_dumpBuffer("emsuart_tx_buffer: ", buf, len); // validate and transmit the EMS buffer, excluding the BRK
if (len) {
LA_PULSE(50);
- // temp code until we get mode 2 working without resets
- if (EMS_Sys_Status.emsTxMode == 0) { // classic mode logic
- for (uint8_t i = 0; i < len; i++) {
- TX_PULSE(EMSUART_BIT_TIME / 4);
- USF(EMSUART_UART) = buf[i];
- }
- emsuart_tx_brk(); // send
- } else if (EMS_Sys_Status.emsTxMode == 1) { // With extra tx delay for EMS+
- for (uint8_t i = 0; i < len; i++) {
- TX_PULSE(EMSUART_BIT_TIME / 4);
- USF(EMSUART_UART) = buf[i];
- delayMicroseconds(EMSUART_TX_BRK_WAIT); // https://github.com/proddy/EMS-ESP/issues/23#
- }
- emsuart_tx_brk(); // send
- } else if (EMS_Sys_Status.emsTxMode == 3) { // Junkers logic by @philrich
- for (uint8_t i = 0; i < len; i++) {
- TX_PULSE(EMSUART_BIT_TIME / 4);
- USF(EMSUART_UART) = buf[i];
-
- // just to be safe wait for tx fifo empty (needed?)
- while (((USS(EMSUART_UART) >> USTXC) & 0xff) != 0)
- ;
-
- // wait until bits are sent on wire
- delayMicroseconds(EMSUART_TX_WAIT_BYTE - EMSUART_TX_LAG + EMSUART_TX_WAIT_GAP);
- }
- emsuart_tx_brk(); // send
- } else if (EMS_Sys_Status.emsTxMode == 2) {
- /*
+ /*
*
* based on code from https://github.com/proddy/EMS-ESP/issues/103 by @susisstrolch
* we emit the whole telegram, with Rx interrupt disabled, collecting busmaster response in FIFO.
@@ -321,14 +263,6 @@ _EMS_TX_STATUS ICACHE_FLASH_ATTR emsuart_tx_buffer(uint8_t * buf, uint8_t len) {
}
ETS_UART_INTR_ENABLE(); // receive anything from FIFO...
}
- }
return result;
}
-/*
- * Send the Poll (our own ID) to Tx as a single byte and end with a
- * *** moved to ems.cpp, renamed to ems_tx_pollAck
-void ICACHE_FLASH_ATTR emsuart_tx_poll() {
- static uint8_t buf[1] = {EMS_ID_ME ^ EMS_Sys_Status.emsIDMask};
-}
- */
\ No newline at end of file
From 53f3f44ae2dd97ff1ec87d9679802830d5357139 Mon Sep 17 00:00:00 2001
From: Susis Strolch
Date: Wed, 31 Jul 2019 11:17:36 +0200
Subject: [PATCH 5/5] hunting the Software Watchdog restart
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
° unconditionaly show the last reset reason on telnet connect
° trying to enable stack trace also for Software watchdog events
° add wtdfeed() to MyESP loop
---
lib/MyESP/MyESP.cpp | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/lib/MyESP/MyESP.cpp b/lib/MyESP/MyESP.cpp
index 6d0077954..6d64cf284 100644
--- a/lib/MyESP/MyESP.cpp
+++ b/lib/MyESP/MyESP.cpp
@@ -188,6 +188,8 @@ void MyESP::_wifiCallback(justwifi_messages_t code, char * parameter) {
// start OTA
ArduinoOTA.begin(); // moved to support esp32
myDebug_P(PSTR("[OTA] listening to %s.local:%u"), ArduinoOTA.getHostname().c_str(), OTA_PORT);
+ // unconditionaly show the last reset reason
+ myDebug_P(PSTR("[SYSTEM] Last reset info: %s"), (char *)ESP.getResetInfo().c_str());
// MQTT Setup
_mqtt_setup();
@@ -1005,9 +1007,10 @@ bool MyESP::_rtcmemStatus() {
}
switch (reason) {
- //case REASON_EXT_SYS_RST: // external system reset
- case REASON_WDT_RST: // hardware watch dog reset
- case REASON_DEFAULT_RST: // normal startup by power on
+ //case REASON_EXT_SYS_RST: // external system reset
+ case REASON_WDT_RST: // hardware watch dog reset
+ case REASON_DEFAULT_RST: // normal startup by power on
+ case REASON_SOFT_WDT_RST: // Software watchdog
readable = false;
break;
default:
@@ -2159,12 +2162,14 @@ void MyESP::loop() {
return; // quit if in the middle of an OTA update
}
+ ESP.wdtFeed(); // feed the watchdog...
_calculateLoad();
_systemCheckLoop();
_heartbeatCheck();
_bootupSequence();
webServer.handleClient();
_telnetHandle();
+ ESP.wdtFeed(); // feed the watchdog...
_mqttConnect();
yield(); // ...and breath