NEWS
Alexa Adapter renewed (0.1.0+)
-
@Pocky:Verstehe aber auch nicht warum dafür ein eigenes Skript von Nöten ist.
Ich schalte meine Lampen auch mit Alexa, brauch dafür allerdings kein eigenes Login Skript. `
Das Skript macht mehr!!
Das Skript erlaubt bei einem Kommando über einen von mehreren Echos das Du mit "Schalte Licht ein" erkennen kannst welcher Echo das gehört hat und dann das Licht in nur diesem Raum schalten kannst. Dafür brauchst Du Sonderlogik die beim Triggern eines generischen Datenpunktes den Raum (=Seriennnummer des Echos) ermittelt und dann den wirklichen Datenpunkt triggerst
-
Ja, das habe ich da auch rausgelesen.
Ob ich nun
Licht an´ sage oder wie bei mir,
Wohnzimmerlicht an´ist mir persönlich egal.Gut, wer es braucht.
-
Ich hab damit aber meine Rollläden im ganzen Haus
Und mithilfe einer Routine in Alexa kann ich nun sagen:
Alexa, Rollladen runter
und der/die Rollläden in dem Raum, in dem die angesprochene Alexa steht, fahren runter.
Wenn es nicht ca. 10000 If verschachtelungen wären würde ich das Script umbasteln, meine Javascript Künste sind äußerst DÜNN
Grüße
P.S
Falls ein JS Guru das liest, wie ändere ich den Script, das er die Mapping Table mit einem Datenpunkt abgleicht, und nicht wie im script aus der Abfrage via Http Alexa History ?
-
-
Aktuellstes Skript ist das dort im ersten Post?
-
yo version 0.5
-
erstmal vielen Dank für all die Arbeit die du da reinsteckst. Ist ja nicht selbstverständlich
`
Mit solchem Feedback noch viel lieber
Ich versuche gerade ein sonoff inching relay einzubinden damit ich meine Garage entsprechend über IObroker steuern kann. Da es mit Tasmota auf den neuen Geräten nicht so gut klappt und der Sonoff Adapter somit nicht funktioniert, wollte ich es über den alexa Adapter machen und mir die Smarthome Geräte abfragen.
Ich habe mit dem Adapter vom SOEF rumprobiert, aber keinen Erfolg gehabt (es wurden mir letztlich keine Echo Devices angezeigt). Mit deinem geänderten Adapter habe ich zuerst das Thema captcha erhalten aber mit dem manuellen Auslesen des Tokens umgangen. Nun bekomme ich aber die Meldung Error: No JSON angezeigt. Kann dies mit GIT zu tun haben? `
Ich verstehe zwar nicht wie das genau gehen soll, aber "No JSON" sagt das auf einen der Calls kein JSON als Antwort zurückkommt sondern ein Text.Hast Du denn Echo-Geräte in deinem Amazon-Account drin? Siehst Du die per Amazon Alexa App bzw Web?
Wenn ja, dann am besten mal Logleel auf Debug und das Log schicken. Dann sehe ich bei welchem Request das passiert `
Hallo Apollon,
ja den echodot sehe ich in meiner App und auch im Netz. Hier der Auszug vom Log
Gruß
7151_screenshot_2018-07-17-19-09-27-843_com.android.chrome.png -
Auf nächste Version warten bitte
Gesendet vom Handy …
-
Kurzer Zwischenstand: Ich habe mich entschieden den Adapter grundlegen nochmal umzubauen um die "soef Library Magie" rauszubauen. Brauche daher noch etwas …
-
Hallo ,
nochmals danke für Deine Mühe !!
mfg
mikewolf
-
Da kann ich mich Mikewolf nur anschließen,
Danke für die Mühe
LG nape1
Gesendet von meinem RNE-L21 mit Tapatalk
-
Dankeschön auch von mir!
-
Grossen Dank und Anerkennung für deine Mühen @Apollon77.
Mfg Maggi
Gesendet von meinem SM-G955F mit Tapatalk
-
Adapter 0.2 ist online und funktioniert perfekt!
Vielen Dank für deine Mühen!
-
WARTEN!!!!!!!!
-
iobroker.alexa ist tod … es lebe iobroker.alexa2 ...
Weiter geht es -----> viewtopic.php?f=37&t=15547
Bitte iobroker.alexa als Instanzen und Adapter löschen und alexa2 neu installieren!
Have fun
-
TAUSEND DANK!
-
yo version 0.5 `
Ok, hier mal ein (ungetesteter Versuch) den Adapter zu nutzen.
`// 2\. Mapping-Tabelle konfigurieren // // Mapping-Tabelle der Echo-Geräte zu den Smart Home Geräten (z.B. Lampen). // Die SerialNr der Echo-Geräte sind in der Alexa-App unter // Settings->[Echo-Gerät]->Serial Number (vorletzter Eintrag) // zu finden. // // Die Object-IDs in der Aufzählung "deviceIDs" kommen aus ioBroker und können // direkt aus dem Objects-Reiter kopiert werden. // // Es können mehrere Smart Home Geräte jedem Echo zugeordnet werden. In der // Aufzählung "deviceIDs" mit Komma trennen. var mappingTable = [ { "deviceSerialNr" : "G040FL60XXXXXXXX", "deviceIDs": ["hue.0.Philips_hue.Wohnzimmer_Stehlampe.level" ] }, { "deviceSerialNr" : "G080FL20XXXXXXXX", "deviceIDs": ["hue.0.Philips_hue.Bad_Deckenlampe.level" ] } ]; // 3\. Datenpunkt konfigurieren (optional) var forecreation = false; // Wenn gewünscht, Pfad und Name nach eigenen Vorstellungen anpassen. var idAlexaTrigger = 'productive.lichtan.alexa_trigger'; // Wenn gewünscht, Name und desc für den Datenpunkt anpassen. // Außerdem kann der Smart Name im CloudAdapter angepasst werden. createState(idAlexaTrigger, 0, forecreation, { name: 'Trigger für Alexa', desc: 'Trigger mit Level für Alexa', type: 'number', unit: '', role: 'value', smartName: { de: 'Licht', en: 'Licht' } }); // 4\. Logging konfigurieren (optional) // // true schreibt in den Log, was das Script macht. var logOn = true; // Ende der Einrichtung. // Nachfolgend der eigentliche Source Code des Scripts. //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ // Funktionen function main() { var serialNumber = getState('alexa2.0.history.serialNumber').val; // durchsuche Mapping-Table und schalte die verknüpften Geräte for (var i = 0; i < mappingTable.length; i++ ) { if (mappingTable[i].deviceSerialNr === serialNumber ) { for (var j = 0; j < mappingTable[i].deviceIDs.length; j++) { if(logOn) log("Set new value for device " + mappingTable[i].deviceIDs[j]); var oldValue = "" + getState(mappingTable[i].deviceIDs[j]).val; if(logOn) log("Old Value: " + oldValue); if (oldValue === 'true' || oldValue === 'false') { var newValue = "" + getState("javascript."+instance+"."+idAlexaTrigger).val; if(logOn) log("New Value: " + newValue); if (newValue === '0') { setState(mappingTable[i].deviceIDs[j], false); } else { setState(mappingTable[i].deviceIDs[j], true); } } else { setState(mappingTable[i].deviceIDs[j], getState("javascript."+instance+"."+idAlexaTrigger)); } } } } } // Subscriptions // ----------------------------------------------------------------------------- on({id: "javascript."+instance+"."+idAlexaTrigger ,change:'any'}, function (obj) { if(logOn) log("Alexa Trigger changed: " + obj.state.val); var triggerResult = on({id: 'alexa2.0.history.creationTime', change: 'ne', ack: true}, function(data) { unsubscribe(triggerResult); triggerResult = null; main(); }); setState('alexa2.0.history.#trigger', true, false); setTimeout(function() { //Wir warten nur 5 Sekunden auf neue Daten, dann brechen wir ab if (triggerResult) { unsubscribe(triggerResult); log('No update in history'); } }, 10000); main(); });` die Logik registriert sich für Änderungen des creationTime Datenpunkts der sich ändert wenn es neue Nachrichten gab, dann triggert er die History-Abfrage. Wenn dann innerhalb von 10 Sekunden der creationTime geändert wurde dann gab es was und das kann ausgelesen werden. Versuch mal ... wenns nicht tu schick mal log wenn du für dias Skript log im javascript adapter einschaltest[/i][/i][/i][/i][/i][/i][/i]
-
javascript.0 2018-07-20 12:58:00.817 warn at Object. <anonymous>(script.js.common.RolloTEST:153:5)
javascript.0 2018-07-20 12:58:00.817 warn at main (script.js.common.RolloTEST:104:81)
javascript.0 2018-07-20 12:58:00.812 warn getState "alexa2.0.history.serialNumber" not found (3)
In dem Datenpunkt steht ja auch nichts
muss da nicht vorher der update Trigger ausgelöst werden ?? oder bin ich blind
Grüße
P.S
Wenn ich z.b im Schlafzimmer LICHT an sage geht ja auch mein Licht an (hat null mit dem script zu tun).
Und wenn ich nun update trigger drücke vom Alexa2 adapter unter History erscheint nichts,
Ist doch nicht normal oder ?^^</anonymous>
-
Du solltest vorher den Alexa2-Adapter installieren
oder falls Du noch "alexa" Adapter hast dann ändere die Datenpunkte in alexa.0