Giter Club home page Giter Club logo

doorpi's Introduction

DoorPi: Open Source VoIP Türsprechanlage

CC BY-NC 4.0 Download travis_status_master code_climate_badge Code Climate

Deutsch

Einführung

Ziel des Projektes DoorPi ist die Steuerung einer Türsprechanlage mittels einem Einplatiniencomputer wie dem Raspberry Pi und dem Kommunikationsprotokoll VoIP.

DoorPi ist ein Event-Action basierendes System. Es gibt Komponenten, die Events auslösen, und Komponenten, die aufgrund dieser Events reagieren. Dazu sollen Ereignisse (Events) wie "Drücken einer Türklingel" oder "RFID Chip xyz vorgehalten" die Auslöser von Aktionen (Actions) wie "Anruf bei Telefon xyz", "E-Mail an xxx" oder "Öffne Tür" sein.

Event-Quellen

Um diese Events zu registrieren, werden "DoorPi-Keyboards" genutzt, was z.B.:

  • die GPIO-Pins
  • ein PiFace
  • Dateien im Dateisystem des Pi (z.B. für Remote-Befehle über SSH)
  • die serielle Schnittstelle (RDM6300 als NFC Reader)
  • Webservice mit Authentifizierung
  • VoIP-Telefon

sein können.

An jedes Event können beliebig viele Actions angefügt werden, die syncron oder asyncron ausgeführt werden.

Action-Empfänger

Eine nicht vollständige Liste der Actions ist:

  • VoIP Anruf zu festgelegter Nummer starten
  • VoIP Anruf zu Nummer starten, die aus einer Datei ausgelesen wird
  • Anruf beenden
  • E-Mail versenden
  • Programm ausführen
  • Ausgang schalten
  • Status-Datei schreiben
  • Werte aus IP-Symcon lesen oder zurück schreiben
  • ...

Durch die Kombination der Events und Actions sind fast alle gewünschten Kombinationen möglich.

Beispiele

Ein mögliches Szenario ist:

  1. Beim Druck eines Klingeltasters wird ein Anruf ausgelöst und gezielt eine Nummer angerufen (z.B. interne FritzBox Nummer **613 aber auch Handynummern).
  2. Der Bewohner kann mit der Außenstelle telefonieren und auf Wunsch die Tür remote öffnen, in dem eine definierte Taste (oder Tastenfolge) auf dem Telefon gedrückt wird (z.B. die Taste "#").
  3. Der Bewohner vergisst das auflegen und DoorPi beendet selbst das Gespräch, sobald die Tür wieder geschlossen wurde.
  4. DoorPi versendet eine E-Mail, dass es einen Anruf gab, jemand die Tür geöffnet hat und jemand ins Haus gegangen ist.

Mittlerweile gibt es auch Video-Support, so dass an der Haustür eine Kamera installiert werden kann und das Bild auf den Innenstationen angesehen werden kann, noch bevor das Gespräch angenommen wird.

Installation

Die Installationen werden hier beschrieben

DoorPi-Hilfe

Link zu Foren mit DoorPi Beiträgen:

DoorPi Forum

[Haussteuerung] DoorPi (VoIP Wechselsprechanlage / Türsprechanlage mit Video-Support)

DoorPI / VoIP Door-Intercomstation with Raspberry Pi

English

Introduction

Aim of the DoorPi project is the realization of a door intercom station with a single board computer like the Raspberry Pi and the communication protocol VOIP.

DoorPi is an event-action based system. There are components which fire events, and components which react on these events. That means that events like "Doorbell pressed" or "RFID chip xyz detected" shall be the trigger for actions like "call telephne xyz", "send email to xyz" or "open door".

Event-Sources

For registering these events, so-called "DoorPi-Keyboards" are used, e.g

  • GPIO pins
  • a PiFace
  • files in the filesystem of the PI (e.g. for remote commands via SSH)
  • the serial port (e.g. with an RDM6300 as NFC reader)
  • web service with authentification
  • VOIP phone

To every event, any number of actions can be attached, which are executed synchronously or asynchronously.

Action-Receivers

A non-complete list of actions is:

  • VOIP call to a predefined number
  • VOIP call to a number which is read from a file
  • end call
  • send email
  • execute program
  • set an output pin
  • write a status file
  • read values from IP-Symcon or write them back

Via the combination of events and actions, almost all combinations are possible.

Examples

A thinkable scenario is:

  1. when the doorbell button is pressed, a call is instantiated for calling a specific number (e.g. internal number of the FritzBox **613, but also cell phone numbers)
  2. the inhabitant can talk to the outside station and on demand open the door remotely, by pressing a defined key (or sequence of keys) on a telephone (e.g. the key "#")
  3. the inhabitant forgets to end the call and DoorPi ends the call itself, as soon as the door was closed again
  4. DoorPi sends an email that there was a call, somebody opened the door and somebody walked into the house

Meanwhile there is also video support, so that a camera can be installed at the door, and the image can be watched on the inside station even before the call is accepted

Installation

Installations are described here

Changelog

see changelog.txt

doorpi's People

Contributors

drafenger avatar frrr1 avatar gernot-h avatar hermanthegerman2 avatar hubsif avatar irgsmirx avatar motom001 avatar msmolny avatar nea74 avatar schwa-l-be avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

doorpi's Issues

Exception NameError: list index out of range

Fehlermeldung aus dem Forum:
http://www.forum-raspberrypi.de/Thread-haussteuerung-doorpi-voip-wechselsprechanlage-tuersprechanlage?pid=126878#pid126878

2015-01-10 16:48:19,379 [DEBUG]         [keyboard.from_piface] __init__(input_pins = ['11', '13', '15'], output_pins = ['18', '7', '16'])
...
2015-01-10 16:48:19,726 [ERROR]         [__main__] Exception NameError: list index out of range
Traceback (most recent call last):
  File "/home/pi/DoorPi/doorpi/main.py", line 114, in main_as_application
    try:                        doorpi.DoorPi(parsed_arguments).run()
  File "/home/pi/DoorPi/doorpi/doorpi.py", line 174, in run
    if not self.__prepared: self.prepare(self.__parsed_arguments)
  File "/home/pi/DoorPi/doorpi/doorpi.py", line 99, in prepare
    self.__keyboard = load_keyboard()
  File "/home/pi/DoorPi/doorpi/keyboard/KeyboardInterface.py", line 35, in load_keyboard
    bouncetime = bouncetime
  File "/home/pi/DoorPi/doorpi/keyboard/KeyboardInterface.py", line 41, in autodetect
    try: return load_piface(input_pins, output_pins, bouncetime)
  File "/home/pi/DoorPi/doorpi/keyboard/KeyboardInterface.py", line 54, in load_piface
    output_pins = output_pins
  File "/home/pi/DoorPi/doorpi/keyboard/from_piface.py", line 51, in __init__
    self.set_output(output_pin, 0, False)
  File "/home/pi/DoorPi/doorpi/keyboard/from_piface.py", line 108, in set_output
    p.digital_write(pin, value)
  File "/usr/lib/python2.7/dist-packages/pifacedigitalio/core.py", line 226, in digital_write
    _get_pifacedigital(hardware_addr).output_pins[pin_num].value = value
IndexError: list index out of range
2015-01-10 16:48:19,753 [DEBUG]         [doorpi] destroy

Video-Support erbeten

Bitte Video-Support hinzufügen. Es sollen PiCam oder Netzwerkkamera unterstützt werden.

Update-Routine für DoorPI

Ich hatte gerade das Problem das sich ja die pjsua ja in den letzen zwei Tagen geändert hat.
Der Befehl "sudo git pull" konnte mein Problem jedoch nicht lösen. Ich musste daher DoorPI neu installieren. Eine Update-Routine wäre daher super.

PS: Ohne die Hilfe von Hermann hätte ich das natürlich wieder nicht hinbekommen !!!

RFID-Reader zum Türöffnen

Wunsch per Mail von @pmunz

Was hältst du einen RFID Receiver einzubinden ?
Immer mehr Menschen fordern die Transponder
Ob Aufkleber oder karte .

Ich hab das schon am laufen aber halt alles leihen Haft
Da python nicht so meins ist .

Ich hab den Reader per serieller schittstelle UART
An den gpio s angebunden , ein display begrüßt mich per Namen
Das Display ( per i2c bus ) kann ja optional sein.
Ein kleines User Management hatte ich im
Python code

I2c wäre auch möglich da wir dir busadresse
Im Python Code zusätzlich zum piface
Vergeben können / könnten.

Logfile Error mit GPIO

Habe Probleme mit der DoorPi.pid und den GPIOs. Nutze kein Piface.
Anbei das LOG. Frohe Weihnachten, viel Grüße und vielen Dank für dein Projekt!!

2014-12-24 11:09:40,889 [DEBUG] [doorpi] init
2014-12-24 11:09:40,896 [ERROR] [root] Exception NameError: PID file '/var/run/doorpi.pid' not locked
Traceback (most recent call last):
File "/home/pi/DoorPi//doorpi/service.py", line 44, in
try: daemon_runner.do_action()
File "/usr/lib/pymodules/python2.7/daemon/runner.py", line 186, in do_action
func(self)
File "/usr/lib/pymodules/python2.7/daemon/runner.py", line 149, in stop
"PID file %(pidfile_path)r not locked" % vars())
DaemonRunnerStopFailureError: PID file '/var/run/doorpi.pid' not locked
2014-12-24 11:09:40,901 [DEBUG] [doorpi] destroy
2014-12-24 11:09:40,903 [TRACE] [doorpi] get event(event_name = OnShutdown, additional_informations = {}, secure_source = True)
2014-12-24 11:09:41,833 [DEBUG] [doorpi] init
2014-12-24 11:09:42,340 [DEBUG] [doorpi] run
2014-12-24 11:09:42,343 [DEBUG] [doorpi] prepare
2014-12-24 11:09:42,345 [DEBUG] [doorpi] parse_argv
2014-12-24 11:09:42,378 [DEBUG] [doorpi] givven arguments argv: Namespace(configfile=<open file '/home/pi/DoorPi/conf/doorpi.ini', mode 'r' at 0xb679f6a8>)
2014-12-24 11:09:42,381 [DEBUG] [doorpi] load_config (<open file '/home/pi/DoorPi/conf/doorpi.ini', mode 'r' at 0xb679f6a8>)
2014-12-24 11:09:42,383 [DEBUG] [doorpi] use configfile: /home/pi/DoorPi/conf/doorpi.ini
2014-12-24 11:09:42,409 [DEBUG] [conf.config_object] init
2014-12-24 11:09:42,411 [TRACE] [conf.config_object] get_from_config
2014-12-24 11:09:42,428 [TRACE] [conf.config_object] get for key keyboard in section DoorPi (default: autodetect)
2014-12-24 11:09:42,430 [TRACE] [conf.config_object] get_string for key keyboard in section DoorPi (default: autodetect)
2014-12-24 11:09:42,432 [TRACE] [conf.config_object] key 'keyboard' exist in section 'DoorPi' with value 'autodetect'
2014-12-24 11:09:42,435 [TRACE] [conf.config_object] get_keys for section InputPins
2014-12-24 11:09:42,437 [TRACE] [conf.config_object] get_keys for section OutputPins
2014-12-24 11:09:42,439 [TRACE] [keyboard.KeyboardInterface] autodetect
2014-12-24 11:09:42,441 [TRACE] [keyboard.KeyboardInterface] load_piface
2014-12-24 11:09:42,446 [DEBUG] [keyboard.from_piface] keyboard.from_piface loaded
2014-12-24 11:09:42,450 [DEBUG] [keyboard.AbstractBaseClass] keyboard.AbstractBaseClass loaded
2014-12-24 11:09:42,455 [ERROR] [keyboard.KeyboardInterface] could not load keyboard piface
Traceback (most recent call last):
File "/home/pi/DoorPi/doorpi/keyboard/KeyboardInterface.py", line 36, in autodetect
try: return load_piface(input_pins, output_pins)
File "/home/pi/DoorPi/doorpi/keyboard/KeyboardInterface.py", line 46, in load_piface
import keyboard.from_piface
File "/home/pi/DoorPi/doorpi/keyboard/from_piface.py", line 10, in
import piface.pfio # basic for PiFce control
ImportError: No module named piface.pfio
2014-12-24 11:09:42,460 [TRACE] [keyboard.KeyboardInterface] load_gpio
2014-12-24 11:09:42,464 [DEBUG] [keyboard.from_gpio] keyboard.from_gpio loaded
2014-12-24 11:09:42,473 [DEBUG] [keyboard.from_gpio] GPIO.init(input_pins = ['18'], output_pins = ['3', '2', '4'])
2014-12-24 11:09:42,478 [ERROR] [root] Exception NameError: type object 'GPIO' has no attribute 'BCM'
Traceback (most recent call last):
File "/home/pi/DoorPi//doorpi/service.py", line 44, in
try: daemon_runner.do_action()
File "/usr/lib/pymodules/python2.7/daemon/runner.py", line 186, in do_action
func(self)
File "/usr/lib/pymodules/python2.7/daemon/runner.py", line 131, in start
self.app.run()
File "/home/pi/DoorPi/doorpi/doorpi.py", line 124, in run
self.prepare()
File "/home/pi/DoorPi/doorpi/doorpi.py", line 72, in prepare
self.__keyboard = detect_keyboard()
File "/home/pi/DoorPi/doorpi/keyboard/KeyboardInterface.py", line 30, in detect_keyboard
output_pins = doorpi.DoorPi().config.get_keys('OutputPins')
File "/home/pi/DoorPi/doorpi/keyboard/KeyboardInterface.py", line 39, in autodetect
try: return load_gpio(input_pins, output_pins)
File "/home/pi/DoorPi/doorpi/keyboard/KeyboardInterface.py", line 57, in load_gpio
output_pins = output_pins
File "/home/pi/DoorPi/doorpi/keyboard/from_gpio.py", line 28, in init
RPiGPIO.setmode(GPIO.BCM)
AttributeError: type object 'GPIO' has no attribute 'BCM'
2014-12-24 11:09:42,487 [DEBUG] [doorpi] destroy
2014-12-24 11:09:42,490 [TRACE] [doorpi] get event(event_name = OnShutdown, additional_informations = {}, secure_source = True)
2014-12-24 11:09:42,492 [TRACE] [conf.config_object] get_keys for section OnShutdown
2014-12-24 11:09:42,494 [TRACE] [doorpi] fire action 20 for event OnShutdown
2014-12-24 11:09:42,497 [TRACE] [conf.config_object] get for key 20 in section OnShutdown (default: )
2014-12-24 11:09:42,499 [TRACE] [conf.config_object] get_string for key 20 in section OnShutdown (default: )
2014-12-24 11:09:42,501 [TRACE] [conf.config_object] key '20' exist in section 'OnShutdown' with value 'mailto:**
@gmail.com,DoorPi:OnShutdown,DoorPi down'
2014-12-24 11:09:42,503 [DEBUG] [doorpi] fire_action (mailto:**
@gmail.com,DoorPi:OnShutdown,DoorPi down) and secure_source is True
2014-12-24 11:09:42,506 [TRACE] [conf.config_object] get for key server in section SMTP (default: )
2014-12-24 11:09:42,508 [TRACE] [conf.config_object] get_string for key server in section SMTP (default: )
2014-12-24 11:09:42,510 [TRACE] [conf.config_object] key 'server' exist in section 'SMTP' with value 'smtp.gmail.com'
2014-12-24 11:09:42,512 [TRACE] [conf.config_object] get_int for key port in section SMTP (default: -1)
2014-12-24 11:09:42,514 [TRACE] [conf.config_object] get_string for key port in section SMTP (default: )
2014-12-24 11:09:42,516 [TRACE] [conf.config_object] key 'port' exist in section 'SMTP' with value '587'
2014-12-24 11:09:42,518 [TRACE] [conf.config_object] get for key username in section SMTP (default: )
2014-12-24 11:09:42,521 [TRACE] [conf.config_object] get_string for key username in section SMTP (default: )
2014-12-24 11:09:42,523 [TRACE] [conf.config_object] key 'username' exist in section 'SMTP' with value ‚[email protected]'
2014-12-24 11:09:42,525 [TRACE] [conf.config_object] get for key password in section SMTP (default: )
2014-12-24 11:09:42,527 [TRACE] [conf.config_object] get_string for key password in section SMTP (default: )
2014-12-24 11:09:42,529 [TRACE] [conf.config_object] key 'password' exist in section 'SMTP' with value '
_****'
2014-12-24 11:09:42,532 [TRACE] [conf.config_object] get for key from in section SMTP (default: )
2014-12-24 11:09:42,534 [TRACE] [conf.config_object] get_string for key from in section SMTP (default: )
2014-12-24 11:09:42,536 [TRACE] [conf.config_object] key 'from' exist in section 'SMTP' with value 'Sprechanlage'
2014-12-24 11:09:42,976 [TRACE] [conf.config_object] get for key use_tls in section SMTP (default: )
2014-12-24 11:09:42,978 [TRACE] [conf.config_object] get_string for key use_tls in section SMTP (default: )
2014-12-24 11:09:42,980 [TRACE] [conf.config_object] key 'use_tls' exist in section 'SMTP' with value 'true'
2014-12-24 11:09:43,218 [TRACE] [conf.config_object] get for key need_login in section SMTP (default: )
2014-12-24 11:09:43,221 [TRACE] [conf.config_object] get_string for key need_login in section SMTP (default: )
2014-12-24 11:09:43,223 [TRACE] [conf.config_object] key 'need_login' exist in section 'SMTP' with value 'true'
2014-12-24 11:09:45,204 [DEBUG] [keyboard.from_gpio] GPIO.destroy()

Readme und Wiki überarbeiten

Ich brauche echt Hilfe beim Überarbeiten von Readme und Wiki. Das kostet so viel Zeit und stimmt mit jedem commit weniger zum aktuellen Stand.

Wer kann mir helfen, Struktur und Inhalte der Dokumentationen auf einen aktuellen Stand zu heben?

Dashboard für den Webservice

Es besteht der Wunsch, ein Dashboard für den Webservice anzubieten.
Die empfangenen Dateien sollen übersichtlich und strukturiert dargestellt werden.
Optional soll das Dashboard erweitert werden können.
Komponenten sind:

  • DoorPi Allgemeiner Zustand
  • Zustand und Konfiguration Inputs / Outputs
  • Events und Actions
  • Logdateien anzeigen
  • Konfiguration anzeigen / bearbeiten (Drag&Drop?)
  • ...

DoorPi bleibt hängen bei [sipphone.by_pjsua] dialtone is missing or not readable - create it now

Der Start von DoorPi (meistens kurz nach Installation) bleibt einfach hängen:

2015-01-31 17:33:59,641 [INFO]      [__main__] loaded with arguments: ['/home/pi/DoorPI/doorpi/main.py', 'start', '--configfile', '/home/pi/DoorPI/conf/doorpi.cfg']
2015-01-31 17:34:00,141 [DEBUG]     [doorpi] run
2015-01-31 17:34:00,145 [DEBUG]     [doorpi] prepare
2015-01-31 17:34:00,148 [DEBUG]     [doorpi] givven arguments argv: Namespace(configfile=<open file '/home/pi/DoorPI/conf/doorpi.cfg', mode 'r' at 0xb66e6498>)
2015-01-31 17:34:00,153 [DEBUG]     [conf.config_object] load_config (<open file '/home/pi/DoorPI/conf/doorpi.cfg', mode 'r' at 0xb66e6498>)
2015-01-31 17:34:00,156 [DEBUG]     [conf.config_object] use configfile: /home/pi/DoorPI/conf/doorpi.cfg
2015-01-31 17:34:00,182 [DEBUG]     [conf.config_object] __init__
2015-01-31 17:34:00,185 [TRACE]     [conf.config_object] get_from_config
2015-01-31 17:34:00,200 [TRACE]     [conf.config_object] get for key typ in section keyboard (default: autodetect)
2015-01-31 17:34:00,203 [TRACE]     [conf.config_object] get_string for key typ in section keyboard (default: autodetect)
2015-01-31 17:34:00,206 [TRACE]     [conf.config_object] key 'typ' exist in section 'keyboard' with value 'gpio'
2015-01-31 17:34:00,210 [TRACE]     [conf.config_object] get_int for key bouncetime in section keyboard (default: 5000)
2015-01-31 17:34:00,213 [TRACE]     [conf.config_object] get_string for key bouncetime in section keyboard (default: )
2015-01-31 17:34:00,216 [TRACE]     [conf.config_object] key 'bouncetime' doesn't exist in section 'keyboard' 
2015-01-31 17:34:00,219 [TRACE]     [conf.config_object] return default '
2015-01-31 17:34:00,222 [TRACE]     [conf.config_object] get_keys for section InputPins
2015-01-31 17:34:00,225 [TRACE]     [conf.config_object] get_keys for section OutputPins
2015-01-31 17:34:00,228 [TRACE]     [keyboard.KeyboardInterface] load_gpio
2015-01-31 17:34:00,235 [DEBUG]     [keyboard.from_gpio] keyboard.from_gpio loaded
2015-01-31 17:34:00,246 [DEBUG]     [keyboard.AbstractBaseClass] keyboard.AbstractBaseClass loaded
2015-01-31 17:34:00,251 [DEBUG]     [keyboard.from_gpio] GPIO.__init__(input_pins = ['11', '13'], output_pins = ['18', '12', '16'])
2015-01-31 17:34:00,255 [TRACE]     [action.handler] register Event OnKeyPressed from keyboard.from_gpio 
2015-01-31 17:34:00,258 [DEBUG]     [action.handler] event_source keyboard.from_gpio was added
2015-01-31 17:34:00,261 [TRACE]     [action.handler] added event_name OnKeyPressed an register source keyboard.from_gpio
2015-01-31 17:34:00,270 [TRACE]     [action.handler] register Event OnKeyPressed_11 from keyboard.from_gpio 
2015-01-31 17:34:00,283 [TRACE]     [action.handler] added event_name OnKeyPressed_11 an register source keyboard.from_gpio
2015-01-31 17:34:00,288 [TRACE]     [action.handler] register Event OnKeyPressed_13 from keyboard.from_gpio 
2015-01-31 17:34:00,295 [TRACE]     [action.handler] added event_name OnKeyPressed_13 an register source keyboard.from_gpio
2015-01-31 17:34:00,300 [DEBUG]     [doorpi] Keyboard is now GPIO Keyboard
2015-01-31 17:34:00,425 [DEBUG]     [sipphone.by_pjsua] sipphone.by_pjsua loaded
2015-01-31 17:34:00,474 [DEBUG]     [sipphone.pjsua_lib.SipPhoneAccountCallBack] sipphone.pjsua_lib.SipPhoneAccountCallBack loaded
2015-01-31 17:34:00,480 [DEBUG]     [sipphone.pjsua_lib.SipPhoneCallCallBack] sipphone.pjsua_lib.SipPhoneCallCallBack loaded
2015-01-31 17:34:00,497 [TRACE]     [conf.config_object] get for key record_while_dialing in section DoorPi (default: False)
2015-01-31 17:34:00,500 [TRACE]     [conf.config_object] get_string for key record_while_dialing in section DoorPi (default: False)
2015-01-31 17:34:00,517 [TRACE]     [conf.config_object] key 'record_while_dialing' exist in section 'DoorPi' with value 'true'
2015-01-31 17:34:00,520 [DEBUG]     [sipphone.by_pjsua] __init__
2015-01-31 17:34:00,533 [TRACE]     [action.handler] register Event OnSipPhoneCreate from sipphone.by_pjsua 
2015-01-31 17:34:00,537 [DEBUG]     [action.handler] event_source sipphone.by_pjsua was added
2015-01-31 17:34:00,540 [TRACE]     [action.handler] added event_name OnSipPhoneCreate an register source sipphone.by_pjsua
2015-01-31 17:34:00,553 [TRACE]     [action.handler] register Event OnSipPhoneStart from sipphone.by_pjsua 
2015-01-31 17:34:00,556 [TRACE]     [action.handler] added event_name OnSipPhoneStart an register source sipphone.by_pjsua
2015-01-31 17:34:00,559 [TRACE]     [action.handler] register Event OnSipPhoneDestroy from sipphone.by_pjsua 
2015-01-31 17:34:00,573 [TRACE]     [action.handler] added event_name OnSipPhoneDestroy an register source sipphone.by_pjsua
2015-01-31 17:34:00,576 [TRACE]     [action.handler] register Event OnSipPhoneRecorderCreate from sipphone.by_pjsua 
2015-01-31 17:34:00,579 [TRACE]     [action.handler] added event_name OnSipPhoneRecorderCreate an register source sipphone.by_pjsua
2015-01-31 17:34:00,582 [TRACE]     [action.handler] register Event OnSipPhoneRecorderDestroy from sipphone.by_pjsua 
2015-01-31 17:34:00,596 [TRACE]     [action.handler] added event_name OnSipPhoneRecorderDestroy an register source sipphone.by_pjsua
2015-01-31 17:34:00,599 [TRACE]     [action.handler] register Event OnSipPhoneMakeCall from sipphone.by_pjsua 
2015-01-31 17:34:00,602 [TRACE]     [action.handler] added event_name OnSipPhoneMakeCall an register source sipphone.by_pjsua
2015-01-31 17:34:00,618 [DEBUG]     [action.SingleActions.sleep] action.SingleActions.sleep loaded
2015-01-31 17:34:00,633 [TRACE]     [action.handler] action SleepAction with args (0.5,) and kwargs {} was added to new evententry AfterCallStateDisconnect
2015-01-31 17:34:00,637 [TRACE]     [action.handler] action <bound method Pjsua.cleanup_after_call of <sipphone.by_pjsua.Pjsua instance at 0xb5dfae90>> with args () and kwargs {} was added to event AfterCallStateDisconnect
2015-01-31 17:34:00,641 [TRACE]     [action.handler] fire Event OnSipPhoneCreate from sipphone.by_pjsua asyncron
2015-01-31 17:34:00,683 [DEBUG]     [action.handler] no actions for event OnSipPhoneCreate - skip fire_event OnSipPhoneCreate from sipphone.by_pjsua
2015-01-31 17:34:00,667 [DEBUG]     [sipphone.by_pjsua] init Lib
2015-01-31 17:34:00,689 [DEBUG]     [sipphone.by_pjsua] CreateUAConfig
2015-01-31 17:34:00,692 [DEBUG]     [sipphone.by_pjsua] CreateMediaConfig
2015-01-31 17:34:00,698 [DEBUG]     [sipphone.by_pjsua] CreateLogConfig
2015-01-31 17:34:01,044 [DEBUG]     [sipphone.by_pjsua] init transport
2015-01-31 17:34:01,047 [DEBUG]     [sipphone.by_pjsua] CreateTransportConfig
2015-01-31 17:34:01,054 [DEBUG]     [sipphone.by_pjsua] Lib.start()
2015-01-31 17:34:01,058 [DEBUG]     [sipphone.by_pjsua] init Acc
2015-01-31 17:34:01,061 [DEBUG]     [sipphone.by_pjsua] CreateAccountConfig
2015-01-31 17:34:01,066 [TRACE]     [conf.config_object] get for key server in section SIP-Phone (default: )
2015-01-31 17:34:01,070 [TRACE]     [conf.config_object] get_string for key server in section SIP-Phone (default: )
2015-01-31 17:34:01,073 [TRACE]     [conf.config_object] key 'server' exist in section 'SIP-Phone' with value '192.168.10.1'
2015-01-31 17:34:01,076 [TRACE]     [conf.config_object] get for key username in section SIP-Phone (default: )
2015-01-31 17:34:01,079 [TRACE]     [conf.config_object] get_string for key username in section SIP-Phone (default: )
2015-01-31 17:34:01,083 [TRACE]     [conf.config_object] key 'username' exist in section 'SIP-Phone' with value '621'
2015-01-31 17:34:01,086 [TRACE]     [conf.config_object] get for key password in section SIP-Phone (default: )
2015-01-31 17:34:01,089 [TRACE]     [conf.config_object] get_string for key password in section SIP-Phone (default: )
2015-01-31 17:34:01,092 [TRACE]     [conf.config_object] key 'password' exist in section 'SIP-Phone' with value '*******'
2015-01-31 17:34:01,095 [TRACE]     [conf.config_object] get for key realm in section SIP-Phone (default: )
2015-01-31 17:34:01,098 [TRACE]     [conf.config_object] get_string for key realm in section SIP-Phone (default: )
2015-01-31 17:34:01,101 [TRACE]     [conf.config_object] key 'realm' exist in section 'SIP-Phone' with value 'fritz.box'
2015-01-31 17:34:01,104 [INFO]      [sipphone.by_pjsua] try to create AccountConfig
2015-01-31 17:34:01,107 [DEBUG]     [sipphone.by_pjsua] username:     621
2015-01-31 17:34:01,111 [DEBUG]     [sipphone.by_pjsua] password:     ******
2015-01-31 17:34:01,114 [DEBUG]     [sipphone.by_pjsua] server:       192.168.10.1
2015-01-31 17:34:01,119 [DEBUG]     [sipphone.by_pjsua] realm:        fritz.box
2015-01-31 17:34:01,122 [DEBUG]     [sipphone.pjsua_lib.SipPhoneAccountCallBack] __init__
2015-01-31 17:34:01,126 [TRACE]     [action.handler] register Event BeforeCallIncoming from sipphone.pjsua_lib.SipPhoneAccountCallBack 
2015-01-31 17:34:01,129 [DEBUG]     [action.handler] event_source sipphone.pjsua_lib.SipPhoneAccountCallBack was added
2015-01-31 17:34:01,132 [TRACE]     [action.handler] added event_name BeforeCallIncoming an register source sipphone.pjsua_lib.SipPhoneAccountCallBack
2015-01-31 17:34:01,141 [TRACE]     [action.handler] register Event OnCallReconnect from sipphone.pjsua_lib.SipPhoneAccountCallBack 
2015-01-31 17:34:01,145 [TRACE]     [action.handler] added event_name OnCallReconnect an register source sipphone.pjsua_lib.SipPhoneAccountCallBack
2015-01-31 17:34:01,148 [TRACE]     [action.handler] register Event AfterCallReconnect from sipphone.pjsua_lib.SipPhoneAccountCallBack 
2015-01-31 17:34:01,151 [TRACE]     [action.handler] added event_name AfterCallReconnect an register source sipphone.pjsua_lib.SipPhoneAccountCallBack
2015-01-31 17:34:01,155 [TRACE]     [action.handler] register Event OnCallBusy from sipphone.pjsua_lib.SipPhoneAccountCallBack 
2015-01-31 17:34:01,158 [TRACE]     [action.handler] added event_name OnCallBusy an register source sipphone.pjsua_lib.SipPhoneAccountCallBack
2015-01-31 17:34:01,161 [TRACE]     [action.handler] register Event AfterCallBusy from sipphone.pjsua_lib.SipPhoneAccountCallBack 
2015-01-31 17:34:01,164 [TRACE]     [action.handler] added event_name AfterCallBusy an register source sipphone.pjsua_lib.SipPhoneAccountCallBack
2015-01-31 17:34:01,169 [TRACE]     [action.handler] register Event OnCallIncomming from sipphone.pjsua_lib.SipPhoneAccountCallBack 
2015-01-31 17:34:01,172 [TRACE]     [action.handler] added event_name OnCallIncomming an register source sipphone.pjsua_lib.SipPhoneAccountCallBack
2015-01-31 17:34:01,175 [TRACE]     [action.handler] register Event AfterCallIncomming from sipphone.pjsua_lib.SipPhoneAccountCallBack 
2015-01-31 17:34:01,178 [TRACE]     [action.handler] added event_name AfterCallIncomming an register source sipphone.pjsua_lib.SipPhoneAccountCallBack
2015-01-31 17:34:01,182 [TRACE]     [action.handler] register Event OnCallReject from sipphone.pjsua_lib.SipPhoneAccountCallBack 
2015-01-31 17:34:01,185 [TRACE]     [action.handler] added event_name OnCallReject an register source sipphone.pjsua_lib.SipPhoneAccountCallBack
2015-01-31 17:34:01,188 [TRACE]     [action.handler] register Event AfterCallReject from sipphone.pjsua_lib.SipPhoneAccountCallBack 
2015-01-31 17:34:01,191 [TRACE]     [action.handler] added event_name AfterCallReject an register source sipphone.pjsua_lib.SipPhoneAccountCallBack
2015-01-31 17:34:01,198 [DEBUG]     [sipphone.by_pjsua] Listening on: 192.168.10.176
2015-01-31 17:34:01,202 [DEBUG]     [sipphone.by_pjsua] Port: 53879
2015-01-31 17:34:01,205 [TRACE]     [conf.config_object] get for key dialtone in section DoorPi (default: )
2015-01-31 17:34:01,208 [TRACE]     [conf.config_object] get_string for key dialtone in section DoorPi (default: )
2015-01-31 17:34:01,212 [TRACE]     [conf.config_object] key 'dialtone' exist in section 'DoorPi' with value '!BASEPATH!/doorpi/media/ShortDialTone.wav'
2015-01-31 17:34:01,215 [DEBUG]     [sipphone.by_pjsua] dialtone is missing or not readable - create it now

Exception NameError: No PiFace Digital board detected (hardware_addr=0, bus=0, chip_select=0).

Meldung aus Issue #17

2015-01-12 20:34:10,505 [DEBUG] [main] loaded with arguments: ['./main.py', '--configfile', '/home/pi/DoorPi/conf/doorpi.cfg']
2015-01-12 20:34:10,510 [DEBUG] [doorpi] init
2015-01-12 20:34:10,515 [DEBUG] [doorpi] run
2015-01-12 20:34:10,520 [DEBUG] [doorpi] prepare
2015-01-12 20:34:10,524 [DEBUG] [doorpi] givven arguments argv: Namespace(configfile=)
2015-01-12 20:34:10,530 [DEBUG] [conf.config_object] load_config ()
2015-01-12 20:34:10,535 [DEBUG] [conf.config_object] use configfile: /home/pi/DoorPi/conf/doorpi.cfg
2015-01-12 20:34:10,559 [DEBUG] [conf.config_object] init
2015-01-12 20:34:10,563 [TRACE] [conf.config_object] get_from_config
2015-01-12 20:34:10,583 [TRACE] [conf.config_object] get for key typ in section keyboard (default: autodetect)
2015-01-12 20:34:10,588 [TRACE] [conf.config_object] get_string for key typ in section keyboard (default: autodetect)
2015-01-12 20:34:10,592 [TRACE] [conf.config_object] section 'keyboard' doesn't exist
2015-01-12 20:34:10,597 [TRACE] [conf.config_object] return default 'autodetect
2015-01-12 20:34:10,602 [TRACE] [conf.config_object] get_int for key bouncetime in section keyboard (default: 5000)
2015-01-12 20:34:10,606 [TRACE] [conf.config_object] get_string for key bouncetime in section keyboard (default: )
2015-01-12 20:34:10,611 [TRACE] [conf.config_object] section 'keyboard' doesn't exist
2015-01-12 20:34:10,615 [TRACE] [conf.config_object] return default '
2015-01-12 20:34:10,620 [TRACE] [conf.config_object] get_keys for section InputPins
2015-01-12 20:34:10,626 [TRACE] [conf.config_object] get_keys for section OutputPins
2015-01-12 20:34:10,631 [TRACE] [keyboard.KeyboardInterface] autodetect
2015-01-12 20:34:10,635 [TRACE] [keyboard.KeyboardInterface] load_piface
2015-01-12 20:34:10,642 [DEBUG] [keyboard.from_piface] keyboard.from_piface loaded
2015-01-12 20:34:10,739 [DEBUG] [keyboard.AbstractBaseClass] keyboard.AbstractBaseClass loaded
2015-01-12 20:34:10,746 [DEBUG] [keyboard.from_piface] init(input_pins = ['11', '13', '15'], output_pins = ['18', '7', '16'])
2015-01-12 20:34:10,751 [TRACE] [action.handler] register Event OnKeyPressed from keyboard.from_piface
2015-01-12 20:34:10,755 [TRACE] [action.handler] register Eventsource keyboard.from_piface
2015-01-12 20:34:10,760 [DEBUG] [action.handler] event_source keyboard.from_piface was added
2015-01-12 20:34:10,764 [TRACE] [action.handler] added event_name OnKeyPressed an register source keyboard.from_piface
2015-01-12 20:34:10,925 [ERROR] [main] Exception NameError: No PiFace Digital board detected (hardware_addr=0, bus=0, chip_select=0).
Traceback (most recent call last):
File "./main.py", line 114, in main_as_application
try: doorpi.DoorPi(parsed_arguments).run()
File "/home/pi/DoorPi/doorpi/doorpi.py", line 174, in run
if not self.prepared: self.prepare(self.__parsed_arguments)
File "/home/pi/DoorPi/doorpi/doorpi.py", line 99, in prepare
self.__keyboard = load_keyboard()
File "/home/pi/DoorPi/doorpi/keyboard/KeyboardInterface.py", line 35, in load_keyboard
bouncetime = bouncetime
File "/home/pi/DoorPi/doorpi/keyboard/KeyboardInterface.py", line 41, in autodetect
try: return load_piface(input_pins, output_pins, bouncetime)
File "/home/pi/DoorPi/doorpi/keyboard/KeyboardInterface.py", line 54, in load_piface
output_pins = output_pins
File "/home/pi/DoorPi/doorpi/keyboard/from_piface.py", line 41, in __init
p.init()
File "/usr/lib/python2.7/dist-packages/pifacedigitalio/core.py", line 166, in init
raise failed_boards[0]
NoPiFaceDigitalDetectedError: No PiFace Digital board detected (hardware_addr=0, bus=0, chip_select=0).
2015-01-12 20:34:10,940 [DEBUG] [doorpi] destroy
2015-01-12 20:34:10,945 [WARNING] [action.handler] source doorpi unknown - skip fire_event OnShutdown
2015-01-12 20:34:10,949 [TRACE] [action.handler] unregister Eventsource doorpi and force_unregister is True
2015-01-12 20:34:10,954 [DEBUG] [keyboard.from_piface] destroy
Exception pifacedigitalio.core.NoPiFaceDigitalError: NoPiFaceDigitalError('There is no PiFace Digital with hardware_addr 0',) in > ignored
pi@doorberry ~/DoorPi/doorpi $

keyboard mittels wiringX

https://github.com/wiringX/wiringX

Vorteile:

  • Übergreifend für alle Boards wie Raspberry Pi, Hummingboard, BananaPi, Radxa Rock
  • "GPIO reading, writing, and interrupts" und "IC2 reading and writing"

Als zusätzliches Keyboard sicherlich nicht falsch, zumal die Anbindung neuer Keyboards recht gut gekapselt ist. Eventuell im Zusammenhang mit Re-Design der Keyboards #44

Exception NameError: PID file '/var/run/doorpi.pid' not locked

2014-12-24 11:09:40,889 [DEBUG] [doorpi] init
2014-12-24 11:09:40,896 [ERROR] [root] Exception NameError: PID file '/var/run/doorpi.pid' not locked
Traceback (most recent call last):
File "/home/pi/DoorPi//doorpi/service.py", line 44, in
try: daemon_runner.do_action()
File "/usr/lib/pymodules/python2.7/daemon/runner.py", line 186, in do_action
func(self)
File "/usr/lib/pymodules/python2.7/daemon/runner.py", line 149, in stop
"PID file %(pidfile_path)r not locked" % vars())
DaemonRunnerStopFailureError: PID file '/var/run/doorpi.pid' not locked

Watchdog Statusfile anbieten

Anfrage per Mail:
Bitte Möglichkeit geben, zyklisch eine Status-Datei schreiben zu lassen.
Diese soll dann vom Watchdog überwacht werden und im Fehlerfall ein Reboot durchgeführt werden.

GPIO Problem: unexpected keyword 'pin'

Habe mal ein Problem mit den GPIOS.. dachte dass jetzt soweit alles funktioniert aber beim start von DoorPi stellt er mir meine Output Pins auf Input um.
Außerdem beendet sich DoorPi nach dem Start sofort wieder.

Hier der Error im Log:

2014-12-27 18:04:31,843 [ERROR] [root] Exception NameError: set_output() got an unexpected keyword argument 'pin'
Traceback (most recent call last):
File "/home/pi/DoorPi//doorpi/service.py", line 44, in
try: daemon_runner.do_action()
File "/usr/lib/pymodules/python2.7/daemon/runner.py", line 186, in do_action
func(self)
File "/usr/lib/pymodules/python2.7/daemon/runner.py", line 131, in _start
self.app.run()
File "/home/pi/DoorPi/doorpi/doorpi.py", line 147, in run
if led is not '': self.is_alive_led(led)
File "/home/pi/DoorPi/doorpi/doorpi.py", line 168, in is_alive_led
log_output = False
TypeError: set_output() got an unexpected keyword argument 'pin'
2014-12-27 18:04:31,851 [DEBUG] [doorpi] destroy

[ERROR] [keyboard.KeyboardInterface] could not load keyboard piface

2014-12-24 11:09:42,455 [ERROR] [keyboard.KeyboardInterface] could not load keyboard piface
Traceback (most recent call last):
File "/home/pi/DoorPi/doorpi/keyboard/KeyboardInterface.py", line 36, in autodetect
try: return load_piface(input_pins, output_pins)
File "/home/pi/DoorPi/doorpi/keyboard/KeyboardInterface.py", line 46, in load_piface
import keyboard.from_piface
File "/home/pi/DoorPi/doorpi/keyboard/from_piface.py", line 10, in
import piface.pfio # basic for PiFce control
ImportError: No module named piface.pfio

[ERROR] [action.handler] error while fire action PjsipHandleEventsAction with args () and kwargs {'timeout': 50} for event_name OnTimeTick

Fehlermeldung:

C2015-01-27 22:42:24,050 [ERROR]       [action.handler] error while fire action PjsipHandleEventsAction with args () and kwargs {'timeout': 50} for event_name OnTimeTick
Traceback (most recent call last):
  File "/home/pi/doorpi/doorpi/action/handler.py", line 140, in fire_event_synchron
    action.run(silent)
  File "/home/pi/doorpi/doorpi/action/base.py", line 48, in run
    return self.__callback(**self.__kwargs)
  File "/home/pi/doorpi/doorpi/action/SingleActions/pjsip_handle_events.py", line 15, in pjsip_handle_events
    doorpi.DoorPi().sipphone.lib.handle_events(timeout)
  File "/usr/local/lib/python2.7/dist-packages/pjsua.py", line 2258, in handle_events
    return _pjsua.handle_events(timeout)
KeyboardInterrupt

insserv: script doorpi is not an executable regular file, skipped!

while execute Doorpi.install comes following error message:

  • Install DoorPin service
    update-rc.d: using dependency based boot sequencing
    update-rc.d: warning: start runlevel arguments (none) do not match doorpi Default-Start values (2 3 4 5)
    update-rc.d: warning: stop runlevel arguments (none) do not match doorpi Default-Stop values (0 1 6)
    insserv: script doorpi is not an executable regular file, skipped!
    update-rc.d: using dependency based boot sequencing
    update-rc.d: warning: start runlevel arguments (none) do not match doorpi Default-Start values (2 3 4 5)
    update-rc.d: warning: stop runlevel arguments (none) do not match doorpi Default-Stop values (0 1 6)
    insserv: script doorpi is not an executable regular file, skipped!

Key -1 pressed

Key -1 nicht gesetzt. Ist dennoch gedrückt.
Kein PiFace vorhanden, nur GPIO.

2014-12-29 14:43:51,478 [INFO] [doorpi] DoorPi.run: Key -1 is pressed
2014-12-29 14:43:51,480 [TRACE] [conf.config_object] get for key -1 in section InputPins (default: )
2014-12-29 14:43:51,482 [TRACE] [conf.config_object] get_string for key -1 in section InputPins (default: )
2014-12-29 14:43:51,485 [TRACE] [conf.config_object] key '-1' doesn't exist in section 'InputPins'
2014-12-29 14:43:51,497 [TRACE] [conf.config_object] return default '
2014-12-29 14:43:51,499 [DEBUG] [doorpi] start action:
2014-12-29 14:43:51,501 [DEBUG] [doorpi] fire_action () and secure_source is True
2014-12-29 14:43:51,504 [DEBUG] [doorpi] couldn't find action or source was not set to secure
2014-12-29 14:43:51,506 [TRACE] [doorpi] get event(event_name = AfterKeyPressed, additional_informations = {'LastKey': 'NotSetYet'}, secure_source = True)
2014-12-29 14:43:51,516 [TRACE] [conf.config_object] get_keys for section AfterKeyPressed

Anbindung Webservice IP-Symcon

Hallo Thomas,

habe damit begonnen doorpi mit einer Anbindung zum IP-Symcon (http://www.ip-symcon.de) auszustatten. IP-Symcon ist ein Smarthome Anwendung, welche verschiedene Hardware miteinander verbinden kann.

Die Kommunikation zu IP-Symcon lässt sich über ein API (siehe hierzu Forenbeitrag: http://www.ip-symcon.de/forum/threads/26516-JSON-RPC-%C3%BCber-Python?highlight=python+rpc) herstellen.

Beschreibung der API in IP-Symcon findet man hier: http://www.ip-symcon.de/service/dokumentation/entwicklerbereich/datenaustausch/

Mein Ziel ist es eventgesteuert aus doorpi Variablen in IP-Symcon zu verändern.

Dazu folgender Eintrag in der doorpi.cfg

[EVENT_OnCallStateConnect]
10 = out:1,1
20 = ipsrpc:40276,TRUE

[EVENT_OnCallStateDisconnect]
10 = out:1,0
20 = ipsrpc:40276,FALSE[/code]

40276 ist meine Variablennummer des Typs BOOLEAN in IP-Symcon.

und folgendes script im Ordner: /home/pi/doorpi/doorpi/action/SingleActions/ipsrpc.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import logging
logger = logging.getLogger(__name__)
logger.debug("%s loaded", __name__)

import doorpi
import requests
import json
from requests.auth import HTTPBasicAuth
from action.base import SingleAction

def IpsRpc(methodIps, paramIps):
    try:
        url = "http://192.168.178.5:82/api/"
        auth=HTTPBasicAuth('user', 'password')
        headers = {'content-type': 'application/json'}

        payload = {
           "method": methodIps,
           "params": paramIps,
           "jsonrpc": "2.0",
           "id": 0,
        }
        response = requests.post(url, auth=auth, data=json.dumps(payload), headers=headers).json
        logger.debug(response)
    except:
        logger.exception("couldn't send IpsRpc")
        return False
    return True

def get(parameters):
    parameter_list = parameters.split(',')
    if len(parameter_list) is not 2: return None

    variable = parameter_list[0]
    value = parameter_list[1]

    return IpsRpcAction(IpsRpc, "SetValue", [variable,value])

class IpsRpcAction(SingleAction):
    pass

Die Events werden im doorpi.log geladen und auch beim entsprechenden event ausgelöst, jedoch geht keine Message an IP-Symcon. Ich bin mit meinem "Latein" am Ende und komme hier nicht weiter.

Mit Wireshark kann ich keinen Netzwerkverkehr zwischen doorpi (192.168.178.9) und IP-Symcon (192.168.178.5) feststellen.

Hast Du evtl eine Idee ?

Falls wir das hinkriegen würde ich im IP-Symcon Forum mal die Brücke zu Deinem doorpie Projekt schlagen, da dort auch öfters nach einer intelligenten "Klingellösung" gesucht wird. Wäre doch gelacht, wenn Du die 10 Votes für den Banana Pi nicht zusammenkriegen würdest ;-)

Gruß,
Hermann

Pjsua instance has no attribute 'current_callcallback'

Traceback (most recent call last):
File "/home/pi/DoorPi/doorpi/application.py", line 41, in
finally: doorpi.DoorPi().destroy()
File "/home/pi/DoorPi/doorpi/doorpi.py", line 117, in destroy
self.sipphone.destroy()
File "/home/pi/DoorPi/doorpi/sipphone/by_pjsua.py", line 187, in destroy
if self.current_callcallback is not None:
AttributeError: Pjsua instance has no attribute 'current_callcallback'
Unhandled exception in thread started by
sys.excepthook is missing
lost sys.stderr

Watchdog Statusmeldung auf /dev/watchdog

Anfrage per Mail:
Bitte Möglichkeit geben, zyklisch direkt mit dem Watchdog zu kommunizieren (/dev/watchdog).
Watchdog überwacht DoorPi und im Fehlerfall soll ein Reboot durchgeführt werden.

DoorPi liefert 80% bis 90% CPU-Last

die while-Schleife in doorpi.py wird zu schnell durchlaufen, vielleicht würde ein time.sleep(0.1) helfen?
Das wirkt sich negativ auf z.B. die Sprachqualität aus. Auch die Wiedergabe vom DialTone hört sich dadurch komisch an.

Restart von DoorPi führt zu "AttributeError: 'NoneType' object has no attribute 'get_keys'"

sudo /etc/init.d/doorpi restart fürht zu dem Fehler:

pi@doorpi ~ $ sudo /etc/init.d/doorpi stop
Stopping server
Traceback (most recent call last):
File "/home/pi/DoorPi//doorpi/service.py", line 46, in
finally: doorpi.DoorPi().destroy()
File "/home/pi/DoorPi/doorpi/doorpi.py", line 106, in destroy
self.fire_event('OnShutdown')
File "/home/pi/DoorPi/doorpi/doorpi.py", line 170, in fire_event
for action in sorted(self.get_config().get_keys(event_name)):
AttributeError: 'NoneType' object has no attribute 'get_keys'

DoorPi Hardware Board ( LCD 16x2 / Wiegand 26bit Bus / Platine ... )

Hallo Developer,

In einem anderen Issues geht es um das Feature RFID und deren anbindung, da ich versprochen habe mich um ein DoorPi Hardware Board zu kümmern mach ich das mal hier.
Da ich auch nicht all wissend bin bitte euch um eure Meinungen und mithilfe damit ich das Projekt ( LCD läuft schon ) ausbauen kann.
** LCD Display 16x2 ( http://1qr.at/T2 ) um Status von DoorPi auszugeben und um Probleme leichter zu lokalisieren

** DoorPi Gehäuse ( http://1qr.at/TS ) in dem der Raspberry , die Erweiterungsplatine , das LCD, PiFace platz finden soll
da ich das schon getestet habe sehe ich da kein Problem und alles ist aufgeräumt und für den Einbau in einen Verteiler vorbereitet, wo sich ja eigentlich eine Sprechanlage befinden sollte.

** Ausbau einer Wiegand 26 Schnittstelle / Bus der erstens im stande ist 100 Meter per Kabel minimum
2 adern zu überprücken, Optionale Features wie Beep oder LED usw benötigen zusätzliche adern
der Datenbus D1 und D0 kann an den GPIO`s per Python Script angebunden werden.
Vorteil des ganzen , es gibt sehr viele günstige Endgeräte ( http://1qr.at/TJ ) für den Wiegand 26bit Bus vom RDIF , Fingerprint, Code, ....

** Minimal Bedinung am DoorPi Geräuse neben dem LCD Display per taster die wiederum per
MCP23017-E/SP Ic Chip ( http://1qr.at/TV ) am Raspberry angebunden sind um so zum beispiel einen Reset Taster, ...

** Eine Real Time Clock würde ich in diesem fall auch noch am print verbauen.

Freu mich auf Feedback

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.