Jalousiesteuerung im vollen Umfang

Begonnen von NehCoy, 27 August 2017, 12:11:12

Vorheriges Thema - Nächstes Thema

JoeALLb

nachtrag:

Ein
set EG.Essz.Jalousie.TerrasseLinks.Position Pos.Absolute50
sollte funktionieren...
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

superverbleit

Hallo Zusammen,

nach längerem hin und her habe ich es jetzt folgendermaßen gelöst.

Device für die Position inklusive Slider:
define EG.Essz.Jalousie.TerrasseLinks.Position KNX 2/1/109:dpt5.001:Pos.Status 2/4/102:dpt5.001:Pos.Absolute:nosuffix
attr EG.Essz.Jalousie.TerrasseLinks.Position group Jalousien
attr EG.Essz.Jalousie.TerrasseLinks.Position room Wohnbereich
attr EG.Essz.Jalousie.TerrasseLinks.Position webCmd Pos.Absolute
attr EG.Essz.Jalousie.TerrasseLinks.Position widgetOverride Pos.Absolute:slider,0,1,100
attr EG.Essz.Jalousie.TerrasseLinks.Position icon fts_shutter_updown


Dann gibt es ein zusätzliches Device, das ich nur für mein notify brauche und somit einfach dem Raum hidden zugewiesen:
define EG.Essz.Jalousie.TerrasseLinks.PosStatus KNX 2/1/109:dpt5.001:Pos.Status
attr EG.Essz.Jalousie.TerrasseLinks.PosStatus room hidden


Dieses Device wird nach jeder Fahrt vom Aktor aktualisiert.

Damit jetzt auch eine Änderung des Sliders über ein Wandtaster funktioniert, habe ich mir folgendes notify gebaut:
define x_EG.Essz.Jalousie.TerrasseLinks.Position notify EG.Essz.Jalousie.TerrasseLinks.Position {
   my $i=Value("EG.Essz.Jalousie.TerrasseLinks.Position");
   if(Value("EG.Essz.Jalousie.TerrasseLinks.Position_T")) {fhem("delete EG.Essz.Jalousie.TerrasseLinks.Position_T")};
   fhem("define EG.Essz.Jalousie.TerrasseLinks.Position_T at +00:00:01 setreading EG.Essz.Jalousie.TerrasseLinks.Position Pos.Absolute $i")
}

Mit jeder Statusänderung wird der Statuswert ausgelesen und übe setreading EG.Essz.Jalousie.TerrasseLinks.Position Pos.Absolute zugewiesen.
Setreading aktualisert nur den Wert des Sliders und sendet keine aktionen an den Bus.
Damit der Slider auch im Browser aktualisiert wird, wird einfach ein Dummy define angelegt. Hab ich mal so in einem anderen Beispiel abgeschaut.
Andernfalls wird nur der State aktualisiert und nicht der Slider.
Da gibts vermutlich auch bessere Lösungen, hab aber leider keine gefunden. Vielleicht kann mir da einer einen alternativen Weg zeigen.

Vielen Dank dann mal für eure Unterstützung.

Gruß Stefan



JoeALLb

Servus!
Ich würde immer noch denken, dass es einfacher wäre wenn du am Wandtaster statt "Hoch" einfach "position 0%" sendest.
(Also an die andere GA).
Dadurch würde automatisch auch das Reading "position" den richtigen Wert erhalten!!

Denoch: Das hier müsste das selbe ergebnis liefern wie dein code:, nur weniger kompliziert und mit nur einem device statt 2 + zusätzlichem AT-Device...
attr EG.Essz.Jalousie.TerrasseLinks.Position stateCmd {\
  fhem("sleep 0.1;;setreading $name Pos.Absolute ".ReadingsVal($name,"Pos.Status",""));;\
}


sG
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270