Autor Thema: SOMFY Rolladen und Handsender Status bzw. Position abgleichen mit SIGNALduino  (Gelesen 11435 mal)

Offline MCh76

  • Jr. Member
  • **
  • Beiträge: 91
Hallo,

ich habe die SOMFY_Parse sub mal so erweitert, dass man beim Handsender über ein Attribut die Rolläden hinterlegen kann und sich der Status der Rolläden auch ändert, wenn man den Handsender drückt.

So wirds gemacht:

attr Az_FB_FRoll userattr associated-devices
attr Az_FB_FRoll associated-devices  Az_FRolladen

Da können auch mehrere Rolläden stehen, wenn man z.B. auf einer Taste der FB mehrere Rolläden angelernt hat.

Ich hänge mal die geänderte SOMFY-Datei an. Die 10_SOMFY.pm sollte man entfernen, da ansonsten das Modul zweimal geladen wird und beim Neustart das log voll geschrieben wird.

Viel Spaß damit.

Ach ja, damit die Handsender überhaupt erkannt wurden, musste die Abfrage etwas weniger strikt erfolgen. Leider werden über den SignalDuino die gesendeten Signale nicht immer erkannt, so dass er meint, neue devices anlegen zu müssen.
Man sollte
attr autocreate disable 1
setzen, um nicht lauter Leichen oder die Rollos der Nachbarn anzulernen, was ja auch missbraucht werden könnte.

Elektrolurch

darf ich hier nochmals einhakenm ist ja einige zeit vergangen.
ich habe heute meine somfy rts markise auf von einem busware cul auf signalduino umgestellt, klappt alles.
das betätigen des handsenders wurde auch erkannt , device heisst nun out_markise_fb und mittels user-attribute habe
ich diese wie beschrieben mit dem gerät out_markise assoziert.
leider synchronisiert sich der status der markise aber nicht.

nun stehe ich etwas auf dem schlauch:
wenn ich es richtig verstehe wird das associated-devices user-attribut nicht vom 10_somfy unterstützt? oder hat sich seither was getan hier?
und falls nicht: wie entferne ich wie oben von elektrolurch vorgeschlagen die 10_somfy.pm und ersetze diese durch die myutils Version?
danke für ne kurze info.
VG,
Chris

Offline Elektrolurch

  • Hero Member
  • *****
  • Beiträge: 1459
Hallo,

für wahr, ist schon lange her....
Ich bin mir nicht sicher, ob das neue Attribut mit in die aktuelle Version  von 10_SOMFY.pm übernommen  wurde.
Es gibt zwei Möglichkeiten, das Modul zu ersetzen:
1. Ersetzte einfach im FHEM - Ordner die 10_SOMFY.pm durch die 99_myUtilsSOMFY.pm und verhindere über das global Attribut exclude_from_update  das bei einem Update das Modul überschrieben wird oder
2. die 99_myUtils...pm Module werden als letztes geladen, überschreiben also andere Module, falls die subs die gleichen Namen haben.

Ich hänge Dir mal die Version an, die bei mir derzeit läuft und auch mit den Handsendern funktioniert.


Elektrolurch
configDB und Windows befreite Zone!

Offline MCh76

  • Jr. Member
  • **
  • Beiträge: 91
Hallo Elektrolurch,

danke für deine Erklärungen. Ich habe nun mal deine 10_SOMFY.pm Datei genommen und meine bestehende ersetzt.
Leider kein Erfolg. im per autocreate erzeugten FB-device kommen die Aktionen beim Drücken an, aber nicht im verknüpften Markisen-device.
Wenn ich im Editor deine Datei mal anschaue, finde ich mit meinen bescheidenen PERL kenntnissen auch kein
Coding zum "associate-devices" attribut...Muss da ggf. noch was bei mir lokal ergänzt werden?
VG,
Chris

Offline Elektrolurch

  • Hero Member
  • *****
  • Beiträge: 1459
Hallo,

Meine Fernbedienung sieht so aus:
associated-devices Az_FRolladen
model somfyshutter
userattr associated-devices

und der zugehörige Rolladen Az_FRolladen:
IODev CUL_433
additionalPosReading pos
alias Fenster
devStateIcon geschlossen:fts_shutter_100@#2222ff:offen 0:fts_shutter_100@#3333ff:offen  gesperrt|10$:fts_shutter_90@#4444ff:offen Dämmerung|20:fts_shutter_80@#5555ff:offen Sonnenschutz|30:fts_shutter_70@#6666ff:offen 40:fts_shutter_60@#7777ff:offen 50:fts_shutter_50@#9988CC:offen 60:fts_shutter_40@#AA7788:offen 70:fts_shutter_30@#aa8866:offen 80:fts_shutter_20@#bb8822:offen 90:fts_shutter_10@#cc8822:gesperrt offen:fts_shutter_0@#ff8800:gesperrt
drive-down-time-to-100 13.3
drive-down-time-to-close 16.9
drive-up-time-to-100 3.18
drive-up-time-to-open 17.67
event-on-change-reading state,pos
eventMap {'usr' => {'offen' => 'off', 'geschlossen' => 'on',  'gesperrt' => 'pos 0', 'Dämmerung' => 'pos 20', 'Sonnenschutz' => 'pos 30'}, 'dev' => {'open' => 'offen', 'closed' => 'geschlossen', '^30$' => 'Sonnenschutz', '^20$' => 'Dämmerung', '^0$' => 'gesperrt'}}
genericDeviceType blind
group Rolladen
homebridgeMapping CurrentPosition=position,minValue=0,maxValue=100,minStep=10
icon fts_window_2w
model somfyshutter
positionInverse 1
room Homekit
verbose 1

Habe das gerade noch einmal überprüft. Da ich den SignalDuino an einem anderen System betreibe, habe ich die Fernbedienungen per fhem2fhem gekoppelt und mir auf die Fernbedienungen ein notify gesetzt:
define SD_notify notify (Alle.|[A-Z][a-z])_FB_.*Roll:.* {SD1_not($NAME,$EVENT)}
In Deinem Fall ist die regex für die Fernbedienungen durch den Namen der Fernbedienung für die Markise zu ersetzen.

Und der zugehörige perl-Code sieht wie folgt aus:
sub SD1_not($$)
{
my ($name,$event) = @_;
my ($rd,$val) = split(': ',$event);
my $ads = AttrVal($name,'associated-devices',undef);
if(defined($ads))
{
# Ton ausgeben, FB betätigt
DoSet("sig2",6,2) if($name =~m/FB_.*Roll$/);
foreach my $ad (split("[ ,\t]+",$ads))
{
# Log(1,"SD_not: $name set $ad virtual $val");

DoSet($ad,'virtual',$val);
Log3 $name, 4, "SOMFY $name associated-device $ad $val";
} # liste
} # if ad
return undef;

} # end sub SD1_not
##############################

Die Zeile
DoSet("sig2",6,2) if($name =~m/FB_.*Roll$/);
kannst Du auskommentieren, sie erzeugt nur ein Geräusch, wenn über die FB ein Rolladen bedient wird und fhem das mittrackt.
Sorry, dachte, ich hätte den Code schon in das Somfy-Modul eingebracht.
Das Stückckchen Code liest das Attribut ssociated-devices aus und setzt dann bei den devices die Position.
Da das jetzt schon lange her ist.... na ja. Kann ja schon mal passieren, dass man nicht mehr weiß, wie man etwas gelöst hat.

Elektrolurch


configDB und Windows befreite Zone!

Offline MCh76

  • Jr. Member
  • **
  • Beiträge: 91
Hallo elektrolurch,

*update nach ausprobieren*
dein Lösungsweg funktioniert wunderbar. Markisenstatus wird perfekt synchronisiert nach
Betätigen der Original Fernbedienung. Nochmals vielen Dank!

vg,
chris
« Letzte Änderung: 09 Juli 2019, 09:04:25 von MCh76 »