Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

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

Moderator: Co-Administratoren

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von jp112sdl » 17.11.2020, 13:21

FUEL4EP hat geschrieben:
17.11.2020, 13:16
Hat jemand ein AsksinPP Gerät am Laufen, bei dem das Setzen eines negativen Parameters in der Maske erhalten bleibt?
Sketch
https://github.com/jp112sdl/HB-UNI-Sen- ... S18B20.ino
XML
https://github.com/jp112sdl/JP-HB-Devic ... n-temp.xml

Kann es selbst grad nicht testen... aber bisher hat sich niemand beschwert, dass es nicht geht.

VG,
Jérôme ☕️

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

Benutzeravatar
FUEL4EP
Beiträge: 584
Registriert: 01.11.2017, 17:26
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 76 Mal
Danksagung erhalten: 77 Mal
Kontaktdaten:

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von FUEL4EP » 17.11.2020, 13:42

Hi Jérôme,

danke.

Deinen Sketch und Deine XML hatte ich schon analysiert und glaube, alles korrekt in meinem Code angepasst zu haben.
Vielleicht habe ich ja eine Kleinigkeit übersehen ?

Die RaspberryMatic Log Datei zeigt zum Übernahmezeitpunkt keine Warnungen oder Fehler.

Was kann ich sonst noch tun, mein Problem zu debuggen?
Grüße

Ewald

Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von jp112sdl » 17.11.2020, 13:46

FUEL4EP hat geschrieben:
17.11.2020, 13:42
Was kann ich sonst noch tun, mein Problem zu debuggen?
Du könntest erstmal meinen Sketch flashen (und zugehörige XML bzw. Addon) nehmen, um zu validieren, ob mein Beispiel überhaupt funktioniert.

Auch habe ich 4 Byte vorgesehen, du nur 2 Byte. Das wäre schon mal ein Unterschied.

VG,
Jérôme ☕️

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

Benutzeravatar
FUEL4EP
Beiträge: 584
Registriert: 01.11.2017, 17:26
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 76 Mal
Danksagung erhalten: 77 Mal
Kontaktdaten:

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von FUEL4EP » 17.11.2020, 16:05

Hi Jérôme,

leider kann ich den HB-UNI-Sen-TEMP-DS18B20 Sketch nach dem Flashen nicht anlernen, wohl deshalb da ich keinen DS18B20 Sensor habe.

Kann mein Problem am MCU Typ liegen? Ich nutze einen atmega1284P.
Grüße

Ewald

Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von jp112sdl » 17.11.2020, 16:15

FUEL4EP hat geschrieben:
17.11.2020, 16:05
Kann mein Problem am MCU Typ liegen? Ich nutze einen atmega1284P.
Kann... kann auch nicht... serielles Log ist für Analysen immer wichtig.
FUEL4EP hat geschrieben:
17.11.2020, 16:05
leider kann ich den HB-UNI-Sen-TEMP-DS18B20 Sketch nach dem Flashen nicht anlernen, wohl deshalb da ich keinen DS18B20 Sensor habe.
Das kann auch sein.

Oder du übernimmst den OFFSET-Teil aus Sketch und XML unverändert in dein Projekt.

VG,
Jérôme ☕️

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

Benutzeravatar
FUEL4EP
Beiträge: 584
Registriert: 01.11.2017, 17:26
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 76 Mal
Danksagung erhalten: 77 Mal
Kontaktdaten:

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von FUEL4EP » 17.11.2020, 16:58

Hi Jérôme,

es ist ein wenig verrückt: Mit size="4" funktioniert es !?????

Ich habe nur den ersten Parameter 'TemperatureOffset' auf 32Bit konvertiert:

Code: Alles auswählen

<channel index="1" type="WEATHER" autoregister="true">
      <link_roles>
        <source name="WEATHER_CS" />
      </link_roles>
      <paramset type="MASTER" id="HB-UNI-Sensor-AQ-BME680_master" >
        <parameter id="TemperatureOffset">
          <logical type="float" min="-5.0" max="5.0" default="0.0" unit="K" />
          <physical type="integer" signed="true" interface="config" list="1" index="1" size="4" />
          <conversion type="float_integer_scale" factor="10" />
        </parameter>
        <parameter id="HumidityOffset">
          <logical type="float" min="-5.0" max="5.0" default="0.0" unit="%" />
          <physical type="integer" signed="true" interface="config" list="1" index="5" size="1" />
          <conversion type="float_integer_scale" factor="1" />
        </parameter>
        <parameter id="PressureOffset">
          <logical type="float" min="-100.0" max="100.0" default="0.0" unit="hPa" />
          <physical type="integer" signed="true" interface="config" list="1" index="6" size="2" />
          <conversion type="float_integer_scale" factor="10" />
        </parameter>
        <parameter id="max_decay_factor_upper_limit">
          <logical  type="float" min="0.0" max="100.0" default="70.0" unit="%" />
          <physical type="integer" signed="true" interface="config" list="1" index="8" size="1" />
          <conversion type="float_integer_scale" factor="1" />
        </parameter>
        <parameter id="max_increase_factor_lower_limit">
          <logical type="float" min="0.0" max="100.0" default="30.0" unit="%" />
          <physical type="integer" signed="true" interface="config" list="1" index="9" size="1" />
          <conversion type="float_integer_scale" factor="1" />
        </parameter>
      </paramset>
C++ Code:

Code: Alles auswählen

DEFREGISTER(UReg1, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09)
class SensorList1 : public RegList1<UReg1> {
  public:
    SensorList1 (uint16_t addr) : RegList1<UReg1>(addr) {}

    bool tempOffset10 (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 tempOffset10 () 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)))
          ;
    }

    bool humidOffset (int8_t value) const {
      return this->writeRegister(0x05, value & 0xff);
    }
    int8_t humidOffset () const {
      return (int8_t)(this->readRegister(0x05, 0));
    }    

    bool pressOffset10 (int16_t value) const {
      return this->writeRegister(0x06, (value >> 8) & 0xff) && this->writeRegister(0x07, value & 0xff);
    }
    int16_t pressOffset10 () const {
      return (((int16_t)(this->readRegister(0x06, 0)) << 8) + (int16_t)(this->readRegister(0x07, 0)));
    }
    
    bool max_decay_factor_upper_limit (uint8_t value) const {
      return this->writeRegister(0x08, value & 0xff);
    }
    uint8_t max_decay_factor_upper_limit () const {
      return (uint8_t)(this->readRegister(0x08, 0));
    }

    bool max_increase_factor_lower_limit (uint8_t value) const {
      return this->writeRegister(0x09, value & 0xff);
    }
    uint8_t max_increase_factor_lower_limit () const {
      return (uint8_t)(this->readRegister(0x09, 0));
    }

    void defaults () {
      clear();
      tempOffset10(-16);  // temperature measurement offset, multiplied by 10 [K], calibrate your sensor's characteristics
      humidOffset(3);     // humidity measurement offset [%, calibrate your sensor's characteristics
      pressOffset10(-60); // pressure measurement offset, multiplied by 10 [hPa], calibrate your sensor's characteristics
      max_decay_factor_upper_limit(70);  //IIR's filter max decay value of gas resistor upper limit
      max_increase_factor_lower_limit(30);  //IIR's filter max increase value of gas resistor lower limit 
      DPRINTLN(F("Init of channel parameters done"));
    }
    
};


Hast Du oder jemand sonst eine Idee, woran es liegen könnte, dass 32 Bit gehen und 16 Bt / 8 Bit nicht korrekt gehen?

Nachtrag: Alle 5 Parameter sind nun auf 32 Bit umgestellt und funktionieren korrekt.
Dennoch sollten wir die Ursache des bisherigen Fehlverhaltens finden und korrigieren.
Grüße

Ewald

Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs

TomMajor
Beiträge: 1790
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von TomMajor » 17.11.2020, 18:33

Ein float hat 32bit Datenbreite. Eventuell setzt "conversion type="float_integer_scale" voraus dass der zu konvertierende Integer der float Datenbreite entsprechen muss.
Viele Grüße,
Tom

Benutzeravatar
FUEL4EP
Beiträge: 584
Registriert: 01.11.2017, 17:26
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 76 Mal
Danksagung erhalten: 77 Mal
Kontaktdaten:

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von FUEL4EP » 02.12.2020, 20:07

Hallo Zusammen,

bei dem Versuch, eine relative Luftfeuchte mit 0,1 % Auflösung auszugeben, bekomme ich im RaspberryMatic WebUI Ausgaben wie

Rel. Luftfeuchte: 1717986918 %
Rel. Luftfeuchte: 858993459 %
Rel. Luftfeuchte: -858993459 %

Das scheint daher zu kommen, dass das Ausgabeformat des WebUI's nicht zum Zahlenformat der relativen Luftfeuchtigkeit passt. Für beide Zahlen gibt Google einen solchen Fehlerhinweis aus: float Zahl mit %d Format ausgeben.

Hier der Ausschnitt 1 der rftypes XML:

Code: Alles auswählen

   
      <parameter id="HUMIDITY" operations="read,event">
          <logical type="float" min="0.0" max="100.0" unit="%" />
          <physical type="integer" interface="command" value_id="HUMIDITY" >
            <event frame="WEATHER_EVENT" />
          </physical>
          <conversion type="float_integer_scale" factor="10.0" />
        </parameter>
Hier der Abschnitt 2 der rftypes XML:

Code: Alles auswählen

      <parameter type="integer" index="11" size="2.0" param="AIR_PRESSURE" />
      <parameter type="integer" index="13" size="2.0" param="HUMIDITY" />
Derr Luftdruck hat wir die relative Luftfeuchtigkeit in Sketch den Typ uint16_t:

Code: Alles auswählen

class WeatherEventMsg : public Message {
  public:
    void init(uint8_t msgcnt, int16_t temp, uint16_t airPressure, uint16_t humidity,  ....
        
      uint8_t t1 = (temp >> 8) & 0x7f;
      uint8_t t2 = temp & 0xff;

      DPRINT("c temperature = ");           DDECLN(temp);
      DPRINT("c humidity = ");                 DDECLN(humidity);      # <= diese Debugausgabe zeigt korrekte Werte an
      DPRINT("c Pressure NN = ");             DDECLN(airPressure);  # <= diese Debugausgabe zeigt korrekte Werte an
      
      if ( batlow == true ) {
        t1 |= 0x80; // set bat low bit
      }
      
      ..
      ..
      ..
      
      pload[0] =   (airPressure >> 8) & 0xff;
      pload[1] =   (airPressure >> 0) & 0xff;

      pload[2] =   (humidity >> 8) & 0xff;
      pload[3] =   (humidity >> 0) & 0xff;  

Woran kann das ominöse WebUI Verhalten nur bei der Luftfeuchte, nicht aber beim gleich erzeugten Luftdruck her rühren?

Kann es sein, sein hier eine andere Standard Definition von 'HUMIDITY' 'hineinspukt'?

Ich habe heute viel Zeit zum Debuggen verwendet, komme aber nicht weiter.

Vielen Dank im Voraus für Eure Hilfe!
Grüße

Ewald

Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs

Benutzeravatar
FUEL4EP
Beiträge: 584
Registriert: 01.11.2017, 17:26
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 76 Mal
Danksagung erhalten: 77 Mal
Kontaktdaten:

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von FUEL4EP » 02.12.2020, 20:30

Nachtrag: Im CCU Historian werden die Luftfeuchtewerte korrekt aufgezeichnet und dargestellt. Es ist also in der Tat 'nur' ein WebUI Problem.
Grüße

Ewald

Meine SmartHome Entwicklungen gibt es hier: FUEL4Ps Homeautomation Github Repository oder als ZIP
Das passende RaspberryMatic Addon ist hb-ep-devices-addon
Passende Platinen gib es hier: PCBs

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Geräte-/ Kanalparameter einstellen / firmware rftypes XML Datei

Beitrag von jp112sdl » 02.12.2020, 20:32

Evtl. ist sogar nur die "unit="%"" der Übeltäter... Nimm die mal raus

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“