Welches Modul kann das?

Begonnen von Michi240281, 01 Juli 2014, 16:20:53

Vorheriges Thema - Nächstes Thema

Michi240281

Hallo zusammen,

ich habe bei mir die Abwesenheitserkennung mittels FB Presence und Goefancy im Parallelbetrieb eingerichtet. Allerdings gibt es immer noch einen Bereich, in dem nichts passiert, und zwar wenn ich nach Hause komme, erkennt die Geofancy App zu spät dass ich da bin (vllt auch mal kein Netz gehabt am Handy) und Presence geht auch nicht da noch kein WLAN, wenn ich die Garage öffne und reinfahre. Nun habe ich mir folgendes überlegt (das ist jetzt erstmal für den anderen Fall (also Verlasses des Hauses), aber das benötige ich auch). Und zwar haben wir 2 Autos und sind beide berufstätig. Wenn wir also morgens beide weggefahren sind, möchte ich die Anwesenheit auf nein stellen. Das Garagentor ist in Fhem mittels Torkontakt und Aktor eingebunden. Ich bräuchte also eine Funktion, die folgendermaßen aussieht:

Wenn Garagentor x mal (geöffnet und wieder) geschlossen wurde und es zwischen y und z Uhr ist, setze dummy Abwesend auf "ja"

Nur die Frage: Gibt es ein Modul, welches das kann oder wie könnte ich es sonst lösen?

Besten Dank schonmal für Eure Tipps und Anregungen.

Viele Grüße
Michael
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Puschel74

Hallo,

damit das Garagentor geschlossen werden kann muss es zwangsläufig mal offen gewesen sein - hoffe ich  8)

d.h. du brauchst eigentlich nur auf ein Garagentor closed triggern, die Uhrzeit prüfen und dann den Dummy setzen (oder eben nicht).

Du kannst aber auch erst bei einem geschlossenen Garagentor das notify disablen.
Wenn das Tor am morgen öffnet enablesd du das notify und lässt das notify, wenn das Garagentor wieder geschlossen ist, wieder disablen.
Aber letzteres ist vermutlich zu kompliziert gedacht auf die schnelle.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

chris1284

#2
hier gabs mal eine lösung für genau dein problem bei der man einfach eines sensor (temperatur zum beispiel) ins auto (handschufach zum beispiel) gepackt hat. wenn das auto daheim war gab es alle paar minuten ein signal vom sensor und man war "present", gab es keine signale mehr "absend". ist man heimgeommen und noch nicht im haus angekommen wusste fhem schon das man da ist und konnte "vorraus schalten". evtl auch ein lösungsansatz




Michi240281

Zitat von: Puschel74 am 01 Juli 2014, 16:36:51
Hallo,

damit das Garagentor geschlossen werden kann muss es zwangsläufig mal offen gewesen sein - hoffe ich  8)

d.h. du brauchst eigentlich nur auf ein Garagentor closed triggern, die Uhrzeit prüfen und dann den Dummy setzen (oder eben nicht).

Du kannst aber auch erst bei einem geschlossenen Garagentor das notify disablen.
Wenn das Tor am morgen öffnet enablesd du das notify und lässt das notify, wenn das Garagentor wieder geschlossen ist, wieder disablen.
Aber letzteres ist vermutlich zu kompliziert gedacht auf die schnelle.

Grüße

Klar, man muss auf closed triggern, aber man muss ja auf 2x closed innerhalb Zeit x triggern! Also nur wenn es 2x auf und zu geht sind ja beide Autos weg und erst dann soll Abwesenheit auf ja gehn!
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

justme1968

um auf eine bestimmte zeitliche reihenfolge von events zu reagieren schau dir mal das sequence modul an.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Michi240281

Zitat von: justme1968 am 01 Juli 2014, 19:22:48
um auf eine bestimmte zeitliche reihenfolge von events zu reagieren schau dir mal das sequence modul an.

gruss
  andre

Ok besten Dank, werde ich machen!
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Michi240281

#6
Hier mal das Beispiel aus der commandref:

define lampseq sequence Btn1:on 0.5 Btn2:off 0.5 Btn1:on
define lampon notify lampseq:trigger set lamp on


Verstehe ich das richtig?:

Wenn Btn1 on ist, 0,5 Sekunden später Btn2 off und weitere 0,5 Sekunden später Btn1 on geht, wird "lampseq" auf 1 oder on gesetzt. Das notify macht dann eben die Lampe an.

So richtig?

Commandref ist bzgl. des sequence moduls recht spärlich.....nutzt das Modul hier jmd?

Und können die <re_n> denn auch alles mögliche sein oder eben nur Tastendrücke?
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Elektrolurch

Hallo,

ich würde mit dem notify fürs Garagentor ein Stück perl-Code in der 99_myUtils.pm aufrufen und dort eine Variable als Zähler definieren:
(folgendes ist pseudocode)

my $counter0;

sub Garagentor_not($$)
{
my ($name,$event) = @_;
my ($sec,$min,$hour) = localtime(time()); # bitte nachsehen, ob das so stimmt

if(($hour >= 6) && ($hour <= 9)) # morgens wegfahren
{
$counter++ if($event eq 'closed');
fhem("set Abwesend ja") if ($counter >= 2);
}
else # andere Uhrzeit
{
$counter = 0;
fhem("set Abwesend nein");
}
return undef;
} # end sub

Gruß

Elektrolurch

configDB und Windows befreite Zone!

Michi240281

Hmmm vielen Dank für die Idee! Habe bislang noch keinen eigenen Code in der 99_myUtils erstellt. Was müsste ich denn in deinem Beispiel ändern und wie dann diese Funktion per Notify aufrufen?

Das Garagentor heißt tatsächlich genauso und nimmt closed:open an. Der Dummy heißt auch Abwesend. Soweit ja schonmal ok!

Was muss ich noch machen/ändern?

Besten Dank!
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Elektrolurch

Hi,

define Garagentor_not notify Garagentor:.* {Garagentor_not($NAME,$EVENT);;}

und dann kannst Du in der dritten Zeile innerhalb der sub Dir die Werte ins fhem-log schreiben lassen:

Log(3,"Garagentor_not name: $name event $event hour $hour counter $counter");

und somit verfolgen, was die sub macht.

Wenn Du morgens zwischen 6 und 9 Uhr zweimal in die fhem-Zeile folgendes eingibst:

{Garagentor_not('Garagentor','closed');;}

sollte danach Abwesend auf ja stehen.

Beim ersten Aufruf nach 9 Uhr dann auf nein.

Gruß

und viel Spaß bei der Abwesenheit.
configDB und Windows befreite Zone!

Michi240281

Vielen vielen Dank!!!!!!!!!!!!

Werde das heute Abend direkt testen!

Das heißt wenn das Tor nach 9 Uhr aufgeht geht der Abwesend wieder auf nein? Das wäre perfekt!
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Michi240281

Zitat von: Elektrolurch am 02 Juli 2014, 12:46:04
Hallo,

ich würde mit dem notify fürs Garagentor ein Stück perl-Code in der 99_myUtils.pm aufrufen und dort eine Variable als Zähler definieren:
(folgendes ist pseudocode)

my $counter0;

sub Garagentor_not($$)
{
my ($name,$event) = @_;
my ($sec,$min,$hour) = localtime(time()); # bitte nachsehen, ob das so stimmt

if(($hour >= 6) && ($hour <= 9)) # morgens wegfahren
{
$counter++ if($event eq 'closed');
fhem("set Abwesend ja") if ($counter >= 2);
}
else # andere Uhrzeit
{
$counter = 0;
fhem("set Abwesend nein");
}
return undef;
} # end sub

Gruß

Elektrolurch

Hmmmmm, da scheints direkt nen Problem zu geben! Nach Eintrag in die 99_myUtils kommt folgende Fehlermeldung:

ERROR:
Global symbol "$counter" requires explicit package name at ./FHEM/99_myUtils.pm line 78. Global symbol "$counter" requires explicit package name at ./FHEM/99_myUtils.pm line 79. Global symbol "$counter" requires explicit package name at ./FHEM/99_myUtils.pm line 83.
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Puschel74

Hallo,

Zitat(folgendes ist pseudocode)
steht ja nicht umsonst dabei.

Das heisst das es in einer mehr oder weniger programmpassenden Umgangssprache geschrieben ist und NICHT 1:1 für JEDEN Interpreter passt.
Ein Interpreter setzt den Code in Maschinensprache um damit die ausführende Instanz (idR ein (Micro)Controller) damit was anfangen kann.

ZitatERROR:
Global symbol "$counter" requires explicit package name at ./FHEM/99_myUtils.pm line 78. Global symbol "$counter" requires explicit package name at ./FHEM/99_myUtils.pm line 79. Global symbol "$counter" requires explicit package name at ./FHEM/99_myUtils.pm line 83.
Da stehen auch Zeilennummern dabei.
Wie wäre es wenn du uns mal DEINEN eingefügten Code zeigen würdest und die Zeilennummern vergleichen würdest.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Michi240281

Ich hab den Code nur kopiert, da ich wie gesagt überhaupt keinen Plan habe, wie ich das sonst in die 99_myUtils einfügen muss (habe noch nie nen eigenes Programm geschrieben). Also folgendes habe ich nur reinkopiert:

my $counter0;

sub Garagentor_not($$)
{
my ($name,$event) = @_;
my ($sec,$min,$hour) = localtime(time()); # bitte nachsehen, ob das so stimmt

if(($hour >= 6) && ($hour <= 9)) # morgens wegfahren
{
$counter++ if($event eq 'closed');
fhem("set Abwesend ja") if ($counter >= 2);
}
else # andere Uhrzeit
{
$counter = 0;
fhem("set Abwesend nein");
}
return undef;
} # end sub


Die Zeilen betreffen eben die 3 Einträge "$counter". Nur was muss ich da ändern und wie?
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Puschel74

#14
Hallo,

ZitatIch hab den Code nur kopiert, da ich wie gesagt überhaupt keinen Plan habe,
Dann wird es aber Zeit - sorry.

Du kannst doch nicht erwarten das sich irgendwo irgendjemand um irgendwelche Fehlermeldungen in DEINEN Codes kümmert  ???

Wie wär es wenn du dich mal dahinter klemmst und dich mal selbst schlau machst?
Nach knapp über 500 Beiträgen von dir sollte man das wohl mehr oder weniger erwarten können.
Elektrolurch benötigt einen Screenreader! (d.h. er ist blind wie du seiner Signatur entnehmen kannst) und auch er beisst sich durch.

Nein, FHEM ist KEIN! - ich will das haben andere sollen schauen wie das geht - Projekt.

Lies dir das Wiki durch (dort wird das erstellen einer 99_myUtils.pm erklärt aber für den Code darin bist DU verantwortlich) und lies dir das Forum durch.
Schau dir die commandref an und lies dir das Einsteiger.pdf nochmal durch.
Benutze die Suchmaschine deines Vertrauens wenn du was zu Perl wissen willst und versuche das neu gewonnene Wissen in einen Code zu packen.

Was machst du jetzt wenn deine Steuerung den Geist aufgibt und die nächsten 2 Wochen das Forum offline ist weil der Server down ist?
FHEM ist PRIVAT und jeder der hilft (versucht zu helfen) macht das freiwillig.

Aber wichtiger ist doch Hilfe zur Selbsthilfe.

Grüße

P.S.: Ich bin der "pöse", das weiß ich - damit kann ich leben.
Aber für alles und jedes sofort "Hilfe - wie geht das" "Fehlermeldung - weiß nicht wie weiter" evtl. noch Google ist offline und ich kann nicht suchen ...
FHEM ist NICHT Mainstream - jeder der FHEM benutzt MUSS! sich auch selbst einbringen und kann sich nicht auf andere verlassen.

Dieser Beitrag ist nur meine Meinung und stellt NICHT die Meinung anderer Forenmitglieder dar
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

der-Lolo

ich vermute in der ersten zeile solltest du

my $counter = 0

einsetzen...


Michi240281

Zitat von: Puschel74 am 02 Juli 2014, 21:40:36
P.S.: Ich bin der "pöse", das weiß ich

Einsicht ist der erste Weg zue Besserung!  ;)

Ich habe hier niemanden genötigt oder gar gezwungen, mir zu helfen! Meine Fhem-Installation ist inzwischen recht umfangreich und ich komme mit allem bislang sehr gut klar! Das Programmieren in der 99_myUtils ist aber wie gesagt ganz neu für mich und ehrlich gesagt finde ich es unlogisch und unnötig, wenn ich jetzt 20 Stunden investiere um zu einer Lösung zu kommen, wenn jmd anderes die Lösung kennt und 5 Minuten seiner Zeit opfert und mir diese mitteilt! Denn ich bin der Meinung, dass ein Forum dafür da ist, andere zu unterstützen, denn wir wollen ja im Grunde alle das gleiche!

Denk mal drüber nach! In den 10 Minuten, in denen du mir jetzt eine Predigt gehalten hast von wegen EInsteiger.pdf, Suche, google etc. hättest du auch 2 Minuten dafür nutzen können mir entweder zu schreiben wie ich das umstellen muss oder dass du es eben nicht weißt und die anderen 8 Minuten hättest mit deiner Freundin verbracht!

Und das alles ist eben meine Meinung!

Ich bin mal gespannt und freu mich über die nächste Antwort von Elektrolurch, dem ich schonmal sehr dankbar für seine Antworten bin! Parallel schaue ich mir das sequence modul nochmal genauer an und werde damit etwas experimentieren. Auch wenn Fhem ein Hobby ist, habe ich auch noch andere Sachen zu tun und werde jetzt kein Perlstudium dafür betreiben!

In dem Sinne, gute Nacht!
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Michi240281

Zitat von: der-Lolo am 02 Juli 2014, 21:45:17
ich vermute in der ersten zeile solltest du

my $counter = 0

einsetzen...

Ok, besten Dank!!!!!!!!  :)

Werde ich heute Abend testen!
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Elektrolurch

Hallo Michi,

die Zeile
my $counter = 0;

steht ja vor der eigentlichen subroutine.
Perl liest beim reload - Befehl des Moduls den ganzen Code einmal ein und führt jene TTeile auch direkt aus, die nicht in einer sub-Routine stehen.
Damit wird der counter auf 0 gesetzt und somit ein definierter Zustand für Dein Garagentor definiert.
Man könnte auch theorethisch die Zuweisung von 0 weglassen, da perl immer neu deklarierte Variablen mit 0 oder undef initialisiert.

So ist es aber sauberer.

Wenn Du die 99_myUtils editiert hast, musst Du nach dem Abspeichern das Modul mit

reload 99_myUtils.pm

von fhem aus neu laden lassen, falls beim Abspeichern keine perl-Fehler entdeckt wurden (:-@)

Gruß

Elektrolurch
configDB und Windows befreite Zone!

Elektrolurch

Hallo Michi,

hatte gerade noch mal zurückgeblättert.
Stimmt schon, dass man auch ein bisserl mitdenken sollte:

in der sub-Routine wird $counter verwendet,
dann muss in der Deklaration davor auch my $counter = 0;
stehen und nicht my $counter0;
weil das sind ja zwei verschiedne Variablen und perl hat Dir ja genau dies in der Fehlermeldung geschrieben:
dass $counter nicht deklariert ist.
Ich habe zwar vor vielen Jahren div. Assembler, Fortran, Pascal, C, C++ usw. gelernt und erfolgreich programmmiert, aber perl war für mich vor einem Jahr auch neu.
Vielleicht solltest Du hier mal den Kurs durcharbeiten:
http://www.perlboard.de/perlguide/Inhalt.html
Der ist ganz brauchbar und leicht verständlich.


Gruß

Elektrolurch
configDB und Windows befreite Zone!

Michi240281

Ok vielen vielen Dank!

Werde es heute Abend mal ausprobieren! Mir ist zwar noch nicht ganz klar, wo da in dem Code dann das Garagentor vorkommt/geprüft wird, aber ich teste es mal!
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Michi240281

Also es tut sich auf jeden Fall was! Aber 100% richtig ist es wohl noch nicht! Der Counter zeigt manchmal mehrfach hintereinander 0 an obwohl ich innerhalb der Zeit die Garage auf und zu mache (habe das Zeitintervall auf 6-22 Uhr aufgeweitet). Und er setzt auch Abwesend auf ja obwohl der Counter nur 1 anzeigt!

Also beim ersten schließen der Garage zeigt der Counter 0! Beim 2. Schließen dann Counter=1 und Abwesend geht auf ja! Sollte doch an sich erst wenn Counter>=2? Und manchmal bleibt der Counter mehrfach bei 0!

Ne Idee?
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Michi240281

@ Elektrolurch:

Komme gerade heim und sehe, dass heute 2-3x Abwesend von ja auf nein und zurück gewechselt hat. Hab keine Erklärung dafür. Ursache ist auf jeden Fall das neue sub. Was ich gesehen habe, dass genau zu den Zeitpunkten ein addLog ausgeführt wurde. Der Counter zeigte jedoch 0 an! Dennoch wechselte dann immer der Abwesenheitsstatus! Also irgendwo ist in dem Sub noch der Wurm drin!

Kannste mir da evtl helfen? Wo müsste ich schauen?

Besten Dank!!
FHEM 5.6 auf RPi2 / HM LAN Adapter / diverse HM-Devices
FHEM-Remote-App
QNAP 419P / Onkyo TX-SR 608
DM500HD / GM Spark One
Sony 52HX905

Tobias

alles nur raterei... (hab auch nicht alle Posts gelesen)
Sauber ist es wenn du an der Garagendecke über den Autos jeweils einen Abstandssensor (zb. einen SRF02 mittels ATTINY-DS2423 Platine) einbindest. Dann weißt du 100% welches Auto JETZT in der Garage steht.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Elektrolurch

Zitat:
Komme gerade heim und sehe, dass heute 2-3x Abwesend von ja auf nein und zurück gewechselt hat. Hab keine Erklärung dafür. Ursache ist auf jeden Fall das neue sub. Was ich gesehen habe, dass genau zu den Zeitpunkten ein addLog ausgeführt wurde. Der Counter zeigte jedoch 0 an! Dennoch wechselte dann immer der Abwesenheitsstatus! Also irgendwo ist in dem Sub noch der Wurm drin!

Kannste mir da evtl helfen? Wo müsste ich schauen?

Leider nicht, da ich weder über hellseherische Fähigkeiten verfüge, noch ist es mir bislang gelungen, die installierte Web-Cam zu hacken um zu erfahren, was Dein Nachbar so tagsüber in Deiner Garage treibt....
configDB und Windows befreite Zone!