Neues Modul: 22_HOMEMODE.pm - grundlegende Automationen und mehr

Begonnen von DeeSPe, 07 Januar 2017, 15:59:43

Vorheriges Thema - Nächstes Thema

binford6000

#1020
if ("%STATE%" eq "geöffnet")
  {...}
else
  {...}


Oder noch einfacher HomeCMDmotion-on und -off verwenden. Und in %SENSOR% steht das auslösende Device.
VG Sebastian

cortmen

Hat jemand die HomeCMDcontactDoormain im cmds definiert?
Gleiches gilt auch für HomeCMDcontactDoormain-open -/ closed

Egal was man reinschreibt, es kommt immer ein:

Home: error: Unknown command ;{, try help.

Bitte einfach ein einfaches
{Log 1, "blalbla";}

reinschreiben zum testen. Danke!

DeeSPe

Zitat von: cortmen am 31 Oktober 2019, 16:29:53
Hat jemand die HomeCMDcontactDoormain im cmds definiert?
Gleiches gilt auch für HomeCMDcontactDoormain-open -/ closed

Egal was man reinschreibt, es kommt immer ein:

Home: error: Unknown command ;{, try help.

Bitte einfach ein einfaches
{Log 1, "blalbla";}

reinschreiben zum testen. Danke!

Damit gibt es bei mir keinerlei Probleme.
Zitat
2019.10.31 16:44:12.888 1:  blalbla
2019-10-31 16:44:12.893 HOMEMODE HM contactsDoorsMainOpen: Door1
2019-10-31 16:44:12.893 HOMEMODE HM contactsDoorsMainOpen_ct: 1
2019-10-31 16:44:12.893 HOMEMODE HM contactsDoorsMainOpen_hr: Die Eingangstür
2019-10-31 16:44:12.893 HOMEMODE HM contactsOpen: Door1
2019-10-31 16:44:12.893 HOMEMODE HM contactsOpen_ct: 1
2019-10-31 16:44:12.893 HOMEMODE HM contactsOpen_hr: Die Eingangstür
2019-10-31 16:44:12.893 HOMEMODE HM contactsOutsideOpen: Door1
2019-10-31 16:44:12.893 HOMEMODE HM contactsOutsideOpen_ct: 1
2019-10-31 16:44:12.893 HOMEMODE HM contactsOutsideOpen_hr: Die Eingangstür
2019-10-31 16:44:12.893 dummy Door1 open

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

cortmen

#1023
mhhh, das gibt doch wohl ..was kann das denn sein?

Hinweis.  Die Readings werden ja alle gesetzt (wie bei Dir oben), nur keine CMDS ausgeführt.
Alle anderen HomeCMD ... werden ausgeführt.

verbose 5 auf Home und global Stacktrace = 1

HomeCMDcontactDoormainOpen set hue.flurunten on;  ist gesetzt.

2019.10.31 16:59:21 5: Home: Events from monitored device HM_Sec_Haustuer: state: open
2019.10.31 16:59:21 5: Home: cmdnew:
2019.10.31 16:59:21 5: Home: cmdnew:
2019.10.31 16:59:21 5: Home: cmdnew: { Log 1, "blabla"; }
2019.10.31 16:59:21 3: Home: error: Unknown command ;{, try help.
2019.10.31 16:59:21 3: Home: error in command: ;;{ Log 1, "blabla";; }
2019.10.31 16:59:21 4: executed CMDs: ;;{ Log 1, "blabla";; }
2019.10.31 16:59:21 5: Home: retrigger: 0
2019.10.31 16:59:21 5: Home: waittime real: 4
2019.10.31 16:59:21 5: Home: waittime divided: 5
2019.10.31 16:59:21 5: Home: Events from monitored device global: DEFINED atTmp_HomeOpenTimer_HM_Sec_Haustuer_Home
2019.10.31 16:59:21 5: Home: cmdnew:
2019.10.31 16:59:21 5: Home: cmdnew:
2019.10.31 16:59:21 4: executed CMDs: ;
2019.10.31 16:59:23 5: Home: Events from monitored device HM_Sec_Haustuer: state: closed
2019.10.31 16:59:23 5: Home: cmdnew:
2019.10.31 16:59:23 5: Home: cmdnew:
2019.10.31 16:59:23 5: Home: cmdnew: { Log 1, "blabla"; }
2019.10.31 16:59:23 3: Home: error: Unknown command ;{, try help.
2019.10.31 16:59:23 3: Home: error in command: ;;{ Log 1, "blabla";; }
2019.10.31 16:59:23 4: executed CMDs: ;;{ Log 1, "blabla";; }
2019.10.31 16:59:23 5: Home: Events from monitored device global: DELETED atTmp_HomeOpenTimer_HM_Sec_Haustuer_Home
2019.10.31 16:59:23 5: Home: cmdnew:
2019.10.31 16:59:23 5: Home: cmdnew:



Auch bei einfach fhem kommandos

2019.10.31 17:06:19 5: Home: Events from monitored device HM_Sec_Haustuer: state: open
2019.10.31 17:06:19 5: Home: cmdnew:
2019.10.31 17:06:19 5: Home: cmdnew:
2019.10.31 17:06:19 5: Home: cmdnew: set hue.flurunten on;
2019.10.31 17:06:19 3: Home: error: Unknown command ;set, try help.
2019.10.31 17:06:19 3: Home: error in command: ;;set hue.flurunten on;
2019.10.31 17:06:19 4: executed CMDs: ;;set hue.flurunten on;
2019.10.31 17:06:19 5: Home: retrigger: 0
2019.10.31 17:06:19 5: Home: waittime real: 4
2019.10.31 17:06:19 5: Home: waittime divided: 5
2019.10.31 17:06:20 5: Home: Events from monitored device global: DEFINED atTmp_HomeOpenTimer_HM_Sec_Haustuer_Home
2019.10.31 17:06:20 5: Home: cmdnew:
2019.10.31 17:06:20 5: Home: cmdnew:
2019.10.31 17:06:20 4: executed CMDs: ;
2019.10.31 17:06:22 5: Home: Events from monitored device HM_Sec_Haustuer: state: closed
2019.10.31 17:06:22 5: Home: cmdnew:
2019.10.31 17:06:22 5: Home: cmdnew:
2019.10.31 17:06:22 5: Home: cmdnew: set hue.flurunten on;
2019.10.31 17:06:22 3: Home: error: Unknown command ;set, try help.
2019.10.31 17:06:22 3: Home: error in command: ;;set hue.flurunten on;
2019.10.31 17:06:22 4: executed CMDs: ;;set hue.flurunten on;
2019.10.31 17:06:22 5: Home: Events from monitored device global: DELETED atTmp_HomeOpenTimer_HM_Sec_Haustuer_Home
2019.10.31 17:06:22 5: Home: cmdnew:






DeeSPe

Zitat2019.10.31 17:06:19 5: Home: cmdnew:
2019.10.31 17:06:19 5: Home: cmdnew:

Diese beiden leeren CMDs wundern mich! Wo kommen die her?
Hast Du irgendwo leere HomeCMDs definiert? Diese werden dann versucht zu verketten und daher kommen die beiden Semikolon am Anfang:
Zitat2019.10.31 16:59:21 4: executed CMDs: ;;{ Log 1, "blabla";; }

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

cortmen

#1025
Leere gibt es nicht, aber einige mit Kommentarzeichen:


#
#
#
#


OK, Fehler (wenn es denn einer ist?) der Prozess kann keine HomeCMD Attribute mit only # Zeichen interpretieren.

DeeSPe

Zitat von: cortmen am 31 Oktober 2019, 17:24:06
Leere gibt es nicht, aber einige mit Kommentarzeichen:


#
#
#
#


Also sind sie leer, denn die Kommentarzeilen werden vor dem Ausführen entfernt.
Bitte die leeren Attribute entfernen und dann sind deine Probleme verschwunden.
Ich werde versuchen solche Attributwerte in der nächsten Version abzufangen.

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

cortmen


cortmen

#1028
HomeCMDcontactOpenWarning1 
Die Befehle werden pro geöffneten Kontakt ausgeführt.
Scheint ein interner Timer inkl. des gelesenen Befehls zu sein.
Bei gleichzeitig z.b. 6 geöffneten Fenster, ist das etwas zu viel der Audioausgabe.
Gibt es einen Trick ?


dk3572

Zitat von: cortmen am 07 November 2019, 16:17:31
HomeCMDcontactOpenWarning1 
Die Befehle werden pro geöffneten Kontakt ausgeführt.
Scheint ein interner Timer inkl. des gelesenen Befehls zu sein.
Bei gleichzeitig z.b. 6 geöffneten Fenster, ist das etwas zu viel der Audioausgabe.
Gibt es einen Trick ?

Hallo,

gleiches Anliegen hatte ich auch bereits:

https://forum.fhem.de/index.php/topic,64317.msg926108.html#msg926108

DeeSPe

#1030
Zitat von: cortmen am 07 November 2019, 16:17:31
HomeCMDcontactOpenWarning1 
Die Befehle werden pro geöffneten Kontakt ausgeführt.
Scheint ein interner Timer inkl. des gelesenen Befehls zu sein.
Bei gleichzeitig z.b. 6 geöffneten Fenster, ist das etwas zu viel der Audioausgabe.
Gibt es einen Trick ?

Das wurde schon einmal gefragt und meine Antwort damals dazu war:
https://forum.fhem.de/index.php/topic,64317.msg927012.html#msg927012

Aber einen Trick gibt es immer wenn man etwas programmieren kann. ;)

Eine mögliche Lösung dazu wäre statt in "HomeCMDcontactOpenWarning1" direkt jeden Kontakt auszugeben, eine entsprechende Funktion aufzurufen, die dann aus allen überwachten Kontakten die offenen raussucht, die ein "HomeOpenMaxTrigger" gesetzt haben. Diese werden dann ausgegeben und ein Reading gesetzt dass diese ausgegeben wurden. Entsprechend vorher schaust Du wie alt dieses gesetzte Reading ist und wenn es ein gewisses Alter erreicht hat wird neu ausgegeben.

Die Funktion könnte wie folgt aussehen (diese Funktion bitte in die 99_myUtils.pm):
sub checkContacts($)
{
  my ($name) = @_;
  # Funktion nur durchlaufen wenn das Reading älter als 5 min ist
  return undef if (ReadingsAge($name,"notifiedContacts",300) < 300);
  my $contacts = InternalVal($name,"SENSORSCONTACT","");
  $contacts=~s/,/|/g;
  my @aliases;
  foreach (devspec2array("$contacts:FILTER=HomeOpenMaxTrigger>0:FILTER=state!=closed"))
  {
    push @aliases,AttrVal($_,"alias",$_);
  }
  my $ret = join(", ",@aliases);
  fhem "setreading $name notifiedContacts $ret";
  return $ret;
}


Und dann hinterlegst Du einfach in "HomeCMDcontactOpenWarning2" z.B. folgenden Code (speak natürlich anpassen auf das was Du machen möchtest):
{
  my $c = checkContacts("%SELF%");
  fhem "speak HINWEIS: Folgende Kontakte sind immer noch offen: $c" if ($c);
}


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

cortmen

 @DeeSPe :)Danke!
Die Lösung ist sehr gut.
Ich kann damit meinen Fall abdecken.

bastelfeak

Hallo, ich bin auch glücklicher Nutzer des HOMEMODE Moduls! Jetzt habe ich ein automatisches öffnen der Rollos eingefügt, sobald ein Fenster geöffnet wird ( weil es Balkontüren sind) und beim schließen werden die Rollos verzögert um 10 Minuten wieder heruntergefahren, sofern es draußen auch dunkel ist. Angebunden ist das Homematic-System über HMCCU. Nun zum Problem. Der Closed-Trigger kommt auch, obwohl die Fenster bereits geschlossen sind. Wenn ich change-on-event reading in den Kontakten für das Reading State setze, dann passiert gar nichts mehr. Der State im device wird aber regulär aktualisiert. Hat jemand eine Idee dazu?

Viele Grüße

volschin

Intel NUC+Ubuntu 24.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7690, Echo Dots+Show8, HomeBridge

DeeSPe

Ich habe gestern ein kleines Update (v1.5.2) in SVN eingecheckt.
Folgende Änderungen sind enthalten:
Zitat von: v1.5.2
- prevent to execute empty HomeCMDs
- fix blocking IP check if no internet connection is available
- add missing name for logging 'executed CMDs'

Das aktualisierte Modul ist seit heute 8 Uhr im regulären Update verfügbar.

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