Wiederholte Ansage durch Alexa

  • Ich hab ein Script gefunden was bei einem eingehenden Anruf die Quaselbüchse Alexa einen Text sagen lässt.
    Soweit funktioniert das auch.
    Ich hätte das aber noch etwas verbessert.

    Die Ansage soll so lange wiederholt werden bis der Wert für eingehenden Anruf wieder auf false gegangen ist.

    Also eine Schleife. Hatte das ganze bereits mit Blockly erstellt. Die Schleife dort hat nur dazu geführt das ich den Raspberry vom Strom trennen musste.
    Eine Suche im Internet blieb erfolglos.
    Hat einer eine Lösung?

    Hier das Script. Antwort kann auch gerne in Blockly sein. (Das verstehe ich schneller)

    on({id: 'tr-064.0.callmonitor.ringing', val: true, ack: true}, function (obj) {
    var value = obj.state.val;
    var oldValue = obj.oldState.val;
    setStateDelayed("alexa2.0.Echo-Devices.6c59c5fc112a43599a063e5416d0f442.Commands.speak"/*speak*/, (String('Ein Anruf')/*+ String(getState("tr-064.0.callmonitor.inbound.callerName").val)*/), 2000, false);
    });


    Gesendet von meinem MI MAX 2 mit Tapatalk

  • Hab ein paar mal probiert bis ich die Fehler-Meldung gesehen habe, das man einen Port frei geben muss. Dazu

    #96*5*

    Im Telefon eingeben. Danach ging es.
    Den Adapter habe ich nur mit Name und Passwort versehen. Bei der Fritz Box also einen Nutzer anlegen und dann sollte es gehen.

    Wollte gerade das Blockly Script kurz schreiben, aber mein Rechner hat sich mal wieder verabschiedet. Das xte mal dieses Jahr. Ich glaube das Gehäuse muss ich noch tauschen. Dann ist alles neu.

    Gesendet von meinem MI MAX 2 mit Tapatalk

  • Ganz einfach und dirty würde ich es so machen dass ich den Block kopieren würde ca. 30x

    Nach 30x klingeln hängen ja die meisten eh auf...

    Blockly spielt alles nacheinander ab - jedenfalls tat es dass bei mir :)

    Am Ende kannst du ja noch eine Prüfung machen

    " Wenn Ringing = unwahr" Steuer "Speak" mit " "

    Dann ist auch ruhe wenn der Wert unwahr geht. Ohne diese Prüfung wird dir wohl Alexa 30x sagen "Ein Anruf" auch wenn es nicht mehr klingelt.

  • Doch es gibt diverse Schleifen. Das Problem ist, dass die gleichzeitig ablaufen direkt nacheinander - daher crasht der ioBroker bei Sprachnachrichten die MP3s erzeugen sollte und du musst den Raspi vom Strom trennen. Jedenfalls ist das meine Erfahrung

  • Da ich kein Freund von Blockly bin und Javascript einfach mächtiger ist, habe ich da smal kurz als JavaSxcript erstellt.

    Anmerkungen dazu:

    - Die DEVICEID muß durch das eigene Gerät ersetzt werden

    - Die Anzahl der Sekunden kann man ändern; hier alle 3 Sekunden erfolgt ne Ansage

    - Die Sprachtexte kann man natürlich auch ändern

    Was passiert?

    Bei einem Anruf sagt Alexa "Eingehender Anruf" und dann alle 3 Sekunden "Ring Ring". Wenn Klingel zuende ist (also entweder aufgelegt oder angenommen), dann wird der Timer gelöscht und es findet kein "Ring Ring" durch Alexa mehr statt.

    Die Funktion "getTimeFromDate" habe ich bei mir in ein globales Skript "Utilities" ausgelagert, so daß ich diese kleine Helferfunktion auch von anderen Skripten aus aufrufen kann.

    MfG Markus

  • Kurzer Nachtrag. Das ganze läuft soweit ganz gut. Wenn da der tr-064 Adapter nicht wäre. Der setzt ab und zu mal den Wert auf true obwohl kein Anruf ankommt. Dann bimmelt die Else stundenlang rum. Erst das manuelle zurücksetzen des Wertes hilft da.

    Ich habe letztens einen bösen Anruf meiner Frau bekommen, das die Else seid über einer Stunde ständig "palim,palim" sagt.:D (Hatte den Text von ring,ring geändert auf palim,palim.)

    Also wäre eine Zwangs rücksetzen nach 5x ring ring ganz Hilfreich.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!