alter state auslesen

Begonnen von Superposchi, 10 Januar 2021, 11:50:29

Vorheriges Thema - Nächstes Thema

Superposchi

Ok, so langsam kommen wir doch wieder auf einen Nenner.
Werde dir die List und Auszüge des EventMonitors liefern sobald ich es schaffe, muss aber schauen wieviel Zeit ich die kommenden Tage nach der Arbeit habe.
Will erst mal schauen, dass ich meine neuen Rauchmelder und Regale montiert kriege, damit wieder etwas Ordnung in die Bude kommt.

ZitatWarum es bei dir nicht geht: keine Ahnung. Du postest ja nichts von dem was du ausprobierst. Du sagst zwar: gemacht wie du sagst aber es geht nicht und das soll ich glauben. OBWOHL ich WEISS, dass es eben doch geht. Und zwar nicht weil ich es glaube. Sondern Weiß, weil JA: probiert. (und so weit ist ein Homematic Rollo nicht von einem Homematic Thermostat auseinander / die Readings sind andere ja, das Verhalten aber gleich / ähnlich genug)...
Ich kann nicht beurteilen wie ähnlich sich Thermostat und Rolloaktor sind. ich kann nur sagen was ich selbst in den Readings sehen konnte, da wurde der Wert bei level und entsprechend auch bei level_old im 0,5er Schritten hochgezählt. Werde aber da noch mal ein EventMonitor-Auszug liefern sobald ich dazu komme.

MadMax-FHEM

#16
Es kann ja sein, dass in 0,5-Schritten hochgezählt wird.

Aber mit dem notify auf Fenster auf ist das doch egal.
EDIT: gleiches gilt, solltest du ein DOIF dafür (bzw. für die autom. Rollofahrt) haben (wollen). Wobei bei DOIF kann ich halt wenig helfen: ich nutze das (immer noch) nicht...

Zumindest bei mir. Selbst wenn ich zwischendrin noch dreimal die Temperatur ändere wird nicht neu "gespeichert" weil: Fenster ist immer noch auf...

Wichtig: es muss halt dort passieren, wo dann nat. auch der Rolladen gefahren wird und zwar NACHDEM du den Wert abgefragt und "gespeicjhert" hast...

Und das Thema userReadings haben wir ja at akta gelegt, weil es nicht das ist was du brauchst/willst.
(obwohl es geht wie ich geschrieben habe um die set_ Zwischenstände auszublenden / und vermutlich würde das sogar für das Problem gehen, weil du ja zusätzlich abfragen kannst, ob das Fenster auf oder zu ist / aber egal)

Viel Spaß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Superposchi

ZitatAber mit dem notify auf Fenster auf ist das doch egal.
Das Problem ist, ich nutze kein Notify sondern ein DOIF.
Da ich mit DOIF's sowohl notify's, at's als auch watchdog's nachbilden kann habe ich so alles mit einer Syntex. Ist für mich wesentlich einfacher zu überblicken.
Aber das DOIF wird bei jeder änderung um 0,5 neu ausgelöst, da als Bedingung unter anderem kleiner 20 drin steht.

ZitatUnd das Thema userReadings haben wir ja at akta gelegt, weil es nicht das ist was du brauchst/willst.
(obwohl es geht wie ich geschrieben habe um die set_ Zwischenstände auszublenden / und vermutlich würde das sogar für das Problem gehen, weil du ja zusätzlich abfragen kannst, ob das Fenster auf oder zu ist / aber egal)
Du hast zig mal geschrieben das es geht, aber nicht einmal einen klar verständlichen Hinweis wie. Würde diese Art nämlich lieber nutzen wenn es vernünftig umsetzbar ist. Aber nur zu wissen das es geht bringt mir nichts wenn ich nicht weiß wonach ich suchen muss.

MadMax-FHEM

Zitat von: Superposchi am 10 Januar 2021, 23:00:38
Das Problem ist, ich nutze kein Notify sondern ein DOIF.
Da ich mit DOIF's sowohl notify's, at's als auch watchdog's nachbilden kann habe ich so alles mit einer Syntex. Ist für mich wesentlich einfacher zu überblicken.
Aber das DOIF wird bei jeder änderung um 0,5 neu ausgelöst, da als Bedingung unter anderem kleiner 20 drin steht.

Dann stimmen halt die Bedingungen nicht...
...oder du brauchst eine weitere...
Oder (auch im DOIF geht Perl) eine Abfrage bestimmter Bedingungen und nur dann eben den Wert auslesen und abspeichern. Dazu gibt es (soweit ich gelesen habe) sogar Möglichkeiten "in" DOIF und man braucht gar kein setreading (aber wie genau das bei DOIF geht kann ich nicht helfen -> commandref sollte helfen).

Daher nutze ich halt lieber notify at etc. weil da ist klar und einfach ersichtlich WAS WARUM passiert (zumindest für mich)...

Zitat von: Superposchi am 10 Januar 2021, 23:00:38
Du hast zig mal geschrieben das es geht, aber nicht einmal einen klar verständlichen Hinweis wie. Würde diese Art nämlich lieber nutzen wenn es vernünftig umsetzbar ist. Aber nur zu wissen das es geht bringt mir nichts wenn ich nicht weiß wonach ich suchen muss.

Ich habe mich fusselig geschrieben was du abfragen kannst/solltest usw. aber von dir immer nur gehört: geht nicht...
Ohne auch nur einen deiner Versuche gesehen zu haben...

Da ich die Geräte nicht habe und (ja: sorry) keine Lust hatte alles mit dummy zu "simulieren", wenn die "Gegenseite" eh (ohne auch nur ein list von einem eigenen Test zu posten) schreibt: geht nicht...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

Zitat von: MadMax-FHEM am 10 Januar 2021, 23:19:16
Dann stimmen halt die Bedingungen nicht...
...oder du brauchst eine weitere...
Oder (auch im DOIF geht Perl) eine Abfrage bestimmter Bedingungen und nur dann eben den Wert auslesen und abspeichern. Dazu gibt es (soweit ich gelesen habe) sogar Möglichkeiten "in" DOIF und man braucht gar kein setreading (aber wie genau das bei DOIF geht kann ich nicht helfen -> commandref sollte helfen).

Wobei das eigentlich nicht sein kann...

Also es muss doch (wenn halbwegs "vernünftig" aufgesetzt) EINE Stelle geben, wo du eben bei bestimmten Bedingungen (u.a. Fenster auf) den Rollo auf eine bestimmte Position fahren lassen willst!?

Dann genau dort BEVOR du den set Rollo Fensterauf-Position absetzt eben: Abfrage aktuelle Position und "speichern" (im DOIF oder im Rollo oder in einem dummy oder oder oder)...
(z.B. setreading Rollo hierMerkeIchMirDenZustand $value / $value = ReadingsVal("Rollo","hier-steht-was-mich-interessiert","Ersatzwert") / die beiden Readingnamen "hierMerkeIchMirDenZustand" und "hier-steht-was-mich-interessiert" musst du halt so nennen wie es dir gefällt [für den "Speicherort"] bzw. wo eben der Wert drin steht den du für später brauchst / und wie geschrieben du musst das nat. nicht im Rollo speichern, sondern kannst das auch im DOIF selbst "hinterlegen" aber wie man das macht musst du eben in der commandref nachlesen, weil ich kein DOIF nutze)

Und das wird doch (hoffentlich) nicht bei jedem Zwischenstand des Rollo erneut aufgerufen!? Sonst würdest du doch alle 0,5%-lang denselben set Rollo Fensterauf-Position erneut schicken und das wäre ja totaler Blödsinn...


Und genauso muss es doch EINE definierte Stelle geben wo du eben den Rollo gerne wieder auf die alte Postition fahren lassen willst. Dort dann eben einfach den "gespeicherten" Wert abrufen und dann eben set Rollo gespeicherter-Wert. ($value = ReadingsVal("Rollo", "hierMerkeIchMirDenZustand", "Ersatzwert") und dann set Rollo $value / und auch hier: wenn du es im DOIF "hinterlegt" hast, dann musst du eben nachlesen wie du den "abgespeicherten" Wert wieder aus dem DOIF "rauskriegst")

Ist quasi genau das was ich schon vor X Posts (immer wieder) geschrieben habe (gut mit notify aber die Idee war immer: bevor du fährst merken und dann wieder zurückstellen)...

Und jetzt würde ich gerne (immer noch) wissen wollen warum das nicht gehen soll.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Superposchi

ZitatIch habe mich fusselig geschrieben was du abfragen kannst/solltest usw. aber von dir immer nur gehört: geht nicht...
Also für mich ist nirgendwo ersichtlich nach welchem Befehl ich suchen soll um diese Filterung beim auslesen des state in den state_old zu machen.

ZitatUnd das wird doch (hoffentlich) nicht bei jedem Zwischenstand des Rollo erneut aufgerufen!? Sonst würdest du doch alle 0,5%-lang denselben set Rollo Fensterauf-Position erneut schicken und das wäre ja totaler Blödsinn...
Aktuell leider ja. Mit den jetzigen Bedingungen wird das eben bei jedem Zwischenstand erneut aufgerufen. Das ist mir aber auch eben erst gestern Abend klar geworden und ich suche seitdem nach einer Einschränkung der Bedingungen. Das Problem ist halt, dass das DOIF IMMER greifen soll, wenn jemand zu Hause ist, das Rollo weniger wie 20% geöffnet ist und jemand das Fenster öffnen.
Dabei ist genau die mittlere Bedingung das Problem, denn kleiner als 20% trifft natürlich bei jedem Zwischenstand zu. Da mir aber nicht klar war, dass der Rolladenaktor jeden Zwischenschritt speichert/sendet, war mir nicht klar, dass dies ein Problem sein würde. Ich bin davon ausgegangen, der Rollo steht auf irgendeinem Wert kleiner 20% und bekommt dann einfach die Anweisung fahre auf 20% hoch und fertig.

Superposchi

Hier ist schon mal das List des DOIF's:
Internals:
   .FhemMetaInternals 1
   DEF        (([sz_structure_schlafzimmerfenster] eq "open") and ([Anwesenheitsstatus] eq "1") and ([sz_rolladen_Schlafzimmerfenster:"stop"]) and (([sz_rolladen_Schlafzimmerfenster] eq "off") or ([sz_rolladen_Schlafzimmerfenster] < 20)))
{my $statenew=ReadingsVal("sz_rolladen_Schlafzimmerfenster","state","");fhem("setreading sz_rolladen_Schlafzimmerfenster level_old $statenew");fhem("set sz_rolladen_Schlafzimmerfenster 20")}
DOELSEIF (([sz_structure_schlafzimmerfenster] eq "closed") and ([Anwesenheitsstatus] eq "1"))
{my $stateold=ReadingsVal("sz_rolladen_Schlafzimmerfenster","level_old","");fhem("set sz_rolladen_Schlafzimmerfenster $stateold")}
   FUUID      5ffad587-f33f-793a-ffc3-8bd3a7f17206bcfd
   FVERSION   98_DOIF.pm:0.234660/2021-01-03
   MODEL      FHEM
   NAME       schlafzimmerrolle_lueften
   NOTIFYDEV  global
   NR         214
   NTFY_ORDER 50-schlafzimmerrolle_lueften
   STATE      deactivated
   TYPE       DOIF
   VERSION    23466 2021-01-03 17:14:46
   .attraggr:
   .attrminint:
   READINGS:
     2021-01-10 20:11:12   mode            deactivated
     2021-01-10 20:11:12   state           deactivated
   Regex:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
   do:
     0:
   helper:
     DEVFILTER  ^global$
     NOTIFYDEV  global
   uiState:
   uiTable:
Attributes:
   alias      Lüften
   disable    1
   do         always
   room       Steuerung->Rolladen


Und das List des Rolladenaktors:
Internals:
   .FhemMetaInternals 1
   .triggerUsed 1
   DEF        70B5AE
   FUUID      5fc3cb17-f33f-793a-cb4f-14c28698bf2445e5
   FVERSION   10_CUL_HM.pm:0.234210/2020-12-26
   Homematic_Gateway_MSGCNT 96
   Homematic_Gateway_RAWMSG 0501004569A41070B5AE1111110601C100
   Homematic_Gateway_RSSI -69
   Homematic_Gateway_TIME 2021-01-11 09:36:50
   IODev      Homematic_Gateway
   LASTInputDev Homematic_Gateway
   MSGCNT     96
   NAME       sz_rolladen_Schlafzimmerfenster
   NOTIFYDEV  global
   NR         94
   NTFY_ORDER 50-sz_rolladen_Schlafzimmerfenster
   STATE      96.5
   TYPE       CUL_HM
   chanNo     01
   lastMsg    No:69 - t:10 s:70B5AE d:111111 0601C100
   peerList   self01,self02
   protLastRcv 2021-01-11 09:36:50
   protRcv    96 last_at:2021-01-11 09:36:50
   protSnd    97 last_at:2021-01-11 09:36:50
   protState  CMDs_done
   rssi_Homematic_Gateway cnt:66 min:-74 max:-71 avg:-72.39 lst:-73
   rssi_at_Homematic_Gateway cnt:96 min:-70 max:-65 avg:-66.98 lst:-69
   .attraggr:
   .attreocr:
     .*
   .attrminint:
   .attrtocr:
     .*
   .or:
     .*
   .userReadings:
     HASH(0x5800e178)
   OLDREADINGS:
     2021-01-10 20:09:16   .protLastRcv    20210110200916
     2021-01-10 20:09:11   commState       CMDs_processing...
     2021-01-10 20:07:48   deviceMsg       off (to Homematic_Gateway)
     2021-01-10 20:09:12   level           0
     2021-01-10 19:31:55   level_old       19.5
     2021-01-10 20:07:48   motor           stop:off
     2021-01-10 20:07:48   pct             0
     2021-01-10 20:09:12   recentStateType ack
     2021-01-10 20:09:12   state           off
     2021-01-10 20:09:12   state_old       set_0
   READINGS:
     2020-12-01 10:06:29   .D-devInfo      010100
     2020-12-01 10:06:29   .D-stc          30
     2020-12-01 10:06:33   .R-confBtnTime  5 min
     2020-12-01 14:14:19   .R-driveDown    17 s
     2020-12-01 10:06:34   .R-driveTurn    0.5 s
     2020-12-01 14:13:43   .R-driveUp      19 s
     2020-12-01 14:18:26   .R-intKeyVisib  visib
     2020-12-01 10:06:33   .R-localResDis  off
     2020-12-01 10:06:33   .R-pairCentral  0x111111
     2020-12-01 10:06:34   .R-refRunCounter 0
     2020-12-01 14:18:29   .R-self01-lgActionType jmpToTarget
     2020-12-01 14:18:29   .R-self01-lgBlJtDlyOff dlyOn
     2020-12-01 14:18:29   .R-self01-lgBlJtDlyOn refOn
     2020-12-01 14:18:29   .R-self01-lgBlJtOff dlyOn
     2020-12-01 14:18:29   .R-self01-lgBlJtOn dlyOn
     2020-12-01 14:18:29   .R-self01-lgBlJtRampOff off
     2020-12-01 14:18:29   .R-self01-lgBlJtRampOn rampOn
     2020-12-01 14:18:29   .R-self01-lgBlJtRefOff off
     2020-12-01 14:18:29   .R-self01-lgBlJtRefOn rampOn
     2020-12-01 14:18:29   .R-self01-lgCtDlyOff geLo
     2020-12-01 14:18:29   .R-self01-lgCtDlyOn geLo
     2020-12-01 14:18:29   .R-self01-lgCtOff geLo
     2020-12-01 14:18:29   .R-self01-lgCtOn geLo
     2020-12-01 14:18:29   .R-self01-lgCtRampOff geLo
     2020-12-01 14:18:29   .R-self01-lgCtRampOn geLo
     2020-12-01 14:18:29   .R-self01-lgCtRefOff geLo
     2020-12-01 14:18:29   .R-self01-lgCtRefOn geLo
     2020-12-01 14:18:29   .R-self01-lgCtValHi 100
     2020-12-01 14:18:29   .R-self01-lgCtValLo 50
     2020-12-01 14:18:29   .R-self01-lgDriveMode direct
     2020-12-01 14:18:29   .R-self01-lgMaxTimeF 0.4 s
     2020-12-01 14:18:29   .R-self01-lgMultiExec on
     2020-12-01 14:18:29   .R-self01-lgOffDly 0 s
     2020-12-01 14:18:29   .R-self01-lgOffLevel 0 %
     2020-12-01 14:18:29   .R-self01-lgOffTime unused
     2020-12-01 14:18:29   .R-self01-lgOffTimeMode absolut
     2020-12-01 14:18:29   .R-self01-lgOnDly 0 s
     2020-12-01 14:18:29   .R-self01-lgOnLevel 100 %
     2020-12-01 14:18:29   .R-self01-lgOnTime unused
     2020-12-01 14:18:29   .R-self01-lgOnTimeMode absolut
     2020-12-01 14:18:39   .R-self01-shActionType jmpToTarget
     2020-12-01 14:18:39   .R-self01-shBlJtDlyOff dlyOn
     2020-12-01 14:18:39   .R-self01-shBlJtDlyOn refOn
     2020-12-01 14:18:39   .R-self01-shBlJtOff dlyOn
     2020-12-01 14:18:39   .R-self01-shBlJtOn dlyOn
     2020-12-01 14:18:39   .R-self01-shBlJtRampOff off
     2020-12-01 14:18:39   .R-self01-shBlJtRampOn rampOn
     2020-12-01 14:18:29   .R-self01-shBlJtRefOff off
     2020-12-01 14:18:29   .R-self01-shBlJtRefOn rampOn
     2020-12-01 14:18:39   .R-self01-shCtDlyOff geLo
     2020-12-01 14:18:39   .R-self01-shCtDlyOn geLo
     2020-12-01 14:18:39   .R-self01-shCtOff geLo
     2020-12-01 14:18:39   .R-self01-shCtOn geLo
     2020-12-01 14:18:39   .R-self01-shCtRampOff geLo
     2020-12-01 14:18:39   .R-self01-shCtRampOn geLo
     2020-12-01 14:18:29   .R-self01-shCtRefOff geLo
     2020-12-01 14:18:29   .R-self01-shCtRefOn geLo
     2020-12-01 14:18:39   .R-self01-shCtValHi 100
     2020-12-01 14:18:39   .R-self01-shCtValLo 50
     2020-12-01 14:18:29   .R-self01-shDriveMode direct
     2020-12-01 14:18:29   .R-self01-shMaxTimeF unused
     2020-12-01 14:18:39   .R-self01-shMultiExec off
     2020-12-01 14:18:39   .R-self01-shOffDly 0 s
     2020-12-01 14:18:39   .R-self01-shOffLevel 0 %
     2020-12-01 14:18:39   .R-self01-shOffTime unused
     2020-12-01 14:18:39   .R-self01-shOffTimeMode absolut
     2020-12-01 14:18:39   .R-self01-shOnDly 0 s
     2020-12-01 14:18:29   .R-self01-shOnLevel 100 %
     2020-12-01 14:18:39   .R-self01-shOnTime unused
     2020-12-01 14:18:39   .R-self01-shOnTimeMode absolut
     2020-12-01 14:18:30   .R-self02-lgActionType jmpToTarget
     2020-12-01 14:18:30   .R-self02-lgBlJtDlyOff refOff
     2020-12-01 14:18:30   .R-self02-lgBlJtDlyOn dlyOff
     2020-12-01 14:18:30   .R-self02-lgBlJtOff dlyOff
     2020-12-01 14:18:30   .R-self02-lgBlJtOn dlyOff
     2020-12-01 14:18:30   .R-self02-lgBlJtRampOff rampOff
     2020-12-01 14:18:30   .R-self02-lgBlJtRampOn on
     2020-12-01 14:18:30   .R-self02-lgBlJtRefOff rampOff
     2020-12-01 14:18:30   .R-self02-lgBlJtRefOn on
     2020-12-01 14:18:30   .R-self02-lgCtDlyOff geLo
     2020-12-01 14:18:30   .R-self02-lgCtDlyOn geLo
     2020-12-01 14:18:30   .R-self02-lgCtOff geLo
     2020-12-01 14:18:30   .R-self02-lgCtOn geLo
     2020-12-01 14:18:30   .R-self02-lgCtRampOff geLo
     2020-12-01 14:18:30   .R-self02-lgCtRampOn geLo
     2020-12-01 14:18:30   .R-self02-lgCtRefOff geLo
     2020-12-01 14:18:30   .R-self02-lgCtRefOn geLo
     2020-12-01 14:18:30   .R-self02-lgCtValHi 100
     2020-12-01 14:18:30   .R-self02-lgCtValLo 50
     2020-12-01 14:18:30   .R-self02-lgDriveMode direct
     2020-12-01 14:18:30   .R-self02-lgMaxTimeF 0.4 s
     2020-12-01 14:18:30   .R-self02-lgMultiExec on
     2020-12-01 14:18:30   .R-self02-lgOffDly 0 s
     2020-12-01 14:18:30   .R-self02-lgOffLevel 0 %
     2020-12-01 14:18:30   .R-self02-lgOffTime unused
     2020-12-01 14:18:30   .R-self02-lgOffTimeMode absolut
     2020-12-01 14:18:30   .R-self02-lgOnDly 0 s
     2020-12-01 14:18:30   .R-self02-lgOnLevel 100 %
     2020-12-01 14:18:30   .R-self02-lgOnTime unused
     2020-12-01 14:18:30   .R-self02-lgOnTimeMode absolut
     2020-12-01 14:18:30   .R-self02-shActionType jmpToTarget
     2020-12-01 14:18:30   .R-self02-shBlJtDlyOff refOff
     2020-12-01 14:18:30   .R-self02-shBlJtDlyOn dlyOff
     2020-12-01 14:18:30   .R-self02-shBlJtOff dlyOff
     2020-12-01 14:18:30   .R-self02-shBlJtOn dlyOff
     2020-12-01 14:18:30   .R-self02-shBlJtRampOff rampOff
     2020-12-01 14:18:30   .R-self02-shBlJtRampOn on
     2020-12-01 14:18:30   .R-self02-shBlJtRefOff rampOff
     2020-12-01 14:18:30   .R-self02-shBlJtRefOn on
     2020-12-01 14:18:30   .R-self02-shCtDlyOff geLo
     2020-12-01 14:18:30   .R-self02-shCtDlyOn geLo
     2020-12-01 14:18:30   .R-self02-shCtOff geLo
     2020-12-01 14:18:30   .R-self02-shCtOn geLo
     2020-12-01 14:18:30   .R-self02-shCtRampOff geLo
     2020-12-01 14:18:30   .R-self02-shCtRampOn geLo
     2020-12-01 14:18:30   .R-self02-shCtRefOff geLo
     2020-12-01 14:18:30   .R-self02-shCtRefOn geLo
     2020-12-01 14:18:30   .R-self02-shCtValHi 100
     2020-12-01 14:18:30   .R-self02-shCtValLo 50
     2020-12-01 14:18:30   .R-self02-shDriveMode direct
     2020-12-01 14:18:30   .R-self02-shMaxTimeF unused
     2020-12-01 14:18:30   .R-self02-shMultiExec off
     2020-12-01 14:18:30   .R-self02-shOffDly 0 s
     2020-12-01 14:18:30   .R-self02-shOffLevel 0 %
     2020-12-01 14:18:30   .R-self02-shOffTime unused
     2020-12-01 14:18:30   .R-self02-shOffTimeMode absolut
     2020-12-01 14:18:30   .R-self02-shOnDly 0 s
     2020-12-01 14:18:30   .R-self02-shOnLevel 100 %
     2020-12-01 14:18:30   .R-self02-shOnTime unused
     2020-12-01 14:18:30   .R-self02-shOnTimeMode absolut
     2020-12-01 10:06:34   .R-sign         off
     2020-12-01 10:06:34   .R-statusInfoMinDly 2 s
     2020-12-01 10:06:34   .R-statusInfoRandom 1 s
     2020-12-01 10:06:34   .R-transmitTryMax 6
     2021-01-10 17:57:51   .associatedWith sz_rolladen_Schlafzimmerfenster,sz_rolladen_Schlafzimmerfenster
     2021-01-08 22:45:47   .peerListRDate  2021-01-08 22:45:47
     2021-01-11 09:36:50   .protLastRcv    20210111093650
     2020-12-01 14:18:22   CommandAccepted yes
     2020-12-01 10:06:29   D-firmware      2.11
     2020-12-01 10:06:29   D-serialNr      REQ0112292
     2020-12-01 14:18:36   PairedTo        0x111111
     2021-01-08 22:45:45   RegL_00.        00:00 02:81 0A:11 0B:11 0C:11 15:05 18:00
     2021-01-08 22:45:46   RegL_01.        00:00 08:00 09:00 0A:00 0B:00 0C:AA 0D:00 0E:BE 0F:05 10:00 30:06 56:00 57:24
     2021-01-08 22:45:48   RegL_03.self01  00:00 01:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:11 0C:12 0D:68 0E:00 0F:00 11:C8 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 1A:00 1B:00 1C:00 1D:FF 1E:68 1F:00 81:00 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:21 8B:11 8C:12 8D:68 8E:00 8F:00 91:C8 92:00 93:00 94:00 95:00 96:00 97:00 98:00 99:00 9A:00 9B:00 9C:00 9D:04 9E:68 9F:00
     2021-01-08 22:45:49   RegL_03.self02  00:00 11:C8 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 1A:00 1B:00 1C:00 1D:FF 1E:93 1F:00 81:00 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:21 8B:44 8C:54 8D:93 8E:00 8F:00 91:C8 92:00 93:00 94:00 95:00 96:00 97:00 98:00 99:00 9A:00 9B:00 9C:00 9D:04 9E:93 9F:00
     2021-01-09 00:38:57   Schaltstatus    1
     2020-12-02 19:37:37   Schaltzeit      08:00
     2020-12-02 19:37:42   Schaltzeit_sa   09:00
     2020-12-13 14:27:43   Schaltzeit_we   10:30
     2021-01-08 22:45:49   cfgState        ok
     2021-01-10 20:09:12   commState       CMDs_done
     2021-01-11 09:36:50   deviceMsg       96.5 (to Homematic_Gateway)
     2021-01-11 09:36:50   level           96.5
     2021-01-10 20:08:26   level_old       0
     2021-01-11 09:36:50   motor           stop:96.5
     2021-01-11 09:36:50   pct             96.5
     2021-01-10 17:57:26   peerList        self01,self02
     2020-12-06 12:22:56   powerOn         2020-12-06 12:22:56
     2021-01-10 20:09:16   recentStateType info
     2021-01-11 09:36:50   state           96.5
     2021-01-11 09:36:50   state_old       off
     2020-12-01 14:19:50   timedOn         off
   helper:
     HM_CMDNR   105
     cSnd       1111111170B5AE0201000000,1111111170B5AE020100
     dlvlCmd    ++A01111111170B5AE020100
     mId        0005
     peerFriend peerSens,peerVirt
     peerOpt    3:blindActuator
     regLst     0,1,3p
     rxType     1
     supp_Pair_Rep 0
     cmds:
       TmplKey    self01,self02:no:1610297871.21898
       TmplTs     1610297871.21898
       cmdKey     1:1:0::sz_rolladen_Schlafzimmerfenster:0005:01:self01,self02
       cmdLst:
         assignHmKey noArg
         clear      [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
         deviceRename -newName-
         down       'change:'[(0..100;1|{10})] [(-ontime-|{})] [(-ramptime-|{})]
         eventL     -peer- -cond-
         eventS     -peer- -cond-
         fwUpdate   -filename- [-bootTime-]
         getConfig  noArg
         getDevInfo noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6) [-peerChn-]
         getVersion noArg
         inhibit    [(on|{off})]
         off        noArg
         on         noArg
         pair       noArg
         pct        -value- [-ontime-]
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerIODev  [IO] -btn- [({set}|unset)] 'not for future use'
         peerSmart  -peerOpt-
         press      [(long|{short})] [(-peer-|{self01})] [(-repCount-|{0})] [(-repDelay-|{0.25})]
         pressL     [(-peer-|{self01})]
         pressS     [(-peer-|{self01})]
         raw        -data- [...]
         regBulk    -list-.-peerChn- -addr1:data1- -addr2:data2-...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         reset      noArg
         sign       [(on|{off})]
         statusRequest noArg
         stop       noArg
         toggle     noArg
         toggleDir  noArg
         tplDel     -tplDel-
         tplSet_0   -tplChan-
         tplSet_self01 -tplPeer-
         tplSet_self02 -tplPeer-
         unpair     noArg
         up         'change:'[(0..100;1|{10})] [(-ontime-|{})] [(-ramptime-|{})]
       lst:
         condition  slider,0,1,255
         peer       self01,self02
         peerOpt    ku_kontakt_fenster,sz_kontakt_fenster_links,sz_kontakt_fenster_rechts,wz_kontakt_balkontuer
         tplChan   
         tplDel     
         tplPeer    BlStopDnSh_long,SwCondAbove_short,BlStopUpLg_long,SwCondBelow_long,BlStopUpSh_short,BlStopDnLg_short,BlStopUpLg_short,BlStopDnSh_short,SwCondAbove_long,SwOnCond_short,SwOnCond_long,BlStopDnLg_long,BlStopUpSh_long,SwCondBelow_short
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         list       [({normal}|full)]
         param      -param-
         reg        -addr- -list- [-peerChn-]
         regList    noArg
         regTable   noArg
         regVal     -addr- -list- [-peerChn-]
         saveConfig [-filename-]
         tplInfo    noArg
     dir:
       cur        stop
       rct        down
     expert:
       def        0
       det        0
       raw        1
       tpl        0
     io:
       newChn     +70B5AE,00,00,00
       nextSend   1610354210.52833
       prefIO     
       rxt        0
       vccu       
       p:
         70B5AE
         00
         00
         00
     mRssi:
       mNo        69
       io:
         Homematic_Gateway:
           -65
           -65
     prt:
       bErr       0
       sProc      0
       rspWait:
     q:
       qReqConf   
       qReqStat   
     role:
       chn        1
       dev        1
       prs        1
     rpt:
       IO         Homematic_Gateway
       flg        A
       ts         1610354210.23262
       ack:
         HASH(0x58f9d270)
         69800211111170B5AE00
     rssi:
       Homematic_Gateway:
         avg        -72.3939393939394
         cnt        66
         lst        -73
         max        -71
         min        -74
       at_Homematic_Gateway:
         avg        -66.9895833333333
         cnt        96
         lst        -69
         max        -65
         min        -70
     tmpl:
Attributes:
   .mId       0005
   IODev      Homematic_Gateway
   alias      Schlafzimmerrolladen
   assistantName Schlafzimmerrollo
   autoReadReg 4_reqStatus
   devStateIcon off:shutter_closed 0:shutter_closed 10:shutter_7 20:fts_shutter_80 30:shutter_6 40:shutter_5 50:shutter_halfopen 60:shutter_4 70:shutter_3 80:shutter_2 90:shutter_1 100:shutter_open on:shutter_open
   event-on-change-reading .*
   expert     rawReg
   firmware   2.11
   gassistantName Schlafzimmerrollo
   genericDeviceType shutter
   group      Rolladen
   icon       fts_shutter_20
   model      HM-LC-BL1-FM
   oldreadings .*
   peerIDs    00000000,70B5AE01,70B5AE02,
   room       CUL_HM,GAssistant,Wohnung->Schlafzimmer
   serialNr   REQ0112292
   subType    blindActuator
   timestamp-on-change-reading .*
   userReadings state_old { OldReadingsVal("sz_rolladen_Schlafzimmerfenster", "state", ReadingsVal("sz_rolladen_Schlafzimmerfenster", "state", 0)) }
   verbose    2
   webCmd     statusRequest:toggleDir:on:off:up:down:stop


Mitschnitt vom Eventmonitor kann ich erst wenn ich vorm System sitze und nicht per Fernzugriff.

MadMax-FHEM

#22
Zitat von: Superposchi am 11 Januar 2021, 10:12:37
Also für mich ist nirgendwo ersichtlich nach welchem Befehl ich suchen soll um diese Filterung beim auslesen des state in den state_old zu machen.

Ist zwar ja eigentlich "erledigt" aber trotzdem:
hier: https://forum.fhem.de/index.php/topic,117629.msg1120276.html#msg1120276
Zitat
Einfach wie geschrieben ein userReadings was den state "abgreift" aber halt den eigenen Wert nur "ändert", wenn KEIN set_ im state ist.
Dann steht dort nat. immer der aktuelle Wert aber eben immer nur das OHNE set_
...
Dann steht ja im userreadings state aber eben nur OHNE set_ und in der "Old-Readings-Variante" davon dann eben der state davor ebenfalls ohne set_, sofern eben auch entsprechend event-on-change-reading gesetzt ist ODER im userReadings neben dem set_-Ausfiltern eben auch nur etwas "geändert" wird, wenn sich der Zustand auch geändert hat.

hier: https://forum.fhem.de/index.php/topic,117629.msg1120422.html#msg1120422
Zitat
Und ich meinte "ausblenden" IM userReadings: if(AktuellesReading eq OldReading){mache nichts...}
Das eine mittels ReadingsVal das andere mittels OldReadingsVal...

hier: https://forum.fhem.de/index.php/topic,117629.msg1120472.html#msg1120472
Zitat
Doch genau da bringt ein userReadings etwas weil ich da ja genau diesen Zwiwschenstand "ausblenden" kann: Perl sei dank. Weil es gibt dort z.B. if / Also if Reading =~ m/set_/ z.B. und dann: mache eben nichts, also bleibt das userReadings wie es ist, also ohne set_ Punkt aus und Ende.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

#23
Zitat von: Superposchi am 11 Januar 2021, 10:12:37
Aktuell leider ja. Mit den jetzigen Bedingungen wird das eben bei jedem Zwischenstand erneut aufgerufen. Das ist mir aber auch eben erst gestern Abend klar geworden und ich suche seitdem nach einer Einschränkung der Bedingungen. Das Problem ist halt, dass das DOIF IMMER greifen soll, wenn jemand zu Hause ist, das Rollo weniger wie 20% geöffnet ist und jemand das Fenster öffnen.
Dabei ist genau die mittlere Bedingung das Problem, denn kleiner als 20% trifft natürlich bei jedem Zwischenstand zu. Da mir aber nicht klar war, dass der Rolladenaktor jeden Zwischenschritt speichert/sendet, war mir nicht klar, dass dies ein Problem sein würde. Ich bin davon ausgegangen, der Rollo steht auf irgendeinem Wert kleiner 20% und bekommt dann einfach die Anweisung fahre auf 20% hoch und fertig.

Naja, dann in der commandref zu DOIF lesen, es gibt "triggernde Abfragen" und "nur Abfragen". Ich glaube war was mit Fragezeichen davor, also statt:


([sz_rolladen_Schlafzimmerfenster] < 20))


Sowas:


([?sz_rolladen_Schlafzimmerfenster] < 20))


Aber wie geschrieben: ich nutze KEIN DOIF (genau wegen "sowas" / bei einem notify/at etc. ist ganz einfach klar ersichtlich WANN/WARUM es "triggert". Bei DOIF ist dann wieder irgendwo ein Attribut gesetzt oder dies oder das und "tausend Dinge" in der "Bedingung"... Aber: muss jeder selber wissen)...

Also immer beim Erstellen einer DOIF-Bedingung prüfen, ob die auch getriggert werden soll/muss ODER "nur" im Falle "einer Triggerung" (durch andere Dinge, z.B. Fenster auf) abgefragt/geprüft werden soll...

Aktuell sind (wohl) ALLE deine Bedingungsprüfungen triggernd!
D.h. egal was davon sich ändert das DOIF wird durchlaufen...

Mag ja sein, dass das so soll aber dann musst du eben eine "Unterabfrage" einbauen, die eben dafür sorgt, dass der Wert eben nicht erneut gesetzt wird.

Da gibt es viele Möglichkeiten: Abfragen wann der old_state zuletzt gesetzt wurde und ob das (in etwa) übereinstimmt mit dem Fenster-Auf-Zeitpunkt (ReadingsAge), dann wird eben nicht neu gesetzt. Oder du merkst dir, dass eben gerade der erste Durchlauf des DOIF ist und solange wird eben nur beim ersten Durchlauf der alte/aktuelle Wert abgefragt und gesetzt (also weiteres Reading [im Rollo oder besser DOIF / evtl. auch beide readings ins DOIF, musst du wissen]) und erst im DOELSIF wird dann wieder zurückgesetzt, dass das der erste "Komplett-Durchlauf" war.
Usw.

Man kann wunderbar Perl "programmieren" im DOIF (und im DOIF gibt es bestimmte weitere "schöne" Mechanismen "sowas" abzubilden) und genügend "Funktionen"/Funktionalitäten" in fhem bestimmte Dinge einzuschränken/abzufragen: ReadingsAge, ReadingsTimeStamp, ReadingsVal, ... und zu "speichern": setreading...

EDIT: ist es wirklich sinnvoll den Anwesenheitsstatus abzufragen bzw. damit triggern zu lassen? Ich farge ja nur... Weil Fenster auf/zu machen geht ja nur, wenn jemand da ist!? ;) Bzw. wenn niemnd da ist und trotzdem Fenster auf geht/zu geht soll nicht gefahren werden. Evtl. verstehe ich ja noch: Fenster ist auf und Rollo evtl. auch (auf 20) und alle verlassen die Wohnung -> mache Rollo zu (aber auf den alten Wert? Was wenn der 19 war? ;) Dann ist es auch egal)... Evtl. hat die Logik an sich noch "Unstimmigkeiten"/"Löcher"... Aber: das musst du wissen... Ich will und werde mich da nicht (weiter) "einmischen"... Ich hab genug geschrieben wie es funktionieren KANN/KÖNNTE/SOLLTE (und ich denke auch wird / bzw. eben müsste auch klar formuliert sein WANN/WARUM [und unterscheiden in "soll nur erfüllt/nicht erfüllt sein" und "wenn sich da was ändert bitte nochmal prüfen"] WAS passieren soll damit man entsprechend vorschlagen kann)... Einbauen musst das schon du in deine ganze Logik (die ich nicht kenne / also nicht [formuliert] wie sie gedacht war/ist außer was im DOIF [sofern ich das "verstehe"] zu sehen ist und da bin ich mir nicht sicher, ob das alles tatsächlich so gewollt war ;)  )

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Superposchi

Ja das mit dem ? müsste funktionieren.

Der Fehler war halt der Grundgedanke, dass der Aktor von 0 auf 20 springt. stattdessen geht es ja 0 -> 0,5 -> 1 -> 1,5 -> 2 -> 2,5 -> 3 ->  etc..
Wenn er direkt auf 20 springen würde wäre mein DOIF ja in Ordnung gewesen. Da greift halt das Sprichwort: Unwissenheit (meinerseits) schützt vor Fehlern nicht.

Werde es heute Abend noch mal probieren, gestern war es mir einfach zu spät geworden.