Notify verzögert ausführen

Begonnen von sxx128, 07 Dezember 2022, 17:30:55

Vorheriges Thema - Nächstes Thema

DeeSPe

#60
Zitat von: sxx128 am 10 Dezember 2022, 18:57:52
...kommt nur ein absent...

So sollte es sein! Genau diesen Wert habe ich doch vorhin auch mit dem Debug in dem AT ausgegeben! Eigentlich hätte das auch in der ersten DEBUG Zeile stehen müssen.
Nimm doch mal bitte das EN/DE notify welches ich nochmal gebaut hatte:
defmod n_rgr_Bewohner_presence notify rgr_Bewohner:presence:.* {\
  if ($EVTPART1 =~ /^ab(sent|wesend)$/) {\
    fhem('defmod atTmp_heizregler_wand_Climate_night at +00:02:00 { fhem("set heizregler_wand_Climate:FILTER=controlMode!=night controlMode night") if (ReadingsVal("rgr_Bewohner","presence","") =~ /^ab(sent|wesend)$/)}');;\
  }\
  else {\
    fhem('set heizregler_wand_Climate:FILTER=controlMode!=auto controlMode auto');;\
  }\
}


Gruß
Dan

EDIT: Ich bin der Meinung dass das Problem mit meinem ursprünglich ersten notify Code schon längst gelöst wäre, denn die Events scheinen doch (wie ursprünglich angenommen) auf englisch anzukommen.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

sxx128

jetzt ham wir wieder das Verhalten dass die Umschaltung in den Night Modus klappt aber zurück geht es nicht mehr sobald ich wieder anwesend bin
Hardware: Raspberryy PI 4
CC1101-USB-Lite 868MHz/Culfw-1.66
HM-MOD-RPI-PCB
Komponenten: Homematic/Homematic IP/Zigbee
PiVCCU

DeeSPe

#62
Probier mal bitte diesen Code komplett ohne Änderungen deinerseits:
defmod n_rgr_Bewohner_presence notify rgr_Bewohner:presence:.* {\
  if ($EVTPART1 eq 'absent') {\
    fhem('defmod atTmp_heizregler_wand_Climate_night at +01:00:00 { fhem("set heizregler_wand_Climate controlMode night") if (ReadingsVal("rgr_Bewohner","presence","") eq "absent")}');;\
  }\
  else {\
    fhem('set heizregler_wand_Climate controlMode auto');;\
  }\
}


Das ist genau meine allererste Code Version, aber ohne die FILTER.

Gruß
Dan

EDIT: Die Zeit kannst du natürlich anpassen.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

sxx128

Hallole DeeSPe,

also du wirst es nicht glauben es funktioniert.  :D :D :D Ich habe aber tatsächlich noch etwas geändert. Beide set Befehle haben so funktioniert:


rgr_Bewohner:presence:.* {
  if ($EVTPART1 =~ /^ab(sent|wesend)$/) {
    fhem('defmod atTmp_heizregler_wand_Climate_night at +00:01:00 { fhem("set heizregler_wand_Climate:FILTER=controlMode!=night controlMode night") if (ReadingsVal("rgr_Bewohner","presence","") =~ /^ab(sent|wesend)$/)}');
  }
  else {
    fhem('set heizregler_wand_Climate:FILTER=controlMode!=day controlMode day');
  }
}


Es wurde sauber zwischen beiden Zuständen umgeschalten. Abhängig von meiner Anwenseheit.

Ich kann mich gar nicht genug bedanken für die Zeit die du da für mein Problem aufgewendet hast. Das ist nicht selbstverständlich. Vielen vielen Dank.....

Grüße
Steven
Hardware: Raspberryy PI 4
CC1101-USB-Lite 868MHz/Culfw-1.66
HM-MOD-RPI-PCB
Komponenten: Homematic/Homematic IP/Zigbee
PiVCCU

DeeSPe

Zitat von: sxx128 am 10 Dezember 2022, 19:41:08
also du wirst es nicht glauben es funktioniert.  :D :D :D

Hey Steven, ich freue mich sehr dass wir nun gemeinsam zur Lösung gekommen sind!

Mich würde trotzdem interessieren wie die Events und Werte wirklich aussehen um den Code noch zu Ende zu optimieren.
Könntest Du bitte mal die eine (Debug) Zeile noch einfügen und 1x abwesend gehen, die 1 Minute verstreichen lassen und dann wieder anwesend schalten.

rgr_Bewohner:presence:.* {
  Debug "presence: '$EVTPART1', controlMode: '".ReadingsVal("heizregler_wand_Climate","controlMode","na")."'";
  if ($EVTPART1 =~ /^ab(sent|wesend)$/) {
    fhem('defmod atTmp_heizregler_wand_Climate_night at +00:01:00 { fhem("set heizregler_wand_Climate:FILTER=controlMode!=night controlMode night") if (ReadingsVal("rgr_Bewohner","presence","") =~ /^ab(sent|wesend)$/)}');
  }
  else {
    fhem('set heizregler_wand_Climate:FILTER=controlMode!=day controlMode day');
  }
}


Bei jedem presence Wechsel wird nun eine DEBUG Zeile ins Log geschrieben.
Bitte mal die beiden erzeugten Zeilen hier posten.

Gruß
Dan

P.S. Ich denke die Schaltung auf "controlMode day" ist "ungünstig", da dann nicht mehr automatisch die eingestellte automatische Nachtabsenkung erfolgt.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

sxx128

Hallole

keine guten Nachrichten. Es ist wieder so wie es war. Aufgrund deines Hinweises habe ich wieder zurückgestellt auf:


else {
    fhem('set heizregler_wand_Climate:FILTER=controlMode!=auto controlMode auto');
  }


Weil ich ja möchte dass die Nachtabschaltung funktioniert.


Im Ergebnis war es jetzt wieder so das in den ControlMode Night umgeschalten wurde.Der zweite Set Befehl bewirkt nicht dass wieder auf den alten Temperaturwert zurückgeschalten wird.

- Bervor ich "anwesend" bin habe ich eine Temperatur von 21 Grad im Mode Auto

- Wenn ich dann "abwesend" bin wird die Temperatur abgesenkt auf den Wert von 20 Grad (Nacht Temperatur). Der Regler befindet sich aber immer noch im Auto Modus (das Halbmond Symbol ist zu sehen).

- Wenn ich dann wieder online komme ist und bleibt der Regler im Auto Modus (das Halbmond Symbol ist zu sehen) und die Temperatur bleibt bei 20 Grad

Wenn ich folgendes konfiguriere:


else {
    fhem('set heizregler_wand_Climate:FILTER=controlMode!=day controlMode day');
  }


schaltet der Regler auf 21 Grad und der Regler ist im Auto Modus sobald ich "anwesend" bin.

Das hat ja aber dann wohl zur Folge dass die Nachtabsenkung nicht geht ...


2022.12.10 20:29:00 2: ROOMMATE set rr_Steffen absent
2022.12.10 20:29:01 1: DEBUG>presence: 'abwesend', controlMode: 'auto'
2022.12.10 20:34:09 2: ROOMMATE set rr_Steffen home
2022.12.10 20:34:10 1: DEBUG>presence: 'present', controlMode: 'auto'




Grüße
Steven



Hardware: Raspberryy PI 4
CC1101-USB-Lite 868MHz/Culfw-1.66
HM-MOD-RPI-PCB
Komponenten: Homematic/Homematic IP/Zigbee
PiVCCU

DeeSPe

#66
Zitat von: sxx128 am 10 Dezember 2022, 20:49:07

2022.12.10 20:29:00 2: ROOMMATE set rr_Steffen absent
2022.12.10 20:29:01 1: DEBUG>presence: 'abwesend', controlMode: 'auto'
2022.12.10 20:34:09 2: ROOMMATE set rr_Steffen home
2022.12.10 20:34:10 1: DEBUG>presence: 'present', controlMode: 'auto'


Da finde ich sehr merkwürdig!
Das Event für "abwesend" kommt auf deutsch (abwesend) und das Event für "anwesend" kommt in englisch (present).
Und wie ich mich richtig erinnert habe hat das Device die Eigenheit im "controlMode" immer wieder "auto" anzuzeigen. Also sind die FILTER eigentlich nutzlos.

Aufgrund der Werte würde ich den Code wie folgt ändern:
rgr_Bewohner:presence:.* {
  if ($EVTPART1 eq "abwesend") {
    fhem('defmod atTmp_heizregler_wand_Climate_night at +00:01:00 { fhem("set heizregler_wand_Climate controlMode night") if (ReadingsVal("rgr_Bewohner","presence","") eq "absent")}');
  }
  else {
    fhem('set heizregler_wand_Climate controlMode auto');
  }
}


Das sollte nun wie gewünscht funktionieren.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

Ahh, ich denke der DE/EN Mix im Event kommt vom Attribut "eventMap".
Dort steht ja ein Wert für "absent" drin, aber nicht für "present".

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

sxx128

#68
Hallole

ja kann sein. Tut mir leid. Der zweite set Befehl wird immer noch "ignoriert". Der schaltet im Auto Modus auf die definierte Night Temp und dann bei Anwesenheit einfach wieder in den Auto Modus in dem er ja eh schon ist und da dort nix weiter definiert ist (also keine Temperatur) bleibt es bei den 20 Grad Nachttemperatur. Der Auto Modus ändert sich bei beiden Zuständen nicht... sorry für die laienhafte Ausdrucksweise. Besser kann ich es nicht ausdrücken :-) :-) So sieht das aus ... und ist auch bei Listing vom Device nachzuvollziehen...

Wenn ich die Befehle alleridngs händisch eingebe funktioniert es wie erwartet... Schaltet auf Nachttemperatur und schaltet dann wieder zurück auf meine 21 Grad


set heizregler_wand_Climate controlMode Night

set heizregler_wand_Climate auto


Grüße
Steven
Hardware: Raspberryy PI 4
CC1101-USB-Lite 868MHz/Culfw-1.66
HM-MOD-RPI-PCB
Komponenten: Homematic/Homematic IP/Zigbee
PiVCCU

DeeSPe

Sorry, ich hatte das "controlMode" im else Zweig vergessen!
So sollte es sein:
rgr_Bewohner:presence:.* {
  if ($EVTPART1 eq "abwesend") {
    fhem('defmod atTmp_heizregler_wand_Climate_night at +00:01:00 { fhem("set heizregler_wand_Climate controlMode night") if (ReadingsVal("rgr_Bewohner","presence","") eq "absent")}');
  }
  else {
    fhem('set heizregler_wand_Climate controlMode auto');
  }
}


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

frank

wenn die cmds nicht über burst gesendet werden, braucht es ja ggf 3 min bis geschaltet wird.

mit verbose 3 sollten eigentlich auch logeinträge für die cul_hm cmds erscheinen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

sxx128

Hallole Dan,

es ist vollbracht :-) Es funktioniert   :D :D :D

Nochmals vielen Dank für die Hilfe...

Grüße
Steven

Hardware: Raspberryy PI 4
CC1101-USB-Lite 868MHz/Culfw-1.66
HM-MOD-RPI-PCB
Komponenten: Homematic/Homematic IP/Zigbee
PiVCCU

DeeSPe

Zitat von: frank am 10 Dezember 2022, 21:57:00
wenn die cmds nicht über burst gesendet werden, braucht es ja ggf 3 min bis geschaltet wird.

Ich hatte damals bei meinen einfach "Burst" am Gerät dauerhaft aktiviert und somit wurden die Befehle immer sofort ausgeführt. Hatte m.E. damals keine wirklich große Auswirkung auf die Haltbarkeit der Batterie.
Ich weiß aber natürlich nicht ob Steven das auch gemacht hat!

Zitat von: sxx128 am 10 Dezember 2022, 22:01:45
es ist vollbracht :-) Es funktioniert   :D :D :D

Nochmals vielen Dank für die Hilfe...

SUPER! So sollte es sein!
Ich freue mich für Dich!

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

sxx128

..ich habe Burst überall aktiv...
Hardware: Raspberryy PI 4
CC1101-USB-Lite 868MHz/Culfw-1.66
HM-MOD-RPI-PCB
Komponenten: Homematic/Homematic IP/Zigbee
PiVCCU

DeeSPe

Bitte noch ein [gelöst] vor den Titel des Beitrags setzen!

Danke.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe