Alarmanlage mit Reedkontakten, PifaceDigital2 und PI B+

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Forum -

    im vergangenen Jahr bin ich als Anfänger in diesem Forum mit meinem Anliegen und ohne böde Absicht mitten in einen bereits bestehenden Thread hineingeplatzt, da mein "Vorredner" dies auch tat und ich es nicht besser wusste.

    Ich schilderte damals meinen Plan und bekam auch Antworten - insbesondere auch die Aufforderung, doch einen eigenen Thread aufzumachen.

    Das ist einsichtig und jetzt will ich das nachholen. Dabei möchte ich die Beiträge vom vergangenen Jahr hier einfügen, um dann eventuell mit meinem Anliegen fortzufahren:

    Vorjahresbeiträge aus dem Thread "Alarmanlage - Tür/Fenster überwachen":

    25. Juni 2016

    Hallo,


    ich bin neu hier, weil ich ebenfalls eine Alarmanlage verwirklichen möchte. Den Pi habe ich bisher nur als Multimediarechner verwendet, um meine aufgenommenen Filme abzuspielen oder meine Musik, bzw. mir meine Digitalfotos mal auf dem Fernseher anzuschauen. Von Programmierung des Pi keine Ahnung.


    Meine Alarmanlage soll vorläufig sechs Fenster/Türen überwachen. Dazu habe ich mir passende Reedkontakte bei Pollin besorgt. Um das elektrisch umzusetzen habe ich mir das genau zu meinem Pi B+ passende Piface digital 2-Bord geholt und als Stromversorgung ein 5V Schaltnetzteil für Hutschiene und ein passendes Hutschienengehäuse für den Pi. (später kommt das Ganze in ein passendes Hutschienengehäuse)


    Für den fliegenden Aufbau habe ich noch eine drahtlose Tastatur angeschlossen und meinen TV über HDMI, sowie einen der Reedkontakte am Piface an Input0 und GND. Als Betriebssystem habe ich Raspian jessie vom 10.5.16.


    Mit der Installationsanleitung für das Piface ist es mir auch gelungen, den grafischen PifaceDigitalEmulator in Betrieb zu nehmen, so dass am Bildschirm auch sichtbar ist, ob der Reedkontakt geöffnet oder geschlossen ist.


    Da ich auf dem Piface 8 input-Eingänge habe, reicht mir das, es ist sogar ideal, weil ich die akustische Alarmanlage gleich über eines der eingebauten Relais anschließen kann.


    Jetzt beginnen meine Probleme: wie kann ich das in Python 3 ausführen lassen und den Alarm durch Öffnen eines der Reedkontakte auslösen?


    Im Moment stelle ich mir eine Endlosschleife vor, die der Reihe nach die Reedkontakte abfragt, ob sie geschlossen sind (GND an einem der Eingänge anliegt), dann jeweils vielleicht 0,1 Sekunde wartet und dann den nächsten Kontakt usw. Dadurch würde in jeder Sekunde jeder Eingang einmal abgefragt werden. Das sollte für eine Alarmanlage reichen. Wenn nun der Kontakt geöffnet wird, so soll ein Alarm (Relais) eingeschaltet werden. Der Alarm darf nur eine bestimmte Zeit akustisch sein, danach nur noch optisch, was über das zweite eingebaute Relais verwirklicht werden kann und eine Meldung sollte über eine angeschlossene Fritzbox per Email versandt werden, dass etwas nicht stimmt.


    Wie macht man das mit Python?


    Gruß


    carillon

    25. Juni 2016

    Indem man es programmiert? Im Ernst: das ist moderat komplexes Skript, und fuer all deine Teilprobleme findest du Code-Beispiele durch eine Suche hier, oder irgendwo im Netz. Wenn du Code hast, und konkrete Probleme, helfen wir dir gerne weiter.


    26. Juni 2016

    __deets__ schrieb:

    Indem man es programmiert? Im Ernst: das ist moderat komplexes Skript, und fuer all deine Teilprobleme findest du Code-Beispiele durch eine Suche hier, oder irgendwo im Netz. Wenn du Code hast, und konkrete Probleme, helfen wir dir gerne weiter.


    schönen Dank, sobald ich drei Zeilen Programmcode zusammen habe, melde ich mich wieder.


    carillon

    26. Juni 2016

    Moin,


    erstmal: Herzlich Willkommen im Forum!!


    Mal im Ernst.


    Hast du dir deine Anfrage mal durchgelesen?? So ganz unbeteiligt?? Und, was hast du für einen Eindruck von dem User??


    Du kommst mit einer tollen Idee. Bist, Bauteiletechnisch, auch schon unterwegs gewesen. Finde ich gut. Hast dir schonmal Gedanken gemacht.


    Aber dann.... Erwartest du, das sich hier jemand hinsetzt und dir was programmiert??


    Eigentlich ist hier ein Hilfsforum auf freiwilliger Basis und kein kostenlos Programmiercenter..


    Nix für ungut..


    Gruss Bernd


    26. Juni 2016

    DG8BR schrieb:

    Moin,
    erstmal: Herzlich Willkommen im Forum!!


    Mal im Ernst.


    Hast du dir deine Anfrage mal durchgelesen?? So ganz unbeteiligt?? Und, was hast du für einen Eindruck von dem User??


    Du kommst mit einer tollen Idee. Bist, Bauteiletechnisch, auch schon unterwegs gewesen. Finde ich gut. Hast dir schonmal Gedanken gemacht.


    Aber dann.... Erwartest du, das sich hier jemand hinsetzt und dir was programmiert??


    Eigentlich ist hier ein Hilfsforum auf freiwilliger Basis und kein kostenlos Programmiercenter..


    Nix für ungut..


    Gruss Bernd

    DG8BR schrieb:


    Moin,


    erstmal: Herzlich Willkommen im Forum!!

    Alles anzeigen


    schönen Dank für das Durchlesen. Natürlich erwarte ich, dass die Forengemeinde sich jetzt dranmacht, mein Projekt zu programmieren undefined- aber im Ernst - wie fängt man an?


    Wenn ich möchte, dass ich eventuell Hilfe bdekomme, dann muss ich doch erstmal schildern, was ich will. Daher die umfangreiche Schilderung. Da steht auch drin, mit welcher Hardware ich das plane und dass die Hardware bereits im fliegenden Aufbau auf Funktion mit Hilfe des grafischen PiFace-Emulators getestet wurde. Abgesehen davon kommt dann noch später eine Mimik zum Schärfen/Entschärfen der Anlage dazu und noch irgendwas zur Funktionskontrolle, wobei sich das sicher ebenfalls über das PiFace lösen lässt, schließlich sind da schon 8 LED eingebaut, die anzeigen können, ob alle Fenster/Türen zu sind.


    Wie ich mir ein eigentlich einfaches Programm vorstelle habe ich auch dargestellt: Endlosschleife zur Abfrage des Zustandes der Reedkontakte mit Sprung auf Schalten eines Relais, sobald ein Reedkontakt geöffnet wird.


    Wie ich das jetzt in ein sich nach dem Einschalten des Pi selbst ladendendes Skript zusammenfasse, also die Vorgänge, die ich in Befolgung der PiFace-Dokumentation schon in einzelnen Schritten ausgeführt habe, jetzt automatisch wiederholt ausführen zu lassen, das ist noch ein Buch mit sieben Siegeln.


    Wenn ich da nicht weiterkomme, dann werde ich mich hier wieder melden.


    Gruß


    carilllon

    26. Juni 2016

    Zunächst wäre es besser wenn Ihr für Euer individuelles Vorhaben einen eigenen Thread erstellt und das nicht in fremde Threads mit unterbringen wollt , auch wenn die irgend etwas mit Eurem Vorhaben zu tun haben. Irgendwann verliert einfach jeder den Überblick und weiß nicht mehr welche Beiträge zu welchem Projekt gehören. Außerdem ist es auch etwas unhöflich dem ursprünglichen Thread-Ersteller gegenüber.


    Das gilt By The Way auch für die Tutorial-Threads.


    In diesem Thread hier wurde bereits ein solches Projekt ausführlich aufgezeigt und beschrieben etc. Es gibt von ps915 noch ein späteres Projekt mit dem selben Ziel, auf Basis von Funksensoren:


    Funk Magnetkontakt/Reed Switch zur Fenster/Tür Überwachung - TinyTx3


    Da du nicht das von ps915 gezeigte Projekt genau so übernehmen willst, weicht Deins also davon ab und erfüllt somit eben erwähntes " individuelles Vorhaben ". Also Bitte: Eigenen Thread erstellen und ggf einen Moderator bitten deine Beiträge aus diesem Projekt-Thread hier zu verschieben.


    Vielen Dank für Euer Verständnis.


    PS: DG8BR / deets: Er hat sich in seinem ersten Beitrag ausführlich und konkret dazu Gedanken gemacht, was mehr ist als andere. Insofern finde ich Eure Reaktion nicht so schön, auch wenn ich manchmal auch so reagiere weil hier viele ziemlich fordernd auftreten, machen sich aber im Detail nicht so viele eigene Gedanken darüber wie es carillon getan hat.


    Aber wie gesagt: Bitte eigenen Thread erstellen

  • Alarmanlage mit Reedkontakten, PifaceDigital2 und PI B+? Schau mal ob du hier fündig wirst!

  • Nun soll das aber Weitergehen. Dazu habe ich einen neuen Beitrag erstellt - sozusagen als #47

    #47


    2017-10-31

    Hallo Forum,

    nachdem jetzt mehr als ein Jahr vergangen ist, benötige ich wieder mal Hilfe. Dazu erstmal eine Schilderung, was ich bisher habe:

    Eine Alarmanlage, die seit etwa einem halben Jahr - abgesehen von "Bedienungsfehlern" - fehlerlos läuft.

    Im Prinzip besteht sie aus der Hardware : Raspi B+, PfaceDigital 2, Reedkontakten mit Leitungen, AnzeigeLEDs, Schaltern zum scharf Schalten oder unscharf Schalten, zwei Alarmgeräten intern und extern, dazu einer Stromversorgung 5V für den Pi/Piface und 12V für die Alarmgeräte.

    Das Piface verfügt über 8 Eingänge und 8 Ausgänge. Zwei der Eingänge verwende ich zur Steuerung, die übrigen 6 sind mit den Reedkontakten verbunden. Von den Ausgängen sind zwei "gedoppelt", d.h. parallel zu den Ausgängen 0 und 1 sind Relais, mit denen man stärkere Ströme und Spannungen schalten kann.

    Als externen Schalter habe ich ein S-Board mit zugehürigem RFID-Leser angeschlossen. Das hat den Vorteil, dass ich einen gekapselten RFID-Leser außen neben der Klingel an der Haustür befestigt habe, der "witterungsfest" und "vandalismussicher" erlaubt nach dem Verlassen die Anlage scharf zu schalten oder vor dem Betreten sie wieder unscharf zu schalten. Das zugehörige S-Board kann ich dazu bringen, RFID-Chips oder Karten als "weisungsberechtigt" zu akzeptieren und je nach eingestelltem Modus ein eingebautes Relais zu betätigen. Dieses Relais liegt dann an einem Eingang des Pifaces. Eingestellt habe ich zur Zeit "toggle", also nach jedem Lesen eines berechtigten Chips wird das Relais umgeschaltet und damit am Piface Eingang 0 auf "high" oder "low" gelegt.

    Auf dem Pi läuft dann mein "Alarmprogramm" in einem LX-Terminal in der jeweils aktuellen Fassung. Ich habe damit die Pifacebibliothek eingelesen, sodass ich auf die Ein-und Ausgänge des Piface zugreifen kann. Im Prinzip läuft als "Hauptprogramm" nur ein Warten, ob sich an einem der Eingänge etwas ändert (Interrupt).

    Definiert habe ich dann in einigen "Nebenprogrammen", was geschehen soll, wenn an welchem Eingang sich etwas ändert.

    Was sich ändert wird per Print mit Zeit und Datum am Bildschirm angezeigt und soll in einer Protokolldatei gespeichert werden. Diese Speicherung geschieht allerdings zur Zeit erst dann, wenn ich das Programm durch Tastatureingabe beende. Dann werden alle mittlerweile aufgetretenen Bildschirmmeldungen seit Start des Programms an die bereits vorhandene Protokolldatei angehängt.

    Anmerkung: ich hätte das mit "open-close" auch nach jedem Ereignis anhängen können, will aber nicht zu viele Schreibvorgänge auf der SDkarte provozieren, da die Anzahl der Schreibvorgänge auf der SDKarte endlich ist.

    Daher suche ich zunächst Möglichkeiten, dieses Protokoll etwa so zu führen, dass die Meldungen im Arbeitsspeicher verbleiben, dann vielleicht alle 24h mir das Protokoll der 24 h per email mit Zeitstempel zugesandt wird und die Protokolldatei "geleert" wird.

    Wie fange ich das an?


    Carillon

  • Hallo carillon,

    ich will Dir jetzt keine Lösung in Python geben. Aber in Icon könnte die Lösung so aussehen:

    Dieser Code in Icon erfüllt die meisten Deiner Ideen und funktioniert bis auf die email()-Funktion sogar. Wie email() funktioniert, habe ich aber mal in einem anderen Beitrag gezeigt.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo Andreas,

    vielen Dank für deinen Vorschlag, aber diesen Teil, den du da ansprichst, habe ich fertig - allerdings in Python. Damit läuft meine Alarmanlage schon - genau passend und auf meine Hardware und meine speziellen Wünsche zugeschnitten. D.h, die Eingänge des Pifaces werden per Interrupt überwacht und bei Öffnung des Reedkontaktes wird je nach Schaltzustand der Anlage darauf reagiert. Schaltzustände sind - von mir so genannt - "grün" , "gelb", "rot".

    Bei grün wird überwacht und bei Öffnung (nur) eine Meldung am Bildschirm ausgegeben.

    Bei gelb wird überwacht und bei Öffnung bestimmter Öffnungen außer den Bildschirmmeldungen ein interner Alarm ausgelöst. D.H. ein im Haus befindlicher Buzzer gibt ein lautes Alarmsignal, das innen sehr gut zu hören ist, aber die Nachbarn nicht verschreckt. Ich kann diesen Alarm nur von innen schalten, wenn ich zuhause bin. Mein Schlafzimmerfenster z.B im 1.OG kann ich so ohne Alarm öffnen, da ich gerne bei offenem Fenster schlafe. Der Lärm reicht aus um mich zu wecken - aber nicht die Nachbarn.

    Bei rot wird an allen Öffnungen Alarm ausgelöst - und zwar, je nachdem an welcher Öffnung, - mit einem 10 s dauernden internen Voralarm, während dessen ich auf grün schalten kann. Danach wird dann ein lauter weit hörbarer durchdringender externer Alarm zusätzlich ausgelöst durch eine Alarmsirene außen am Haus. Dieser Voralarm ist dazu da, dass ich versehentlich ausgelöste Alarme noch rechtzeitig abschalten kann.

    Alle Öffnungen werden - mit Zeitstempel - mitprotokolliert und in einer Datei gespeichert.

    Was noch kommen soll:

    Statt der Speicherung in einer Protokolldatei sollen diese Daten in regelmäßigen Abständen per eMail an mich selbst versandt werden (einmal jeden Tag vielleicht um drei Uhr nachts). Damit bekomme ich dann eine Sammlung der Alarmdaten außerhalb des Pi ohne ständige Schreib-Lesezugriffe auf die SD-Karte. Außerdem soll im Alarmfall sofort eine Mail verschickt werden, damit ich auch bei längerer Abwesenheit informiert werde. Diese soll dann auch in Abwesenheit an den gesandt werden, der ein Auge auf mein Haus hat. Wie kann ich dieses "Mailprojekt" in mein Alarmscript integrieren? Wie fange ich damit am Besten an?

    Gruß

    Carillon

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!