@Martin-0
Hallo,
vielleicht ist das so etwas einfacher zu verstehen.
Um eine Abfrage zu stellen brauchst du nur ein Script, hier mal ein Beispiel, Ausgabe ist immer auf dem Gerät das du ansprichst.
machen im Endeffekt aber beide das gleiche
iot Brauchst du um das an Alexa weiter zugeben, also hier das Script auswählen
dann in der Alexa app eine Routine anlegen und das Script auswählen
wie zum Beispiel,
Alexa, sind noch Lampen eingeschaltet
Alexa, ist noch Licht eingeschaltet
sind dann halt zwei Routinen auf dasselbe Script
nur über die History geht es nicht so richtig sauber, schreibt ja auch schon dslraser weiter vorne.
Mehrere Abfragen geht auch ohne Probleme man muss halt nur die Datenpunkte haben oder sie sich selber befüllen.
nur eine Temperatur abfragen geht auch ohne Routine oder Script, nur den Datenpunkt im iot hinzufügen
hier geht dann Alexa, wie ist die Temperatur von Multisensor Wohnzimmer oder auch Alexa, Temperatur Multisensor Wohnzimmer.
Geräte steuern also An und Aus macht iot es muss auch keine Routine erstellt werden.
und zum Schluss immer Alexa, Geräte suchen, nicht vergessen
@Alexi
Das habe ich auch so gemacht, aber hast du mal gesehen, dass der Datenpunkt Summery dann sofort wieder gelöscht wird, wenn eine Routine darauf startet?
@Alexi
Das habe ich auch so gemacht, aber hast du mal gesehen, dass der Datenpunkt Summery dann sofort wieder gelöscht wird, wenn eine Routine darauf startet?
Es geht doch nur darum, das Event zu triggern. Also per JScript z.B. so:
(Sorry, mit Blockly kann ich nicht dienen, aber das Prinzip sollte klar werden)
on('alexa2.0.History.json'/*json*/, function (json) {
let jsonObj = JSON.parse(json.state.val);
let summary = jsonObj.summary;
let echoID = 'alexa2.0.Echo-Devices.' + jsonObj.serialNumber;
if (jsonObj.status == "SUCCESS") {
if (summary == "wer hat angerufen") {
setStateDelayed(echoID+".Commands.speak", "Das geht dich überhaupt nix an!", 1000, true);
}
}
else if (summary == "wer hat angerufen")
});
@Alexi
Das habe ich auch so gemacht, aber hast du mal gesehen, dass der Datenpunkt Summery dann sofort wieder gelöscht wird, wenn eine Routine darauf startet?
Es geht doch nur darum, das Event zu triggern. Also per JScript z.B. so:
(Sorry, mit Blockly kann ich nicht dienen, aber das Prinzip sollte klar werden)
on('alexa2.0.History.json'/*json*/, function (json) {
let jsonObj = JSON.parse(json.state.val);
let summary = jsonObj.summary;
let echoID = 'alexa2.0.Echo-Devices.' + jsonObj.serialNumber;
if (jsonObj.status == "SUCCESS") {
if (summary == "wer hat angerufen") {
setStateDelayed(echoID+".Commands.speak", "Das geht dich überhaupt nix an!", 1000, true);
}
}
else if (summary == "wer hat angerufen")
});
@Alexi
OK
Die Frage ist folgende:
Lege ich einen Datenpunkt an, der z.B heißt: Garagentor öffnen. Diesen wurde ich dann in iot einbinden und diesen als Trigger für ein Skript nehmen?
Ich habe drei Systemvariablen in der CCU die stimmen müssen bevor Alexa das Garagentor öffnen darf.
Ich schreibe also ein Blockly: Wenn die Bedingungen stimmen, dann Garagentor.state auf wahr.
Ich will es nur nicht so kompliziert machen, deswegen die Frage, ob ich dieses Skript einfach so in iot starten kann, also über eine Routine oder ob ich einen Datenpunkt anlege der als Trigger für das Skript dient.
@Alexi
OK
Die Frage ist folgende:
Lege ich einen Datenpunkt an, der z.B heißt: Garagentor öffnen. Diesen wurde ich dann in iot einbinden und diesen als Trigger für ein Skript nehmen?
Ich habe drei Systemvariablen in der CCU die stimmen müssen bevor Alexa das Garagentor öffnen darf.
Ich schreibe also ein Blockly: Wenn die Bedingungen stimmen, dann Garagentor.state auf wahr.
Ich will es nur nicht so kompliziert machen, deswegen die Frage, ob ich dieses Skript einfach so in iot starten kann, also über eine Routine oder ob ich einen Datenpunkt anlege der als Trigger für das Skript dient.
@Martin-0
Wenn ich dich richtig verstehe, willst du doch einen Echo etwas fragen bzw. etwas zu ihm sagen und dann eine von einem Script generierte Antwort bekommen, oder?
Wenn ja, kopiere doch mal zum Verständnis folgenden Code in ein JScript:
on('alexa2.0.History.json'/*json*/, function (json) {
let jsonObj = JSON.parse(json.state.val);
let summary = jsonObj.summary;
let echoID = 'alexa2.0.Echo-Devices.' + jsonObj.serialNumber;
log (echoID+": "+summary);
});
Wenn du jetzt zu irgendeinem Echo etwas sagst, wirst du eine entsprechende Ausgabe bekommen. Die kannst du verarbeiten und einen Echos sagen lassen, was du willst (s. Beispiel oben).
Das Problem: Da die Echos mit dem Text nix anfabngen können, kommen Meldungen wie "Kenn ich nicht", "weiß ich nicht", etc. Um das abzustellen, musst du für jeden Text, den du sagen willst eine "leere" Routine in der Alexa App anlegen.
@Michi68
Also ich gebe mir wirklich Mühe, aber was macht den der Trigger rescan?
Ich will ja nicht bei jeder Aktualisierung alle Skripte laufen lassen.
Ich hatte jetzt gedacht ich mach mir einfach einen Datenpunkt als Schalter, binde diesen in den iot ein und benutze ihn bei einer Routine, der dann einfach ein skript ausführt.
Oder bin ich total auf dem Holzweg?
Du schaltest scriptEnabled ? (das ist keine gute Idee)
Beim Neustart des JS Adapter oder ioBroker selbst werden dann diese Scripte alle ausgeführt.
Das wird auch ausdrücklich nicht empfohlen.
@Michi68
Also ich gebe mir wirklich Mühe, aber was macht den der Trigger rescan?
Ich will ja nicht bei jeder Aktualisierung alle Skripte laufen lassen.
Ich hatte jetzt gedacht ich mach mir einfach einen Datenpunkt als Schalter, binde diesen in den iot ein und benutze ihn bei einer Routine, der dann einfach ein skript ausführt.
Oder bin ich total auf dem Holzweg?
Ich hatte jetzt gedacht ich mach mir einfach einen Datenpunkt als Schalter, binde diesen in den iot ein und benutze ihn bei einer Routine, der dann einfach ein skript ausführt.
Oder bin ich total auf dem Holzweg?
so ist es richtig.
(ich nehme immer Button und triggere auf wurde aktualisiert. Im iot Adapter Switch einstellen.)
@Michi68
Also ich gebe mir wirklich Mühe, aber was macht den der Trigger rescan?
Ich will ja nicht bei jeder Aktualisierung alle Skripte laufen lassen.
Ich hatte jetzt gedacht ich mach mir einfach einen Datenpunkt als Schalter, binde diesen in den iot ein und benutze ihn bei einer Routine, der dann einfach ein skript ausführt.
Oder bin ich total auf dem Holzweg?
Du schaltest scriptEnabled ? (das ist keine gute Idee)
Beim Neustart des JS Adapter oder ioBroker selbst werden dann diese Scripte alle ausgeführt.
Das wird auch ausdrücklich nicht empfohlen.
Du schaltest scriptEnabled ? (das ist keine gute Idee)
Beim Neustart des JS Adapter oder ioBroker selbst werden dann diese Scripte alle ausgeführt.
Das wird auch ausdrücklich nicht empfohlen.
Ja stimmt macht er ab und zu, aber nicht immer ich hatte es aber bis jetzt noch nicht so richtig geschnallt warum. :man-facepalming: Danke für den Hinweis, man lernt nie aus.
Ich muss doch noch eine ganze menge umstellen, und es wird immer mehr.