ich hab' hier ein Haus mit 4 Ebenen und einem ziemlich großen Garten. In den Briefkasten hab' ich einen Bewegungsmelder geworfen, der auch brav jedesmal wenn die Post kommt, eine Stringvariable mit "Die Post ist da" setzt, diese wiederum wird in ioBroker überwacht und bei Änderung meldet Amazon Alexa - ja genau: "Die Post ist da".
Da ich allerdings das ganze Haus großzügig mit Echo-Geräten ausgestattet habe und auch ziemlich aktiv durch das Haus wusle, ist die Frage: WELCHE Alexa soll mir die Nachricht schicken. Ich hab' einige Zeit einen Broadcast an alle ausprobiert - das war eher nicht auszuhalten (die Ausgabe war nicht synchron und im Abstand von 2-5 sec haben dann alle Alexas losgelegt).
Somit die Idee - wo im Haus/Garten befinde ich mich aktuell und kann ich diese aktuelle Position mit Alexa abgleichen?
Ja sicher, das funktioniert. Ein kleines Script "script_intern_LastSighted", das ich bei Änderungen der entsprechenden Melder aufrufe:
Code: Alles auswählen
if (dom.GetObject("CCU_is_rebooting").Value() == true) {
quit;
}
var arr = dom.GetObject(ID_DEVICES);
string stritemID;
string strMotion;
string strLastSighted = "";
integer iLastSighted = 0;
boolean foundYou = false;
foreach(stritemID, arr.EnumUsedIDs()) {
var item = dom.GetObject(stritemID);
if (
(item.HssType().ToLower() == "HMIP-SMO".ToLower()) ||
(item.HssType().ToLower() == "HMIP-SPI".ToLower()) ||
(item.HssType().ToLower() == "HMIP-SMI55".ToLower()) ||
(item.HssType().ToLower() == "HmIP-SMI".ToLower())
)
{
if (item.HssType().ToLower() == "HMIP-SPI".ToLower()) {
strMotion = "HmIP-RF." # item.Address() # ":1.PRESENCE_DETECTION_STATE";
} elseif (item.HssType().ToLower() == "HMIP-SMI55".ToLower()) {
strMotion = "HmIP-RF." # item.Address() # ":3.MOTION";
} else {
strMotion = "HmIP-RF." # item.Address() # ":1.MOTION";
}
var motion = dom.GetObject(strMotion);
if (motion.Value() == true) {
if (iLastSighted < motion.Timestamp()) {
foundYou = true;
iLastSighted = motion.Timestamp();
strLastSighted = item;
}
}
}
}
if (foundYou == true) {
dom.GetObject("varLastSightedTime").State(iLastSighted);
dom.GetObject("varLastSightedPlace").State(strLastSighted);
!WriteLine("iLastSighted: " # iLastSighted # " @ " # strLastSighted);
}
Zusätzlich noch (um den HAF zu erhöhen) eine kleine Routine: "Computer, starte such-mich-doch" und er wirft - auf der entsprechenden Alexa - brav aus, wo die letzte Bewegung gefunden wurde. Nett.
Frage: Wie habt ihr das gelöst, gibt's eine elegante Abkürzung für das Thema?
Ich bin gespannt auf eure Ansätze diesbezüglich,
liebe Grüße, Alexa