[73_AutoShuttersControl] Jalousien:Lamellen steuern -Version 0.9.x Beta

Begonnen von CoolTux, 16 April 2020, 15:31:29

Vorheriges Thema - Nächstes Thema

gestein

Passt zwar nicht hierher, aber ich frage es trotzdem kurz.
"move" ist ein internal und erzeugt keine events. Funktioniert dann das UserReading überhaupt?
Denn auf Anhieb hat es mal nicht funktioniert.

lg, Gerhard

Beta-User

MMn kann das (direkt) mit dem userReading nicht funktionieren.

Alternativ mal folgender Ansatz: über einen userReadings-Eintrag auf was triggerndes (position) eine Perl-Funktion starten, die dann alle paar Sekunden (rekursiver Aufruf via InternalTimer) checkt, ob das Internal "move" auf "off" steht und dann ein setreading ausführt?
Afaik muß nur "undef" (nach dem Aufruf der "eigentlichen Funktion") zurückgegeben werden, damit in userReadings "nichts" (direkt) passiert...
(vermutlich macht viegener in Somfy auch nicht viel anderes als _einen_ Timer zu setzen, um das Internal zu erzeugen, evtl. kann man ihn überreden, daraus (auch) ein triggerndes Reading zu machen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

gestein

Danke!

Als Workaround funktioniert mein DOIF mal ganz gut. Habe nur das Reading "position" durch "exact" ersetzt, damit dann auch z.B. "92" als Position drinnen steht.
Mit dem UserReading funktioniert dann auch die Erkennung der manuellen Fahrt richtig. Zumindest scheint es mal so.

Werde aber trotzdem viegener bitten, ob er nicht was im SOMFY ändern kann.
Immerhin müsste ich jetzt 7 DOIFs für 7 Rollos definieren.

lg, Gerhard

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FunkOdyssey

Zitat von: FunkOdyssey am 10 Mai 2020, 16:23:23
Ich muss mal ein Thema ansprechen, über das wir schon früher gesprochen haben:
Könnte man für die Helligkeitswerte bei der Beschattung ein anderes Device nutzen wie bei den normalen Fahrten? Es würde mir auch reichen, wenn es nur ein anderes Reading wäre, dass ich angeben könnte.

Mein Problem ist nämlich, dass mein Sensor Lux und Lightlevel misst.
- Lux kann ich wunderbar für die Sonnenstrahlen und daher für die Beschattung nutzen.
- Lightlevel sind Werte auf einer logarithmischen Skala und verhalten sich komplett anders. Es geht eher um die gefühlte Helligkeit und nicht die Sonneneinstrahlung.

In einigen Attributen erlaubt ASC bereits andere Device/Readings. Ging das bei ASC_Shading_StateChange_SunnyCloudy nicht auch?

Ich will dich absolut nicht nerven. Ich möchte nur die Umstellung bei mir ein wenig planen, da meine Beschattung aktuell gar nicht mehr funktioniert, da ich die Sensordaten so nicht verwenden kann. Das ist aber mein Problem. Ich könnte also auch den Lux-Sensor umstellen, den ich für die Beschattung perfekt nutzen kann. Nur hilft mir dieser nicht bei den Brightness-Fahrten.

Noch einmal: Kein Stress, aber kannst du sagen, ob das eher kurz-, mittel- oder langfristig eingebaut wird?

CoolTux

Zum jetzigen Zeitpunkt eher Langfristig. Aktuell habe ich unglaublich viel um die Ohren.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

FunkOdyssey


gestein

Hallo,

ich habe es nun geschafft, das Reading für die Position dann upzudaten, wenn die Fahrt zu Ende ist.
Dafür habe ich dann das Attribut "ASC_Pos_Reading" entsprechend gesetzt.
Allerdings erkennt nun ASC eigenartigerweise keine Fahrten mehr, obwohl ich zuerst dachte, dass funktioniert.

Das ist wirklich eine harte Nuss, die ich/wir da knacken sollen.

Danke im Voraus
lg, Gerhard

Hier der log für die erste Fahrt nach oben und dann wieder nach unten:
ASC_DEBUG!!! 2020.05.28 18:44:20 - EventProcessingTwilightDevice: Rollo.WZ.StiegeRechts - Alle Bedingungen zur weiteren Beschattungsverarbeitung sind erfüllt. Es wird nun die Beschattungsfunktion ausgeführt
2020.05.28 18:45:03.495 4: SOMFY_set: Rollo.WZ.StiegeRechts -> entering with mode :send: cmd :off:  arg1 ::  pos :92:
2020.05.28 18:45:03.495 4: SOMFY_set: handled command off --> move :off:  newState :92:
2020.05.28 18:45:03.495 5: SOMFY_set: handled for drive/udpate:  updateState :0:  drivet :0: updatet :16.56:
2020.05.28 18:45:03.496 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:92:   updatestate:0:   move:off:
2020.05.28 18:45:03.496 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:92:  rounded:90:  stateTrans:90:
2020.05.28 18:45:03.538 1: Rollo-WZ.StiegeRechts: move=off
2020.05.28 18:45:03.561 4: SOMFY_sendCommand: Rollo.WZ.StiegeRechts -> cmd :off:
2020.05.28 18:45:03.563 4: SOMFY_set: Rollo.WZ.StiegeRechts -> update state in 16.56 sec
2020.05.28 18:45:06.565 4: SOMFY_TimedUpdate
2020.05.28 18:45:06.565 5: SOMFY_TimedUpdate : pos so far : 92
2020.05.28 18:45:06.566 5: SOMFY_TimedUpdate : delta time : 3.00   new rounde pos (rounded): 75.3333333333333
2020.05.28 18:45:06.567 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:75.3333333333333:   updatestate:0:   move:off:
2020.05.28 18:45:06.567 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:75.3333333333333:  rounded:80:  stateTrans:80:
2020.05.28 18:45:06.673 4: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> update state in 13.56 sec
2020.05.28 18:45:06.673 5: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> next time to stop: 1590684309.55633
2020.05.28 18:45:06.673 5: SOMFY_TimedUpdate DONE
2020.05.28 18:45:09.557 4: SOMFY_TimedUpdate
2020.05.28 18:45:09.557 5: SOMFY_TimedUpdate : pos so far : 75.3333333333333
2020.05.28 18:45:09.558 5: SOMFY_TimedUpdate : delta time : 2.99   new rounde pos (rounded): 58.7222222222222
2020.05.28 18:45:09.559 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:58.7222222222222:   updatestate:0:   move:off:
2020.05.28 18:45:09.559 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:58.7222222222222:  rounded:60:  stateTrans:60:
2020.05.28 18:45:09.610 4: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> update state in 10.57 sec
2020.05.28 18:45:09.611 5: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> next time to stop: 1590684312.54822
2020.05.28 18:45:09.611 5: SOMFY_TimedUpdate DONE
2020.05.28 18:45:12.550 4: SOMFY_TimedUpdate
2020.05.28 18:45:12.550 5: SOMFY_TimedUpdate : pos so far : 58.7222222222222
2020.05.28 18:45:12.552 5: SOMFY_TimedUpdate : delta time : 2.99   new rounde pos (rounded): 42.1111111111111
2020.05.28 18:45:12.552 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:42.1111111111111:   updatestate:0:   move:off:
2020.05.28 18:45:12.553 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:42.1111111111111:  rounded:40:  stateTrans:40:
2020.05.28 18:45:12.656 4: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> update state in 7.58 sec
2020.05.28 18:45:12.656 5: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> next time to stop: 1590684315.54151
2020.05.28 18:45:12.657 5: SOMFY_TimedUpdate DONE
2020.05.28 18:45:15.619 4: SOMFY_TimedUpdate
2020.05.28 18:45:15.619 5: SOMFY_TimedUpdate : pos so far : 42.1111111111111
2020.05.28 18:45:15.620 5: SOMFY_TimedUpdate : delta time : 3.07   new rounde pos (rounded): 25.0555555555555
2020.05.28 18:45:15.620 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:25.0555555555555:   updatestate:0:   move:off:
2020.05.28 18:45:15.620 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:25.0555555555555:  rounded:30:  stateTrans:30:
2020.05.28 18:45:15.664 4: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> update state in 4.51 sec
2020.05.28 18:45:15.665 5: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> next time to stop: 1590684318.60992
2020.05.28 18:45:15.665 5: SOMFY_TimedUpdate DONE
2020.05.28 18:45:18.611 4: SOMFY_TimedUpdate
2020.05.28 18:45:18.612 5: SOMFY_TimedUpdate : pos so far : 25.0555555555555
2020.05.28 18:45:18.612 5: SOMFY_TimedUpdate : delta time : 2.99   new rounde pos (rounded): 8.44444444444443
2020.05.28 18:45:18.613 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:8.44444444444443:   updatestate:0:   move:off:
2020.05.28 18:45:18.613 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:8.44444444444443:  rounded:10:  stateTrans:10:
2020.05.28 18:45:18.698 4: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> update state in 1.52 sec
2020.05.28 18:45:18.699 5: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> next time to stop: 1590684320.12266
2020.05.28 18:45:18.699 5: SOMFY_TimedUpdate DONE
2020.05.28 18:45:20.123 4: SOMFY_TimedUpdate
2020.05.28 18:45:20.124 5: SOMFY_TimedUpdate : pos so far : 8.44444444444443
2020.05.28 18:45:20.124 5: SOMFY_TimedUpdate : delta time : 1.51   new rounde pos (rounded): 0.0555555555555429
2020.05.28 18:45:20.124 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:0:   updatestate:<undef>:   move:stop:
2020.05.28 18:45:20.125 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:0:  rounded:0:  stateTrans:open:
2020.05.28 18:45:20.165 1: Rollo-WZ.StiegeRechts: move=stop;position=0
2020.05.28 18:45:20.188 5: SOMFY_TimedUpdate DONE

--------------------------------------------------------------------------

ASC_DEBUG!!! 2020.05.28 18:47:24 - FnSetCmdFn: Rollo.WZ.StiegeRechts - Rollo wird gefahren, aktuelle Position: 0, Zielposition: 92. Grund der Fahrt: shading in
2020.05.28 18:47:24.735 4: SOMFY_set: Rollo.WZ.StiegeRechts -> entering with mode :send: cmd :pos:  arg1 :92:  pos :0:
2020.05.28 18:47:24.736 4: SOMFY_set: handled command pos --> move :on:  newState :0:
2020.05.28 18:47:24.737 5: SOMFY_set: handled for drive/udpate:  updateState :92:  drivet :13.8: updatet :0:
2020.05.28 18:47:24.737 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:0:   updatestate:92:   move:on:
2020.05.28 18:47:24.738 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:0:  rounded:0:  stateTrans:open:
2020.05.28 18:47:24.789 1: Rollo-WZ.StiegeRechts: move=on
2020.05.28 18:47:24.813 4: SOMFY_sendCommand: Rollo.WZ.StiegeRechts -> cmd :on:
2020.05.28 18:47:24.816 4: SOMFY_set: Rollo.WZ.StiegeRechts -> stopping in 13.8 sec
2020.05.28 18:47:28.044 4: SOMFY_TimedUpdate
2020.05.28 18:47:28.045 5: SOMFY_TimedUpdate : pos so far : 0
2020.05.28 18:47:28.046 5: SOMFY_TimedUpdate : delta time : 3.23   new rounde pos (rounded): 21.5333333333333
2020.05.28 18:47:28.047 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:21.5333333333333:   updatestate:92:   move:on:
2020.05.28 18:47:28.048 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:21.5333333333333:  rounded:20:  stateTrans:20:
2020.05.28 18:47:28.121 4: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> stopping in 10.57 sec
2020.05.28 18:47:28.122 5: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> next time to stop: 1590684451.0361
2020.05.28 18:47:28.122 5: SOMFY_TimedUpdate DONE
2020.05.28 18:47:31.037 4: SOMFY_TimedUpdate
2020.05.28 18:47:31.038 5: SOMFY_TimedUpdate : pos so far : 21.5333333333333
2020.05.28 18:47:31.039 5: SOMFY_TimedUpdate : delta time : 2.99   new rounde pos (rounded): 41.4666666666667
2020.05.28 18:47:31.040 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:41.4666666666667:   updatestate:92:   move:on:
2020.05.28 18:47:31.041 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:41.4666666666667:  rounded:40:  stateTrans:40:
2020.05.28 18:47:31.136 4: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> stopping in 7.58 sec
2020.05.28 18:47:31.137 5: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> next time to stop: 1590684454.02962
2020.05.28 18:47:31.137 5: SOMFY_TimedUpdate DONE
2020.05.28 18:47:34.030 4: SOMFY_TimedUpdate
2020.05.28 18:47:34.031 5: SOMFY_TimedUpdate : pos so far : 41.4666666666667
2020.05.28 18:47:34.031 5: SOMFY_TimedUpdate : delta time : 2.99   new rounde pos (rounded): 61.4
2020.05.28 18:47:34.032 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:61.4:   updatestate:92:   move:on:
2020.05.28 18:47:34.032 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:61.4:  rounded:60:  stateTrans:60:
2020.05.28 18:47:34.085 4: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> stopping in 4.59 sec
2020.05.28 18:47:34.086 5: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> next time to stop: 1590684457.0215
2020.05.28 18:47:34.086 5: SOMFY_TimedUpdate DONE
2020.05.28 18:47:37.022 4: SOMFY_TimedUpdate
2020.05.28 18:47:37.022 5: SOMFY_TimedUpdate : pos so far : 61.4
2020.05.28 18:47:37.023 5: SOMFY_TimedUpdate : delta time : 2.99   new rounde pos (rounded): 81.3333333333333
2020.05.28 18:47:37.023 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:81.3333333333333:   updatestate:92:   move:on:
2020.05.28 18:47:37.023 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:81.3333333333333:  rounded:80:  stateTrans:80:
2020.05.28 18:47:37.087 4: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> stopping in 1.6 sec
2020.05.28 18:47:37.087 5: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> next time to stop: 1590684458.61299
2020.05.28 18:47:37.088 5: SOMFY_TimedUpdate DONE
2020.05.28 18:47:38.619 4: SOMFY_TimedUpdate
2020.05.28 18:47:38.621 5: SOMFY_TimedUpdate : pos so far : 81.3333333333333
2020.05.28 18:47:38.622 5: SOMFY_TimedUpdate : delta time : 1.60   new rounde pos (rounded): 92
2020.05.28 18:47:38.622 4: SOMFY_sendCommand: Rollo.WZ.StiegeRechts -> cmd :stop:
2020.05.28 18:47:38.628 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:92:   updatestate:<undef>:   move:stop:
2020.05.28 18:47:38.628 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:92:  rounded:90:  stateTrans:90:
2020.05.28 18:47:38.684 1: Rollo-WZ.StiegeRechts: move=stop;position=92
2020.05.28 18:47:38.712 5: SOMFY_TimedUpdate DONE


Kann es sein, dass das Rollo keine Events mehr schickt?

Hier das list:
Internals:
   ADDRESS    12342F
   DEF        12342F A8 0734
   FUUID      5c43b917-f33f-0b7a-bfee-b0b0d1bf27a36266
   FVERSION   10_SOMFY.pm:v1.0.0-s21792/2020-04-28
   IODev      mySIGNALduino
   NAME       Rollo.WZ.StiegeRechts
   NR         514
   STATE      90
   TYPE       SOMFY
   move       stop
   CODE:
     1          12342F
   READINGS:
     2020-01-04 22:48:18   ASC_Enable      on
     2020-05-28 19:24:23   ASC_ShadingMessage INFO: current shading status is 'in' - next check in 5m
     2020-05-28 18:35:16   ASC_ShuttersLastDrive shading in
     2020-05-28 16:20:07   ASC_Time_DriveDown 28.05.2020 - 23:30
     2020-05-28 16:20:07   ASC_Time_DriveUp 29.05.2020 - 06:00
     2020-05-28 16:20:00   associatedWith  myASControl
     2020-05-28 18:47:38   enc_key         A8
     2020-05-28 18:47:38   exact           92
     2020-05-27 15:49:41   myBrightness    74552
     2020-05-27 15:49:41   myBrightnessForShadingCloudy 200
     2020-05-27 15:49:41   myBrightnessForShadingSunny 2000
     2020-05-27 15:49:41   myShadingPASS_GreaterBrightnessSunny True
     2020-05-27 15:49:41   myShadingPASS_GreaterSunAzimuthLeft True
     2020-05-27 15:49:41   myShadingPASS_GreaterSunElevationMin True
     2020-05-27 15:49:41   myShadingPASS_GreaterTemperatureExternMin True
     2020-05-27 15:49:41   myShadingPASS_LowerBrightnessCloudy True
     2020-05-27 15:49:41   myShadingPASS_LowerSunAzimuthRight True
     2020-05-27 15:49:41   myShadingPASS_LowerSunElevationMax True
     2020-05-27 15:49:41   mySunAzimuth    249.17
     2020-05-27 15:49:41   mySunAzimuthLeft 180
     2020-05-27 15:49:41   mySunAzimuthRight 360
     2020-05-27 15:49:41   mySunElevation  46.16
     2020-05-27 15:49:41   mySunElevationForShadingMax 90
     2020-05-27 15:49:41   mySunElevationForShadingMin 5
     2020-05-27 15:49:41   myTemperatureExtern 16.8
     2020-05-27 15:49:41   myTemperatureExternForShadingMin 11
     2020-05-28 18:47:38   position        90
     2020-05-28 18:47:38   rolling_code    0734
     2020-05-28 18:47:38   state           90
     2020-05-28 18:47:38   usrPos          92
   helper:
     bm:
       SOMFY_Attr:
         cnt        2
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        28.05. 18:36:32
         max        0.000123023986816406
         tot        0.00014805793762207
         mAr:
           set
           Rollo.WZ.StiegeRechts
           ASC_Pos_Reading
           usrPos
       SOMFY_Set:
         cnt        339
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        28.05. 17:20:08
         max        0.127091884613037
         tot        4.76371717453003
         mAr:
           HASH(0x4a21550)
           Rollo.WZ.StiegeRechts
           position
           92
Attributes:
   ASC        1
   ASC_BrightnessSensor TW.Helligkeit
   ASC_Closed_Pos 200
   ASC_Down   time
   ASC_Drive_DelayStart 50
   ASC_ExternalTrigger dyExternalTriggerTV4Rollos:state online:offline 90
   ASC_GuestRoom off
   ASC_Mode_Down off
   ASC_Partymode on
   ASC_Pos_Reading usrPos
   ASC_Shading_InOutAzimuth 180:360
   ASC_Shading_MinMax_Elevation 5:90
   ASC_Shading_Min_OutsideTemperature 11
   ASC_Shading_Mode always
   ASC_Shading_Pos { return 92; }
   ASC_Shading_StateChange_SunnyCloudy 2000:200
   ASC_Shading_WaitingPeriod 300
   ASC_ShuttersPlace window
   ASC_Sleep_Pos 95
   ASC_TempSensor OZW772:Aussentemperatur
   ASC_Time_Down_Early 23:30
   ASC_Time_Up_Early 6:00
   ASC_Up     time
   ASC_WindProtection on
   IODev      mySIGNALduino
   autoStoreRollingCode 1
   devStateIcon open:fts_shutter_10 down:fts_shutter_100 100:fts_shutter_100 9\d.*:fts_shutter_90 8\d.*:fts_shutter_80 7\d.*:fts_shutter_70 6\d.*:fts_shutter_60 5\d.*:fts_shutter_50 4\d.*:fts_shutter_40 3\d.*:fts_shutter_30 2\d.*:fts_shutter_20 1\d.*:fts_shutter_10 0\d.*:fts_shutter_10 closed:fts_shutter_100@black 200:fts_shutter_100@black 19\d.*:fts_shutter_90@black 18\d.*:fts_shutter_80@black 17\d.*:fts_shutter_70@black 16\d.*:fts_shutter_60@black 15\d.*:fts_shutter_50@black 14\d.*:fts_shutter_40@black 13\d.*:fts_shutter_30@black 12\d.*:fts_shutter_20@black 11\d.*:fts_shutter_10@black
   drive-down-time-to-100 15
   drive-down-time-to-close 33
   drive-up-time-to-100 12
   drive-up-time-to-open 30
   eventMap   on:runter stop:stop go-my:my off:rauf
   fhem_widget_channels [{"filter":"public","alias":"Rollo\nWZ Rechts","allowed_values":["0","20","40","60","80","100"],"order":209,"locations":["SIRI","APP","WIDGET"],"group":"Rollos","controlled_attribute":"position"}]
   genericDeviceType blind
   group      Rolladenstatus
   homebridgeMapping clear CurrentPosition=position,minValue=0,maxValue=100,minStep=10 TargetPosition=position,minValue=0,maxValue=100,minStep=10,cmds=0:close;;50:my;;100:open
   model      somfyshutter
   positionInverse 0
   room       Homekit,Rollos,SOMFY,Wohnzimmer,Z_System->fhemwidget2
   userReadings usrPos,
myBrightness {ascAPIget('BrightnessAverage',$NAME)},
myBrightnessForShadingCloudy {ascAPIget('ShadingStateChangeCloudy',$NAME)},
myBrightnessForShadingSunny {ascAPIget('ShadingStateChangeSunny',$NAME)},
myTemperatureExtern {ascAPIget('OutTemp',$NAME)},
myTemperatureExternForShadingMin {AttrVal("$NAME", "ASC_Shading_Min_OutsideTemperature","")},
mySunAzimuth {ascAPIget('Azimuth')},
mySunAzimuthLeft {ascAPIget('ShadingAzimuthLeft',$NAME)},
mySunAzimuthRight {ascAPIget('ShadingAzimuthRight',$NAME)},
mySunElevation {ascAPIget('Elevation')},
mySunElevationForShadingMin {ascAPIget('ShadingMinElevation',$NAME)},
mySunElevationForShadingMax {ascAPIget('ShadingMaxElevation',$NAME)},
myShadingPASS_GreaterBrightnessSunny {if (ReadingsNum("$NAME","myBrightness",0) > ReadingsNum("$NAME","myBrightnessForShadingSunny",0)) {"True"} else {"False"}},
myShadingPASS_LowerBrightnessCloudy {if (ReadingsNum("$NAME","myBrightness",0) > ReadingsNum("$NAME","myBrightnessForShadingCloudy",0)) {"True"} else {"False"}},
myShadingPASS_GreaterSunAzimuthLeft {if (ReadingsNum("$NAME","mySunAzimuth",0) > ReadingsNum("$NAME","mySunAzimuthLeft",0)) {"True"} else {"False"}},
myShadingPASS_LowerSunAzimuthRight {if (ReadingsNum("$NAME","mySunAzimuth",0) < ReadingsNum("$NAME","mySunAzimuthRight",0)) {"True"} else {"False"}},
myShadingPASS_GreaterSunElevationMin {if (ReadingsNum("$NAME","mySunElevation",0) > ReadingsNum("$NAME","mySunElevationForShadingMin",0)) {"True"} else {"False"}},
myShadingPASS_LowerSunElevationMax {if (ReadingsNum("$NAME","mySunElevation",0) < ReadingsNum("$NAME","mySunElevationForShadingMax",0)) {"True"} else {"False"}},
myShadingPASS_GreaterTemperatureExternMin {if (ReadingsNum("$NAME","myTemperatureExtern",0) > ReadingsNum("$NAME","myTemperatureExternForShadingMin",0)) {"True"} else {"False"}}

   userattr   ASC_Adv:on,off ASC_Antifreeze:off,soft,hard,am,pm ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_BlockingTime_afterManual ASC_BlockingTime_beforDayOpen ASC_BlockingTime_beforNightClose ASC_BrightnessSensor ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Down:time,astro,brightness,roommate ASC_DriveUpMaxDuration ASC_Drive_Delay ASC_Drive_DelayStart ASC_ExternalTrigger ASC_GuestRoom:on,off ASC_LockOut:soft,hard,off ASC_LockOut_Cmd:inhibit,blocked,protection ASC_Mode_Down:absent,always,off,home ASC_Mode_Up:absent,always,off,home ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Partymode:on,off ASC_Pos_Reading ASC_PrivacyDownValue_beforeNightClose ASC_PrivacyDown_Pos ASC_PrivacyUpValue_beforeDayOpen ASC_PrivacyUp_Pos ASC_RainProtection:on,off ASC_Roommate_Device ASC_Roommate_Reading ASC_Self_Defense_AbsentDelay ASC_Self_Defense_Mode:absent,gone,off ASC_Shading_InOutAzimuth ASC_Shading_MinMax_Elevation ASC_Shading_Min_OutsideTemperature ASC_Shading_Mode:absent,always,off,home ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Shading_StateChange_SunnyCloudy ASC_Shading_WaitingPeriod ASC_Shutter_IdleDetection ASC_ShuttersPlace:window,terrace ASC_SlatPosCmd_SlatDevice ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_TempSensor ASC_Time_Down_Early ASC_Time_Down_Late ASC_Time_Up_Early ASC_Time_Up_Late ASC_Time_Up_WE_Holiday ASC_Up:time,astro,brightness,roommate ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Ventilate_Window_Open:on,off ASC_WiggleValue ASC_WindParameters ASC_WindProtection:on,off ASC_WindowRec ASC_WindowRec_PosAfterDayClosed:open,lastManual ASC_WindowRec_subType:twostate,threestate room_map structexclude
   verbose    5
   webCmd     stop:my:runter:20:40:60:80:100:rauf

CoolTux

Schau bitte im Eventmonitor nach ob Dein Userreading ein Event wirft.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

gestein

Wenn Du damit den Eventmonitor im fhem meinst, der liefert (alle nicht-Somfy, nicht-Rollo und nicht-ASC Einträge habe ich rausgelöscht):
2020.05.28 20:21:37.681 4 : SOMFY_set: Rollo.WZ.StiegeRechts -> entering with mode :send: cmd :off:  arg1 ::  pos :0:
2020.05.28 20:21:37.681 4 : SOMFY_set: handled command off --> move :off:  newState :0:
2020.05.28 20:21:37.681 5 : SOMFY_set: handled for drive/udpate:  updateState ::  drivet :0: updatet :0:
2020.05.28 20:21:37.682 4 : SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:0:   updatestate:<undef>:   move:off:
2020.05.28 20:21:37.682 4 : SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:0:  rounded:0:  stateTrans:open:
2020.05.28 20:21:37.727 1 : Rollo-WZ.StiegeRechts: move=off
2020-05-28 20:21:37.739 DOIF diRollo.WZ.StiegeRechtsMove cmd_nr: 1
2020-05-28 20:21:37.739 DOIF diRollo.WZ.StiegeRechtsMove cmd: 1
2020-05-28 20:21:37.739 DOIF diRollo.WZ.StiegeRechtsMove cmd_event: Rollo.WZ.StiegeRechts
2020-05-28 20:21:37.739 DOIF diRollo.WZ.StiegeRechtsMove cmd_1
2020-05-28 20:21:37.761 SOMFY Rollo.WZ.StiegeRechts open
2020-05-28 20:21:37.761 SOMFY Rollo.WZ.StiegeRechts position: 0
2020-05-28 20:21:37.761 SOMFY Rollo.WZ.StiegeRechts exact: 0
2020.05.28 20:21:37.767 4 : SOMFY_sendCommand: Rollo.WZ.StiegeRechts -> cmd :off:
2020-05-28 20:21:59.720 SOMFY Rollo.SZ ASC_ShadingMessage: INFO: current shading status is 'out' - next check in 2.5m


Soll ich ein "event-on-change -*" oder "event-on-update .*" probieren?

lg, Gerhard

CoolTux

Ich sehe da nirgends ein Event für das Reading usrPos

Ich finde Dein Konstrukt sowieso sehr komisch.

userReadings usrPos,

Wo ist denn da der ganze Rest? Und wieso befüllt er dennoch das Reading
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Wscheff

#251
Zitat von: gestein am 28 Mai 2020, 19:27:34
Hallo,

ich habe es nun geschafft, das Reading für die Position dann upzudaten, wenn die Fahrt zu Ende ist.
Dafür habe ich dann das Attribut "ASC_Pos_Reading" entsprechend gesetzt.
Allerdings erkennt nun ASC eigenartigerweise keine Fahrten mehr, obwohl ich zuerst dachte, dass funktioniert.

Das ist wirklich eine harte Nuss, die ich/wir da knacken sollen.

Danke im Voraus
lg, Gerhard

Hallo Gerhard,

ich denke du musst hier das als userreading probieren:

usrPos:control.* { ReadingsVal("$NAME","control","0") }

wobei control = das Reading ist, dass sich ändert beim Fahren des Rollos

Gruss ws

gestein

Ich habe es bis dato leider nicht geschafft, das userreading usrPos richtig zu definieren. Daran arbeite ich noch.
Scheint nicht so einfach zu sein, wenn das auszuwertende "Reading" eigentlich ein Internal ist.
Daher habe ich - wie beschrieben - ein DOIF dafür definiert. Ist wahrscheinlich einfach in der Vielzahl der Beiträge untergegangen.

Zum Testen habe ich also folgendes definiert, das mir das Reading "usrPos" befüllt.
defmod diRollo.WZ.StiegeRechtsMove DOIF ([Rollo.WZ.StiegeRechts:&move] eq "off") {Log 1, "Rollo-WZ.StiegeRechts: move=off";;}\
DOELSEIF ([Rollo.WZ.StiegeRechts:&move] eq "on") {Log 1, "Rollo-WZ.StiegeRechts: move=on";;}\
DOELSEIF ([Rollo.WZ.StiegeRechts:&move] eq "stop") {my $pos=ReadingsVal("Rollo.WZ.StiegeRechts","exact",-1);; Log 1, "Rollo-WZ.StiegeRechts: move=stop;;position=$pos";; fhem("setreading Rollo.WZ.StiegeRechts usrPos $pos");;}
attr diRollo.WZ.StiegeRechtsMove room SOMFY


Wie gesagt, das ist z.Z. alles zum Testen. Schlußendlich hoffe ich, dass es auch anders und eleganter funktioniert ;)
Sobald das mit dem Erkennen der manuellen Fahrten einwandfrei funktioniert, werde ich auch die Art ändern, wie das "usrPos" befüllt wird.
Momentan klappt aber das DOIF, ich bekomme zum richtigen Zeitpunkt die richtigen log-Einträge.
Die Befüllung von usrPos klappt also.

Ich habe nun wiederum zum Testen im Rollo-Device ein "event-on-update .*" eingefügt.

Dann habe ich mir ein notify definiert, dass einfach einen log-Eintrag schreibt, wenn sich das "usrPos" ändert:
defmod n_Rollo.WZ.StiegeRechts notify Rollo.WZ.StiegeRechts:usrPos:.* {Log 1, "Rollo.WZ.StiegeRechts wirft ein Event: $EVENT, $EVTPART0, $EVTPART1";;}
Auch das erzeugt nun immer die richtigen Einträge im log-File, wenn ich den Rollo verfahre.

Beispielsweise so was, wenn ich den Rollo händisch 40% auf 0% verfahre:
2020.05.28 22:46:15.571 4: SOMFY_set: Rollo.WZ.StiegeRechts -> entering with mode :send: cmd :off:  arg1 ::  pos :40:
2020.05.28 22:46:15.572 4: SOMFY_set: handled command off --> move :off:  newState :40:
2020.05.28 22:46:15.573 5: SOMFY_set: handled for drive/udpate:  updateState :0:  drivet :0: updatet :7.2:
2020.05.28 22:46:15.574 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:40:   updatestate:0:   move:off:
2020.05.28 22:46:15.575 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:40:  rounded:40:  stateTrans:40:
2020.05.28 22:46:15.577 4: SOMFY_sendCommand: Rollo.WZ.StiegeRechts -> cmd :off:
2020.05.28 22:46:15.583 4: SOMFY_set: Rollo.WZ.StiegeRechts -> update state in 7.2 sec
2020.05.28 22:46:18.585 4: SOMFY_TimedUpdate
2020.05.28 22:46:18.587 5: SOMFY_TimedUpdate : pos so far : 40
2020.05.28 22:46:18.589 5: SOMFY_TimedUpdate : delta time : 3.00   new rounde pos (rounded): 23.3333333333333
2020.05.28 22:46:18.590 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:23.3333333333333:   updatestate:0:   move:off:
2020.05.28 22:46:18.591 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:23.3333333333333:  rounded:20:  stateTrans:20:
2020.05.28 22:46:18.666 1: Rollo-WZ.StiegeRechts: move=off
2020.05.28 22:46:18.700 4: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> update state in 4.2 sec
2020.05.28 22:46:18.701 5: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> next time to stop: 1590698781.57776
2020.05.28 22:46:18.701 5: SOMFY_TimedUpdate DONE
2020.05.28 22:46:21.578 4: SOMFY_TimedUpdate
2020.05.28 22:46:21.579 5: SOMFY_TimedUpdate : pos so far : 23.3333333333333
2020.05.28 22:46:21.579 5: SOMFY_TimedUpdate : delta time : 2.99   new rounde pos (rounded): 6.72222222222222
2020.05.28 22:46:21.580 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:6.72222222222222:   updatestate:0:   move:off:
2020.05.28 22:46:21.580 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:6.72222222222222:  rounded:10:  stateTrans:10:
2020.05.28 22:46:21.626 4: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> update state in 1.21 sec
2020.05.28 22:46:21.626 5: SOMFY_TimedUpdate: Rollo.WZ.StiegeRechts -> next time to stop: 1590698782.77972
2020.05.28 22:46:21.627 5: SOMFY_TimedUpdate DONE
2020.05.28 22:46:22.781 4: SOMFY_TimedUpdate
2020.05.28 22:46:22.781 5: SOMFY_TimedUpdate : pos so far : 6.72222222222222
2020.05.28 22:46:22.782 5: SOMFY_TimedUpdate : delta time : 1.20   new rounde pos (rounded): 0.0555555555555545
2020.05.28 22:46:22.783 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts enter with  newState:0:   updatestate:<undef>:   move:stop:
2020.05.28 22:46:22.783 4: SOMFY_UpdateState: Rollo.WZ.StiegeRechts after conversions  newState:0:  rounded:0:  stateTrans:open:
2020.05.28 22:46:22.845 1: Rollo-WZ.StiegeRechts: move=stop;position=0
2020.05.28 22:46:22.862 1: Rollo.WZ.StiegeRechts wirft ein Event: usrPos: 0, usrPos:, 0
2020.05.28 22:46:22.874 5: SOMFY_TimedUpdate DONE

Wie man sieht, wirft das usrPos ein Event (vorletzte Zeile), aber ASC reagiert nicht darauf.

Momentan weiß ich nicht weiter.
lg, Gerhard

Wscheff

Wenn Position das Reading für Manuelles Fahren ist, probiere mal


usrPos:position .* { ReadingsVal("$NAME","position","0") }

gestein

Hallo Wscheff,


Danke.
Das Problem ist aber, dass sich bei den SOMFY-Rollos das reading "position" während einer Fahrt ständig ändert, bis es dann auf dem Zielwert ist.
ASC benötigt wiederum ein Reading, dass erst nach Abschluss der Fahrt die aktuelle Position zeigt.

Leider ist das bei den SOMFYs nicht so einfach, da es nur ein Internal gibt, dass die Fahrt anzeigt: nämlich "move".
Also muss ich das usereading "usrPos" erst dann setzen, wenn sich das Internal "move" von "off" oder "on" auf "stop" ändert.
Das schaffe ich momentan nur verläßlich mit meinem DOIF.
Immerhin, dass geht ja schon mal bei mir.

Aber irgendwo ist da noch ein Haken....
Vielleicht denke ich auch zu kompliziert.

lg, Gerhard