NEWS
Anwesenheitscontrol basierend auf TR64 Adapter - Script
-
@sigi234 sagte in Anwesenheitscontrol basierend auf TR64 Adapter - Script:
Könnte man beim DP List of present persons: ein Komma einfügen?
Also: Name,Name,Name,Ist nun eingebaut in Version 0.5: presence-script-for-tr-064-community-adapter
Ebenso werden die Namen nun alphabetisch sortiert.
Hierzu kamen folgende Einstellungen hinzu.
/******************************************************************************* * Erweiterte Einstellungen ******************************************************************************/ /******** * Datenpunkt presentPersonsString ********/ // Trennzeichen für 'presentPersonsString'. Dieses wird zwischen den einzelnen anwesenden Namen gesetzt. const PRESENT_PERSONS_DELIMITER = ', '; // Text in für 'presentPersonsString', falls niemand anwesend. const PRESENT_PERSONS_NONE_TXT = '';
-
@sigi234 sagte in Anwesenheitscontrol basierend auf TR64 Adapter - Script:
ein langer Wunsch von mir wäre ein DP pro Person wie lange sie An/Abwesend war?
Ist nun eingebaut in Version 0.6: presence-script-for-tr-064-community-adapter
Neuer Datenpunkt: persons.xxx.offsetEntryLeave
Gibt hierfür eine Option, was angezeigt wird:
/******** * Option für Datenpunkt "persons.xxx.offsetEntryLeave" (zeigt , wie lange die Person an- oder abwesend war.) ********/ // Wenn true: Im Datenpunkt werden Stunden und Minuten angezeigt, z.B. 10:36 (bei 10 Stunden 36 Min.), oder 48:12 (bei 48 Std. 12 Min.) // Wenn false: Es werden nur Stunden gerundet angezeigt, z.B. 11 (bei 10 Stunden 36 Minuten) oder 48 (bei 48 Std. 12 Min.) const OFFSET_HOURS_AND_MINS = true;
-
@Mic
Funktioniert... Danke fürs teilen.
Jetzt lass ich mal die Anwesenheit über unifi und den TR laufen, mal sehen wer gewinnt -
Freut mich, dass es funktioniert.
Hier noch ein Anwendungsszenario:
Alle Alexas sind bei mir an einer Osram-Steckdose. Diese schalten sich alle aus, sobald keiner mehr anwesend. Allerdings wäre es ziemlich doof, wenn ein Wecker im Schlafzimmer aktiv ist, und die Fritzbox Nachts warum auch immer meinen sollte, es sei keiner zu Hause und alle Alexas ausschaltet. Daher habe ich folgendes Script geschrieben, das prüft, ob ein Wecker im Alexa Schlafzimmer aktiv ist, und schaltet nur dann aus, wenn kein Wecker aktiv.Eines der Beispiele, warum ioBroker so super ist, man kann hier alles individuell gestalten.
Hier das Script:
/** * Schaltet ein Alexa-Gerät nur dann per Osram-Steckdose ab, wenn im Gerät auch kein Wecker gesetzt ist. * Dies dient dazu, dass das Gerät bei aktivem Wecker nicht abgeschaltet wird, und der TR064-Adapter Abwesenheit meldet. * Ist eine Sicherheitsstufe, falls der Adapter bzw. die Fritzbox fälschlicherweise abwesend meldet, damit der Wecker * auch wirklich auslöst. * Autor Mic, Stand: 17.07.2019 * @param {string} statePlug State-Pfad zur Osram-Steckdose, an der das Alexa-Gerät hängt. * @param {string} stateAlexa State-Pfad zu Alexa-Gerät, z.B. alexa2.0.Echo-Devices.ABCDEF0123XYZABC * @param {boolean} [logInfo=false] Optional: true: Logausgabe als Info, false: keine Logausgabe */ function offAlexaIfNoAlarm(statePlug, stateAlexa, logInfo) { let alarmCount = alexaAlarms(stateAlexa, logInfo); if (alarmCount > 0) { // Wir machen nichts, da mindestens 1 Wecker gestellt ist if (logInfo) log('Keine Aktion, da ' + alarmCount + ' Wecker gestellt ' + ((alarmCount > 1) ? 'sind.' : 'ist.')); } else { // Ausschalten, da kein Wecker aktiv. setState(statePlug, false); if (logInfo) log('Kein Wecker gestellt, daher wird Alexa ausgeschaltet.'); } /** * Prüft, wie viele Wecker bei einem Alexa-Gerät aktiv sind. * @param {string} alexaDeviceState State zu Alexa-Gerät, z.B. alexa2.0.Echo-Devices.ABCDEF0123XYZABC * @param {boolean} [logInfo=false] Optional: true: Logausgabe als Info, false: keine Logausgabe * @return {number} Anzahl der gestellten, also aktiven Wecker. */ function alexaAlarms(alexaDeviceState, logInfo) { let mSelector = $('state[id=' + alexaDeviceState + '.Alarm.*.enabled' + '$]'); // Gibt alle State-IDs zurück, die dem Pattern entsprechen let counter = 0; mSelector.each(function(id, i) { // Nun haben wir mit "id" die State-ID, z.B. alexa2.0.Echo-Devices.xxxxxxxxxxxxxxX.Alarm.xxxxxxx.enabled // Damit prüfen wir, ob der Wecker aktiv ist (.enabled = true) if (getState(id).val) { // Treffer counter =+ 1; if(logInfo) { let alarmMainState = id.substring(0, id.length-8); // get alarm main state by removing last 8 chars (.enabled) let alarmTime = getObject(alarmMainState).common.name; // common.name contains the alarm time as string log('Gesetzten Wecker für ' + alarmTime + ' gefunden.'); } } }); return counter; } }
-
@Mic sagte in Anwesenheitscontrol basierend auf TR64 Adapter - Script:
Alle Alexas sind bei mir an einer Osram-Steckdose. Diese schalten sich alle aus, sobald keiner mehr anwesend
Interessant, warum hast du das so gemacht? Die Alexas brauchen ja wieder 2 Minuten um sich zu verbinden.
Also schalten sie sich immer aus oder ein wenn niemand da ist. -
@sigi234
Ich vermute um Strom zu sparen? -
Strom sparen und Einbrecher, usw. Habe es nicht gern, wenn Alexa aktiv ist, wenn ich nicht da bin. Mache ich schon seit vielen Monaten so.
-
@Mic sagte in Anwesenheitscontrol basierend auf TR64 Adapter - Script:
Habe es nicht gern, wenn Alexa aktiv ist, wenn ich nicht da bin
Ja, leider gibt es ja keinen DP um das Micro zu deaktivieren...........
-
@sigi234 sagte in Anwesenheitscontrol basierend auf TR64 Adapter - Script:
Ja, leider gibt es ja keinen DP um das Micro zu deaktivieren...........
Oder wohl gut so seitens Amazon, denn sonst könnte ein "böses" Programm das "manuell" abgeschaltete Mikrofon einschalten.
-
Daher ist es um so dringender, dass Amazon die kürzlich eingeführte Stimmerkennung auch endlich dazu nutzt eine Option anzubieten, dass nur bekannte Stimmen in Interaktion mit Alexa treten dürfen.
Damit kann man dann auch verhindern, dass "lustige" Gäste mal eben alles umprogrammieren oder die Musiksteuerung übernehmen.
Ich denke auch in diesem Punkt ist Google bereits einen Schritt voraus. -
@ReverZ
Das wird leider nicht so leicht funktionieren. Alexa erkennt zwar wer zur Ihr spricht, nur wenn Du gerade mal etwas undeutlicher wirst (Erkältung oder sonst was), dann würdest Dich wieder nur ärgern, weil sie Deine Befehle nicht mehr ausführt. Die Erkennung de Sprache an sich ist schon ne Herausforderung, dann noch einzelne Personen zu unterscheiden und trotzdem alles wie gewünscht umsetzten, das wird noch ne Weile dauern.
Beispiel, Du bist mit 5 Leuten im Raum die Du sehr gut kennst mit verbundenen Augen, alle reden gleichzeitig und Du sollst zuordnen wer was gesagt hat. Wenn nicht jeder gerade einen sehr dominanten unterschiedlichen Dialekt spricht, wird das selbst für Dich schon recht schwierig. -
Vielleicht hast du Recht aber aus dem Bauch heraus würde ich sagen, dass es viel leichter ist eine Stimme zu charakterisieren als die Spracherkennung an sich.
Das verhält sich bei Babys sicher ähnlich. Diese erkennen viel früher WER mit ihnen spricht als WAS mit ihnen gesprochen wird. Ich vermute bei der KI sieht es nicht anders aus.
In einem Haushalt mit beispielsweise 4 Personen muss Amazon auch nur diese Stimmen dieser Personen auseinanderhalten können.
D.h. meine Stimme muss sich nur von 3 anderen Personen unterscheiden. -
@ReverZ
Richtig, nur eben beides gleichzeitig und dann noch richtig v erstehen.
Ist ein Traum und kommt mit Sicherheit, irgendwann. -
@looxer01 Wäre es möglich in einem Skript sowas einzubauen, damit damit mehrere Wohneinheiten erfasst werden.
Als das zum Beispiel 2 Personen zusammen gefasst werden und 1 Datenpunkt erzeugt wird.
Eine Person von beiden zuhause = true
Beide Personen weg = false. -
@Phil85
s. "javascript.0.Anwesenheitssteuerung.Userlist.JemandDa" -
@xbow42
Nein, wenn man manuell DPS anlegt, dann auch dort wo sie sein sollen und dafür gibts extra "userdata.0".. -
@Jan1 das Script ist fast 2 Jahre alt, da gab's noch kein Userdata... Aber heute mit den aktuellen Versionen übersichtlicher.
-
@Phil85 du kannst das Script ja 2x anlegen und da alle Personen aufteilen..?
-
@ilovegym sagte in Anwesenheitscontrol basierend auf TR64 Adapter - Script:
@Jan1 das Script ist fast 2 Jahre alt, da gab's noch kein Userdata... Aber heute mit den aktuellen Versionen übersichtlicher.
Ja, aber die Antwort in dem dazu geraten wird 9 Stunden
-
Bin ich zu doof ?
javascript.0 (15331) script.js.common.presence_detection compile failed: at script.js.common.presence_detection:49
Irgendwie funktioniert das bei mir nicht - warum auch immer - wobei weiss der Geier ob ich was falsch mache - ist mein erstes Script
Und wenn ich die Zeile 49 auskommentiere - wandert der Fehler zur 52
Danke ...