Ankündigung

Einklappen
Keine Ankündigung bisher.

Umfrage: Amazon Echo

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • psilo
    antwortet
    YES... im alexa habe ich nun cherrypy.tree.mount(self, '/test') stehen.

    ein aufruf im browser ergibt zwar einen 500er, es sieht aber nach eurer alexa schnittstelle aus:
    Code:
    Traceback (most recent call last):
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/_cprequest.py", line 670, in respond
        response.body = self.handler()
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/lib/encoding.py", line 220, in __call__
        self.body = self.oldhandler(*args, **kwargs)
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/lib/jsontools.py", line 61, in json_handler
        value = cherrypy.serving.request._json_inner_handler(*args, **kwargs)
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/_cpdispatch.py", line 60, in __call__
        return self.callable(*self.args, **self.kwargs)
      File "/volume1/python/smarthome/plugins/alexa/service.py", line 35, in index
        req = cherrypy.request.json
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/__init__.py", line 232, in __getattr__
        return getattr(child, name)
    AttributeError: 'Request' object has no attribute 'json'
    damit sollte das problem gelöst sein. habt ihr ein problem, wenn alexa auf "/alexa" und nicht auf "/" hört? oder das wir das konfigurierbar machen?

    hotzen baust du das plugin um?

    update: der einzige mist ist, dass auf beiden ports jetzt beide anwendungen reagieren. und die basic auth vom backend zieht auch. wenn man das noch instanzabhaengig kriegt, wärs perfekt. aber wenigstens könnte man beide plugins parallel betreiben

    das dürfte den aktuellen stand zusammenfassen: http://stackoverflow.com/questions/7...multiple-ports
    Zuletzt geändert von psilo; 03.12.2016, 18:41.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    hotzen dann geht das mit dem requirements file doch sicher auch gleich noch ich schaue jetzt mal, wie man das mit dem tree mount bei multiinstanz cherrypy macht. denke da hakt es noch. laut log müssten beide instanzen aber sauber hochfahren. seltsam halt, dass der webspace auf beiden ports der vom backend ist

    PS: pushe gerade das gepatchte backend in den DEV. dann könnt ihr leichter mithelfen das hinzubekommen.

    Einen Kommentar schreiben:


  • hotzen
    antwortet
    readme-real-life example & int-cast ist gepushed

    Einen Kommentar schreiben:


  • psilo
    antwortet
    es wird besser:


    2016-12-03 18:10:33 DEBUG plugin Main Starting BackendServer Plugin -- plugin.py:start:102
    [03/Dec/2016:18:10:33] ENGINE Serving on http://192.168.178.100:9000
    2016-12-03 18:10:33 INFO _cplogging alexa [03/Dec/2016:18:10:33] ENGINE Serving on http://192.168.178.100:9000 -- _cplogging.py:error:219
    [03/Dec/2016:18:10:33] ENGINE Serving on http://192.168.178.100:1234

    Code:
    from cherrypy._cpserver import Server
    self.server = Server()
    self.server.socket_host = host
    self.server.socket_port = int(port)
    self.server.subscribe()
    Code:
    def start(self):
        self.logger.info("Alexa: service starting")
        self.server.start()
    
    def stop(self):
        self.logger.info("Alexa: service stopping")
        self.server.stop()
    trotzdem aktuell noch auf beiden ports der webspace vom backend zu sehen - das müssen wir noch rauskriegen.. spannend wäre, ob eure requests so noch gehen würden, wenn beide plugins aktiv sind. vielleicht verschmelzen beide webspaces.

    starten und stoppen geht sauber, das backend habe ich genauso umgebaut.
    Zuletzt geändert von psilo; 03.12.2016, 18:17.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    hier auch nochmal aus der doku: http://docs.cherrypy.org/en/latest/a...ervers-support

    wenn wir jetzt noch wüssten, in welcher reihenfolge die plugins geladen werden und wir nur am ende ein start machen könnten...

    achja bei konfiguriertem Port kriege ich noch ein: TypeError: an integer is required (got type str)

    bitte daher noch in int casten.

    ps ich schaffe jetzt auf 2 ports zu starten. leider 2x den backendserver:

    2016-12-03 18:00:08 INFO _cplogging BackendServer [03/Dec/2016:18:00:08] ENGINE Serving on http://192.168.178.100:1234 -- _cplogging.py:error:219
    [03/Dec/2016:18:00:08] ENGINE Serving on http://192.168.178.100:9000
    2016-12-03 18:00:08 INFO _cplogging BackendServer [03/Dec/2016:18:00:08] ENGINE Serving on http://192.168.178.100:9000 -- _cplogging.py:error:219
    [03/Dec/2016:18:00:08] ENGINE Bus STARTED

    code ist
    Code:
    self.logger.info("Alexa: service setup at {}:{}".format(host, port))
    
    from cherrypy._cpserver import Server
    server = Server()
    server.socket_host = host
    server.socket_port = int(port)
    server.subscribe()
    was jetzt zickt dürfte das
    cherrypy.tree.mount
    sein

    in der start methode habe ich das start auskommentiert und nur im backend drin gelassen:
    #cherrypy.engine.start()

    PS: ich bin mir fast sicher, dass man das mit änderungen in beiden plugins hinbekommt..
    Zuletzt geändert von psilo; 03.12.2016, 18:07.

    Einen Kommentar schreiben:


  • hotzen
    antwortet
    btw patrickgoll , hast du bei discovery auch mehrere discovery requests? das ist ja das reinste DOS:
    Code:
    2016-12-03  17:35:19 DEBUG    CP Server Thread-11 Alexa: discovery-directive 'DiscoverAppliancesRequest' received
    2016-12-03  17:35:19 INFO     CP Server Thread-11 192.168.16.8 - - [03/Dec/2016:17:35:19] "POST / HTTP/1.0" 200 1214 "" ""
    2016-12-03  17:35:19 DEBUG    CP Server Thread-12 Alexa: discovery-directive 'DiscoverAppliancesRequest' received
    2016-12-03  17:35:19 INFO     CP Server Thread-12 192.168.16.8 - - [03/Dec/2016:17:35:19] "POST / HTTP/1.0" 200 1214 "" ""
    2016-12-03  17:35:19 DEBUG    CP Server Thread-13 Alexa: discovery-directive 'DiscoverAppliancesRequest' received
    2016-12-03  17:35:19 INFO     CP Server Thread-13 192.168.16.8 - - [03/Dec/2016:17:35:19] "POST / HTTP/1.0" 200 1214 "" ""
    2016-12-03  17:35:20 DEBUG    CP Server Thread-14 Alexa: discovery-directive 'DiscoverAppliancesRequest' received
    2016-12-03  17:35:20 INFO     CP Server Thread-14 192.168.16.8 - - [03/Dec/2016:17:35:20] "POST / HTTP/1.0" 200 1214 "" ""

    Einen Kommentar schreiben:


  • hotzen
    antwortet
    das ist doch schonmal ne aussage. ich schaue mal ob es möglichkeiten gibt cherrypy auch ohne globalen engine-foo zu verwenden

    Einen Kommentar schreiben:


  • mode
    antwortet
    Ich denke du hast recht und das zweite .start() ist schuld. Es versucht den bereits konfigurierten und gestarteten Dienst auf 1234 nochmals zu starten. Das fällt dann auf die Nase.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Grundlegend kann man wohl schon mehrere Serverinstanzen starten: http://www.zacwitte.com/running-cher...-ports-example. bisher schlagen meine Versuche aber fehl.. Mglw. ist das Problem eben auch, dass wir 2mal cherrypy.engine.start() machen... das anders zu machen sollte bei der aktuellen architektur aber so gut wie unmöglich werden.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    ok das erste "alexa_actions = turnOn turnOff" und es kracht. seltsam ist, dass er jetzt über den vom backend belegten port 1234 meckert, dabei habe ich port 9000 für alexa konfiguriert..
    Code:
    [03/Dec/2016:16:39:12] ENGINE Error in 'start' listener <bound method Server.start of <cherrypy._cpserver.Server object at 0x7fd8b3cfecc0>>
    Traceback (most recent call last):
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/process/wspbus.py", line 207, in publish
        output.append(listener(*args, **kwargs))
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/_cpserver.py", line 168, in start
        ServerAdapter.start(self)
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/process/servers.py", line 172, in start
        wait_for_free_port(*self.bind_addr)
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/process/servers.py", line 443, in wait_for_free_port
        raise IOError('Port %r not free on %r' % (port, host))
    OSError: Port 1234 not free on '192.168.178.100'
    
    2016-12-03 16:39:12 ERROR    _cplogging   BackendServer [03/Dec/2016:16:39:12] ENGINE Error in 'start' listener <bound method Server.start of <cherrypy._cpserver.Server object at 0x7fd8b3cfecc0>>
    Traceback (most recent call last):
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/process/wspbus.py", line 207, in publish
        output.append(listener(*args, **kwargs))
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/_cpserver.py", line 168, in start
        ServerAdapter.start(self)
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/process/servers.py", line 172, in start
        wait_for_free_port(*self.bind_addr)
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/process/servers.py", line 443, in wait_for_free_port
        raise IOError('Port %r not free on %r' % (port, host))
    OSError: Port 1234 not free on '192.168.178.100'
     -- _cplogging.py:error:219
    [03/Dec/2016:16:39:12] ENGINE Shutting down due to error in start listener:
    Traceback (most recent call last):
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/process/wspbus.py", line 245, in start
        self.publish('start')
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/process/wspbus.py", line 225, in publish
        raise exc
    cherrypy.process.wspbus.ChannelFailures: OSError("Port 1234 not free on '192.168.178.100'",)
    
    2016-12-03 16:39:12 ERROR    _cplogging   BackendServer [03/Dec/2016:16:39:12] ENGINE Shutting down due to error in start listener:
    Traceback (most recent call last):
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/process/wspbus.py", line 245, in start
        self.publish('start')
      File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/cherrypy/process/wspbus.py", line 225, in publish
        raise exc
    cherrypy.process.wspbus.ChannelFailures: OSError("Port 1234 not free on '192.168.178.100'",)
     -- _cplogging.py:error:219
    update: fehler bleibt auch nach dem entfernen aus dem item bestehen. offenbar lässt cherrypy aktuell die neukonfiguration von alexa auf dem neuen port nicht zu.. ich schaue aber mal tiefer rein.

    2016-12-03 16:43:18 INFO _cplogging alexa [03/Dec/2016:16:43:18] ENGINE Serving on http://192.168.178.100:1234 -- _cplogging.py:error:219
    Zuletzt geändert von psilo; 03.12.2016, 16:58.

    Einen Kommentar schreiben:


  • patrickgoll
    antwortet
    Ja ich habe mich da wohl getäuscht.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    patrickgoll so wieder am pc.. sag mal: du hattest anfangs doch mal gemeint, dass man die transkription bekommen und die sh requests innerhalb des lokalen netzwerks lassen kann. das geht dann wohl doch nicht, oder? das muss zwingend von amazon ausgehen?

    Einen Kommentar schreiben:


  • pfischi
    antwortet
    Um das auch nochmal von meiner Seite klarzustellen: cherrypy kann gerne genutzt werden und sollte auch Basis für das erste Release sein. Die Abhängiigkeit rauszubekommen steht erstmal hinten an, kann aber doch diskutiert werden. Und natürlich ist CherryPy bloated, ein Blick in die Cherrypy API reicht

    Gruss,

    Stefan

    Einen Kommentar schreiben:


  • patrickgoll
    antwortet
    Schmeiß doch einfach mal ein Item rein. Das haste ja mit 3 Zeilen drin und starte den service mal durch.

    Einen Kommentar schreiben:


  • psilo
    antwortet
    hmm das setzt jetzt schon mal items voraus.. also muss ich doch anfangen das ding einzurichten. beide plugins gehen hier wie gesagt fehlerfrei, alexa startet laut log auch... ich dusche schnell, danach lege ich mal items an

    Einen Kommentar schreiben:

Lädt...
X