Mitsubishi WP Modbus Reading während Dateneingabe pausieren

Begonnen von breitbanddilettant, 08 Januar 2020, 10:47:13

Vorheriges Thema - Nächstes Thema

breitbanddilettant

Hallo Zusammen,

ich besitze eine Ecodan ERSC-VM2C und greife per Modbus Interface auf die Ecodan zu.


define ModbusBus Modbus /dev/ttyUSB0@9600
define Ecodan ModbusAttr 1 60
attr Ecodan IODev ModbusBus
attr Ecodan dev-h-defPoll 1
attr Ecodan event-min-interval .*:600
attr Ecodan event-on-change-reading .*


Einmal die Minute hole ich mir mit ca. 30 Readings die Werte diverser Ecodan Register ab - darunter auch z.B. der Sollwert der Vorlauftemperatur. Die Vorlauftemperatur kann ich dann von fhem aus auch anpassen und an die Ecodan zurückschicken.

Das reading für Tsoll-Vorlauf sieht z.B. so aus:

attr Ecodan obj-h32-expr $val/100
attr Ecodan obj-h32-hint 30,31,32,33,34,35,36,37,38,39,40
attr Ecodan obj-h32-max 60
attr Ecodan obj-h32-min 10
attr Ecodan obj-h32-reading Tsoll-Vorlauf
attr Ecodan obj-h32-set 1
attr Ecodan obj-h32-setexpr $val*100


Über ftui habe ich eine GUI gebaut, mit der ich per Knopfdruck diesen Sollwert um 1 erhöhen oder verringern kann.

<div class="cell">
<div class="doublebox-v tiny">
<div data-type="push" data-device="Ecodan" data-set="Tsoll-Vorlauf" data-icon="fa-chevron-up" data-background-icon="fa-square-o" data-set-on="[Ecodan:Tsoll-Vorlauf-Up]">
</div>
<div data-type="push" data-device="Ecodan" data-set="Tsoll-Vorlauf" data-icon="fa-chevron-down" data-background-icon="fa-square-o" data-set-on="[Ecodan:Tsoll-Vorlauf-Down]">
</div>
</div>


Außerdem habe ich eine Anzeige für Tsoll-Vorlauf

<div class="cell">
<div data-type="label" data-device="Ecodan" data-get="Tsoll-Vorlauf" data-unit="&deg;C" data-fix="0" class="big bold cell orange"></div>
<div class="top-narrow  small">Soll</div>
</div>


Folgendes Verhalten (wir starten mit 35°C Tsoll-Vorlauf):

- in der GUI wird Tsoll-Vorlauf angepasst. Drei mal drücken auf "push" -daher sollte folgende Sequenz angezeigt werden 35°C->36°C->37°C->38°C

- bei jedem neuen Wert wird ein set Befehl an die Ecodan geschickt, diese Braucht aber einige Sekunden, um das Empfangene zu verarbeiten. In ftui wird aber alles direkt richtig angezeigt. Also 35°C->36°C->37°C

- ABER: ziemlich zeitgleich werden manchmal zufällig (z.B. weil eine Minute wieder vergangen ist) die Register der Ecodan ausgelesen - und hier steht auf Grund der Verzögerung der Ecodan noch der alte Wert 35°C drin

- Das hat dann zur Folge, dass der in fhem/ftui angezeigte Wert von Tsoll-Vorlauf mal dem neuen Vorlaufwert (von mir per gui vorgegeben) und mal dem alten Vorlaufwert (der, der halt noch von der Ecodan genutzt wird und gerade vom reading geholt wurde) entspricht. Also springt die Anzeige von 35°C->36°C->37°C->35°C und mein nächster Tastendruck erhöht den Wert dann wieder auf 36°C. Also schauts dann in Realität so aus: 35°C->36°C->37°C->35°C->36°C.

Grundsätzlich ist das Problem, dass ich den neuen Sollwert auf Basis des aktuellen Wertes berechne und sich durch das minütlich wiederkehrende reading teilweise der falsche aktuelle Wert ausgelesen wird.

Jetzt zu meiner Frage:
- Gibt es eine Möglichkeit neue set Werte direkt zu übermitteln, aber mit dem get Abruf der Werte eine Vorgegebene Zeit zu warten, sodass sich set und get nicht in die Quere kommen?
- hat jemand eine alternative Idee?

Danke und schöne Grüße


Fritz Muster

Zitat von: breitbanddilettant am 08 Januar 2020, 10:47:13
- hat jemand eine alternative Idee?

ein popup Fenster öffnen lassen in dem jeweils ein "push" mit jeweiligen Sollwert ist. Dann entfällt die "Drückerei"

Grüße Fritz
RasPi 3B+, Stretch, Fhem 5.9, DBlog SQLite
HMLAN, mapleCUN MAX/WMBus, mapleSduino 868/433/868
HM Sensoren/Aktoren ,Technoline TX 29 DTH-IT, TFA 30.3155WD, MAX!
Hour Counter, Astro, EletricityCounter, Statistics, Charting Frontend, TabletUI, Modbus