Hallo alle miteinander,
ein blutiger Anfänger winselt um Hilfe!
Auf meine alten Tage kam ich auf die seltsame Idee, mit dem Programmieren anzufangen; und zwar in Python.
Da ich einen recht gut funktionierenden Raspberry Pi mit einem stabil laufenden Pimatic-System und darüberhinaus einen Amazon Dot hier stehen habe, dachte ich mir, man könne Alexa auch dazu bringen, in pimatic integrierte Sensoren auslesen und dann die ermittelten Informationen ansagen zu lassen.
Also nach dem Motto: “Alexa, sage zimmertemperatur im Wohnzimmer.” Woraufhin der entsprechende DS18B20-Temperatursensor abgefragt und die Temperatur dann von der netten Dame Alexa ausgequatscht werden soll.
Das Auslesen der Werte über z.B. http://192.168.178.xxx/api/variables/wohnzimmer.temperature klappte lokal mit einer Python-Funktion schon mal ganz gut.
Also richtete ich mir nach der Anleitung auf pimatic.org eine gesicherte SSL-Verbindung ein, sorgte für eine Portfreigabe in meiner Fritzbox für den Port 443 und nutzte meine MyFritz-Adresse für den Zugriff auf die pimatic-API.
Versuche ich nun das Auslesen über https://xxx.myfritz.net/api/variables/wohnzimmer.temperature nach dem Hochladen der Skill in die Amazon-Welt, bekomme ich die Fehlermeldung “There was an error calling the remote endpoint, which returned HTTP 500 : Internal Server Error”.
Hier mal der (sicher umständlich zusammengehackte) Sourcecode der Zugriffsfunktion:
def getTemperature(sensorID):
buffer = StringIO()
url = 'https://xxx.myfritz.net/api/variables/' + sensorID
c = pycurl.Curl()
c.setopt(c.URL, url)
c.setopt(pycurl.USERPWD, "%s:%s" % ('Username', 'myPassword'))
c.setopt(c.WRITEDATA, buffer)
c.perform()
c.close
pimaticJSON = json.loads(buffer.getvalue())
return pimaticJSON['variable']['value']
Ich vermute, ich kapiere den Umgang mit den SSL-Zertifikaten nicht so richtig, die ich im Development-Bereich von Amazon bei der Konfiguration der Skill hochladen kann - und ich vermute, ich muss ein Zertifikat einrichten?
Nutze ich das erstellte “public certificate ca/pimatic-ssl/public/cert.pem” aus pimatic, bekomme ich eine Fehlermeldung
Nutze ich ein selbst erstelltes x509-Zertikat nach dem Rezept auf
https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/testing-an-alexa-skill#h2_sslcert
bekomme ich ebenso eine Fehlermeldung.
Alexa will einfach nix mit meinem pimatic zu tun haben schnief (wobei das Auslesen der Sensorenwerte sicher auch ohne pimatic gehen würde, das Problem, Alexa Zugriff auf den Pi zu geben, aber weiterhin für mich bestehen bleibt).
Wisst ihr Rat und könnt einem unwissenden Idioten wie mir Step-by-Step mit einfachen Worten unter die Arme greifen, damit es mir gelingt, dass Alexa mit einer in Python (und mit Hilfe des Frameworks Flask-Ask) geschriebenen Skill auf mein Pimatic zugreifen kann? Hochgeladen wird die Skill übrigens nach dieser Anleitung:
https://developer.amazon.com/de/blogs/post/8e8ad73a-99e9-4c0f-a7b3-60f92287b0bf/new-alexa-tutorial-deploy-flask-ask-skills-to-aws-lambda-with-zappa
Vielen Dank im Voraus für eure Hilfe!
Gruß,
Alter_Knochen