HM-CC-SCD Nachbau mit CCS811 möglich?

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

Benutzeravatar
EdgarWollust
Beiträge: 2
Registriert: 30.01.2019, 18:17
Wohnort: Dresden

HM-CC-SCD Nachbau mit CCS811 möglich?

Beitrag von EdgarWollust » 04.05.2019, 20:27

Hallo liebe gemeinde,

wie der Titel es schon vermuten lässt, habe ich mir beim freundlichen Chinamann ein paar solcher ( CCS811) Sensoren bestellt
und wäre daran interessiert, diese als HM-CC-SCD nachzubauen. Als reine Arduino-Modul-Kombination bekomme ich werte, aber leider wurde das AskSin++-Projekt ja nur für einen Potentialfreien vorgesehen. Daher meine Frage, gibt es eine möglichkeit, besagten Sensor, welcher mittels I2C funktioniert, einzubinden in das AskSin++-Projekt? Leider stehen mir hierfür (noch) nicht genügend Programmierkenntnisse zur verfügung.

Vielen Dank im Voraus,
Euer Edgar.

Svenson
Beiträge: 21
Registriert: 26.09.2017, 21:57

Re: HM-CC-SCD Nachbau mit CCS811 möglich?

Beitrag von Svenson » 22.02.2021, 13:56

Hallo zusammen,

ich packe diesen Thread mal wieder aus, weil ich mir die gleiche Frage gestellt haben.
Aufgrund dessen habe ich mal versucht den Sensor hier einzubinden.
Vielen Dank an die großartige Vorarbeit von Jerome.
Die Idee dahinter war den CO2 ppm Wert auszuwerten und gemäß der Logik in der Vorlage in zwei boolsche Variablen zu schreiben.
Ich bekomme das Gerät in Homematic auch angezeigt und kann auch Einstellungen vornehmen.
Die Verdrahtung erfolgt SCL auf A5 und SDA auf A4, sowie Wake auf GND.

Ein Langzeittest steht noch aus, ebenso ob der Status richtig in Homematic übertragen wird. - Das konnte ich tatsächlich noch nicht sehen, weil ich es nicht geschafft habe den Sensor so zu manipulieren, dass er dauerhaft einen schlechten Wert anzeigt.
(Plastiktüte drüber und mit dem Strohhalm Ausatemluft reinblasen hält nicht so lange an.)

Beste Grüße
Svenson

Code: Alles auswählen

//- -----------------------------------------------------------------------------------------------------------------------
// AskSin++
// 2016-10-31 papa Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
// 2021-02-21 Sensor ccs811 shalfen V 1.0
//- -----------------------------------------------------------------------------------------------------------------------

// define this to read the device id, serial and device type from bootloader section
// #define USE_OTA_BOOTLOADER

#define CFG_STEPUP_BYTE 0x00
#define CFG_STEPUP_OFF  0x00
#define CFG_STEPUP_ON   0x01

#define CFG_BAT_LOW_BYTE 0x01
#define CFG_BAT_CRITICAL_BYTE 0x02

//Die I2C Adresse ist definitiv 0x5A

// define device configuration bytes
#define DEVICE_CONFIG CFG_STEPUP_OFF,22,19

// 24 0030 4D455130323134373633 80 910101

#define EI_NOTEXTERNAL
#include <EnableInterrupt.h>
#include <AskSinPP.h>
#include <LowPower.h>
#include "Adafruit_CCS811.h"
#include "ccs811.h"
#include <Wire.h>
#include <Register.h>
#include <ContactState.h>
#include <ThreeState.h>

// nWAKE not controlled via Arduino host, so connect CCS811.nWAKE to GND
CCS811 ccs811;
// we use a Pro Mini
// Arduino pin for the LED
// D4 == PIN 4 on Pro Mini
#define LED1_PIN 4
#define LED2_PIN 5
// Arduino pin for the config button
// B0 == PIN 8 on Pro Mini
#define CONFIG_BUTTON_PIN 8
// SENS1 SENS2
//   0    0 = normal
//   0    1 = erhöht
//   1    0 = stark erhöht
bool SENS1;
bool SENS2;
int CO2;
// number of available peers per channel
#define PEERS_PER_CHANNEL 10
#define CYCLETIME seconds2ticks(60UL * 60 * 16)
// all library classes are placed in the namespace 'as'
using namespace as;
// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
  {0x13, 0x56, 0x34},     // Device ID
  "JPCCSCD001",           // Device Serial
  {0x00, 0x56},           // Device Model
  0x10,                   // Firmware Version
  as::DeviceType::ThreeStateSensor, // Device Type
  {0x01, 0x00}            // Info Bytes
};
class BatSensor : public BatterySensorUni<17,7,3000> {
  bool m_Extern;
public:
  // sense pin = A3 = 17, activation pin = D7 = 7
  BatSensor () : BatterySensorUni(), m_Extern(false) {}
  virtual ~BatSensor () {}

  void hasStepUp (bool value) {
    m_Extern = value;
    voltage();
  }
};
// * Configure the used hardware
// */
typedef AvrSPI<10, 11, 12, 13> SPIType;
typedef Radio<SPIType, 2> RadioType;
typedef DualStatusLed<LED2_PIN, LED1_PIN> LedType;
typedef AskSin<LedType, BatSensor, RadioType> BaseHal;
class Hal : public BaseHal {
  public:
    void init (const HMID& id) {
      BaseHal::init(id);
      // measure battery every 1h
      battery.init(seconds2ticks(60UL * 60), sysclock);
    }
} hal;
DEFREGISTER(Reg0, DREG_INTKEY, DREG_CYCLICINFOMSG, MASTERID_REGS, DREG_TRANSMITTRYMAX)
class RHSList0 : public RegList0<Reg0> {
  public:
    RHSList0(uint16_t addr) : RegList0<Reg0>(addr) {}
    void defaults () {
      clear();
      cycleInfoMsg(true);
      transmitDevTryMax(6);
    }
};
DEFREGISTER(Reg1, CREG_AES_ACTIVE, CREG_MSGFORPOS, CREG_EVENTDELAYTIME, CREG_LEDONTIME, CREG_TRANSMITTRYMAX)
class RHSList1 : public RegList1<Reg1> {
  public:
    RHSList1 (uint16_t addr) : RegList1<Reg1>(addr) {}
    void defaults () {
      clear();
      msgForPosA(1);
      msgForPosB(2);
      msgForPosC(3);
      ledOntime(100);
      transmitTryMax(6);
    }
};
typedef ThreeStateChannel<Hal, RHSList0, RHSList1, DefList4, PEERS_PER_CHANNEL> ChannelType;
class RHSType : public ThreeStateDevice<Hal, ChannelType, 1, RHSList0, CYCLETIME> {
  public:
    typedef ThreeStateDevice<Hal, ChannelType, 1, RHSList0, CYCLETIME> TSDevice;
    RHSType(const DeviceInfo& info, uint16_t addr) : TSDevice(info, addr) {}
    virtual ~RHSType () {}
virtual void configChanged () {
    TSDevice::configChanged();
    // set battery low/critical values
    battery().low(getConfigByte(CFG_BAT_LOW_BYTE));
    battery().critical(getConfigByte(CFG_BAT_CRITICAL_BYTE));
    // set the battery mode
    if( getConfigByte(CFG_STEPUP_BYTE) == CFG_STEPUP_ON ) {
      DPRINTLN("Use StepUp");
      battery().hasStepUp(true);
    }
  }
};
RHSType sdev(devinfo, 0x20);
ConfigButton<RHSType> cfgBtn(sdev);
void setup () {  
  DINIT(57600, ASKSIN_PLUS_PLUS_IDENTIFIER);
  sdev.init(hal);
  buttonISR(cfgBtn, CONFIG_BUTTON_PIN);
  const uint8_t posmap[4] = {Position::State::PosC, Position::State::PosC, Position::State::PosB, Position::State::PosA};
  sdev.channel(1).init(SENS1,SENS2,posmap);
  // Set frequency for CC1101
  hal.radio.initReg(CC1101_FREQ2, 0x21);
  hal.radio.initReg(CC1101_FREQ1, 0x65);
  hal.radio.initReg(CC1101_FREQ0, 0x7A);
  sdev.initDone();
  //Beginn CCS811
  //Serial.begin(9600);
  Serial.begin(57600);
  Serial.println("");
  Serial.println("setup: Starting CCS811 basic demo");
  Serial.print("setup: ccs811 lib  version: "); Serial.println(CCS811_VERSION);
  // Enable I2C
  Wire.begin();
  // Enable CCS811
  ccs811.set_i2cdelay(50); // Needed for ESP8266 because it doesn't handle I2C clock stretch correctly
  bool ok= ccs811.begin();
  if( !ok ) Serial.println("setup: CCS811 begin FAILED");
  // Print CCS811 versions
  Serial.print("setup: hardware    version: "); Serial.println(ccs811.hardware_version(),HEX);
  Serial.print("setup: bootloader  version: "); Serial.println(ccs811.bootloader_version(),HEX);
  Serial.print("setup: application version: "); Serial.println(ccs811.application_version(),HEX);
  // Start measuring
  ok= ccs811.start(CCS811_MODE_1SEC);
  if( !ok ) Serial.println("setup: CCS811 start FAILED");
}
void loop() {
  // Read
  uint16_t eco2, etvoc, errstat, raw;
  ccs811.read(&eco2,&etvoc,&errstat,&raw);
  CO2 = (eco2);
   //grün --> alles OK < 800 ppm
   //gelb --> CO2 Wert > 800 ppm
   //rot --> CO2 Wert > 1000 ppm
    if (CO2<800) {
      SENS1 = false;
      SENS2 = false;}
    if (CO2>800&&CO2<1000) {
        SENS1 = false;
        SENS2 = true;}
    if (CO2>1000) {
          SENS1 = true;
          SENS2 = false;}
  bool worked = hal.runready();
  bool poll = sdev.pollRadio();
}

jp112sdl
Beiträge: 8129
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 447 Mal
Danksagung erhalten: 1010 Mal
Kontaktdaten:

Re: HM-CC-SCD Nachbau mit CCS811 möglich?

Beitrag von jp112sdl » 22.02.2021, 14:32

Svenson hat geschrieben:
22.02.2021, 13:56
ebenso ob der Status richtig in Homematic übertragen wird.
Wird er nicht.

Code: Alles auswählen

sdev.channel(1).init(SENS1,SENS2,posmap);
initialisiert Hardware-I/O-Pins. Anschließend wird zyklisch der Status der Pins abgefragt und bei Änderung des Pegels H/L entsprechend eine Meldung gesendet.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

PN sind deaktiviert!

Svenson
Beiträge: 21
Registriert: 26.09.2017, 21:57

Re: HM-CC-SCD Nachbau mit CCS811 möglich?

Beitrag von Svenson » 22.02.2021, 14:44

Hallo Jerome,

Vielen Dank für die schnelle Antwort. Bestünde die Möglichkeit mittels digitalWrite() die Pins auf High und Low zu heben?
Bzw. zwei andere Pins auf High und Low zu haben und auf Pin14 und Pin15 zu verdrahten?

Danke und Grüße Svenson

jp112sdl
Beiträge: 8129
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 447 Mal
Danksagung erhalten: 1010 Mal
Kontaktdaten:

Re: HM-CC-SCD Nachbau mit CCS811 möglich?

Beitrag von jp112sdl » 22.02.2021, 17:44

Das ist alles nur von hinten durch die Brust.
Sinnvoller wäre es, eine eigene PinPosition Klasse zu bauen.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

PN sind deaktiviert!

Svenson
Beiträge: 21
Registriert: 26.09.2017, 21:57

Re: HM-CC-SCD Nachbau mit CCS811 möglich?

Beitrag von Svenson » 22.02.2021, 19:04

Ich versuche mich mal daran. Ich mache das ja aus dem Grund weil ich etwas lernen will. Deswegen finde ich es per se super, dass Du Hinweise gibst und nicht eine fertige Lösung vorgibst. Vielen Dank!

jp112sdl
Beiträge: 8129
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 447 Mal
Danksagung erhalten: 1010 Mal
Kontaktdaten:

Re: HM-CC-SCD Nachbau mit CCS811 möglich?

Beitrag von jp112sdl » 22.02.2021, 19:19

Ist ja nicht so, dass ich nicht auch schon den "einfachen" Weg gegangen bin und einfach einen Ausgang- auf einen Eingang-Pin gebrückt habe :mrgreen:

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

PN sind deaktiviert!

Svenson
Beiträge: 21
Registriert: 26.09.2017, 21:57

Re: HM-CC-SCD Nachbau mit CCS811 möglich?

Beitrag von Svenson » 28.02.2021, 18:00

Code: Alles auswählen

// AskSin++
// 2016-10-31 papa Creative Commons - http://creativecommons.org/licenses/by-nc-sa/3.0/de/
// 2021-02-27 Sensor ccs811 shalfen V 1.2
//- -----------------------------------------------------------------------------------------------------------------------
                

// define this to read the device id, serial and device type from bootloader section
// #define USE_OTA_BOOTLOADER

#define CFG_STEPUP_BYTE 0x00
#define CFG_STEPUP_OFF  0x00
#define CFG_STEPUP_ON   0x01

#define CFG_BAT_LOW_BYTE 0x01
#define CFG_BAT_CRITICAL_BYTE 0x02

//Die I2C Adresse ist definitiv 0x5A

// define device configuration bytes
#define DEVICE_CONFIG CFG_STEPUP_OFF,22,19

// 24 0030 4D455130323134373633 80 910101

#define EI_NOTEXTERNAL
#include <EnableInterrupt.h>
#include <AskSinPP.h>
//Vermutung, das ist der Batterie Scheiss den ich nicht brauche
#include <LowPower.h>
#include "Adafruit_CCS811.h"
#include "ccs811.h"
#include <Wire.h>
#include <Register.h>
#include <ContactState.h>
#include <ThreeState.h>

// nWAKE not controlled via Arduino host, so connect CCS811.nWAKE to GND
CCS811 ccs811;
// we use a Pro Mini
// Arduino pin for the LED
// D4 == PIN 4 on Pro Mini
#define LED1_PIN 4
#define LED2_PIN 5
// Arduino pin for the config button
// B0 == PIN 8 on Pro Mini
#define CONFIG_BUTTON_PIN 8
// SENS1 SENS2
//   0    0 = normal
//   0    1 = erhöht
//   1    0 = stark erhöht
#define SENS1_PIN 14
#define SENS2_PIN 15
int CO2;
// number of available peers per channel
#define PEERS_PER_CHANNEL 10
#define CYCLETIME seconds2ticks(60UL * 60 * 16)

// all library classes are placed in the namespace 'as'
using namespace as;

// define all device properties
const struct DeviceInfo PROGMEM devinfo = {
  {0x13, 0x56, 0x34},     // Device ID
  "JPCCSCD001",           // Device Serial
  {0x00, 0x56},           // Device Model
  0x10,                   // Firmware Version
  as::DeviceType::ThreeStateSensor, // Device Type
  {0x01, 0x00}            // Info Bytes
};
class BatSensor : public BatterySensorUni<17,7,3000> {
  bool m_Extern;
public:
  // sense pin = A3 = 17, activation pin = D7 = 7
  BatSensor () : BatterySensorUni(), m_Extern(false) {}
  virtual ~BatSensor () {}
  void hasStepUp (bool value) {
    m_Extern = value;
    voltage();
  }
};
// * Configure the used hardware
// */
typedef AvrSPI<10, 11, 12, 13> SPIType;
typedef Radio<SPIType, 2> RadioType;
typedef DualStatusLed<LED2_PIN, LED1_PIN> LedType;
typedef AskSin<LedType, BatSensor, RadioType> BaseHal;
class Hal : public BaseHal {
  public:
    void init (const HMID& id) {
      BaseHal::init(id);
      // measure battery every 1h
      battery.init(seconds2ticks(60UL * 60), sysclock);
    }
} hal;
DEFREGISTER(Reg0, DREG_INTKEY, DREG_CYCLICINFOMSG, MASTERID_REGS, DREG_TRANSMITTRYMAX)
class SCDList0 : public RegList0<Reg0> {
  public:
    SCDList0(uint16_t addr) : RegList0<Reg0>(addr) {}
    void defaults () {
      clear();
      cycleInfoMsg(true);
      transmitDevTryMax(6);
    }
};
DEFREGISTER(Reg1, CREG_AES_ACTIVE, CREG_MSGFORPOS, CREG_EVENTDELAYTIME, CREG_LEDONTIME, CREG_TRANSMITTRYMAX)
class SCDList1 : public RegList1<Reg1> {
  public:
    SCDList1 (uint16_t addr) : RegList1<Reg1>(addr) {}
    void defaults () {
      clear();
      msgForPosA(1);
      msgForPosB(2);
      msgForPosC(3);
      ledOntime(100);
      transmitTryMax(6);
    }
};
typedef ThreeStateChannel<Hal, SCDList0, SCDList1, DefList4, PEERS_PER_CHANNEL> ChannelType;
class SCDType : public ThreeStateDevice<Hal, ChannelType, 1, SCDList0, CYCLETIME> {
  public:
    typedef ThreeStateDevice<Hal, ChannelType, 1, SCDList0, CYCLETIME> TSDevice;
    SCDType(const DeviceInfo& info, uint16_t addr) : TSDevice(info, addr) {}
    virtual ~SCDType () {}
virtual void configChanged () {
    TSDevice::configChanged();
    // set battery low/critical values
    battery().low(getConfigByte(CFG_BAT_LOW_BYTE));
    battery().critical(getConfigByte(CFG_BAT_CRITICAL_BYTE));
    // set the battery mode
    if( getConfigByte(CFG_STEPUP_BYTE) == CFG_STEPUP_ON ) {
      DPRINTLN("Use StepUp");
      battery().hasStepUp(true);
    }
  }
};
SCDType sdev(devinfo, 0x20);
ConfigButton<SCDType> cfgBtn(sdev);
void setup () {  
  DINIT(57600, ASKSIN_PLUS_PLUS_IDENTIFIER);
  sdev.init(hal);
  buttonISR(cfgBtn, CONFIG_BUTTON_PIN);
  const uint8_t posmap[4] = {Position::State::PosC, Position::State::PosC, Position::State::PosB, Position::State::PosA};
  sdev.channel(1).init(SENS1_PIN,SENS2_PIN,posmap);
  // Set frequency for CC1101
  hal.radio.initReg(CC1101_FREQ2, 0x21);
  hal.radio.initReg(CC1101_FREQ1, 0x65);
  hal.radio.initReg(CC1101_FREQ0, 0xBA);
  sdev.initDone();
  //Beginn CCS811
  //Serial.begin(9600);
  Serial.begin(57600);
  Serial.println("");
  Serial.println("setup: Starting CCS811 basic demo");
  Serial.print("setup: ccs811 lib  version: "); Serial.println(CCS811_VERSION);
  // Enable I2C
  Wire.begin();
  // Enable CCS811
  ccs811.set_i2cdelay(50); // Needed for ESP8266 because it doesn't handle I2C clock stretch correctly
  bool ok= ccs811.begin();
  if( !ok ) Serial.println("setup: CCS811 begin FAILED");
  // Print CCS811 versions
  Serial.print("setup: hardware    version: "); Serial.println(ccs811.hardware_version(),HEX);
  Serial.print("setup: bootloader  version: "); Serial.println(ccs811.bootloader_version(),HEX);
  Serial.print("setup: application version: "); Serial.println(ccs811.application_version(),HEX);
  // Start measuring
  ok= ccs811.start(CCS811_MODE_1SEC);
  if( !ok ) Serial.println("setup: CCS811 start FAILED");
  pinMode(16, OUTPUT);
  pinMode(17, OUTPUT);
}
void loop() {
  // Read
  uint16_t eco2, etvoc, errstat, raw;
  ccs811.read(&eco2,&etvoc,&errstat,&raw);
  CO2 = (eco2);
//  Serial.print("CCS811: ");
//    Serial.print("eco2=");  Serial.print(eco2);     Serial.print(" ppm  ");
//    Serial.print("etvoc="); Serial.print(etvoc);    Serial.print(" ppb  ");
//      Serial.print("CO2: ");
//      Serial.print(eco2);
//      Serial.print("ppm, TVOC: ");
//      Serial.print(etvoc);
//      Serial.print(" CO2 Ausw: ");
//      Serial.print(CO2);
//      Serial.println();
   //grün --> alles OK < 800 ppm
   //gelb --> CO2 Wert > 800 ppm
   //rot --> CO2 Wert > 1000 ppm
    if (CO2<800) {
      digitalWrite(16, LOW);
      digitalWrite(17, LOW);
     }
    if (CO2>800&&CO2<1000) {
      digitalWrite(16, LOW);
      digitalWrite(17, HIGH);
        }
    if (CO2>1000) {
      digitalWrite(16, HIGH);
      digitalWrite(17, LOW);
          }
  bool worked = hal.runready();
  bool poll = sdev.pollRadio();
}
So, jetzt habe ich tatsächlich nach einigen Tagen und probieren die von Hinten durch die Brust ins Auge Variante "Elektroniker Style" gewählt und
schreibe PIN16 (A2) und PIN17(A3) und habe diese verdrahtet auf PIN14 (A0) und PIN15(A1). Das funktioniert auch soweit ganz prima, wenn sich der CO2 Wert erhöht dann schickt der Sensor jetzt auch was raus. Nur, Es ändert sich der Status in Homematic nicht. Ich habe noch einen originalen HM-CC-SCD und da finde ich im CCU-Historian den Status (State). Bei der Selbstbau Variante dagegen nicht. Oder liegt das an der Filterzeit (600 Sekunden)?

jp112sdl
Beiträge: 8129
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 447 Mal
Danksagung erhalten: 1010 Mal
Kontaktdaten:

Re: HM-CC-SCD Nachbau mit CCS811 möglich?

Beitrag von jp112sdl » 28.02.2021, 18:26

Svenson hat geschrieben:
28.02.2021, 18:00
Es ändert sich der Status in Homematic nicht.
Klassiker: "Gesicherte Übertragung" auf "Standard" umgestellt?
Wird denn (im seriellen Monitor ersichtlich) überhaupt ein Telegramm gesendet?

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

PN sind deaktiviert!

Svenson
Beiträge: 21
Registriert: 26.09.2017, 21:57

Re: HM-CC-SCD Nachbau mit CCS811 möglich?

Beitrag von Svenson » 28.02.2021, 19:12

Im seriellen Monitor kann ich sehen das etwas gesendet bzw. empfangen wird:
18:46:04.638 -> debounce
18:46:04.638 -> CCS811: eco2=1458 ppm etvoc=161 ppb CO2: 1458ppm, TVOC: 161 CO2 Ausw: 1458
18:46:04.638 -> released
18:46:04.684 -> <- 1A 4B 80 00 135634 2529A4 10 00 56 4A 50 43 43 53 43 44 30 30 31 80 01 01 00 - 4114313
18:46:04.822 ->
18:46:04.822 -> -> 10 73 A0 01 123ABC 135634 00 04 00 00 00 00 00 - 4114454
18:46:04.962 -> <- 18 73 80 10 135634 123ABC 02 02 01 09 01 0A 25 0B 29 0C A4 14 06 00 00 - 4114581
18:46:05.103 -> CCS811: eco2=493 ppm etvoc=14 ppb CO2: 493ppm, TVOC: 14 CO2 Ausw: 493
18:46:05.103 -> -> 10 74 A0 01 123ABC 135634 01 04 00 00 00 00 01 - 4114720
18:46:05.195 -> <- 16 74 80 10 135634 123ABC 02 08 01 20 7A 21 00 22 64 30 06 00 00 - 4114849

Im Homematic Log finde ich folgendes:
Feb 28 18:46:04 homematic-ccu2-Sven user.debug rfd: RX for JPCCSCD001: @3921628557 RSSI=-56dB 0x135634 -> 0x2529A4 SYSINFO [CCU2GW0001]: CNT=75,RPTEN=1,RPTED=0,BIDI=0,BURST=0,WAKEUP=0,WAKEMEUP=0,BCAST=0,TYPE=0x00 SYSINFO_SWVER = 0x10 SYSINFO_TYPE = 0x0056 SYSINFO_SERIAL = JPCCSCD001 SYSINFO_CODE = 0x8001 SYSINFO_CH_A = 1 SYSINFO_CH_B = 0
Feb 28 18:46:04 homematic-ccu2-Sven user.debug multimac: C> @111941274: #117 LLMAC RX @ 3646ms -96dBm 4B 80 00 13 56 34 25 29 A4 10 00 56 4A 50 43 43 53 43 44 30 30 31 80 01 01 00
Feb 28 18:46:04 homematic-ccu2-Sven user.debug multimac: Bidcos RX: #4B[Ren] 135634->2529A4 Sysinfo SN=JPCCSCD001 Type=0x0056/0x3180CH=
Feb 28 18:46:04 homematic-ccu2-Sven user.debug multimac: GetAckActionForIncomingTelegram(): Unknown peer, AckAction_NotForUs
Feb 28 18:46:04 homematic-ccu2-Sven user.debug multimac: A<: #60 HmBidcos RxTelegram AuthNone #4B[Ren] 135634->2529A4 Sysinfo SN=JPCCSCD001 Type=0x0056/0x3180CH=
Feb 28 18:46:04 homematic-ccu2-Sven user.debug rfd: (CCU2GW0001) Response status: OK, Data.
Feb 28 18:46:04 homematic-ccu2-Sven user.debug rfd: Sysinfo received by CCU2GW0001 while not in install mode:JPCCSCD001 (HM-CC-SCD)
Feb 28 18:46:04 homematic-ccu2-Sven user.debug rfd: Saving device JPCCSCD001
Feb 28 18:46:04 homematic-ccu2-Sven user.debug rfd: RX for JPCCSCD001: @3921628825 RSSI=-63dB 0x135634 -> 0x123ABC INFO_PARAM_RESPONSE_PAIRS [CCU2GW0001]: CNT=115,RPTEN=1,RPTED=0,BIDI=0,BURST=0,WAKEUP=0,WAKEMEUP=0,BCAST=0,TYPE=0x10 DATA = 02 01 09 01 0A 25 0B 29 0C A4 14 06 00 00
Feb 28 18:46:04 homematic-ccu2-Sven user.debug multimac: C> @111941542: #118 LLMAC RX @ 3915ms -93dBm 73 80 10 13 56 34 12 3A BC 02 02 01 09 01 0A 25 0B 29 0C A4 14 06 00 00
Feb 28 18:46:04 homematic-ccu2-Sven user.debug multimac: Bidcos RX: #73[Ren] 135634->123ABC Info: 02 02 01 09 01 0A 25 0B 29 0C A4 14 06 00 00
Feb 28 18:46:04 homematic-ccu2-Sven user.debug multimac: GetAckActionForIncomingTelegram(): Unknown peer, AckAction_NotForUs
Feb 28 18:46:04 homematic-ccu2-Sven user.debug multimac: A<: #62 HmBidcos RxTelegram AuthNone #73[Ren] 135634->123ABC Info: 02 02 01 09 01 0A 25 0B 29 0C A4 14 06 00 00
Feb 28 18:46:05 homematic-ccu2-Sven user.debug rfd: RX for JPCCSCD001: @3921629096 RSSI=-62dB 0x135634 -> 0x123ABC INFO_PARAM_RESPONSE_PAIRS [CCU2GW0001]: CNT=116,RPTEN=1,RPTED=0,BIDI=0,BURST=0,WAKEUP=0,WAKEMEUP=0,BCAST=0,TYPE=0x10 DATA = 08 01 20 7A 21 00 22 64 30 06 00 00
Feb 28 18:46:05 homematic-ccu2-Sven user.debug multimac: C> @111941813: #119 LLMAC RX @ 4186ms -92dBm 74 80 10 13 56 34 12 3A BC 02 08 01 20 7A 21 00 22 64 30 06 00 00
Feb 28 18:46:05 homematic-ccu2-Sven user.debug multimac: Bidcos RX: #74[Ren] 135634->123ABC Info: 02 08 01 20 7A 21 00 22 64 30 06 00 00
Feb 28 18:46:05 homematic-ccu2-Sven user.debug multimac: GetAckActionForIncomingTelegram(): Unknown peer, AckAction_NotForUs
Feb 28 18:46:05 homematic-ccu2-Sven user.debug multimac: A<: #64 HmBidcos RxTelegram AuthNone #74[Ren] 135634->123ABC Info: 02 08 01 20 7A 21 00 22 64 30 06 00 00
Feb 28 18:46:05 homematic-ccu2-Sven user.debug rfd: RX for JPCCSCD001: @3921629359 RSSI=-56dB 0x135634 -> 0x123ABC INFO_PEER_LIST [CCU2GW0001]: CNT=117,RPTEN=1,RPTED=0,BIDI=0,BURST=0,WAKEUP=0,WAKEMEUP=0,BCAST=0,TYPE=0x10 LINK_PEER_ADDRESS = 0x000000 LINK_PEER_CHANNEL = 0 LINK_PEER_ADDRESS = 0x000000 LINK_PEER_CHANNEL = 0 LINK_PEER_ADDRESS = 0x000000 LINK_PEER_CHANNEL = 0 LINK_PEER_ADDRESS = 0x000000 LINK_PEER_CHANNEL = 0
Feb 28 18:46:05 homematic-ccu2-Sven user.debug multimac: C> @111942076: #120 LLMAC RX @ 4450ms -93dBm 75 80 10 13 56 34 12 3A BC 01 00 00 00 00
Feb 28 18:46:05 homematic-ccu2-Sven user.debug multimac: Bidcos RX: #75[Ren] 135634->123ABC Info: 01 00 00 00 00
Feb 28 18:46:05 homematic-ccu2-Sven user.debug multimac: GetAckActionForIncomingTelegram(): Unknown peer, AckAction_NotForUs
Feb 28 18:46:05 homematic-ccu2-Sven user.debug multimac: A<: #66 HmBidcos RxTelegram AuthNone #75[Ren] 135634->123ABC Info: 01 00 00 00 00
Feb 28 18:46:05 homematic-ccu2-Sven user.debug multimac: C<: #66 TRX GetDutyCycle
Feb 28 18:46:05 homematic-ccu2-Sven user.debug multimac: C< @111942684: bin:FD 00 03 01 42 03 94 18
Feb 28 18:46:06 homematic-ccu2-Sven user.debug multimac: C> @111942789: #66 TRX Response Ack 20

Der original CO2 Sensor von Homematic sieht so im Protokoll aus:
Feb 28 18:47:37 homematic-ccu2-Sven user.debug rfd: RX for LEQ0137xxx: @3921721388 AES(0) RSSI=-74dB 0x26BC06 -> 0x2529A4 CONDITIONAL_SWITCH [QEQ0683xxx]: CNT=71,RPTEN=1,RPTED=0,BIDI=1,BURST=0,WAKEUP=0,WAKEMEUP=0,BCAST=1,TYPE=0x41 COUNTER = 200 CHANNEL = 1 LOWBAT = 0 DURATION = 0 CONDITION = 0 TIMES = 0
Feb 28 18:47:37 homematic-ccu2-Sven user.debug rfd: Event: LEQ0137xxx:1.STATE=0


Ich sehe bei den beiden schon den Unterschied
JPCCSCD001:....SYSINFO_CH_A = 1 SYSINFO_CH_B = 0 (Was den Werten von Pin14 und 15 entspricht)
vs.
LEQ0137xxx:1.STATE=0

Jetzt bin ich mir nicht sicher ob das überhaupt so funktionieren kann in Homematic?

Hat jemand eine Idee dazu oder kann bestätigen das der HM-CC-SCD mit diesen Werten SYSINFO_CH_A und B den Status für das Gerät bildet?

Danke und Grüße
Svenson

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“