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

FUEL4EP
Beiträge: 392
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 59 Mal
Danksagung erhalten: 47 Mal

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

Beitrag von FUEL4EP » 02.12.2020, 21:19

Hi Jérôme,

das Herausnehmen von '%' in der rftypes XML Datei

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>
hilft leider nicht. Überraschenderweise wird im WebUI dennoch ein '%' als Einheit angezeigt. Ich bin mir da ganz sicher, dass ich die obige XML im Addon eingelesen (Gerät gelöscht, Addon deinstalliert, Addon installiert, Gerät angelernt) hatte, da ich vorher 'HUMIDITY' durch 'MY_HUMIDITY' ersetzt hatte (das dann nicht übersetzt wurde).

Es scheint noch verzwickter zu sein :(

Mir gehen neue Ideen aus, was die Ursache sein könnte. Gefühlt habe ich schon alles probiert, aber manchmal ist es ja nur ein einziges falsches Zeichen.
Grüße

Ewald

FUEL4EP
Beiträge: 392
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 59 Mal
Danksagung erhalten: 47 Mal

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

Beitrag von FUEL4EP » 02.12.2020, 21:30

Nachtrag: Sorry, ich hatte doch das '%' noch drin. Hatte zu viele Editoren auf :-)

Nun nochmals alles durchgenudelt: '%' als Einheit ist weg, das Phänomen ist immer noch da :-(
Grüße

Ewald

jp112sdl
Beiträge: 9553
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 596 Mal
Danksagung erhalten: 1407 Mal
Kontaktdaten:

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

Beitrag von jp112sdl » 02.12.2020, 22:49

Mach mal Skript testen

Code: Alles auswählen

var o = dom.GetObject("BidCos-RF.SERIENNUMMER:KANAL.HUMIDITY");
var value = o.Value();
var vtyp  = o.ValueType();
var typ   = value.Type();

var int = ivtInteger;
var flt = ivtFloat;

WriteLine("Typ ist       : "#typ);
WriteLine("ValueType ist : "#vtyp);
WriteLine("(ivtInteger="#ivtInteger#"), (ivtFloat = "#ivtFloat#")");
(SERIENNUMMER und KANAL noch ersetzen)
Was kommt da für ein Wertetyp?


Geschrieben in die WebUI wird der HUMIDITY Wert hier
https://github.com/eq-3/occu/blob/maste ... r.fn#L1392

Der Wert kommt auch ganz unspektakulär von hier
https://github.com/eq-3/occu/blob/maste ... r.fn#L1219

und wird dann, wenn es ein "real" ist, auf 2 Stellen begrenzt
https://github.com/eq-3/occu/blob/maste ... r.fn#L1326



:!: Aber da HUMIDITY ein "reservierter" Datenpunkt ist, der auch im HMIPServer für die Diagramme verarbeitet wird, wäre ich da eher vorsichtig, überhaupt was daran zu ändern.
Dann deklarier lieber einen eigenen Namen mit eigener Übersetzung.

VG,
Jérôme ☕️

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

PN sind deaktiviert!

FUEL4EP
Beiträge: 392
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 59 Mal
Danksagung erhalten: 47 Mal

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

Beitrag von FUEL4EP » 03.12.2020, 00:01

Hi Jérôme,

vielen Dank für Deine Antwort.

Hier die Ausgaben Deines HM-Skripts:

Code: Alles auswählen

Typ ist       : integer
ValueType ist : 16
(ivtInteger=16), (ivtFloat = 4)
Ich meine auch, dass es damit zu tun hat, dass HUMIDITY ein "reservierter" Datenpunkt ist. Ich werde es morgen mit einem anderen eigenen Naemen versuchen. Hatte schon mal 'MY_HUMIDITY' statt 'HUMIDITY' in der XML defniert. Das half nicht (alleine). Muss ich aber nochmals in aller Ruhe verifizieren.
Grüße

Ewald

TomMajor
Beiträge: 1591
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 147 Mal
Danksagung erhalten: 319 Mal
Kontaktdaten:

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

Beitrag von TomMajor » 03.12.2020, 00:08

Das würde bedeuten das man interne Datentypen nicht mit eigenem, anderen Datentyp überschreiben kann, auch wenns nur für das eigene HomeBrew Gerät sein soll.
Wenn man länger drüber nachdenkt ist es auch nicht so überraschend finde ich.
Aber mit MY_HUMIDITY muss dann die Kommastelle kommen.
Viele Grüße,
Tom

FUEL4EP
Beiträge: 392
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 59 Mal
Danksagung erhalten: 47 Mal

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

Beitrag von FUEL4EP » 03.12.2020, 00:33

Hi Tom, hi Jérôme,

der Ansatz mit 'MY_HUMIDITY' funktioniert! Heureka! Ihr bietet eine fantastische Unterstützung zu fast jeder Tageszeit! Ein herzliches Dankeschön!

Hier nochmal die funktionierenden rftypes XML Ausschnitte:

Code: Alles auswählen

 <parameter id="MY_HUMIDITY" operations="read,event">
          <logical type="float" min="0.0" max="100.0" unit="%" />
          <physical type="integer" interface="command" value_id="MY_HUMIDITY" no_init="true">
            <event frame="WEATHER_EVENT" />
          </physical>
          <conversion type="float_integer_scale" factor="10.0" />
  </parameter>

Code: Alles auswählen

<parameter type="integer" index="11" size="2.0" param="AIR_PRESSURE" />
<parameter type="integer" index="13" size="2.0" param="MY_HUMIDITY" />
4

Im Sketch verwende ich auch 'my_humidity' statt 'humidity':

Code: Alles auswählen

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

      pload[2] =   (my_humidity >> 8) & 0xff;
      pload[3] =   (my_humidity >> 0) & 0xff; 
Nun zeigt das WebUI schön zwei Nachkommastellen für die Luftfeuchtigkeit an, von denen die erste genutzt wird.

Die Übersetzung von 'MY_HUMIDITY' ist noch zu machen (dafür könnte man auch einen Generator schreiben).

Vielen Dank nochmals.
Grüße

Ewald

jp112sdl
Beiträge: 9553
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 596 Mal
Danksagung erhalten: 1407 Mal
Kontaktdaten:

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

Beitrag von jp112sdl » 24.12.2020, 10:01

FUEL4EP hat geschrieben:
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:

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.
Bin grad wegen eines anderen Projekts hierauf gestoßen:
https://github.com/AskSinPP/asksinpp.de ... #L109-L113

Beim Energiezähler kann man auch unter Belegung von nur 1 Byte einen Negativwert als Parameter übergeben.

Code: Alles auswählen

 <conversion type="sint4_sintx" physical_bytes="1" />
sint4_sintx erlaubt eine Konvertierung eines 4 Byte Int in einen x Byte Int.

VG,
Jérôme ☕️

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

PN sind deaktiviert!

FUEL4EP
Beiträge: 392
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 59 Mal
Danksagung erhalten: 47 Mal

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

Beitrag von FUEL4EP » 24.12.2020, 10:35

Hi Jérôme,

vielen Dank!

Das ist ein viel eleganterer Ansatz. Ich werde das bei Gelegenheit im nächsten Projekt austesten.

Frohes Weihnachtsfest!
Grüße

Ewald

FUEL4EP
Beiträge: 392
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 59 Mal
Danksagung erhalten: 47 Mal

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

Beitrag von FUEL4EP » 12.01.2021, 14:47

Hi Jérôme,

ich verzweifle mal gerade wieder an der WebUI Eingabe von Geräteparametern. Vielleicht hast Du ja mal wieder einen Tipp zur Lösung :D

Ich glaube, dass sich alles schon mal korrekt verhalten hat und ich alles erfolgreich getestet habe, jetzt geht es leider nicht mehr.
Ich kann es nicht mehr exakt nachvollziehen, wann sich das geändert hat.

Setup: RaspberryMatic 3.55.5.20201226
Addon: https://github.com/FUEL4EP/HomeAutomati ... ses/latest

Relevanter rftypes XML Ausschnitt:

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="4" />
          <conversion type="float_integer_scale" factor="10" />
        </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="9" size="4" />
          <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="13" size="4" />
          <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="17" size="4" />
          <conversion type="float_integer_scale" factor="1" />
        </parameter>
        <parameter id="mlr_alpha">
          <logical type="float" min="-2147438.648" max="2147438.647" default="0.0" unit="%11.3f float" />
          <physical type="integer" signed="true" interface="config" list="1" index="21" size="4" />
          <conversion type="float_integer_scale" factor="1000" />
        </parameter>
        <parameter id="mlr_beta">
          <logical type="float" min="-2147438.648" max="2147438.647" default="0.0" unit="%11.3f float" />
          <physical type="integer" signed="true" interface="config" list="1" index="25" size="4" />
          <conversion type="float_integer_scale" factor="1000" />
        </parameter>
        <parameter id="mlr_delta">
          <logical type="float" min="-2147438.648" max="2147438.647" default="0.0" unit="%11.3f float" />
          <physical type="integer" signed="true" interface="config" list="1" index="29" size="4" />
          <conversion type="float_integer_scale" factor="1000" />
        </parameter>
      </paramset>
  
Problembeschreibung:

Wenn ich im WebUI für TemperatureOffset eine Zahl mit Nachkommaziffern (z.B. -2.4) eingebe, wird daraus im seriellen Monitor

WebUI Eingabe: -2.4 => serieller Monitor List1: -20 (da x10) => -2.0 Zehntelstelle wird abgeschnitten!

WebUI Eingabe: -3.0 => serieller Monitor List1: -30 (da x10) => -2.0

WebUI Eingabe: 2.4 => serieller Monitor List1: 20 (da x10) => 2.0 Zehntelstelle wird abgeschnitten!

Mache ich diesselben Eingaben für mlr_alpha mit Copy&Paste des Werts , geht alles korrekt:

WebUI Eingabe: -2.4 => serieller Monitor List1: -2400 (da x1000) => -2.4

WebUI Eingabe: -3.0 => serieller Monitor List1: -3000 (da x1000) => -3.0

WebUI Eingabe: 2.4 => serieller Monitor List1: 2400 (da x1000) => 2.4

Noch verrückter wird es, wenn ich versuche bei mlr_alpha die Zahl mit Nachkommaziffern per Tastatur einzugeben (vorher war Copy&Paste):

-2.4 lässt sich per Tastatur nicht eingeben, der Dezimalpunkt '.' wird nicht angenommen
-2,4 wird dagegen von der Tastatur korrekt angenommen, also deutscher Dezimaltrenner ','. Ausgegeben wird aber dann '-2.4' !

Bei TemperatureOffset klappt die Eingabe per Tastatur einer Zahl mit Nachkommazahl und Dezimaltrenner '.', nur wie oben beschrieben, werden die Nachkommaziffern abgeschnitten.

Hast Du eine Idee, woran das liegen könnte?
Grüße

Ewald

FUEL4EP
Beiträge: 392
Registriert: 01.11.2017, 17:26
Hat sich bedankt: 59 Mal
Danksagung erhalten: 47 Mal

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

Beitrag von FUEL4EP » 12.01.2021, 15:03

Kann ein Teil des Problems sein , dass TemperatureOffset eine in occu vordefinierte Variable ist?

Code: Alles auswählen


~/Arduino/occu$ grepall TemperatureOffset

./WebUI/www/config/stringtable_de.txt
./WebUI/www/config/easymodes/tc_it_dev_master.tcl
./WebUI/www/config/easymodes/etc/hmipChannelConfigDialogs.tcl
./WebUI/www/config/easymodes/etc/hmipWeatherSensor.tcl
./WebUI/www/config/easymodes/hm-cc-vg-1_master.tcl
./WebUI/www/config/easymodes/hmip/alpha-ip-rbga_1_master.tcl
./WebUI/www/config/easymodes/hmip/hmip-etrv-c_1_master.tcl
./WebUI/www/config/easymodes/hmip/hmip-etrv-c-2_1_master.tcl
./WebUI/www/config/easymodes/hmip/hmip-etrv-b_1_master.tcl
./WebUI/www/config/easymodes/hmip/hmip-etrv_1_master.tcl
./WebUI/www/config/easymodes/hmip/hmip-etrv-b1_1_master.tcl
./WebUI/www/config/easymodes/MASTER_LANG/HEATINGTHERMOSTATE_2ND_GEN.js
./WebUI/www/config/easymodes/cc_rt_dev_master.tcl
./WebUI/www/webui/js/lang/en/translate.lang.stringtable.js
./WebUI/www/webui/js/lang/de/translate.lang.stringtable.js
./WebUI/www/webui/webui.js

Grüße

Ewald

Antworten

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