Event on Key pressed URL aufrufen

  • Hilfe / Ratschläge
  • in Arbeit

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

Da in jedem Forum ein paar Regeln eingehalten werden müssen, möchte ich diese auch vorher hier festlegen und niederschreiben. Die grundsätzliche Netiquette setze ich bei Jedem voraus. Darüber hinaus möchte ich nur spezielle Regeln ansprechen:
- Unterlasse FullQuote sondern nutze Alternativen wie Inline-Quoting
-> siehe auch https://de.wikipedia.org/wiki/Fullquote vs. https://de.wikipedia.org/wiki/TOFU#Alternativen_zu_TOFU
- Unterlasse nichtssagende Antworten wie "Danke" oder "werde ich mal testen" oder ähnliches, sofern Du nicht der Threadersteller bist und einen Lösungsvorschlag angeboten bekommen hast.
- Vermeide Doppel-Posts (zwei Beiträge von Dir hintereinander) sondern editiere wenn möglich Deine Posts.

Danke...

  • motom001 wrote:

    ohne Log kann ich da nicht viel sagen - vielleicht findest du hier Beispiele:
    Wenn ich das hier richtig deute bedeutet dass das url_call Modul nicht vorhanden ist


    Source Code

    1. 2016-05-28 23:47:25,416 [ERROR] [doorpi.action.base] error while creating SingleAction from config string: url_call:http://meineurl
    2. Traceback (most recent call last):
    3. File "/usr/local/lib/python2.7/dist-packages/doorpi/action/base.py", line 64, in from_string
    4. return importlib.import_module('doorpi.action.SingleActions.'+action_name).get(
    5. File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    6. __import__(name)
    7. ImportError: No module named url_call
    wie kriege ich diesen installiert/aktiviert?
  • Hallo Thomas,

    vielen Dank für Deine Hilf eund Deine Geduld mit mir. Ich bin scheinbar ein Schritt weiter aber leider noch nicht ganz am Ziel. Ich habe das Update installiert und habe die url_call.py erstellt mit dem Quellcode den Du mir geschickt hast. Nun bringt doorpi kein Fehler mehr.
    Aber leider wird die URL nicht aufgerufen. (Wenn ich die gleiche URL via wget aufrufe geht es, also der pi kommt hin)
    Hier ein Auszug der Logs:

    Source Code

    1. 2016-05-29 14:19:17,389 [WARNING] [doorpi.action.handler] source doorpi.sipphone.linphone_lib.Player unknown - skip fire_event OnPlayerStopped
    2. 2016-05-29 14:19:26,643 [INFO] [doorpi.conf.config_object] use configfile: /usr/local/etc/DoorPi/conf/doorpi.ini
    3. 2016-05-29 14:19:26,685 [INFO] [doorpi.status.webserver] Initiating WebService at ip and port 80
    4. 2016-05-29 14:19:26,689 [WARNING] [root] section WritePermission not found in configfile
    5. 2016-05-29 14:19:26,690 [WARNING] [root] section ReadPermission not found in configfile
    6. 2016-05-29 14:19:26,691 [WARNING] [root] section Group not found in configfile
    7. 2016-05-29 14:19:26,691 [WARNING] [root] section User not found in configfile
    8. 2016-05-29 14:19:26,692 [ERROR] [doorpi.status.webserver] no ReadPermission found
    9. 2016-05-29 14:19:26,693 [ERROR] [doorpi.status.webserver] no groups in configfile!
    10. 2016-05-29 14:19:26,693 [ERROR] [doorpi.status.webserver] no WritePermission found
    11. 2016-05-29 14:19:26,699 [INFO] [doorpi.keyboard.KeyboardInterface] using multi-keyboard mode (keyboards: onboardpins)
    12. 2016-05-29 14:19:26,700 [INFO] [doorpi.keyboard.KeyboardInterface] trying to add keyboard 'onboardpins' to handler
    13. 2016-05-29 14:19:27,209 [INFO] [doorpi.sipphone.SipphoneInterface] found installed sipphone "linphone" and use this as default
    14. 2016-05-29 14:19:27,289 [WARNING] [root] section DTMF not found in configfile
    15. 2016-05-29 14:19:27,554 [INFO] [doorpi.sipphone.from_linphone] found 3 possible sounddevices:
    16. 2016-05-29 14:19:27,558 [INFO] [doorpi.sipphone.from_linphone] found 2 possible videodevices:
    17. 2016-05-29 14:19:27,561 [INFO] [doorpi.sipphone.from_linphone] using DoorPi with SIP-Server
    18. 2016-05-29 14:19:27,564 [INFO] [doorpi.doorpi] found EVENT_ section 'EVENT_OnKeyPressed_onboardpins.11' in configfile
    19. 2016-05-29 14:19:27,564 [INFO] [doorpi.doorpi] registering action '10' for event 'OnKeyPressed_onboardpins.11'
    20. 2016-05-29 14:19:27,568 [INFO] [doorpi.doorpi] found EVENT_ section 'EVENT_OnStartup' in configfile
    21. 2016-05-29 14:19:27,570 [WARNING] [root] section DTMF not found in configfile
    22. 2016-05-29 14:19:27,573 [INFO] [doorpi.doorpi] DoorPi started successfully
    23. 2016-05-29 14:19:27,574 [INFO] [doorpi.doorpi] BasePath is /usr/local/etc/DoorPi
    24. 2016-05-29 14:19:27,574 [INFO] [doorpi.doorpi] Weburl is http://raspberrypi/
    Display All


    Hier meine doorpi.ini

    Source Code

    1. [DoorPi]
    2. base_path = /usr/local/etc/DoorPi
    3. eventlog = !BASEPATH!/conf/eventlog.db
    4. is_alive_led =
    5. last_snapshot =
    6. [DoorPiWeb]
    7. indexfile = index.html
    8. ip =
    9. loginfile = login.html
    10. online_fallback = http://motom001.github.io/DoorPiWeb
    11. port = 80
    12. public = AREA_public
    13. www = !BASEPATH!/../DoorPiWeb
    14. [EVENT_OnStartup]
    15. [SIP-Phone]
    16. firewallpolicy = PolicyNoFirewall
    17. audio_codecs = PCMA,PCMU
    18. call_timeout = 15
    19. capture_device = ALSA: C-Media USB Headphone Set
    20. dialtone = !BASEPATH!/media/ShortDialTone.wav
    21. dialtone_renew_every_start = False
    22. dialtone_volume = 35
    23. echo_cancellation_enabled = False
    24. identity = Klingel
    25. local_port = 5060
    26. max_call_time = 60
    27. playback_device = ALSA: C-Media USB Headphone Set
    28. record_while_dialing = False
    29. records = !BASEPATH!/records/%Y-%m-%d_%H-%M-%S.wav
    30. sipphonetyp = linphone
    31. sipserver_password = geheim
    32. sipserver_realm = fritz.box
    33. sipserver_server = 192.168.178.1
    34. sipserver_username = 621
    35. stun_server =
    36. ua.max_calls = 2
    37. video_codecs = VP8
    38. video_device = V4L2: /dev/video0
    39. video_display_enabled = False
    40. video_size = vga
    41. [keyboards]
    42. onboardpins = gpio
    43. [onboardpins_keyboard]
    44. bouncetime = 200
    45. polarity = 0
    46. [onboardpins_OutputPins]
    47. 16 = Tueroffner
    48. [onboardpins_InputPins]
    49. 11 = sleep:0
    50. [EVENT_OnKeyPressed_onboardpins.11]
    51. 10 = url_call:http://192.168.178.21:8083/fhem?cmd.WhatsApp=set%20WhatsApp%20send%2049123456789%20Es%20hat%20geklingelt
    Display All
    und hier die url_call.py


    Source Code

    1. # -*- coding: utf-8 -*-
    2. # thx to pula @ DoorPi forum
    3. # https://www.doorpi.org/forum/thread/25-http-request/?postID=596#post596
    4. import logging
    5. logger = logging.getLogger(__name__)
    6. logger.debug("%s loaded", __name__)
    7. from doorpi.action.base import SingleAction
    8. import doorpi
    9. import urllib2
    10. import ssl
    11. import urlparse
    12. def fire_command(url):
    13. try:
    14. if "@" in url:
    15. nurl = urlparse.urlsplit(url)
    16. username = nurl.username
    17. password = nurl.password
    18. url = url.replace(username + ':' + password + '@', '')
    19. url = url.replace(" ", "%20")
    20. logger.debug('url: %s' % url)
    21. ssl._create_default_https_context = ssl._create_unverified_context
    22. p = urllib2.HTTPPasswordMgrWithDefaultRealm()
    23. p.add_password(None, url, username, password)
    24. handler = urllib2.HTTPBasicAuthHandler(p)
    25. opener = urllib2.build_opener(handler)
    26. urllib2.install_opener(opener)
    27. url = url.replace(" ", "%20")
    28. logger.info('url: %s' % url)
    29. return urllib2.urlopen(
    30. url=url,
    31. data=None,
    32. timeout=1
    33. )
    34. except urllib2.HTTPError as exp:
    35. logger.error('HTTPError: %s - %s' % (exp.code, exp.reason))
    36. except urllib2.URLError as exp:
    37. logger.error('URLError: %s' % exp.reason)
    38. return False
    39. def get(parameters):
    40. parsed_parameters = doorpi.DoorPi().parse_string(parameters)
    41. return UrlCallAction(fire_command, url=parsed_parameters)
    42. class UrlCallAction(SingleAction):
    43. pass
    Display All
    Wie gesagt die URL wird beim drücken des Tasters auf Pin 11 nicht ausgelöst.
    Ich hatte in dem Event 2 Befehle drin einmal der Aufruf der URL und ein Anruf, den Anruf habe ich erstmal rausgenommen um bei den Versuchen nicht die ganze Zeit alle Telefon läuten zu lassen. Wenn ich den Call Befehl als zweiten Befehl hinzufüge wird ein Anruf gestartet, sprich das Event wird erkannt und auch ausgelöst. Es happert an dem URL Aufruf.

    ICh wäre für jede Hilfe sehr dankbar.
    Gruß Eddie
  • Hänge mal bitte in der DoorPi.ini nach Zeile 59 ein 20 = Sleep:3 an.

    Ich hatte hier ein ähnliches Problem, wenn url_call in der letzten Zeile eines Events steht. Da wurde es auch nicht ausgelöst. Folgen weitere Aktionen funktionierte es. Allerdings auch nicht zwei call_url nacheinander ohne Pause!
    Bis Ende September beruflich und privat abwesend. Ab Oktober geht es mit DoorPi weiter :)
  • Hi,

    bin neu hier aber an dem Thema hänge ich. Sonst läuft alles (Auslösung durch GPIO oder Datei, Telefone klingeln, Events beim Start/Stop werden auch ausgelöst) nur die call_url macht irgendwie nichts weder bei DTMF noch im Event.

    Hier mal ein Auszug aus dem LOG. Ich kann das FireEvent ja sehen und auch der nächste Schritt sleep wird angezeigt.

    log

    Source Code

    1. 2016-07-27 17:07:01,113 [DEBUG] [doorpi.action.handler] [SBJZNR] fire for event OnKeyDown_virtuell.klingel this actions [<doorpi.action.SingleActions.url_call.UrlCallAction instance at 0xb2d2e828>, <doorpi.action.SingleActions.sleep.SleepAction instance at 0xb2d2e788>]
    2. 2016-07-27 17:07:01,115 [DEBUG] [doorpi.sipphone.from_linphone] call (**9)
    3. 2016-07-27 17:07:01,124 [DEBUG] [doorpi.sipphone.from_linphone] no current call -> start new call
    4. 2016-07-27 17:07:01,128 [DEBUG] [doorpi.sipphone.from_linphone] reset current call start datetime to 2016-07-27 15:07:01.128297
    5. 2016-07-27 17:07:01,126 [TRACE] [doorpi.action.handler] [SBJZNR] try to fire action UrlCallAction with args () and kwargs {'url': 'http://192.168.0.44:3777/user/doorpi_klingel.php'}
    6. 2016-07-27 17:07:01,118 [DEBUG] [doorpi.action.handler] no actions for event BeforeSipPhoneMakeCall - skip fire_event BeforeSipPhoneMakeCall from doorpi.sipphone.from_linphone
    7. 2016-07-27 17:07:01,137 [TRACE] [doorpi.action.base] run UrlCallAction with args () and kwargs {'url': 'http://192.168.0.44:3777/user/doorpi_klingel.php'}
    8. 2016-07-27 17:07:01,142 [TRACE] [doorpi.action.handler] [SBJZNR] try to fire action SleepAction with args (10.0,) and kwargs {}


    in der Ini sieht das Event wie folgt aus:

    Source Code

    1. [EVENT_OnKeyDown_virtuell.klingel]
    2. 10 = url_call:http://192.168.0.44:3777/user/doorpi_klingel.php
    3. 20 = sleep:10
  • Hallo Zusammen,

    habe das gleiche Problem wenn ich Aktoren auf meiner Homematic CCU ansprechen will.

    Events für Ausgänge oder Relais am Doorpi schalten klappt hervorragend aber "10 =url_call:homeatic-url-gelumpse/...." klappt auch nicht bei mir.

    Im Log wird angezeigt das die URL aufgerufen wird, es wird auch der Rückgabewert (Erfolgsmeldung) von der CCU im Log angezeigt,
    aber dennoch wir der Aktor nicht geschaltet.

    Was aber sehr gut geht ist, die Aufrufe in ein Shellscript zu packen und diese mittels "os_execute" einzubinden.

    Ich verwende "curl" um den Http Request auszuführen.

    Beispiel Einbindung in die Doorpi.ini
    10 = os_execute:/usr/local/etc/DoorPi/doscript/myscript.sh

    Halt nur darauf achten das auch die entsprechenden Rechte vorhanden sind um das Shellscript aufrufen oder ausführen zu dürfen.

    Schönen Abend noch

    Aldafera aka Harald
    SIP: Asterisk 14
    Dect: FrützBüx 7490
    O/S: Debain Jessie
    Automatisierung: CCU2 + CUXD + Pushover + Mail (YAHM)
    Aktoren: (bitte einfach fragen hab 250 Geräte im Einsatz)
    Anbindung Inet DynDns + VPN
    Sicherheit: Palo Alto, Fortigate, LSC ERPM
    Surveillance: Edimax, Digitus, Raspi
    Tracking: Cisco und LoraWan
    Netzwerke: CAT7 - 1Gb Uplink, FO (Multi-, Mono, POF), WLAN. Dect, BidCos, LoRa
    90% Hab ich sicher wieder vergessen - :D