Alarmanlage nur über Fensterkontakte

Begonnen von blitzcom, 24 August 2013, 07:56:41

Vorheriges Thema - Nächstes Thema

betateilchen

Zitat von: blitzcom schrieb am Mo, 26 August 2013 12:32
define Bad_links MAX ShutterContact 0735df
define Buero MAX ShutterContact 07359d
define Haustuer MAX ShutterContact 073e01
define Bad_rechts MAX ShutterContact 0735e3
define Esszimmer MAX ShutterContact 0735cd
define Kueche_rechts MAX ShutterContact 0737b4
define Balkon_WZ MAX ShutterContact 07378e
define Kueche_links MAX ShutterContact 07375f
define Schlafz_unten_klein MAX ShutterContact 073685
define Schlafzimmer_oben MAX ShutterContact 0735de


Bei mir heißen die Melder alle "Melder_...." also z.B. "Melder_FAl" ist der Melder "Fenster Arbeitszimmer links" und Melder_TEingang ist der Melder "Tür Eingang" (es gibt auch Melder_TBalkon) somit kann ich wahlweise alle Fenstermelder (Melder_F.*) oder alle Türmelder (Melder_T.*) oder alle Melder (Melder_.*) auswerten.

sendmail auf Raspberry? Na dann mal viel Spaß damit :) Ich hab den Versuch nach zwei Tagen abgebrochen.

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

betateilchen

Zitat von: bugster_de schrieb am Mo, 26 August 2013 13:43Allerdings kenne ich doch meine Frau :-)

glaub mir, wenn sie zweimal die Wohnung betritt und die Sirene losheult, vergisst sie das nie wieder. Und das Schlüsselbrett in Nähe des Tasters hilft, das Vergessen des Scharfschaltens zu vermeiden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

bugster_de

Zitatund die Sirene losheult, vergisst sie das nie wieder
wie gesagt ich kenne meine Frau. Ich glaube eher dass danach die Sirene auf den Müll wandert :-)

ZitatBei mir heißen die Melder alle "Melder_...."
das ist klasse. Bei mir sind die Dinger momentan nach GESCHOSS_RAUM_Name aufgeteilt. Also OG_BZ_Rolladen wäre dann der Rolladen im Badezimmer im Obergeschoss.
Aber eigentlich brauche ich das ja nur umzudrehen (Rolladen_OG_BZ) und kann dann mit Rolladen.* alle Rolläden, mit Rolladen_OG.* alle im OG etc. auswerten.
Gleiches natürlich für die Melder.
MELDER_EG_TTM wäre dann der Melder im Erdgeschoss an der Terassen-Türe Mitte (TTM) und TTL ist dann Links und TTR ist dann rechts.
Und mittels MELDER_EG_TT.* kann ich die Terassentüren abfragen und entsprechend die Rolläden oben lassen.

Das gefällt mir immer besser !

blitzcom

Hehe, schön das ihr beiden euch so rege austauscht... :-)

Leider komme ich nicht weiter.

Die Nummer mit dem absent klappt schon mal. Ich habe jetzt ein Fenstermelder nach Kontakt01 umbenannt. Wenn ich das richtig sehe, wird doch das Pearl script in der 99_Utils.pm eingetragen, richtig?
Wenn ich das mache, taucht als Fehlermeldung folgendes auf: syntax error at ./FHEM/99_Utils.pm line 263, near ""Irgend ein Fenster ist auf";"
Ab gesehen davon: Kann man den auf der FHEM Gui nicht zusätzlich einen Schalter definieren, mit dem man die Alarmanlage per Hand einschalten kann.

Was die Thematik Sirene betrifft... Da nehme ich ohnehin Abstand von. Ruf nur die Polizei auf den Schirm und im dümmsten Fall bezahle ich dann den einsatz. Wie gesagt, eine hell blitzende Leuchte innen sollte wohl jeden Einbrecher daran hindern weiter zu machen, bzw. erst ins Haus zu gehen. In dem Zusammenhang, wie schalte ich denn nun im Falle eines Alarmes eine FS20 Dose, als Beispiel?

mfg
Mike

bugster_de

tja, wie gesagt untestet:
Log( 1, "Irgend ein Fenster ist auf";
ist falsch. richtig ist
Log 1, "Irgend ein Fenster ist auf";
oder
Log( 1, "Irgend ein Fenster ist auf" );

Das mit dem Webschalter kann man natürlich machen. Einen dummy definieren und der schaltet dann ebenfalls per notify die Alarmanlage ein oder aus. #
Aber nun wird es ja genau spannend (siehe meine Anmerkungen zur steigenden Komplexität): wer hat nun Vorrang? Der Schalter oder das Handy? Man schaltet per Hand aus und geht dann weg? Was passiert dann? Aus oder Ein? :-)

blitzcom

Alle drei Lösungen funktionieren nicht.
Ich glaube, dass es eher an der hier liegt, oder?
notifymyAndroid "Irgendein Fenster ist auf";

Was ist eleganter... tja. Ich habe gerade bei den Eventmeldungen gesehen, das es schon mal 90 sekunden dauern kann bis registriert wird, dass das Handy wieder anwesend ist. Jetzt ist der Weg von der Garage etwas weiter, das würde vielleicht auch im längsten Fall passen. Aber die Nummer mit dem Dummy Schalter, bis der Türkontakt da ist, wäre vielleicht die bessere Lösung.
Aber was hälst Du von der Variante mit dem Blitzlicht?

mfg
Mike

bugster_de

Zitat von: betateilchen schrieb am Mo, 26 August 2013 12:02
Zitat von: bugster_de schrieb am So, 25 August 2013 21:23define mynotify01 notify Kontakt01:on.* { myPerlAlarm( );; }
define mynotify02 notify Kontakt02:on.* { myPerlAlarm( );; }
usw.

aus Performancegründen besser so:

define mynotify notify Kontakt..:on.* { myPerlAlarm( );; }

Und welcher Kontakt das notify ausgelöst hat, weiß man doch sowieso, weil das in $NAME steht.

trifft das eigentlich auch auf AT zu? Sprich wird jedesmal alle AT durchgegangen, um zu sehen welcher es war? Und wenn ja, wie errechnet sich die Zeitbasis für AT?

Puschel74

Hallo,

@betateilchen

Zitatsendmail auf Raspberry? Na dann mal viel Spaß damit :) Ich hab den Versuch nach zwei Tagen abgebrochen.

Bei mir funktioniert sendmail einwandfrei auf dem RasPi.
Woran bist du den gescheitert? (vielleicht kann ich ja auch mal helfen ^^ ).

@bugster_de

Zitattrifft das eigentlich auch auf AT zu?

Ein at wird über eine Uhrzeit getriggert und nicht über ein notify ;-)
Hat also mit at nichts zu tun.

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.

bugster_de

ZitatHat also mit at nichts zu tun.

Was ich meinte war die Art und Weise, wie FHEM dafür sorgt, dass die Timer losfeuern.

Beispiel 1:
man hat einen at mit +00:00:02 und einen at +00:00:06
wird nun FHEM alle 2 Sekunden aktive und überprüft, ob irgendein at losgelaufen ist? Sprich der Basistakt (kleinster gemeinsamer Nenner) der beiden at ist 2 Sek und somit bei jedem mal wird der erste at losgetreten und bei jedem dritten mal der zweite at?

Beispiel 2:
at +00:00:11
at +00:00:17
hier ist der kleinste gemeinsame Nenner 1 Sek. Sprich FHEM schaut jede Sekunde nach ob was passiert ist. Aber nur bei jedem 11. mal geht at 1 los und bei jedem 17. mal at zwei. Das hat natürlich deutliche Rechenlast zur Folge, die man sich durch geschicktes Design der at sparen kann. Sprich wenn FHEM einfach in einer while(1) loop in der Basis läuft und dann die abgelaufene Zeit vergleicht, müsste man auf sowas achten

Oder greift FHEM auf darunter liegende Dienste des Betriebssystems zurück und lässt sich quasi extern triggern?
Dann wären wir ja bei einem echten Echtzeitsystem, bei dem man auf Overrun, Speichersharing etc. aufpassen muß. Und damit würden sich für mich auch so manche interessante Phänomene wie MISSING ACK bei Homematic erklären lassen (vermute ich mal).

betateilchen

Der Timer wird immer auf eine absolute Uhrzeit gesetzt, egal wie Du es im at angibst. Nix mit gemeinsamem Nenner oder ähnlichem. Schau Dir einfach mal die Werte in einer at-Definition an. Da findest Du "next" im STATE, und Du siehst den Timestamp und die formatierte Anzeige für die nächste Ausführung. Diese Werte werden direkt bei der Definition bzw. bei einem Wiederholungs-at bei jeder Ausführung ermittelt.


(siehe Anhang / see attachement)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

blitzcom

Hmm,

hilft mir bei meinem Problem aber immer noch nicht weiter.
Zum Thema notifymyandroid.
Das ich da dann vermutlich ein Account brauche verstehe ich, aber wie versteht fhem was es mit dem befehl notifymyandroid anfangen soll?

Ich komm nicht wirklich voran.

PatrickB

Hallo,

ich war auch schon dabei in Perl und notify was zu schreiben um meine (EIB) Fensterkontakte mit FHEM zu prüfen. Leider ist dann die SD Card des Raspi abgeraucht und alles war weg..

Meine Idee ist für die Fensterkontakte ein Array anzulegen. Wenn ein Notify kommt wird eine 1 oder 0 in das Array geschrieben und im Anschluss per Schleife auf Summe 0 geprüft. Sind alle Fenster zu ist die Summe = 0 ist eins offen >0

Leider bin ich noch nicht dazu gekommen aber vlt. kann jemand mit ein paar Perl zeilen weiterhelfen

Gruss Patrick

Matscher

Hallo Patrick,
für den Fall gibt es das helper module structure (http://fhem.de/commandref.html#structure), was genau das abbildet.

Gruß
Rasp 3
CUL V3 868Mhz + nanoCUL 868Mhz als RFR + nanoCUL 868Mhz für Homematic + SIGNALduino
Zigbee CC2531 - Aquara TempSensor
MySensors Ethernet Gateway, Water meter, Gas meter
Modul: 09_CUL_FHTTK.pm (assumed), culfw part HAS_FHT_TF

bugster_de

Zitat von: blitzcom schrieb am Mi, 28 August 2013 12:07Hmm,

hilft mir bei meinem Problem aber immer noch nicht weiter.
Zum Thema notifymyandroid.
Das ich da dann vermutlich ein Account brauche verstehe ich, aber wie versteht fhem was es mit dem befehl notifymyandroid anfangen soll?

Ich komm nicht wirklich voran.

Hi,

naja, wie sage ich es höflich? Ein bisschen Programmieren solltest Du schon können. Sprich da wirst Du Dich in Prgrammierung und Perl wohl oder übel einarbeiten müssen.

NMA:
da ich wie gesagt kein NMA habe, weiss ich nicht genau, wie das geht. Das solltest Du zuerst einrichten, um sicherzustellen, dass das geht. Wenn es dann von der FHEM Oberfläche aus funktioniert kannst Du in Perl mittels fhem( "der fhem Befehl hier" ); dann jeden belibigen FHEM Befehl absetzen, denn Du auch oben in FHEM eingeben kannst.


bugster_de

Zitat von: betateilchen schrieb am Di, 27 August 2013 19:09Der Timer wird immer auf eine absolute Uhrzeit gesetzt, egal wie Du es im at angibst. Nix mit gemeinsamem Nenner oder ähnlichem. Schau Dir einfach mal die Werte in einer at-Definition an. Da findest Du "next" im STATE, und Du siehst den Timestamp und die formatierte Anzeige für die nächste Ausführung. Diese Werte werden direkt bei der Definition bzw. bei einem Wiederholungs-at bei jeder Ausführung ermittelt.


(siehe Anhang / see attachement)

Das ist schon klar. Wer triggert aber nun FHEM? Übergibt FHEM diese Werte an das darunter liegende OS? Unter Triggertime steht ja eine Zahl, die man mit localtime() in einen absoluten Zeitwert, wie er dann wieder unter State steht verwandeln kann.

Bin mir jetzt nicht mehr sicher, wie ich das verständlich ausdrücken kann :-)
FHEM reagiert ja auf verschieden Events. Sei es entweder einen Timer (at) oder z.B. auch empfangene Nachrichten von externer Hardware (z.B. ein Homematic Device schikct etwas und der HMLAN übergibt dies an FHEM.
Hat FHEM dann Interrupt handler, die aufgerufen werden oder hat fhem eine while(1) loop und pollt zyklisch um ggf. neue Werte abzuholen?