Ankündigung

Einklappen
Keine Ankündigung bisher.

Umfrage: Amazon Echo

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

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

    Kommentar


      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
      Sonos

      Kommentar


        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?

        Kommentar


          Ja ich habe mich da wohl getäuscht.

          Kommentar


            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.

            Kommentar


              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.

              Kommentar


                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.

                Kommentar


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

                  Kommentar


                    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 "" ""

                    Kommentar


                      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.

                      Kommentar


                        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.

                        Kommentar


                          readme-real-life example & int-cast ist gepushed

                          Kommentar


                            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.

                            Kommentar


                              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.

                              Kommentar


                                Zitat von hotzen Beitrag anzeigen
                                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 "" ""
                                Ja das habe ich auch gesehen, aber nur wenn man mit der alexa.amazon.de im browser ein discovery durchführt. Bittest du Alexa sprachlich um eine Gerätesuche bekommst du nur einen Request. Gleiches gilt für den Test aus der aws Konsole.

                                Kommentar

                                Lädt...
                                X