Nach Update von FHEM läuft das nicht mehr.

Begonnen von AK-868, 10 Juli 2013, 15:24:15

Vorheriges Thema - Nächstes Thema

rudolfkoenig

Entschuldigung ist nicht notwendig, ich wollte nur nicht, dass hier "dokumentierte" Zeilen von weiteren Benutzern verwendet und weiterverbreitet werden.

> Muss ich dann jedes mal Kriterium_1 && Kriterium_2 && Kriterum_3 abfragem um etwas auszuführen.

Das Problem ist nicht das merken vo K12 in einem dummy , sondern das aendern dieser dummys in einem notify, was von diesem dummy selbst (direkt oder indirekt) ausgeloest wird, also diese Zeile:
define JL_Esszimmer_pruef2 notify JL_Esszimmer_pruef:on set JL_Esszimmer_pruef off

Das funktioniert z.Zt. nicht in allen Kombinationen so, wie man es erwartet.

Solche notifies sollte man vermeiden, bzw. direkt in die anderen einbauen (notfalls ueber Funktion):
define JL_Esszimmer2 notify sens_EzFenster:(open|closed) set JL_Esszimmer_pruef on;;set JL_Esszimmer_pruef off

AK-868

Danke erstmal.

Ich hab jetzt alle Dummys, die einen Dummy schalten worauf ein Notify läuft, geändert.

Ich hab mir helfen lassen und wir haben das so gelöst, ich hoffe das ist jetzt best practice:

FHEM CFG

define JL_Esszimmer1 at *{sunset("HORIZON=-5",300,"17:00","23:00")} {EzJLschalten()}

define JL_Esszimmer2 notify sens_EzFenster:(open|closed) {EzJLschalten()}

define JL_Wohnzimmer1 at *{sunset("HORIZON=-5",300,"17:00","23:00")} {WzJLschalten()}

define JL_Wohnzimmer2 notify sens_WzFenster:(open|closed) {WzJLschalten()}



99_myUtils.pm

sub
WzJLschalten()
{
my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;
   my $Zustand = Value("sens_WzFenster");
   my $Zustandhell = Value("Hell");
   Log 3, "Stunde: $hour, noch Hell draussen: $Zustandhell, WZ_Fenstersensor: $Zustand";
   if(($hour >= 17) && ($hour <= 23) && (Value("sens_WzFenster") eq "closed") && (Value("Hell") eq "Nein")) {
           if (defined($defs{JL_Wohnzimmer_verzoegert})){fhem('delete JL_Wohnzimmer_verzoegert')};
           fhem ("define JL_Wohnzimmer_verzoegert at +00:01:00 set JL_Wohnzimmer off");
           Log 3, "Wohnzimmer Rollo wird zugefahren 1.Variante, $hour";
       }
       if ((($hour > 22) || ($hour < 7)) && (Value("sens_WzFenster") eq "closed")) {
        if (defined($defs{JL_Wohnzimmer_verzoegert})){fhem('delete JL_Wohnzimmer_verzoegert')};
           fhem ("define JL_Wohnzimmer_verzoegert at +00:01:00 set JL_Wohnzimmer off");
           Log 3, "Wohnzimmer Rollo wird zugefahren 2.Variante, $hour";
       }
       if ((Value("Anwesend") eq "Ja") && (Value("sens_WzFenster") eq "open") && ReadingsVal("JL_Wohnzimmer", "state", "") ne "on"){
           fhem ("set JL_Wohnzimmer on");
           Log 3, "Wohnzimmer Rollo wird hochgefahren wenn Anwesend und Fenster offen" .Value("JL_Wohnzimmer");
       }
}

sub
EzJLschalten()
{
my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime;
my $Zustand =Value("sens_EzFenster");
my $Zustandhell =Value("Hell");
my $ZustandRollo =Value("JL_Esszimmer");
Log 3, "Stunde: $hour, noch Hell draussen: $Zustandhell, EZ_Fenstersensor: $Zustand, Rollo: $ZustandRollo";
if(($hour >= 17) && ($hour <= 23) && (Value("sens_EzFenster") eq "closed") && (Value("Hell") eq "Nein")) {
  if (defined($defs{JL_Esszimmer_verzoegert})){fhem('delete JL_Esszimmer_verzoegert')};
  fhem ("define JL_Esszimmer_verzoegert at +00:01:00 set JL_Esszimmer off");
  Log 3, "Rollo wird zugefahren 1.Variante";
 }
if ((($hour > 22) || ($hour < 7)) && (Value("sens_EzFenster") eq "closed")) {
  if (defined($defs{JL_Esszimmer_verzoegert})){fhem('delete JL_Esszimmer_verzoegert')};
  fhem ("define JL_Esszimmer_verzoegert at +00:01:00 set JL_Esszimmer off");
  Log 3, "Rollo wird zugefahren 2.Variante";
 }
if ((Value("Anwesend") eq "Ja") && (Value("sens_EzFenster") eq "open") && ReadingsVal("JL_Esszimmer", "state", "") ne "on"){
  fhem ("set JL_Esszimmer on");
  Log 3, "Rollo wird hochgefahren wenn Anwesend und Fenster offen" .Value("JL_Esszimmer");
 }
}
Hardware FHEM:
Neue Fritzbox 7390 keine Labor von AVM
Konfigurationsadapter Lan
Funk-Schließerkontaktschnittstellen
Funk-Fenster/Türkontakt
Funk-Schaltaktoren UP ein und zweifach
Funk-Jalousieaktoren
Funk-Rauchmelder


betateilchen

Das funktioniert seit dem heutigen Update schon wieder nicht mehr...

Habe die fhem.pl von vorgestern wieder eingespielt und alles läuft wieder wie es soll.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Was genau ist das?

Und hast du auch die anderen Komponenten (CUL/FHZ/RFR) auf dem aktuellen Version gebracht?

betateilchen

"das" ist das triggern eines notify aus einer Aktion, die durch ein anderes notify ausgeführt wird.

DAS funktioniert:

"set lampe on"  in der Kommandozeile  bewirkt folgendes:
1.) lampe wird angeschaltet
2.) das Anschalten der Lampe triggert ein notify, das auf dieses Anschalten


DAS funktioniert nicht:
"set lampe on" als Befehl aus einem anderen notify (Fernbedienungsbutton) bewirkt folgendes:
1.) lampe wird angeschaltet

Das zugehörige notify wird NICHT ausgeführt. Das ist genau der Problemfall, um den es hier im Thread schon vor einigen Tagen ging und der dann durch ein Update behoben wurde.


Und JA - ich habe alles aktualisiert.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Meesus

Hallo zusammen,

ich habe leider auch das Prbl. seit dem Update was ich am 14.07 vorgenommen habe.
Ich dachte schon ich hätte irgend etwas unbewusst geändert. Passiert ja schon mal... Da ich gerade an meinem Markisen Aktor herumdoctor.
Nun habe ich heute ein Restore nach 3075 2013-04-15 gemacht und die Prbl. sind verschwunden. Heutiges Update vorgenommen, Prbl. wieder da.
Äußert sich bei mir wie folgt: Der $value{Markise} ne "open" reagiert nicht , so dass in 1s Intervall der Aktor wiederholt schaltet, sobald er die Daten vom Wetterdienst bekommt, aber das nur am Rande.

Rudold meinte ja man könnte das Prbl. eingrenzen, wenn man in etwa weiß wann das Prbl. erstmalig aufgetreten ist. Also wie gesagt mit
(version Fhem 5.4 (DEVELOPMENT), $Id: fhem.pl 3075 2013-04-15 15:19:48Z rudolfkoenig $, pid 26664) hatte ich das Prbl. nicht.


Anbei meine Markisen.cfg und die Fhem Log´s
Bitte keine Kritik über den Zeitintervall des Yahoo Moduls und der Windstärke, das habe ich nur zu Testzwecken jetzt so gewählt.

Gruss Micha
Raspberry 4 - FHEM 6.1 - HMLAN, CUL V3 433Mhz & 868Mhz, HM, Intertechno, HUE, Tasmota, Shelly, ESP Devices, Max! und Alexa - Banana PI zum testen

betateilchen

Bei mir hat definitiv alles funktioniert bis zum Update, das ich durchgeführt habe, nachdem ich heute Abend von Arbeit nach Hause kam. Ich konnte nämlich mit meiner Fernbedienung am Schlüsselbund noch vor dem Betreten problemlos die Einbruchmeldeanlage deaktiveren - was jetzt auch nicht mehr funktioniert.

Die Updates der vergangenen Tage wurden ebenfalls alle täglich durchgeführt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

@Meesus
- ich sehe keinen Unterschied zw. den beiden logs, bis auf die CUL_HM Meldungen: wenn das stoert bitte Martin in der CULHM Gruppe fragen, wieso diese jetzt anders sind
- ich verstehe nicht, was Du mit "Prbl. wieder da." meinst.
- bei mir wird "set Markise 100" aufgerufen. Ich musste natuerlich manche Werte simulieren (Markise zu, Wind 3), sonst passiert ja nix.
- Weather produziert 52 unterschiedliche Events auf einmal, die Verwendung von einem so ungenauen notify regexp ist (Achtung: Euphemismus) ungeschickt, damit wird die Markise 52-mal zugemacht.
- $value{} sollte man nicht mehr verwenden, Value() ist richtig.

@betateilchen
- deine Beschreibung ist mir zu schwammig, bzw. das was ich daraufhin angelegt habe tut bei mir
- die von AK-868 in diesem Thread gepostete Zeilen funktionieren.
- Vorgestern habe ich die DuplikatErkennung mit einem patch von justme1968 modifiziert. Ich habe es aber getestet, und laeuft bei mir.
- Wenn es bei Dir zu Problemen kommt, muss ich wissen, genau welche Events ueber welche IO-Geraete reinkommen, d.h. ich brauche mind. ein Log auf verbose 5 und genaue Definition aller Geraete. Oder wie ich es schon 100+ mal gepredigt habe, eine minimale Konfiguration, mit dem ich das nachspielen kann. Selbst bei einem *bezahlten* Support ist sowas eine Bedingung.

@all
- diese Diskussion wird wegen nichtsagendem Subject zugemacht, sonst kommt noch jeder auf die Idee seine Geschichte hier zu posten.