Falsche Position wird übergeben --> Rollo fährt nicht runter sondern hoch!

Begonnen von Bitzer, 28 Juli 2016, 14:01:52

Vorheriges Thema - Nächstes Thema

Bitzer

Hallo,

ich habe seit längerem ein Problem mit den Rollos bei Verwendung des position-Befehls. Ich nutze diesen um die Rollos zeitgesteuert in eine Beschattungsposition zu fahren. Es kommt nun manchmal vor dass die Rollos offen sind (position 0) und nach einem
set Rollo_xyz position 70
nicht in die Beschattungsstellung runterfahren sondern oben bleiben. Ich habe mir die readings vor und nach dem Befehl sowie die Bytefolge die an den Aktor gesendet wird mitloggen lassen und dabei festgestellt, dass bei der Startposition scheinbar 100 statt 0 übergeben wird was dazu führt dass der Rollo noch x Sekunden weiter nach oben fährt (100 --> 70) was aber nicht geht da er schon im oberen Endanschlag steht.
Hier ein Beispiel:
Readings vorher:
2016.07.28 13:00:00 1: KücheTür: position 0 anglePos 90 STATE 0

Nach Aufruf von "set  Rollo_Kueche_Tuer position 70" wird in der 10_EnOcean.pm folgendes übergeben und berechnet:
angleMax:90 angleMin:-90 anglePos:90 angleTime:0 position:100
PositionStart: 100
a[1]:70
data:00080108

--> fährt 8 Sec. nach oben obwohl er eigentlich runter fahren müsste.

Das ist alles sehr seltsam, da das ganze nicht reproduzierbar ist und nur manchmal auftritt. In dem Beispiel oben sind 3 Rollos richtig gefahren und einer nicht.

Hat vielleicht jemand eine Idee was das sein könnte bzw. wie ich mir noch helfen kann die Ursache rauszufinden.

Danke und Gruß,
Oli

krikan

Hallo!
Welcher Aktor ist das? Ein Peha EBIM? Dort gab/gibt(?) es mEn ein Firmwareproblem (User Spartacus hat das hier im Forum berichtet).
Gruß, Christian

Bitzer

Hi,

ich habe Eltako FSB12 im Einsatz und verwende die Logik von CountAlmasy zur Positionsbestimmung der Rollos, da die Aktoren noch unidirektional sind.

Inzwischen habe ich herausgefunden warum der falsche Positionswert (scheinbar) übergeben wird. Wenn ich die Rollos über FHEM runterfahre (set ... closes) dann wird das Reading "state" auf closed gesetzt. Am nächsten morgen fahre ich den Rollo wieder hoch, aber diesmal mit dem Hardwareschalter. Die Routine von CountAlmasy setzt nur das Reading "position" auf 0, state bleibt closed. Beim nächsten set ... position Befehl wird das Reading "state" in der 10_Enocean.pm ausgewertet:

my $actualState = ReadingsVal($name, "state", undef);
  if (defined $actualState) {
    if ($actualState eq "open") {
      $position = 0;
      $anglePos = 0;
    } elsif ($actualState eq "closed") {
      $position = 100;
      $anglePos = $angleMax;
    }


Und da state fälschlicherweise noch auf closed steht wird postion = 100 und somit wird die Laufzeit und Richtung falsch berechnet. Ich habe das jetzt gelöst indem ich das Reading state manuell umschreibe auch wenn ein Hardwaretaster gedrückt wird.

Mir ist aber noch nicht klar was genau der Unterschied zwischen state und STATE ist im Zusammenhang mit Eltako Rolladenaktoren. Kann mir das jemand erklären?

Danke und viele Grüße,
Oli

krikan

Der Unterschied zwischen Internal STATE und Reading state ist hieraus http://www.fhemwiki.de/wiki/DevelopmentState zu erlesen. Das ist grds. keine Spezialität von Eltako Rolladenaktoren.