HBW-1W-T10 auf Arduino...

Begonnen von joachimm, 14 November 2018, 18:49:28

Vorheriges Thema - Nächstes Thema

loetmeister

Hallo Thorsten,

Danke. Da werde ich später mal ein Update in FHEM machen.  :D

Gruß,
Thomas

Thorsten Pferdekaemper

Zitat von: loetmeister am 02 Mai 2019, 20:51:14
Habe noch ein weiteres Issue erstellt:
Speichern von "NOT_USED" in der Konfiguration nicht möglich #65
https://github.com/kc-GitHub/FHEM-HM485/issues/65
So, jetzt habe ich damit mal angefangen. Leider kann ich das momentan bei mir nicht testen, vor Allem weil es keine Standard-Devices gibt, die dieses Problem haben. ...und ich will jetzt in meiner Produktiv-Umgebung nichts verpfuschen.
Also, könntest Du mal die beiden angehängten Dateien in Deine FHEM-(Test-)Umgebung kopieren und ausprobieren? Die hm485.js gehört nach /opt/fhem/www/pgm2 und die ConfigurationManager.pm nach /opt/fhem/FHEM/lib/HM485.
Wenn alles gut läuft, dann müsste das Problem bis auf eine Kleinigkeit damit gelöst sein. Kannst Du das bestätigen?

So, die Kleinigkeit ist die Anzeige des R-Readings für float-Parameter. In Deinem Fall müsste das R-short_on_level sein. Kannst Du mal nachsehen, was da steht, nachdem Du OLD_LEVEL gesetzt hast?

Gruß,
   Thorsten


FUIP

loetmeister

Hi Thorsten,

danke für die Mühe.

Ich hatte zunächst ein "update" gemacht, danach neu gestartet und geschaut das FHEM soweit läuft.
Dann habe ich hm485.js und ConfigurationManager.pm mit deinen geänderten Versionen überschrieben.
Leider stimmt da was nicht:

2019.11.05 23:03:06 1: reload: Error:Modul 10_HM485 deactivated:
Global symbol "$sort" requires explicit package name (did you forget to declare "my $sort"?) at FHEM/lib/HM485/ConfigurationManager.pm line 319, <$fh> line 51.
Compilation failed in require at ./FHEM/10_HM485.pm line 33, <$fh> line 51.
BEGIN failed--compilation aborted at ./FHEM/10_HM485.pm line 33, <$fh> line 51.


In ConfigurationManager.pm habe ich wieder die gesicherte Version genommen. hm485.js habe ich belassen. Damit startet FHEM wieder...


Gruß,
Thomas

Thorsten Pferdekaemper

Hi,
ok, das war ein copy&paste-Fehler.
Bitte versuch's mit der hier dranhängenden Datei nochmal.
Gruß,
   Thorsten
FUIP

loetmeister

Hi Thorsten,

das sieht besser aus, teilweise kann ich eine Veränderung feststellen.
Wenn ich ein peering erstelle und versuche short_on_level auf old_level zu setzten, dann wird noch immer der Wert 200 (statt 201) geschrieben.
Set peerdetails: short_on_level=200

Beider der Kanalkonfiguration scheint es aber zu klappen, special_value wird genutzt:
Set config HBW_SD6_Multikey_v1_HBW0000999_25: send_min_interval=not_used

Gruß,
Thomas

Thorsten Pferdekaemper

Zitat von: loetmeister am 07 November 2019, 20:06:26
Wenn ich ein peering erstelle und versuche short_on_level auf old_level zu setzten, dann wird noch immer der Wert 200 (statt 201) geschrieben.
Set peerdetails: short_on_level=200
Das ist seltsam, weil das mit dem special_value bei Peerings bisher immer funktioniert hat.
...nach ein bisschen mehr Nachforschung: Wenn ich das hier ins Kommandofeld eingebe...

{ int(1.005 * 200) }

...dann kommt da 200 raus.
Das ist also ein Rundungsfehler.

Ich denke, dass ich das jetzt auch korrigiert habe. Bitte die angehängte Datei Device.pm nach /opt/fhem/FHEM/lib/HM485 und nochmal probieren.

Gruß,
   Thorsten
FUIP

loetmeister

Danke, special_value "1.005" funktioniert nun:  8)
   Set peerdetails: short_on_level=201
Nicht nur laut log, auch das peering macht nun was es soll  ;)
(Der Rundungsfehler erklärt auch warum 1.01 -> 202 funktioniert hatte.)
Der Haken bei "old_level" in den Peering Details ist nicht gesetzt. Das hätte den Nachteil wieder den Standardwert zu schreiben, wenn man den Haken nicht jedes mal setzt (auch wenn man diese Option gar nicht verändern will)

special_value bei der Kanalkonfiguration war ja ok. Habe mal bei send_max_interval den log level erhöht:
HBW0000999_25: Set config HBW_SD6_Multikey_v1_HBW0000999_25: send_max_interval=not_used
HBW0000999_25: HM485_SetConfig fuer HBW_SD6_Multikey_v1_HBW0000999_25 Schreiben Eeprom 608 F40E7_25 57 0044 02 0000

Das sieht ebenfalls gut aus.


Zitat[...]die Anzeige des R-Readings für float-Parameter. In Deinem Fall müsste das R-short_on_level sein. Kannst Du mal nachsehen, was da steht, nachdem Du OLD_LEVEL gesetzt hast?
Da stehe ich grade etwas auf dem Schlauch. Ein "list"auf den Kanal zeigt mir das nicht an... wo kann ich das sehen? Oder ist das die Einschränkung in der Darstellung, die du erwähnt hattest? (Haken bei "old_level" in den Peering Details)


Gruß,
Thomas

Thorsten Pferdekaemper

Zitat von: loetmeister am 07 November 2019, 22:28:15
Der Haken bei "old_level" in den Peering Details ist nicht gesetzt.
Das ist vermutlich auch wieder ein Rundungsfehler. Ich schau mir das auch noch an.

Zitat
Da stehe ich grade etwas auf dem Schlauch. Ein "list"auf den Kanal zeigt mir das nicht an... wo kann ich das sehen?
Die R-Readings gibt es bei Peering-Parametern nicht, sondern nur bei solchen, die direkt zum Device/Kanal gehören. Ich dachte ja vorher, dass wir über so etwas reden. D.h. Du kannst das ignorieren.

Gruß,
  Thorsten
FUIP

Thorsten Pferdekaemper

Hi,
ich glaube, dass ich jetzt auch herausgefunden habe, warum der Haken nicht gesetzt ist. Datei Device.pm, Zeile 1101/1102:

$retVal = $retVal / $factor;
$retVal = sprintf("%.2f", $retVal - $offset);

D.h. in Deinem Fall:
     retVal = 201 / 200 = 1.005
...was dann aber auf 1.01 gerundet wird. Später wird das dann mit dem special_value=1.005 verglichen, was natürlich scheitert.
Ich könnte das jetzt theoretisch auf drei Nachkommastellen erweitern, aber das würde unter Umständen einige andere Änderungen nach sich ziehen. Außerdem würde es bei vielen anderen Feldern seltsam aussehen.
Könntest Du Dir vorstellen, auch mit zwei Nachkommastellen auszukommen? D.h. special_value=1.01 ? Das müsste doch auch gehen.

Könntest Du Dir das mal anschauen? Sollte das bei Dir auch viel Aufwand erzeugen, dann schaue ich mir's nochmal an.

Gruß,
   Thorsten


FUIP

loetmeister

Hi Thorsten,

Ok, danke. Das klingt etwas aufwändig.
Ich hatte diese Konfiguration, mit 1,005 aus der XML des homematic Funk dimmers übernommen...
Ich kann es aber auch auf 1,01 anpassen.

Gruß,
Thomas

Thorsten Pferdekaemper

Also wenn die CCU das kann, dann will ich das auch können. Ich schau mir das nochmal an.
Gruß,
   Thorsten
FUIP

Thorsten Pferdekaemper

Hi,
versuch mal die hier dranhängende Device.pm.
Wenn es klappt, dann wäre es nett, wenn Du Dir auch mal andere Parameter (bzw. Werte) anschaust, die ein float_integer_scale oder ein integer_integer_scale haben. (Wenn Du sowas hast.)

Zur Erklärung: Das Teil versucht jetzt, Zahlen, die mehr als 2 Nachkommastellen haben, auch so darzustellen. Das sollte bis 8 Nachkommastellen funktionieren. Dabei müssten aber solche Dreckeffekte wie "1.999999999999876" rausgefiltert werden, da das mit 8 Nachkommastellen auf 2.00000000 gerundet werden müsste. Eine Zahl, die dann mit weniger als 2 Nachkommastellen angezeigt werden kann, wird dann wieder auf 2 erweitert, um einigermaßen kompatibel zu vorher zu bleiben.

Gruß,
   Thorsten
FUIP

loetmeister

Hi,

Der Haken bei "old_level" in den Peering Details wird nun richtig angezeigt.
Bei anderen float_integer_scale Werten habe ich keine Änderung erkennen können. Die anzeige der Werte ist wie bisher.
Setzen neuer Werte geht auch (z.B. 91,5% -> 183)
Besonders ausgiebig habe ich aber nicht getestet.


Gruß,
Thomas

loetmeister

Hi Thorsten,

Lässt sich nicht der Code vom FHEM Modul für homematic Funk nutzen? Dort sollten diese Probleme doch schon gelöst sein?

Gruß,
Thomas

Thorsten Pferdekaemper

Zitat von: loetmeister am 10 November 2019, 00:50:50
Lässt sich nicht der Code vom FHEM Modul für homematic Funk nutzen? Dort sollten diese Probleme doch schon gelöst sein?
Ich habe mal versucht, das zu finden, aber vergeblich. Bist Du Dir sicher, dass das bei HM-Funk funktioniert?
Jedenfalls wäre es ziemlich aufwändig, das bei HM-Funk zu finden und wahrscheinlich würde das entsprechende Coding auch nicht wirklich passen.
Ich denke mal, das lasse ich lieber bleiben.
Gruß,
   Thorsten
FUIP