SOMFY Rolladen und Handsender Status bzw. Position abgleichen mit SIGNALduino

Begonnen von timtom, 20 Mai 2017, 14:35:24

Vorheriges Thema - Nächstes Thema

kibeki

Hallo Rolf,
danke für den Hinweis. Sehr hilfreich.

Soll hierbei 2. beim Handsender das Attribut rawDevice mit ADDRESS vom SIGNALduino-Device pflegen
die ADDRESS vom Handsender oder Rolladen eingetragen werden, oder tatsächlich die ADDRESS von meinem signalduino-Interface.


nagelreo

Hallo kibeki,

die Adresse vom Rolladen-Device, mit welchem der Rolladen über Fhem gesteuert wird.
Die Position des Rolladens wird damit bei der Steuerung über den Handsender im Rolladen-Device abgeglichen.

Ich hoffe, ich habe das verständlich beschrieben. Wenn nicht einfach nochmals nachfragen.

Gruß
Rolf

gestein

Hallo,

der Thread hier hat mir sehr beim Einbinden meiner SOMFYs in fhem geholfen.
Mittlerweile funktioniert es ganz gut, die Fernbedienungen und die Wandtaster werden korrekt erkannt.

Wie wahrscheinlich bei allen geht es jetzt bei mir noch um die korrekte Behandlung des my-Befehls.
Es gibt da einige Ansätze (auch hier).
Aber es ist immer viel Zeit ins Land gegangen und es gab etliche Weiterentwicklungen bzw. Ideen.

Wie ist denn nun der aktuelle Stand dazu?

Kann man die my-Position irgendwie nutzen?
Gibt es dazu mit der aktuellen FW eine Möglichkeit?

Danke im Voraus
liebe Grüße
Gerhard

nagelreo

Hallo Gerhard,

nach meinem Kenntnisstand gibt zu my-Position keine Änderung.

Ich gleiche die Rollos bei stop auf 50% (stop:fts_shutter_50) über ein Notify ab, bei on bzw. off siehe unten.

Device Handsender
defmod Dach_FB SOMFY 32EA99
attr Dach_FB IODev MapleSduino1
attr Dach_FB devStateIcon off:fts_shutter_10 stop:fts_shutter_50 on:fts_shutter_100
attr Dach_FB group Somfy_FB
attr Dach_FB model somfyremote
attr Dach_FB room Auxiliary
attr Dach_FB stateFormat {ReadingsVal("Dach_FB", "parsestate", "")."\
".ReadingsTimestamp("Dach_FB", "parsestate","")}


Notify
defmod notify_Dach_FB notify Dach_FB:parsestate.* IF (ReadingsVal("Dach_FB","parsestate","") eq "on") (setstate Dach fts_shutter_100@orange) ELSE (IF (ReadingsVal("Dach_FB","parsestate","") eq "off") (setstate Dach fts_shutter_10@orange) ELSE (setstate Dach fts_shutter_50@orange));;trigger Dach

Im Rollo device wird dabei das devStateIcon mit der Farbe orange überschrieben, dadurch sehe ich auch, dass der Handsender gedrückt wurde.

Das funktioniert sehr gut, vorausgesetzt, die Signale werden ekannt. Damit habe ich seit ein paar Monaten keine Probleme mehr.
Ein Problem gibt es aber noch, die Position vom Handsender wird durch AutoShutterControl fälschlicherweise überschrieben, wenn der Rollo (z.B. vorübergehend) déaktiviert ist. Dazu habe ich CoolTux um Abhilfe gebeten.

Leider ist mir keine Option bekannt, bei der die "exakte" Position abglichen wird, dazu müssten die Fahrzeiten ausgewertet werden.
Aber vielleicht hilft es, wenn sich die Funktion mehrere Nutzer zu Weihnachten wünschen.

Gruß
Rolf

Elektrolurch

Ich habe in meiner "privaten" Abänderung des Moduls die mid-Position gleich mit "Sperren" gesetzt, d.h. das Rollo fährt auf Position 100, wobei die untere Kante des Rollos gerade den Boden berührt und somit die Luftschlitze noch offen sind.
Daher "Sperren".
Eine Pos 50 halte ich für wenig funktionable....
Dann eher noch 80 für "Sonnenschutz" und 90 für "Dämmerung". Das kann man ja schön mit dem attr eventMap abbilden.

Ich habe zwar den Stop-Taster der FB mit integriert und auf Pos 100 abgebildet (könnte man ja dann per Attribut auf beliebige Fahrpositionen abbilden) aber leider funkts noch nicht so ganz zuverlässig, so dass ich das hier veröffentlichten könte.

Elektrolurch
configDB und Windows befreite Zone!

nagelreo

Hallo Elektrolurch,

ich bin mir nicht sicher, ob wir über das gleiche reden.

Beim Abgleich der Handsender geht es um die Anzeige der Position im devStateIcon.
Da der Befehl der Sop-Taste (my-Position, oder go-my...) des Handsenders vom Fhem device immer als Stop umgesetzt wird, funktioniert der Abgleich dabei nicht.

Ich habe für die Steuerung und Anzeige deren Position nur EINE Ansicht,
- Steuerung über Fhem Somfy-device: devStateIcon in grün abgestuft in 10 % Schritten
- Handsender: devStateIcon in orange, offen = ft_shutter_10, "my-Position" = ft_shutter_50 (unabhängig von der Position), zu = ft_shutter_100

Im Anhang sind die verschiedenen Positionen bei Steuerung über Fhem und über den Handsender zu sehen.
Abstell = über ASC auf 80 geöffnet
Bad = am Hansender die my-Taste gedrückt
Dach = am Hansender die zu-Taste gedrückt
Flur = am Hansender die auf-Taste gedrückt
Kueche_1 = Fhem device down button (rechts vom devStateIcon) gedrückt
Kueche_2 = Fhem device up button (rechts vom devStateIcon) gedrückt

Die zusätzlichen devices zum Empfang der Handsender Befehle und die notifys zum Überschreiben des devStateIcon sind in einem getrennten Ordner.

Schön wäre, wenn die tatsächliche my-Position ermittelt würde. Dazu müsste der "Stop (my-Taste)" Befehl des Handsender von Fhem entsprechend ausgewertet werden, d.h. wenn der Motor fährt = stop, wenn nicht = fahre bis wieder stop kommt, die Richtung ergibt sich aus der Start-Position, die Position aus der Zeit-Differenz.
Leider kann ich das nicht umsetzen.

Gruß
Rolf

BergMuel

Hallo zusammen,

Kann mir bitte jemand verraten, wie ich den 6-stelligen ADDRESS Code meiner Somfy Handbedienung ermitteln kann..?
Meine zwei SOMFY Antriebe funktionieren bereits bestens, aber nun möchte ich noch die bestehenden Handsender integrieren.
Da steh ich aber auf dem Schlauch...

Danke!

nagelreo

Hallo BergMuel,

autocreate aktivieren und eine Taste vom Handsender drücken, dann sollte ein device SOMFY_XXXXXX mit dem 6-stelligen Code erscheinen.

Gruß Rolf

andies

Aber Vorsicht - wenn du die via FHEM benutzt, kommen die Handsender aus dem Takt.
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

nagelreo

Hallo,

ZitatAber Vorsicht - wenn du die via FHEM benutzt, kommen die Handsender aus dem Takt.

Ich bin mir nicht sicher, ob der Rollo den rolling code hochzählt, wenn mit dem Handsender-device ein Fahrbefehl gesendet wird und der rolling code nicht zum aktuellen passt.
Ist aber egal, wenn das device für den Empfang vom Handsender als somfyremote (attr model) oder associatetd-device definiert wird. Damit werden nur die Signale vom Handsender empfangen und keine gesendet.

Gruß
Rolf


Elektrolurch

Für jede Fernbedienung / fhem - Instanz, die an einem Rollo angelernt wird, wird auch ein eigener Rolling Code im Rollo gespeichert. Somit kann also nichts aus dem Takt kommen, wenn man verschiedene FBs oder fhem - Instanzen für die Steuerung eines Rollos verwendet.
Mit den Rolling Codes hatte ich noch nie ein Problem.

Elektrolurch
configDB und Windows befreite Zone!

fervor

Hi,

kürzlich habe ich nach langer Zeit die angepasste Version von Rolf9 entdeckt und bei mir zum Laufen gebracht. Funktioniert wirklich deutlich besser,als mit der std.Version. Besten Dank dafür.

Für mich blieb nur die Abbildung der My Position etwas unbefriedigend. Daher folgendes notify:

Die Idee dahinter ist, dass die Zeit der letzte Statusmeldung ausgewertet wird. Ist die Differenz größer, als die längste Fahrzeit, wird stop als my interpretiert und eine vorher festgelegte Position manuel gesetzt

Welches Rollo auf my gesetzt wird, hängt dabei von der Benennung ab.
Fernbedienung: Remote.Raum.Rollo
Rollladen: Raum.Rollo
So kann ich quasi das betreffende Rollo ableiten.

Ich habe das ganze jetzt ein paar Tage am Laufen und bis jetzt klappt es soweit ganz gut.



Den no strict Teil habe ich so aus dem Forum kopiert, damit nicht so viele Fehlermeldungen im Logfile ankommen.


VG


Remote.*.Rollo:parsestate:.stop {

my $T_EVTPART1 = "";
{
no strict; #no warning - "$EVTPART1" requires explicit package name
if(defined($EVTPART1)){ #no warning - "Use of uninitialized value $T_EVTPART1"
$T_EVTPART1 = $EVTPART1;
}
use strict;
}
     

my $loc = index($NAME,"Remote");

# Remote enthalten, wurde von den Wandsendern getriggert
if ($loc != -1) {

   my $Rollo=substr($NAME,7,length($NAME));
   my $Rollo_my_Position;

   if ($Rollo eq "PC.Rollo")    { $Rollo_my_Position = 90; }
   if ($Rollo eq "SZ.Rollo")     { $Rollo_my_Position = 90; }
   if ($Rollo eq "HWR.Rollo")      { $Rollo_my_Position = 90; }
   if ($Rollo eq "Bad.Rollo")      { $Rollo_my_Position = 90; }
   if ($Rollo eq "WZ.gross.Rollo") { $Rollo_my_Position = 60; }
   if ($Rollo eq "WZ.klein.Rollo") { $Rollo_my_Position = 60; }
   if ($Rollo eq "K.Rollo")        { $Rollo_my_Position = 60; }   


my $time_since_last_event=(time_str2num(ReadingsTimestamp($Rollo,"state","0")) - time_str2num(OldTimestamp($Rollo)));
my $max_drive_time=AttrVal($Rollo,"drive-up-time-to-open",45);

# Mindestens x Sekunden seit dem letzten Tastendruck, d.h stop kann als my interpretiert werden.
if ($T_EVTPART1 eq "stop" && $time_since_last_event > $max_drive_time)
{
fhem("set $Rollo manual $Rollo_my_Position");
{ Log 1, "set $Rollo manual $Rollo_my_Position /  $time_since_last_event s > $max_drive_time s" }

}

}

}

gestein

Hallo,

vielen Dank.
Ich habe das erst mal mit dem Befehl "manual" bei meinen SOMFY-Rollos ausprobiert.
Der Befehl wird abgesetzt, aber was tut "manual"?

Bei mir passiert nix.
Der Rollo ändert seine Position nicht.

Danke im Voraus
lg, Gerhard

fervor

Hi,

manual setzt nur den Status des Rollladens.

Bei mir sind die Wandschalter mit den Rollläden normal gekoppelt und steuern rauf, runter, stop und eben my. Darum muss man sich nicht kümmern. Wenn ich jetzt z.B. mit den Wandschaltern die Position verändere, z.B. auf MY (50%), dann bekommt das fhem nicht mit. Wenn ich dann innerhalb fhem einen Fahrbefehl ausführe, dann fährt der Rollladen nicht z.B. auf 30%, sondern z.B. 80% (50+30%).

Mein Notify soll dass verhindern. Der erfasste Fahrbefehl der Wandsender wird also quasi in fhem "nachgezogen."

Ich denke so könnte man auch eine MY Taste simulieren - also die stopp Taste doppelt belegen.

Ich hoffe ich konnte jetzt für etwas Klarheit sorgen ;-)

VG

nagelreo

Hallo VG,

interessanter Lösungsansatz. Ich nutze ebenfalls ein notify, ändere die Position im icon aber nur auf offen, geschlossen oder 50%. Dies schien mir ein Kompromiss, da bei meinen Handsendern die my-Taste zum Starten auf my-Position und zum Stoppen einer Fahrt benutzt wird und wir die my-Position auch ändern.
Wenn ich dein notify richtig verstanden habe, könnte man dieses so ändern, daß die Position des Icons aber auch über das Verhältnis Fahrzeit/max. Fahrzeit berechnet werden.

Gruß Rolf