Meldung beim Klingeln an RasPi, Event per Python-Script erkennen

CamTelligence >> Mobotix Forum >> Mobotix Integration in Automatisierung, Smarthome, Industrie, TK, EMA-BMA >> Meldung beim Klingeln an RasPi, Event per Python-Script erkennen

Ansicht von 3 Beiträgen - 1 bis 3 (von insgesamt 3)
  • Autor
    Beiträge
  • #27525
    Huppi
    Teilnehmer

      Moin zusammen,

      ich möchte auf einem RasPi innerhalb eines Python-Scripts an die Info kommen, wenn jemand an der Haustüre (Mobotix T25) geklingelt hat. Jeder der 3 relevanten Klingeltasten erzeugt eine entsprechende Nachricht (bislang für Gong, FritzFon, PushUp…). Am liebsten wäre mir etwas was vom Server (Mobotix) ausgelöst wird und nicht ein Request des Clients der 24/7 einmal pro Sekunde nachfragt, ob jemand geklingelt hat. Hat jemand eine Idee oder Ansätze, wie man an diese Info auf einem anderen Gerät und mit Python am elegantesten rankommt?

      Der Hintergrund ist folgender (vielleicht hat jemand mit diesen Infos noch eine andere Idee):
      Ich habe ein nacktes TouchScreen (ohne Rahmen, Controller…) in der Wand verbaut bzw. in einer Revi-Klappe. Dahinter ist die eigentliche Technik, u.a. auch ein RasPi, der sich um die Ausgabe kümmert. Auf diesem RasPi läuft außer dem Linuxkernel nichts anderes als Chromium in einem Container mit verschiedenen Tabs. Apps installieren etc. fällt hier also auch weg.

      In dem ersten Tab läuft die Visualisierung (Haussteuerung), im zweiten eine eigene Website (NAS), die wie eine Foto-Diashow aufgebaut ist. Aus einem bestimmten Ordner (auch NAS) wird alle 10s ein Foto zufällig ausgewählt und mit einem zufälligen animierten Übergang, dem Aufnahmedatum und einer kurzen Beschreibung ausgegeben. Diese beiden Seite werden bei Start automatisch geladen, jede in seinem Reiter.

      Unter dem TouchScreen befindet sich noch ein Bewegungsmelder und ein Näherungssensor. Die Steuerung des TouchScreens und das Wechseln der Webseiten(TabReiter) erfolgt innerhalb eines Python-Scripts.

      Wenn sich niemand im Raum aufhält, muss auch nichts auf dem Schirm ausgegeben werden. Hoch-/runterfahren dauert viel zu lange, auch wenn man dies auf den Screen beschränkt. Schalten über HDMI.. Aus geht gut, wieder an funktioniert auch nur mit Verzögerung. Also habe ich mir den Strom für die Hintergrundbeleuchtung des Screens abgezwackt und steuere die ebenfalls über das Script. Diese wird eingeschaltet, sobald der Bewegungsmelder darunter aktiviert wird. Ansonsten “wirkt” es ausgeschatet. Lüppt natürlich alles bis auf die Beleuchtung des TouchScreens weiter, aber mit rund 0,5W geht das iO. Standardmäßig wird bei “Anwesenheit” der Reiter mit der Diashow aktiviert, sprich von “weitem” kann man sich Fotos anschauen, was man sonst einfach viel zu wenig macht. Der Näherungssensor löst aus, sobald sich jemand innerhalb von 80cm vor dem Schirm aufhält. In dem Fall wird der aktive Reiter zur Visu gewechselt, sodass man die Haussteuerung bedienen kann. Das funktioniert alles quasi in Echtzeit mit max. 100ms Verzögerung. So weit so gut…

      Jetzt möchte ich aber genau hier noch die Mobotix MxWeb integrieren. Entweder binde ich dies als “PopUp” innerhalb der Viso ein oder eigenständig im 3. Tab. Spielt an dieser Stelle erst mal keine Rolle, denn so oder so benötige ich die Info innerhalb des Python-Scripts, wenn geklingelt wurde. Die MxWeb soll ja nicht 24/7 im Vordergrund sein, mich interessiert die Ansicht nur für eine gewisse Zeit, wenn jemand geklingelt hat, dann soll sie aber unabhängig von den Sensoren im Vordergrund sein. Entweder muss ich das Umschalten der Tabs unterdrücken und/oder explizit auf den 3. Reiter springen.

      Ich hoffe der Hintergrund kommt einigermaßen verständlich rüber, um erkennen zu können was möglich wäre und vor allem was mit diesem (minimalistischem) System alles nicht funktioniert.

      Falls noch Infos benötigt werden, gerne nachfragen. Ansonsten freue ich mich über jeden Ansatz 😉

      Im Voraus schon mal besten Dank und viele Grüße
      Huppi

         Support per Fernzugriff (Teamviewer)

      Für Errichter

      Heute sind Elektro- und IT-Unternehmen mit einer sehr breiten Produktpalette konfrontiert. Oft fehlt die Zeit, Mitarbeiter in allen Disziplinen zu schulen.

      Konzentrieren Sie sich auf das Wesentliche und buchen Sie Programmierleistungen von CamTelligence zu Ihren Projekten hinzu.

      Für Endkunden:

      Ihre Anforderung ist zu komplex für DIY? Sie haben die Produkte direkt erworben und keinen professionellen Dienstleister (Mobotix Partner)?

      Sparen Sie jetzt mit Ihrem Teamviewer Termin (Fernzugriff) von CamTelligence

      Keine Experimente sondern Jahrzehnte an Erfahrung

      Kein "Jugend forscht" auf Ihre Kosten

      Keine Anfahrtskosten

      Jetzt Teamviewer-Termin buchen

         warum bei CamTelligence beziehen?

      Das gute an Mobotix: Die können so viel. Das schlechte an Mobotix: Die können so viel :)

      Denken Sie bei Ihrem Einkauf nicht nur an den ... Einkauf. Denn danach kommt die Programmierung.

      Die Möglichkeiten mit Video- und Türsprechanlagen von Mobotix sind nahezu unbegrenzt. Das System vereint viele Technologien, welche bei anderen Herstellern nur über separate Anlagen realisiert werden können.

      Mit diesem Funktionsumfang kommt die Notwendigkeit einiger Schulungen...

      ... oder einer fleißigen Recherche auf diesem Forum ...

      ... oder eines Experten 

      Unsere Kunden erhalten:

      Professionelle Beratung

      Priorisierten Support

      Priorisiert Hilfe auf diesem Forum

      Verlängerte Hersteller-Garantie

      in den seltenen Fällen von Qualitätsmängeln bei Bestandsanlagen unter Garantie, sogar Vorab-austausch

      zum Shop

         über den Autor

      Autor Bild

      Autor: Torben Vanselow
      Inhaber CamTelligence e.K. - IP-Video & Mobotix seit 2003. War zuvor u.a. tätig bei Mobotix AG, Prosegur GmbH, Ideal CCTV LTD (Schottland) u.a. in Position / Verantwortung: Projektkoordinator Videoüberwachung (VÜA), Hauptverantwortliche Fachkraft VÜA (BHE), Fachplaner VÜA (BHE) jeweils deutschlandweit. Referent für technische Seminare VÜA und BDM VÜA Deutschland-Mitte. Geschäftsführer.

      #27528
      CamTelligence
      Administrator

        Hallo Huppi,

        ich entwickle Software in Node-JS und JavasScript. Leider bin ich kein Python-Experte.

        Es sollte ein leichtes sein einen Webserver in Python aufzusetzen – inkl. der Logik nach dem Zugriff auf die URL – vielleicht 5-6 Zeilen.

        Ich empfehle Dir stackoverflow.com für die Frage. Allerdings solltest Du diese dort in der Form eines Codes stellen, welcher nicht funktioniert, d.h Du hast schon versucht etwas zu schreiben, aber es funktioniert nicht.

        Aufträge den Code zu schreiben sieht man dort ungern, obwohl es oft auf dasselbe hinausläuft.

        Bei der T25 bist Du auf GET-Requests beschränkt (typischerweise würde man hier POSTen, das kann die T26), das ist aber für Deine Anwendung kein Problem.

        Ohne Deinen Code zu sehen, weiß ich auch nicht wie genau das Umschalten des Tabs getriggert wird.

        Also möchtest Du folgendes programmieren:

        • Webserver listen auf Port z.B. 8080
        • eine URL für GET bereitstellen z.B. localhost:8080/klingel-trigger
        • einen response und response-code 200 (OK / erfolgreich) schicken (ein Get-Request ist erst abgeschlossen, wenn er etwas bekommt, englisch = get)
        • und dann in derselben Schleife Deinen Trigger zum Tabwechsel auslösen.

        Wenn Du das hast, teste die Funktion durch das eingeben der URL in einem Browser am Host (localhost:8080/klingel-trigger oder 127.0.0.1:8080/klingel-trigger) …

        …oder an einem anderen Rechner auf demselben Netzwerk host-ip:8080/klingel-trigger

        Funktioniert dies, dann melde Dich gerne wieder hier und ich helfe Dir bzgl. der Umsetzung in der T25 weiter. Ja – das ist dann ganz einfach – keine Dauerabfrage, sondern ein individueller Get-Request per Klingelbetätigung.

        Liebe Grüße, Torben Vanselow

         

        #27529
        Huppi
        Teilnehmer

          Moin Torben,

          erstmal besten Dank für deinen ausführlichen Lösungsansatz 🙂

          Zwischenzeitlich hatte ich etwas ähnliches mit Websocket und TCP-Nachricht soweit wie gewünscht hinbekommen. Quasi alles tutti, nur lief mir beim Lauschen (separater Thread) nach einiger Zeit der Speicher so voll, dass keine Bedienung mehr möglich war.

          Dein Ansatz klang auch interessant, eine Pseudo-Anfrage als Eventauslöser. Hatte ich dann auch direkt so umgesetzt, das Ergebnis war leider das gleiche. Technisch kommt das “Klingeln” auf den Clients an, aber auch hier lief mit der Speicher voll.

          Das Problem war letztendlich, dass die Entwicklung mittlerweile in die Jahre gekommen war. Urlates Python (2.7), uraltes Raspbian (Jessie lite)… Jedes Update führte irgendwo anders zu Problmen… Also habe ich alles ein mal komplett neu aufgesetzt, mit jeweils aktueller Software und schon lüppt alles 🙂

          Es sollten jetzt auch beide Ansätze ohne Speicherprobleme funktionieren. Die Varainte mit dem GET-Request hatte ich unter dem neuen System nich noch mal versucht, da die zuvor verwendetete Bibliothek nicht mehr gültig war und ich mich für den Websocket entschieden. Einfach auch alleine weil ich mir dann die Webserver-Konfiguration spare. Zugriff aus dem Browser aufs Dateisystem etc…

          Falls es mal jemand gebrauchen kann, poste ich es unten in den Anhängen.

           

          Anlage 1: Profil für Netzwerkmeldung (GET-Request)
          Anlage 2: Profil für Netzwerkmeldung (Websocket)

          Das Umschalten per Python erfolgt über die GPIO. Bewegungsmelder und Näherungssensor sind physisch angeschlossen (input). Die Stromversorung für die Hintergrundbeleuchtung des Displays ebenfalls (output). Für die Mobotix habe ich einen logischen Pseudo-GPIO angelegt, da der Listener in einem anderen Thread laufen muss, als die Sensor-Steuerung. So kommt man in dem einen Thread an das “Event” (hat geklingelt), welches im anderen Thread gesetzt und (hier) nach 60s wieder entfernt wird.

          Anlage 3: Allgemeine Definitionen und ein einfacher Listener (Websocket)
          Anlage 4: Auto-Login für MxWeb (wird nur beim ersten Umschalten ausgeführt)
          Anlage 5: Die eigentliche Steuerung mit Starten des Websockets-Listener, Schalten der Tabs etc.

          In diesem Sinne noch mal besten Dank und allen ein schönes langes WE 😉
          VG Huppi

           

          Attachments:
          You must be logged in to view attached files.
        Ansicht von 3 Beiträgen - 1 bis 3 (von insgesamt 3)
        • Du musst angemeldet sein, um auf dieses Thema antworten zu können.