Wie kann ich im Sketch HB-UNI-Sen-TEMP-DS18B20 Register hinzufügen?

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

Moderator: Co-Administratoren

Antworten
tiberius28
Beiträge: 30
Registriert: 05.12.2021, 13:48
System: CCU
Danksagung erhalten: 3 Mal

Wie kann ich im Sketch HB-UNI-Sen-TEMP-DS18B20 Register hinzufügen?

Beitrag von tiberius28 » 13.01.2022, 10:30

Habe den Sketch HB-UNI-Sen-TEMP-DS18B20 so erweitert, dass zu angängig von der gemessenen Temperatur (ich habe nur einen Sensor angeschlossen) ein Relais ein- oder ausschaltet (z.B. für die Steuerung einer Warmwasserzirkulationspumpe). Dafür vergleiche ich die gemessene Temperatur mit 2 Grenzwerten TEIN und TAUS. Die Grenzwerte stelle ich derzeit im Sketch fest ein.
Es wäre sinnvoll diese Grenzwerte mit Hilfe des Web-UI in der CCU einzustellen, wie z.B. es derzeitig für Temperatur-Offset, Low-Battery und Sendeintervall möglich ist.
Nur zu meinem Anliegen:
1. Besteht die Möglichkeit den Sketch so zu erweitern, dass die Grenzwerte TEIN und TAUS beim Anlernen in der CCU angelegt werden?
2. Falls das möglich ist, wie kann ich diese Werte im Sketch auslesen, damit ich sie als Bedingung für das Schalten des Relais benutzen kann?

Ich glaube ich habe die entsprechende Definition im aktuellen Sketch gefunden, wo die aktuellen Register angelegt werden. Leider bin ich nicht in der Lage, diese Definitionen so zu verstehen, dass ich daraus folgern könnte, wie ich meine 2 Register hinzufügen kann und benötige dafür eure Hilfe.

Code: Alles auswählen

DEFREGISTER(UReg0, MASTERID_REGS, DREG_LOWBATLIMIT, 0x21, 0x22)
class UList0 : public RegList0<UReg0> {
  public:
    UList0 (uint16_t addr) : RegList0<UReg0>(addr) {}
    bool Sendeintervall (uint16_t value) const {
      return this->writeRegister(0x21, (value >> 8) & 0xff) && this->writeRegister(0x22, value & 0xff);
    }
    uint16_t Sendeintervall () const {
      return (this->readRegister(0x21, 0) << 8) + this->readRegister(0x22, 0);
    }
    void defaults () {
      clear();
      lowBatLimit(22);
      Sendeintervall(180);
      //Sendeintervall(60);
      
    }
};

DEFREGISTER(UReg1, 0x01, 0x02, 0x03, 0x04)
class UList1 : public RegList1<UReg1> {
  public:
    UList1 (uint16_t addr) : RegList1<UReg1>(addr) {}

    bool Offset (int32_t value) const {
      return
          this->writeRegister(0x01, (value >> 24) & 0xff) &&
          this->writeRegister(0x02, (value >> 16) & 0xff) &&
          this->writeRegister(0x03, (value >> 8) & 0xff) &&
          this->writeRegister(0x04, (value) & 0xff)
          ;
    }

    int32_t Offset () const {
      return
          ((int32_t)(this->readRegister(0x01, 0)) << 24) +
          ((int32_t)(this->readRegister(0x02, 0)) << 16) +
          ((int32_t)(this->readRegister(0x03, 0)) << 8) +
          ((int32_t)(this->readRegister(0x04, 0)))
          ;
    }
    void defaults () {
      clear();
      Offset(0);
    }
};
Zuletzt geändert von alchy am 13.01.2022, 15:42, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

jp112sdl
Beiträge: 10088
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 650 Mal
Danksagung erhalten: 1533 Mal
Kontaktdaten:

Re: Wie kann ich im Sketch HB-UNI-Sen-TEMP-DS18B20 Register hinzufügen?

Beitrag von jp112sdl » 13.01.2022, 17:47

Hab grad wenig Zeit für lange Erklärungen.

Die List0 lass mal außen vor.
Deine Parameter sollten in List1.

:!: Nicht vergessen, dass du auch seitens der CCU ein neues Gerät anlegen musst.
Die XML Parameter in der Gerätebeschreibungsdatei auf der CCU müssen zu den Registern im Sketch passen.

VG,
Jérôme ☕️

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

Antworten

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