NEWS
Script "LichtAn": Erkennt von welchem Echo-Gerät Befehl kommt
-
Update
Mittlerweile hat es Amazon hinbekommen, dass das Licht je Raum (bzw. Echo-Gerät) gesteuert werden kann. Dazu muss man in der App Gruppen anlegen und dann die Echo-Geräte und Lampen in die Gruppe einfügen, die zusammen geschaltet werden sollen. Insofern ist das untenaufgeführte Script für das Thema Licht schalten nur noch in Randfällen nötig (z.B. Schalter, die Alexa nicht als Lampe gemeldet werden), oder wenn man das Lichtschalten um eigene Funktionen erweitern möchte.
Darüber hinaus kann das Script aber angepasst werden, so dass es Geräte pro Raum steuert, die Amazon bisher noch nicht implementiert hat: Fernseher, Thermostate, Rolladen, Sensoren uvm.
Dafür muss in der Konfiguration im 3. Punkt der SmartName entsprechend angepasst werden (z.B. "Licht" -> "Fernseher").
Original:
Hallo zusammen,
ich bin neu hier im Forum und auch neu beim ganzen Thema Haussteuerung
Seit ein paar Tagen habe ich mehrere Echo Dots; außerdem habe ich Fire TV, Harmony, Hue Lampen und vieles mehr an Technikspielzeug. Aber bisher alles einzeln verwendet. Um diesen Fuhrpark nach und nach steuern/verbinden zu können, habe ich mir ioBroker auf einem Pi installiert.
Die erste Sache, die mir vorschwebte, ist Licht in jedem Raum direkt schalten/dimmen zu können ("Licht An!"). In der Standardkonfiguration kann Alexa das leider nicht (trotz Smart Groups, geht es bei mir nicht). Man muss immer den Raum dazusagen, was auf die Dauer nervig ist.
Also habe ich mir die APIs angeschaut, ob es eine Möglichkeit gibt, zu erfahren, welches Echo-Gerät angesprochen wurde. Zum Glück hat Amazon diese Funktion in Form der History. Noch bevor Alexa eine Antwort gibt, steht der History-Eintrag der Anfrage über die API zur Verfügung. Man kann ihn also auslesen, wenn in ioBroker das Event ausgelöst wird. Das Event ist das Ändern eines Datenpunkt durch Alexa (in meinem Fall "Licht"). Dazu später mehr.
Update: Das Script verwendet jetzt in der zweiten Version mein AlexaLogOn Script, womit das Cookie automatisch heruntergeladen werden kann. Das LogOn-Script findet ihr hier: http://forum.iobroker.net/viewtopic.php?f=37&t=9237. Außerdem habe ich jetzt verschiedenes weiteres Feedback eingebaut. Zum einen wird jetzt auch automatisch das Smart-Gerät "Licht" im Cloud Adapter angelegt, zum anderen unterstützt das Script jetzt auch Switch-States, also Geräte, die nur die Werte true/false haben.
Hier der Code:
! ```
`//------------------------------------------------------------------------------
// LichtAn
//------------------------------------------------------------------------------
// Dieses Script ermöglicht es für Sprachbefehle (wie "Licht an!") zu ermitteln,
// welches Echo-Gerät angesprochen wurde, und dann nur die Smart Home Geräte
// (z.B. Lampen) zu aktivieren, die im Script für dieses Echo-Gerät hinterlegt
// sind. Eine Angabe des Raumes (wie "Licht an im Wohnzimmer!") ist mit dem
// Script nicht mehr notwendig.
//
// Skript arbeitet unabhängig vom Cloud Adapter.
//
// Version: v0.5
// Feedback: http://forum.iobroker.net/viewtopic.php?f=37&t=9115
! //------------------------------------------------------------------------------
// Changelog:
// v0.5: Unterstützung von Switch-States (true/false)
// v0.4: Automatisches Anlegen des Smart-Gerät im Cloud Adapter
// v0.3: Einsatz des require modules
// v0.2: Nutze Datenpunkt von AlexaLogOn-Script für Cookie
// v0.1: initialer Release
! //------------------------------------------------------------------------------
// Einrichtung:
// 1. Starte AlexaLogOn-Script, um LogOn-Cookie zu erhalten.
//
// http://forum.iobroker.net/viewtopic.php?f=37&t=9237
//
! var cookie = getState('productive.alexalogon.cookie').val;
cookie = cookie.replace(/\/g, "");
! // 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.
//------------------------------------------------------------------------------
! //------------------------------------------------------------------------------
// Global Variables
! var request = require('request');
! //------------------------------------------------------------------------------
// Funktionen
! function main() {var options = { url : "https://layla.amazon.de/api/activities?startTime=&size=1&offset=1", method : "GET", headers : { 'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36', 'Content-Type': 'text/plain', 'Accept-Language': 'de,en', 'DNT' : '1', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests' : '1', 'Referer' : 'https://layla.amazon.de/spa/index.html/', 'Cookie' : cookie } };
! request.get(options, function(err, res, body){
// durchsuche Mapping-Table und schalte die verknüpften Geräte for (var i = 0; i < mappingTable.length; i++ ) { if (body.indexOf(mappingTable[i].deviceSerialNr) != -1 ) { 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);
main();
});`
! Desweiteren muss man die Verknüpfung von Echo-Gerät und Smart Home Gerät hinterlegen. Sprich, welcher Echo schaltet welche Geräte. Das passiert auch direkt am Anfang des Scripts im Bereich Einrichtung (Punkt 2). Diese Konfiguration könnte man auch automatisch aus den Smart Groups auslesen, was ich bei Interesse noch einbauen könnte. Habe ich jetzt aber erstmal weggelassen.
! Es wird automatisch ein Datenpunkt "Trigger für Alexa" erstellt. Dieser kann beliebig benannt werden. Dieser Datenpunkt wird dann über den Cloud-Adapter für Alexa sichtbar gemacht werden. Der Name dort wird automatisch "Licht" genannt. Sage ich also "Alexa, Licht an!", dann wird der Datenpunkt in ioBroker auf den Wert 100 gesetzt. Durch die Subscription auf diesen Datenpunkt, wird das Script gestartet (oder eigentlich die Funktion im Script; das script muss natürlich in der Script-Verwaltung von ioBroker vorher gestartet worden sein).
! Das Script liest die History von Alexa aus und kann über die SerialNr des Echos erkennen, welcher angesprochen wurde. Dann muss nur noch in der Mapping-Tabelle nachgeschaut werden, welche Geräte an/ausgeschaltet werden sollen.
! Für die Lampen habe ich den Statuswert "level" verwendet, um auch dimmen zu können. Sage ich "Licht an" sendet Alexa 100, aus ist 0, ich kann aber auch Prozentzahlen hinzufügen: "stell das Licht auf 50%". Außerdem geht so auch noch "heller"/"dunkler". Insgesamt also genauso, wie ich mir es vorstelle.
! Wie ich anfangs schon geschrieben habe, bin ich noch neu in dem ganzen Thema. Was mir zum Beispiel noch nicht ganz klar ist, wie ioBroker mit den subscription umgeht bzw. wie lange das Script läuft. Ich frage mich, ob ich noch irgendwas anderes tun muss, als es zu starten und dann läuft es für immer? Oder muss ich mit der letzten Zeile im Script Timeouts festlegen und dann per cron wieder neu starten? Würd mich freuen, wenn die Fragen jemand beantworten würde.
! Abschließend noch einige Danksagungen. Habe hier im Forum gestern Abend zwei Threads im besonderen hoch und runter gelesen und Code/Struktur/etc in mein Script übernommen:
! http://forum.iobroker.net/viewtopic.php?f=37&t=6035 (Script zum Steuern von Echos von rohr70)
! http://forum.iobroker.net/viewtopic.php?f=37&t=5943 (Script Template auch von rohr70)
! Falls ihr auch mehrere Echos habt, und eine solche Steuerung pro Raum haben wollt, die im Moment mit Smart Groups nicht funktioniert, probiert das Script einfach mal aus.
! Freue mich auf Euer Feedback und Anregungen![/i][/i][/i][/i][/i][/i][/i] -
Hallo zusammen,
ich bin neu hier im Forum und auch neu beim ganzen Thema Haussteuerung
Seit ein paar Tagen habe ich mehrere Echo Dots; außerdem habe ich Fire TV, Harmony, Hue Lampen und vieles mehr an Technikspielzeug. Aber bisher alles einzeln verwendet. Um diesen Fuhrpark nach und nach steuern/verbinden zu können, habe ich mir ioBroker auf einem Pi installiert.
Die erste Sache, die mir vorschwebte, ist Licht in jedem Raum direkt schalten/dimmen zu können ("Licht An!"). In der Standardkonfiguration kann Alexa das leider nicht (trotz Smart Groups, geht es bei mir nicht). Man muss immer den Raum dazusagen, was auf die Dauer nervig ist.
Also habe ich mir die APIs angeschaut, ob es eine Möglichkeit gibt, zu erfahren, welches Echo-Gerät angesprochen wurde. Zum Glück hat Amazon diese Funktion in Form der History. Noch bevor Alexa eine Antwort gibt, steht der History-Eintrag der Anfrage über die API zur Verfügung. Man kann ihn also auslesen, wenn in ioBroker das Event ausgelöst wird. Das Event ist das Ändern eines Datenpunkt durch Alexa (in meinem Fall "Licht"). Dazu später mehr.
Hier erstmal der Code:
! ```
`//------------------------------------------------------------------------------
// LichtAn
//------------------------------------------------------------------------------
// Dieses Script ermöglicht es für Sprachbefehle (wie "Licht an!") zu ermitteln,
// welches Echo-Gerät angesprochen wurde, und dann nur die Smart Home Geräte
// (z.B. Lampen) zu aktivieren, die im Script für dieses Echo-Gerät hinterlegt
// sind. Eine Angabe des Raumes (wie "Licht an im Wohnzimmer!") ist mit dem
// Script nicht mehr notwendig.
//
// Skript arbeitet unabhängig vom Cloud Adapter.
//
// Version: v0.1
! //------------------------------------------------------------------------------
// Changelog:
// v0.1: initialer Release
! //------------------------------------------------------------------------------
// Einrichtung:
// 1. cURL extrahieren, siehe
// https://www.gehrig.info/alexa/Alexa.html
//
! var csrf = 'xxxxxxxx';
! var cookie = 'x-amzn-dat- xxxxxxxxxxxxxx';
! // 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)
//
// Wenn gewünscht, Pfad und Name nach eigenen Vorstellungen anpassen.
var idAlexaTrigger = 'productive.lichtan.alexa_trigger';
! // Wenn gewünscht, Name und Beschreibung (desc) für den Datenpunkt anpassen.
createState(idAlexaTrigger, 0, forecreation, {
name: 'Trigger für Alexa',
desc: 'Trigger mit Level für Alexa',
type: 'number',
unit: '',
role: 'value'
});
! // Ende der Einrichtung.
// Nachfolgend der eigentliche Source Code des Scripts.
//------------------------------------------------------------------------------
! //------------------------------------------------------------------------------
// Global Variables
! var logOn = true;
var forecreation = false;
! // Node Module https verwenden
var https = require('https');
! // OPTIONAL: regelmässige Wiederholungen der Abfrage
// var cronStr = "* */6 * * *";
! //------------------------------------------------------------------------------
// Funktionen
! // setzt die Options für den https Request
function setOptions(path,method) {
var options = {
host: 'layla.amazon.de',
path: path,
method: method,
timeout:10000,
headers: {
'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
'Content-Type': 'text/plain',
'csrf' : csrf,
'Cookie' : cookie
}
};
return options;
}
! // führe den https Request aus und starte callback für Verarbeitung
function httpsReqGet(path,callback) {
if(logOn) log("Request " + path + " sent.");
options = setOptions(path,"GET");
var req = https.get(options, function getDevices(res) {
if(logOn) log('HEADERS: ' + JSON.stringify(res.headers));
// Buffer the body entirely for processing as a whole.
var body = "";
! res.on('data', function(chunk) {
body += chunk;
! });res.on('end', function() { if(!body) log("No data retrieved.","warn"); if(logOn) log('BODY: ' + body);
! if(callback !== undefined && typeof callback === 'function') return callback(null, body);
! log("No valid callback.","warn");
return log(body,"warn");
});
! });
! req.on('error', function(e) {
log('ERROR: ' + e.message,"warn");
if(callback !== undefined && typeof callback === 'function') return callback(e.message, null);
log("No valid callback.","warn");
ok = false;
return log("error: " + e.message,"warn");
});
req.end();
}
! function processHistory (err,result) {
if (err) {
log("Error reading Alexa history.","warn");
log("Error: " + err);
ok = false;
return log("No Mapping possible.","warn");
}if(!result) return log("No data retrieved! Cookie incorrect?","warn"); if(logOn) log(result); // durchsuche Mapping-Table und schalte die verknüpten Geräte for (var i = 0; i < mappingTable.length; i++ ) { if (result.indexOf(mappingTable[i].deviceSerialNr) != -1 ) { for (var j = 0; j < mappingTable[i].deviceIDs.length; j++) { if(logOn) log("Set new value for device " + mappingTable[i].deviceIDs[j]); 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);
main();
});
! // OPTIONAL: regelmässige Wiederholungen
// -----------------------------------------------------------------------------
// Kommentar entfernen, wenn regelmässige Wiederholungen gewünscht sind:
// schedule(cronStr, main);
! // main
// -----------------------------------------------------------------------------
function main() {
httpsReqGet('/api/activities?startTime=&size=1&offset=1', processHistory);
}
! // Start Skript:
// -----------------------------------------------------------------------------
! // Kommentar entfernen, wenn die Abfrage zum Skriptstart ausgeführt werden soll:
setTimeout(main, 7000);! Wie bei anderen Scripten zu Alexa auch, muss man csrf und cookie aus dem Browser auslesen und dann ganz oben im Script im Bereich Einrichtung (Punkt 1) eintragen. Ich habe ein Script/Module für FHEM gesehen, dass sich mit Username/Passwort anmelden kann und dann das Cookie automatisch erhält. Sowas wäre natürlich besser, aber vielleicht schafft es Amazon die Funktion in nächster Zeit ohnehin einzubauen, dann bräuchte man das Script -zumindest für Lampen - nicht mehr. Insofern kann ich im moment mit dem Ansatz über Cookie leben. ! Desweiteren muss man die Verknüpfung von Echo-Gerät und Smart Home Gerät hinterlegen. Sprich, welcher Echo schaltet welche Geräte. Das passiert auch direkt am Anfang des Scripts im Bereich Einrichtung (Punkt 2). Diese Konfiguration könnte man auch automatisch aus den Smart Groups auslesen, was ich bei Interesse noch einbauen könnte. Habe ich jetzt aber erstmal weggelassen. ! Es wird automatisch ein Datenpunkt "Trigger für Alexa" erstellt. Dieser kann beliebig benannt werden. Dieser Datenpunkt muss dann über den Cloud-Adapter für Alexa sichtbar gemacht werden. Auch dort ist der Name egal. Dann in der Alexa App nach neuen Geräten suchen. Dann sollte der Schalter in der Liste der Geräte auftauchen. ! Dieses Gerät kann man dann mit Alexa steuern. Ich habe das Gerät "Licht" genannt (in der Alexa App). Sage ich also "Alexa, Licht an!", dann wird der Datenpunkt in ioBroker auf den Wert 100 gesetzt. Durch die Subscription auf diesen Datenpunkt, wird das Script gestartet (oder eigentlich die Funktion im Script; das script muss natürlich in der Script-Verwaltung von ioBroker vorher gestartet worden sein). ! Das Script liest die History von Alexa aus und kann über die SerialNr des Echos erkennen, welcher angesprochen wurde. Dann muss nur noch in der Mapping-Tabelle nachgeschaut werden, welche Geräte an/ausgeschaltet werden sollen. ! Für die Lampen habe ich den Statuswert "level" verwendet, um auch dimmen zu können. Sage ich "Licht an" sendet Alexa 100, aus ist 0, ich kann aber auch Prozentzahlen hinzufügen: "stell das Licht auf 50%". Außerdem geht so auch noch "heller"/"dunkler". Insgesamt also genauso, wie ich mir es vorstelle. ! Wie ich anfangs schon geschrieben habe, bin ich noch neu in dem ganzen Thema. Was mir zum Beispiel noch nicht ganz klar ist, wie ioBroker mit den subscription umgeht bzw. wie lange das Script läuft. Ich frage mich, ob ich noch irgendwas anderes tun muss, als es zu starten und dann läuft es für immer? Oder muss ich mit der letzten Zeile im Script Timeouts festlegen und dann per cron wieder neu starten? Würd mich freuen, wenn die Fragen jemand beantworten würde. ! Abschließend noch einige Danksagungen. Habe hier im Forum gestern Abend zwei Threads im besonderen hoch und runter gelesen und Code/Struktur/etc in mein Script übernommen: ! [http://forum.iobroker.net/viewtopic.php?f=37&t=6035](http://forum.iobroker.net/viewtopic.php?f=37&t=6035) (Script zum Steuern von Echos von rohr70) ! [http://forum.iobroker.net/viewtopic.php?f=37&t=5943](http://forum.iobroker.net/viewtopic.php?f=37&t=5943) (Script Template auch von rohr70) ! Falls ihr auch mehrere Echos habt, und eine solche Steuerung pro Raum haben wollt, die im Moment mit Smart Groups nicht funktioniert, probiert das Script einfach mal aus. ! Freue mich auf Euer Feedback und Anregungen! Sieht sehr interessant aus. :) Wozu braucht man die regelmässige Wiederholungen?[/i][/i][/i][/i] ```
-
Das mit den Wiederholungen ist im Script auskommentiert. Also cron.
War für mich jetzt eher eine Verständnisfrage, ob es ausreicht subscription im Script anzulegen und dann einfach in iobroker das script zu starten? Läuft das Script dann für immer?
Wenn ja, dann kann setimeout am ende und auch die auskommentierten cron-sachen aus dem script löschen, richtig?
-
Subscriptions reichen die lösen ja das Script aus eine Art von "lauschen".
Sieht interessant aus
–-----------------------
Send from mobile device
-
Jetzt nur noch rausfinden, wie man über API eine Szene anlegen kann und dann kann das ganze automatisch Laufen.
Obwohl wenn ich ein Gerät "Licht" erzeuge, dann braucht man keine Szene. Nur noch die Namen von Echo irgendwie finden und dann braucht man gar nichts machen.
-
Top!
Nach der Funktion wurde hier im Forum schon oft gefragt.
Jetzt müsste man es "nur" noch hinbekommen, dass das mit der Anmeldung funktioniert und man den Coockie nicht mehr manuell auslesen muss.
-
Danke für die positiven Rückmeldungen!
Das mit dem Login hatte ich erstmal als nicht so schlimm angesehen, weil Amazon die Funktion für "Licht An" ohnehin in Planung hat.
Aber mittlerweile habe ich noch ein weiteres Script geschrieben, dass die History nutzt, um den gesprochenen Befehl auszuwerten (so sollte es möglich sein, "an" und "aus" in manchen Situationen nicht sagen zu müssen; werde ich hier veröffentlichen, wenn es fertig ist).
Soetwas wird Amazon wahrscheinlich nicht in nächster Zeit zur Verfügung stellen, so dass für solche Script die automatische Einwahl wirklich wichtig wird. Insofern werde ich da nochmal genauer recherchieren, wie man das hinkriegen kann.
-
Sauber :!: :!: :!:
Funktioniert super…. Danke :mrgreen:
-
Ich habe einen kleinen Bug behoben, der mir beim kopieren von ioBroker ins Forum unterlaufen ist.
Die CSRF wird für das Script nicht benötigt, wurde aber noch in dem Script referenziert, was zu einem Fehler führte.
-
Danke!
Ich habe die aktuelle Version installiert und es funktioniert prima. Etwas Verzögerung gegenüber den direkten Kommandos ist festzustellen.
Ich schalte damit auch eine Homematic Komponente mit der Endung .STATE. Funktioniert auch
Nicht getestet, aber ich vermute auch der Szenenadapter wird damit funktionieren.
Begeistert!
-
OK. Kleine Ergänzung.
Daran hatte ich nicht gedacht. .STATE funktioniert. Allerdings meckert logischerweise der Javascript-Adapter:
javascript.0 2017-12-07 21:56:53.635 warn Wrong type of hm-rpc.1.GEQ0134711.1.STATE: "number". Please fix, while deprecated and will not work in next versions.
Falls Du Dein Skript noch einmal anpackst…
Vielleicht kannst Du prüfen, ob der Datenpunkt .LEVEL ist (dann wird wie bisher gesendet) oder .STATE (z.B. Szenen-Adapter oder Homematic). Und dann true (bei > 0) oder false (bei 0) setzen.
Wenn es bei Dir längere Zeit keine Änderungen gibt, bzw. Du da nichts mehr planst, passe ich das bei mir an.
Die Zeile
// Skript im Forum: http://forum.iobroker.net/posting.php?mode=reply&f=37&t=9115#pr97396
habe ich im Kopf des Skripts für mich schon ergänzt
-
Nur noch die Namen von Echo irgendwie finden und dann braucht man gar nichts machen. `
Was meinst DU damit?
Die Seriennummern der Echos kann man z.B. mit dem Alexa Kommando Skript auslesen.
-
Falls Du Dein Skript noch einmal anpackst…
Vielleicht kannst Du prüfen, ob der Datenpunkt .LEVEL ist (dann wird wie bisher gesendet) oder .STATE (z.B. Szenen-Adapter oder Homematic). Und dann true (bei > 0) oder false (bei 0) setzen.
Wenn es bei Dir längere Zeit keine Änderungen gibt, bzw. Du da nichts mehr planst, passe ich das bei mir an.
Die Zeile
// Skript im Forum: http://forum.iobroker.net/posting.php?mode=reply&f=37&t=9115#pr97396
habe ich im Kopf des Skripts für mich schon ergänzt `
OK, kommt in die nächste Version. Hab auch noch einige Aufräumaktionen vor…
-
OK. Kleine Ergänzung.
Daran hatte ich nicht gedacht. .STATE funktioniert. Allerdings meckert logischerweise der Javascript-Adapter:
javascript.0 2017-12-07 21:56:53.635 warn Wrong type of hm-rpc.1.GEQ0134711.1.STATE: "number". Please fix, while deprecated and will not work in next versions.
Falls Du Dein Skript noch einmal anpackst…
Vielleicht kannst Du prüfen, ob der Datenpunkt .LEVEL ist (dann wird wie bisher gesendet) oder .STATE (z.B. Szenen-Adapter oder Homematic). Und dann true (bei > 0) oder false (bei 0) setzen.
Wenn es bei Dir längere Zeit keine Änderungen gibt, bzw. Du da nichts mehr planst, passe ich das bei mir an.
Die Zeile
// Skript im Forum: http://forum.iobroker.net/posting.php?mode=reply&f=37&t=9115#pr97396
habe ich im Kopf des Skripts für mich schon ergänzt `
Habe ich jetzt in der neusten Version alles eingebaut. Probier es mal aus;-)
-
Habe ich jetzt in der neusten Version alles eingebaut. Probier es mal aus;-) `
Top! Danke
-
Ich muss hier einfach mal was dazu sagen :
IHR SEIT BOMBE JUNGS !
Weiter so !
-
Guten Tag und herzlichen Dank für das Script es funktioniert hervorragend.
Ich habe mehrere Alexa´s die auch "gut" genutzt werden mit dieser Funktion ist es noch etwas einfacher geworden.
Da ja bald Weihnachten ist hätte ich noch Ergänzungswünsche.
Ich würde mir wünschen, dass ich bei einem Dimmer (.level) auch noch den Dimmwert mitgeben kann.
Jetzt habe ich das im Cloud-Adapter gelöst - dort auf 65% gestellt. Das gilt dann aber für alle Lampen.
Richtig komfortabel wäre es dann noch wenn man zu unterschiedlichen Zeiten - unterschiedliche Dimmwerte einstellen könnte.
Ich versuch das an einem Beispiel zu erklären:
In unserem Flur haben wir Bewegungsmelder um das Licht an zu schalten. Hier habe ich es jetzt so eingestellt, dass der Dimmwert am Tag bei 70% ist und in der Nacht bei 25%.
Das hat den Vorteil wenn jemand in der Nacht mal auf das WC muss oder sich etwas zu trinken holt - im Flur nicht "Blind" wird, sondern nur eine Beleuchtung hat um den "Weg zu finden".
Hoffe ich konnte das verständlich erklären.
Gruß
Dirk
-
Guten Tag und herzlichen Dank für das Script es funktioniert hervorragend.
Ich habe mehrere Alexa´s die auch "gut" genutzt werden mit dieser Funktion ist es noch etwas einfacher geworden. `
Freut mich!
Ich würde mir wünschen, dass ich bei einem Dimmer (.level) auch noch den Dimmwert mitgeben kann.
Jetzt habe ich das im Cloud-Adapter gelöst - dort auf 65% gestellt. Das gilt dann aber für alle Lampen.
Richtig komfortabel wäre es dann noch wenn man zu unterschiedlichen Zeiten - unterschiedliche Dimmwerte einstellen könnte.
Ich versuch das an einem Beispiel zu erklären:
In unserem Flur haben wir Bewegungsmelder um das Licht an zu schalten. Hier habe ich es jetzt so eingestellt, dass der Dimmwert am Tag bei 70% ist und in der Nacht bei 25%.
Das hat den Vorteil wenn jemand in der Nacht mal auf das WC muss oder sich etwas zu trinken holt - im Flur nicht "Blind" wird, sondern nur eine Beleuchtung hat um den "Weg zu finden". `
Soweit verstanden. Wenn Du sagst "Licht An", soll es pro Gerät einen Level geben, der dann genutzt wird. (was jetzt schon geht, ist die %-Zahl mit zu sagen "Licht auf 70%")
Tag und Nacht andere Level zu haben, kann ich nachvollziehen.
Aber wenn Du einen Bewegungsmelder hast, brauchst Du dann überhaupt einen Sprachbefehl dafür?
-
Soweit verstanden. Wenn Du sagst "Licht An", soll es pro Gerät einen Level geben, der dann genutzt wird. (was jetzt schon geht, ist die %-Zahl mit zu sagen "Licht auf 70%") `
Ja genau richtig. Das ist jetzt ein hoher (vielleicht auch übertriebener) Anspruch aber ich möchte - wenn möglich - auch die % nicht sagen müssen.
Tag und Nacht andere Level zu haben, kann ich nachvollziehen.
Aber wenn Du einen Bewegungsmelder hast, brauchst Du dann überhaupt einen Sprachbefehl dafür? `
Einen Bewegungsmelder habe ich nur in den Fluren. Da steht auch kein ECHO. Habe ich nur als Beispiel genutzt.
In den anderen Zimmern stehen ECHOs und keine Bewegungsmelder.
Gruß
Dirk
-
Guten Abend allerseits,
bin jetzt umgestiegen auf Cloud-Pro, nun möchte das einfache "Licht an" nicht mehr laufen.
Muss da eventuell noch etwas angepasst werden?
Gruß Andreas