NEWS
Stati bzw. Werte auslesen mit Alexa
-
Klingt doch super,
Wäre es möglich das Script hier mal zu zeigen.
Bin halt was Scripten anbelangt noch absoluter Newbie, da wäre es cool, wenn Ihr mir mal ein Beispiel zeigen könntet
@ruhr - Ob schlecht oder nicht ist doch egal wenns funktioniert, wäre nett, wenn du es mal posten würdest - Dank dir.
Grüße
-
Alle Texte über sayIt und einem kleinen Skript (schlecht von mir gemacht g). `
Da melde ich auch mal Interesse an. Würdest das Script vielleicht mal vorstellen wollen und kurz Beschreiben was man machen muss damit es läuft?
Danke schon mal im vorab!
-
Das ist nur ein Miniskript. Und die Lösung mehrere Ansagen hintereinander (Wartezeit, asynchron) ist nicht schön gelöst.
Skript:
! ````
// Ausgabe von Infos über Sayit, gesteuert durch Alexa
// Der Datenpunkt idAnsageTriggerWetter muss in ALexa hinzugefügt werden
// und mit einem Smartnamen versehen werden
! // Beispiel: "Alexa, schalte Wetterbericht ein"
! // Skript verwendet ein globales Skrit:
// sayit();
! var vol = 40; // Lautstärke der Ansagen
var sayitInstanz = 2; // Instanz 2 = Sonios Wohnzimmer
! // Datenpunkt zum Ansteuern der ANsage über Alexa:
var idAnsageTriggerWetter = "javascript."+instance+".Ansagen_Trigger.Wetter_aktuell_Wohnzimmer";
! createState(idAnsageTriggerWetter,false, {
name: 'Ansage aktuelle Wettersituation im Wohnzimmer',
desc: 'Ansage aktuelle Wettersituation im Wohnzimmer',
type: 'boolean'
});
! function ansageWetterwarnung(vol,sayitInstanz) {
var severity = getState('dwd.0.warning.severity').val;
var meldung = getState('dwd.0.warning.text').val.toLowerCase();
text = "Aktuelle Unwetterwarnung. Stufe " + severity + " " + meldung;
sayit(text,vol,sayitInstanz);
}
! function ansageWetterlage(vol,sayitInstanz) {
text = "Wetterlage " + getState('yr.0.forecast.day0.text').val;
sayit(text,vol,sayitInstanz);
}
! function ansageAktuelleTemperatur(vol,sayitInstanz) {
text = "Die aktuelle Temperatur beträgt " + getState('yr.0.forecast.day0.temperature_actual').val + " Grad Celsius.";
sayit(text,vol,sayitInstanz);
}
! function ansage(vol,sayitInstanz) {
var severity = getState('dwd.0.warning.severity').val;
var delay = 0;
! if (severity > 0) {
setTimeout(ansageWetterwarnung(vol,sayitInstanz),delay);
delay = delay + 9000;
}setTimeout(ansageWetterlage(vol,sayitInstanz),delay); delay = delay + 9000; setTimeout(ansageAktuelleTemperatur(vol,sayitInstanz),delay);
}
! on({id:idAnsageTriggerWetter,change:'any'}, function (obj) {
if(obj.state.val) {
ansage(vol,sayitInstanz);
}
});
! //ansage(vol,sayitInstanz); // Zum Test des Skripts beim Skriptstart, Kommentar entfernenFolgendes Skript wird als globales Skript benötigt: >! ```` >! function sayit(text,vol,instanz) { var IDLastSay = 'javascript.0.globalVar.lastSay'; var sayit_defaultVol = 50; var sayit_defaultSayItInstanz = 0; >! if (typeof instanz == "undefined") instanz = sayit_defaultSayItInstanz; if (!isNaN(instanz)) instanz = parseInt(instanz); if (isNaN(instanz)) instanz = sayit_defaultSayItInstanz; >! if (typeof vol == "undefined") vol = sayit_defaultVol; if (!isNaN(vol)) vol = parseInt(vol); if (isNaN(vol)) vol = sayit_defaultVol; >! var idSayIt = "sayit." + instanz + ".tts.text"; text = "de;" + vol.toString() + ";" + text; var lastSay = getState(IDLastSay).val; //if (!lastSay || ((new Date()).getTime() - lastSay) > 3000) { //lastSay = setState(IDLastSay,(new Date()).getTime()); setState (idSayIt, text); //} log(vol); log(text); >! } >! ````
-
Hi und vielen Dank erst einmal.
Muss aber noch einmal fragen, damit ich da nicht auf dem falschen Gleis lande: Die Antwort kommt dann über Alexa direkt? Also nicht per Blauzahn oder Tablett?
-
Nein, über Alexa kannst Du die Infos (noch) nicht ausgeben. Hat nichts mit ioBroker zu tun. Alexa kann das noch nicht über die Schnittstelle zur Haussteuerung.
Über einen Custom-Skill funktioniert das. Da will Bluefox wohl einen schreiben. Dann würden solche Sachen gehen, wie "Alexa, frag ioBroker, wie die Temperatur im Schlafzimmer ist".
Das Skript triggert einen Datenpunkt in ioBroker, welcher dann die Ausgabe über SayIt steuert.
Bei mir sind das meine Sonos Lautsprecher.
D.h. ich frage Alexa und über Sonos kommt die Antwort.
Du kannst auch die Alexa Lautsprecher über Bluetooth nutzen. Hier im Forum gibt es dazu ein Beispiel, wie das über einen Raspberry Pi funktioniert.
Dann kommt die Antwort zwar auch nicht von Alexa, aber über die Echo Lautsprecher
Zusammenfassung der Syntax diverser Sprachanweisungen:
"Alexa, wie ist die Temperatur im Schlafzimmer?"
-> müsste die Haussteuerungs-API unterstützen. Wird derzeit von Amazon nicht unterstützt.
"Alexa, schalte Wetterbericht ein."
-> wird von Alexa/ioBroker unterstützt. Was passieren soll, bestimmt ioBroker, z.B. Ausgabe über Sayit.
-> "schalte … ein" oder "einschalten" sind Kennwörter, nach denen Alexa nach Namen in der Integration von Haussteuerungen sucht
"Alexa, frage ioBroker nach der Temperatur im Schlafzimmer."
-> Geht über einen Zustrom-Skill. Derzeit in Entwicklung.
-> "frage xyz" ist eine Möglichkeit einen Custom-Skill zu nutzen
-
Ahh OK. Danke für die Klarstellung.
Ja Alexa über Bluetooth habe ich schon überlegt aber da würde es nur bei Alexa 1 ankommen. Da ich aber 3 in verschiedenen Räumen habe wird das wohl erst einmal nichts werden. Aber ich schaue mal optimistisch in die Zukunft und versuche derweil erst einmal die Visualisierung richtig zum laufen zu bekommen
-
3 Pi
Einen in jedem Raum :lol:
-
Hey Ruhr,
Danke fürs Feedback.
Dann hab ich einen guten Ansatz zum Testen.
Vielen dank und schönen Rest-Sonntag
-
Hi zusammen, bin neu in dem Thema und versuche mich durch Videos langsam einzuarbeiten.
Ich versuche gerade mit JS eine Sprachausgabe auf anfrage bei Alexa.
Will mir die Temp vom Raspberry ansagen lassen. Bekomms aber leider nicht hin.
Ich habe das Blocky-Script mal als Datei angehängt.
abfrage_ = Datenpunkt den ich triggern kann(funktioniert)
rpi2.0.temperature.soc_temp= ausgelesener Wert im Rpi2.0 Adapter
Vlt kann mir von den erfahreneren Anwendern jemand meinen Fehler aufzeigen.
Danke
5810_blocky.png -
Was hast Du denn für Thermostate?
Gibt es bei denen eventuell einen Datenpunkt vom Typ "ACTUAL_TEMPERATURE"?
(so einen habe ich z.B. beim HomeMatic Thermostat (non-IP))
[EDIT] Hintergrund meiner Frage: Ein Datenpunkt "ACTUAL_TEMPERATURE" kann als Smart Gerät im Cloud Adapter direkt von Alexa Abgefragt werden.
z.B. Smart Gerät im Cloud Adapter = "Schlafzimmer"
Verlinkung zum Datenpunkt vom Typ "ACTUAL_TEMPERATURE"
Abfrage: "Alexa, wie ist die Temperatur im Schlafzimmer"
Antwort: "Die Temperatur von Schlafzimmer ist 20,1 Grad"
-
Vlt kann mir von den erfahreneren Anwendern jemand meinen Fehler aufzeigen. ` Was mit gerade auffällt, ich bin der Meinung Du benutzt den "erstelle Text aus" Baustein nicht korrekt.
Schau dir mal alternativ mein angefügtes Beispiel an
1917_sayit_text.jpg