Genau bei der kommt die Fehlermeldung
Gesendet von iPhone mit Tapatalk
Genau bei der kommt die Fehlermeldung
Gesendet von iPhone mit Tapatalk
wer noch die Temperatur über den Skill einbinden möchte…
In der Lambda Funktion noch die Erweiterung
Dann noch in der discover die folgende Action hinzufügen
Danach kann der Skill auch mit dem folgenden Befehl umgehen
Alexa, stelle „Raumname“ auf „Anzahl“ Grad
Wäre es möglich deinen Code nicht per Screenshot mit uns zu teilen, sondern hier zu posten. liebfrag
Blicke bei der Discover nicht ganz durch da diese bei mir ganz anders aussieht.
Gruß
Heute ist die Closed Beta angelaufen
Amazon Echo Skill & Modul
Es wird sich also hoffentlich nicht mehr ewig hinziehen im Laufe des Januars könnte das Modul vielleicht freigeben werden.
Bei mir hat sich beim Copy & Paste ein Einrückfehler in der Python Funktion eingeschlichen. Schau mal in der Lambda Funktion, ob da der Code am Ende richtig eingerückt ist. Python ist da empfindlich
Grüße,
Christoph
so nun die Lambda Funktion als Text. Noch etwas abgeändert, so dass Alexa den eingestellten Temperaturwert zurückliefert. Den geänderten Source habe ich in Fett markiert
import logging
import urllib2
import json
########################################
########################################
myips = „xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx“
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
access_token = event[‚payload‘][‚accessToken‘]
if event['header']['namespace'] == 'Alexa.ConnectedHome.Discovery':
return handleDiscovery(context, event)
elif event['header']['namespace'] == 'Alexa.ConnectedHome.Control':
return handleControl(context, event)
def handleDiscovery(context, event):
logger.info(‚handleDiscovery‘)
payload = ‚‘
header = {
„namespace“: „Alexa.ConnectedHome.Discovery“,
„name“: „DiscoverAppliancesResponse“,
„payloadVersion“: „2“
}
if event['header']['name'] == 'DiscoverAppliancesRequest':
devices = urllib2.urlopen("https://"+myips+".ipmagic.de/hook/alexa/discover").read()
payload = { "discoveredAppliances":
json.loads(devices)
}
return { 'header': header, 'payload': payload }
def handleControl(context, event):
payload = {}
device_id = event[‚payload‘][‚appliance‘][‚applianceId‘]
message_id = event[‚header‘][‚messageId‘]
request_type = event[‚header‘][‚name‘]
logger.info(event['header']['name'] + ": " + device_id)
logger.info(event)
confirmation = ''
if request_type == 'TurnOnRequest':
#payload = { }
value = 100;
confirmation = 'TurnOnConfirmation'
elif request_type == 'TurnOffRequest':
#payload = { }
value = 0;
confirmation = 'TurnOffConfirmation'
elif request_type == 'SetPercentageRequest':
value = event['payload']['percentageState']['value']
logger.info('SetPercentageRequest ' + str(value))
confirmation = 'SetPercentageConfirmation'
[b]elif request_type == 'SetTargetTemperatureRequest':
value = event['payload']['targetTemperature']['value']
payload = {"targetTemperature":{
"value":value}
}
logger.info('SetTargetTemperatureRequest ' + str(value))
confirmation = 'SetTargetTemperatureConfirmation'
logger.info('foo')[/b]
urllib2.urlopen("https://"+myips+".ipmagic.de/hook/alexa/control/dimm?id="+device_id+"&value="+str(value)).read()
logger.info('-->' + confirmation)
header = {
"namespace":"Alexa.ConnectedHome.Control",
"name":confirmation,
"payloadVersion":"2",
"messageId": message_id
}
return { 'header': header, 'payload': payload }
die zusätzliche Action kannst du einfach bei den anderen mit einfügen. Ich selber hatte den Source so verändert, dass ich nur die Actions sende, die auch zu dem Gerät passen.
Vielen Dank für die Info. Ich werde auf das Modul warten.
LG,
Hugo
Gesendet von iPhone mit Tapatalk
Vielen Dank. Ich werde auch erst mit dem Modul einsteigen. Der Threat hier ist gut aber zum Einsteigen vielleicht schon zu komplex.
Habe noch andere kleinere Projekte im Visier.
Ich habe deinen Code mal in Tags gesetzt. Ist leichter lesbar.
import logging
import urllib2
import json
########################################
# Enter here your IP Symcon Connect ID #
########################################
myips = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
access_token = event['payload']['accessToken']
if event['header']['namespace'] == 'Alexa.ConnectedHome.Discovery':
return handleDiscovery(context, event)
elif event['header']['namespace'] == 'Alexa.ConnectedHome.Control':
return handleControl(context, event)
def handleDiscovery(context, event):
logger.info('handleDiscovery')
payload = ''
header = {
"namespace": "Alexa.ConnectedHome.Discovery",
"name": "DiscoverAppliancesResponse",
"payloadVersion": "2"
}
if event['header']['name'] == 'DiscoverAppliancesRequest':
devices = urllib2.urlopen("https://"+myips+".ipmagic.de/hook/alexa/discover").read()
payload = { "discoveredAppliances":
json.loads(devices)
}
return { 'header': header, 'payload': payload }
def handleControl(context, event):
payload = {}
device_id = event['payload']['appliance']['applianceId']
message_id = event['header']['messageId']
request_type = event['header']['name']
logger.info(event['header']['name'] + ": " + device_id)
logger.info(event)
confirmation = ''
if request_type == 'TurnOnRequest':
#payload = { }
value = 100;
confirmation = 'TurnOnConfirmation'
elif request_type == 'TurnOffRequest':
#payload = { }
value = 0;
confirmation = 'TurnOffConfirmation'
elif request_type == 'SetPercentageRequest':
value = event['payload']['percentageState']['value']
logger.info('SetPercentageRequest ' + str(value))
confirmation = 'SetPercentageConfirmation'
elif request_type == 'SetTargetTemperatureRequest':
value = event['payload']['targetTemperature']['value']
payload = {"targetTemperature":{
"value":value}
}
logger.info('SetTargetTemperatureRequest ' + str(value))
confirmation = 'SetTargetTemperatureConfirmation'
logger.info('foo')
urllib2.urlopen("https://"+myips+".ipmagic.de/hook/alexa/control/dimm?id="+device_id+"&value="+str(value)).read()
logger.info('-->' + confirmation)
header = {
"namespace":"Alexa.ConnectedHome.Control",
"name":confirmation,
"payloadVersion":"2",
"messageId": message_id
}
return { 'header': header, 'payload': payload }
Hi Rainer,
vielen Dank, sieht deutlich besser aus
Vielleicht kann @mulder die Änderung ja mit in GIT aufnehmen.
Gruß
Georg
Ich versuch gerade (nach einer Pause) die Skripte von 1007 zum Laufen zu bringen. Irgendwie fehlt mir da der include file Funcpool.ips.php. Jedenfalls bekomme ich folgende Fehlermeldung:
12/25/2016 22:15:52*| PHP*| Error: Error: Uncaught exception 'Exception' with message 'script Funcpool.ips.php could NOT be found!' in /var/lib/symcon/scripts/IPSLibrary/app/core/IPSUtils/IPSUtils.inc.php:38
Stack trace:
#0 /var/lib/symcon/scripts/AmazonEcho_Tobias_schalte.ips.php(18): IPSUtils_Include('Funcpool.ips.ph...')
#1 /var/lib/symcon/scripts/AmazonEcho_Tobias.ips.php(104): include('/var/lib/symcon...')
#2 {main}
...
Wo finde ich den?
Danke
gros_ibou
Is die nicht auf Github ? Ist nur fuer WakeOnLan.
Kannst auch den include rausnehmen.
Danke. Mach ich morgen.
Gesendet von iPad mit Tapatalk
Mal eine Frage an 1007: Ist die Installation der IPS-Library Voraussetzung für dein Script?
Ich habe die nämlich nicht installiert und bekomme auch so eine Fehlermeldung
IPSUtils_Include…
Ja.
Aber hier gibt es dann ein fertiges Modul von DaveRichter
https://www.symcon.de/forum/threads/33487-Amazon-Echo-Skill-Modul
Hallo zusammen
Ich bin am Ende. Also mit meinem Latein Ich habe die Implementation von Mulder gewählt und soweit (nach bestem Wissen und Gewissen) alles erstellt und eingerichtet. Leider kommen keine Geräte wenn ich die Suche starte (das Skill konnte ich aber verbinden). Die Lambda-Funktion als Test im Lambda-Manager gestartet funktioniert aber und beim Discover kommt auch das eine Gerät zurück welches ich eingerichtet habe. Trigger ist ebenfalls aktiviert. Ich habe keine Ahnung mehr was noch falsch sein könnte. Es sieht eigentlich gleich aus wie das Problem von DerStandart. Ich habe aber auch schon alles gelöscht und neu hinzugefügt, geht immer noch nicht. D.h. es ist entweder ein ganz dummer oder ein ganz fieser Fehler
Kommt es auf die Reihenfolge bei einrichten an (Lambda-Funktion, Skill). Habt ihr ein Security-Profil eingerichtet? Falls nein, was füllt ihr beim Client Secret ein?
Hoffe es kann jemand helfen
Oliver
Ich vermute, dass der Fehler bei mir im Bereich des IAM war …
Hmm ok. Die Policy ist aber nur damit die Log-Daten geschrieben werden können. Und die sehe ich, mindestens wenn ich den Lambda Test ausführe. Oder irre ich mich da?
Was kommt bei dir wenn du bei der Policy in der Rolle auf „Simulate Policy“ gehst und dann dort Service–>Lambda, Select all und dann Run Simulation machst?
„Denied. Implicity denied“
Bin mir aber gerade nicht sicher, ob ich an der Stelle bin, die Du meinst.