NEWS
Alexa Wecker beenden
-
@bananajoe
erst einmal herzlichen Dank für deine Hilfe.
Ja, ich mache da schon ewig rum und komme einfach nicht weiter. Bin total verzweifelt.
Ich verstehe einfach nicht wie exakt das gleiche Blockly auf meinem Raspi läuft und in dem ioB des Unraid Dockers nicht.Wie sollte ich das jetzt versuchen? Soll ich dein exportiertes JavaScript als JavaScript importieren/anlegen, oder dein Blockly aus dem Screenshot nachbauen?
vielen Dank und viele Grüße
-
@bananajoe
Sorry, hatte auf dem Handy ohne Brille nicht erkannt, dass es schon XML für den Blockly Import war.
Ja, ich habe exakt diese Fernbedienungen wie du, gleiches Modell.
Habe das mal importiert und die Objekte nochmal sicherheitshalber kopiert und eingefügt.
Leider reagiert bei Toggle Event kein Wecker und auch der Debug Block gibt nichts aus, also habe ich den Debug Block mal nach oben kopiert.Dort gibt er dann beim Toggle Event folgendes aus:
javascript.0 12:21:19.759 info script.js.common._Testraum.bananajoe: alexa2.0.Echo-Devices.G090LF1072320F8P.Alarm.1144d011-869d-4a29-8955-4c2bf394a3f9.enabled
und alle 15 Sekunden reagiert das Script wieder auf Toggle und es kommt ein neuer Wecker dazu.
Heißt also bis hier hin passten die Objekte der Fernbedienungen und die Schaltsperre funktioniert auch.
Also habe ich mal geschaut wieso drunter nichts passiert. Dann habe ich mal den Debug Block folgendermaßen gesetzt und festgestellt, dass die Alarme (siehe unten im Protokoll) nur einzeln und alle 15 Sekunden reinkommen.Also dachte ich mir, dass es einfach nur zu lange dauert, bis der Alarm, der gerade klingelt, erkannt wird und habe mal die 15 Sekunden Pause auf 0 gesetzt und jetzt funktioniert das Wecker Abschalten auf den ersten Blick perfekt.
Was mir jetzt noch aufgefallen ist, egal ob die Pause auf 15, oder 0 steht, wird jeder aktive Wecker auch bei einmaligem Klick auf Toggle dekativiert und nach 15 Sekunden wieder auf aktiv gesetzt, also egal, ob er gerade klingelt.
Weiter ist mir aufgefallen, das auch wenn ein Wecker nur einmalig klingeln sollte und in der Alexa App auch "nicht wiederholen" steht wieder nach 15 Sekunden aktiviert wird und so jeden Tag klingeln wird.Kann man das irgendwie ändern, sodass nur der gerade klingelnde Wecker ausgeschaltet wird und nur wieder aktiviert wird, wenn er auf "wiederholen" konfiguriert ist?
Muss man den Wecker überhaupt nach 15 Sekunden wieder aktiv schalten, oder kann man den Block einfach raus nehmen, dann bleibt der Wecker aus und die Alexa Konfiguration würde ihn am nächsten Tag wieder anschalten?
Hast du noch eine Idee, wie man das umsetzen kann?Bin jetzt jedenfalls erstmal froh, dass es überhaupt funktioniert.
Herzlichen Dank und viele Grüße -
@firestone ach verdammt, war halt schon spät.
Die 15 Sekunden Pause sollten unter die Schleife, zusammen mit setzen der Schaltsperre auf Falsch,
also unter den grünen Block "für jeden" anhängen.
Sonst macht er ja jedes mal 15 Sekunde Pause, er soll nur einmal am Ende diese Pause machen um zu verhindern das man mehrmals zu schnell hintereinander drückt -
@firestone sagte in Alexa Wecker beenden:
Kann man das irgendwie ändern, sodass nur der gerade klingelnde Wecker ausgeschaltet wird und nur wieder aktiviert wird, wenn er auf "wiederholen" konfiguriert ist?
woran erkenne ich welcher Wecker gerade klingelt? am
triggert
Datenpunkt?
Und Wiederholung amrecurringPattern
? -
@bananajoe
Habe es jetzt so gemacht.So richtig blicke ich das nicht woran ich erkenne, dass ein Wecker klingelt.
Hab mal ein paar Screenshots gemacht:-
Wecker ist gestellt:
-
Wecker klingelt:
-
Wecker ausgeschaltet/bestätigt mit Toggle:
-
15 Sekunden nachdem der Wecker ausgeschaltet/bestätigt wurde:
-
-
@firestone tja, ich habe auch gerade mal rumgespielt.
.triggert
ist bei mir dann angesprungen und auf True gesprungen solange der Alarm ertönte.Ich habe angepasst das das True/False Spielchen nur bei dem Alarm gemacht wird der auch gerade ein
Triggert
auf True hat. Und dasenabled
wieder auf True gesetzt wird passiert nur wenn inrecurringPattern
etwas anderes als "0" stehtFolgendes Skript funktioniert bei mir, deine beiden ZigBee Buttons sind schon drin:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="-KSsS+Enr$TE4Vsg%mpm">Schaltsperre</variable> <variable id="@wv?o#qCZSC)i1|y#eS(">AlexaAlarm</variable> </variables> <block type="variables_set" id="EA0/SES,9C$OHR)n)M]Z" x="97" y="-123"> <field name="VAR" id="-KSsS+Enr$TE4Vsg%mpm">Schaltsperre</field> <value name="VALUE"> <block type="logic_boolean" id="!lB;{X]I-OxBOwKw%xOX"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="on_ext" id="),q%i*F%aq.axS{N:O#6"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="eLX@`QsbV0](h7m1]^/)"> <field name="oid">ID auswählen</field> </shadow> <block type="text" id="8$CUWKe}[x.OUI58hQK$"> <field name="TEXT">zigbee.0.680ae2fffea15963.toggle</field> </block> </value> <value name="OID1"> <shadow type="field_oid" id="?7AsWVzXdodgdZND-D+["> <field name="oid">ID auswählen</field> </shadow> <block type="text" id="yElw{W/7o^j^g4F|^0l~"> <field name="TEXT">zigbee.0.680ae2fffea4ad58.toggle</field> </block> </value> <statement name="STATEMENT"> <block type="controls_if" id="Jb9;M|7M}AH5B#=NMJD["> <value name="IF0"> <block type="logic_negate" id="L)t=zs9!wIo$A:fIg}D]"> <value name="BOOL"> <block type="variables_get" id="e8MJ(!(q|.H+;H[eGYj="> <field name="VAR" id="-KSsS+Enr$TE4Vsg%mpm">Schaltsperre</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="[X1IDVIAgh_g-,LwraU$"> <field name="VAR" id="-KSsS+Enr$TE4Vsg%mpm">Schaltsperre</field> <value name="VALUE"> <block type="logic_boolean" id="cHdXB%B2Ha7BF983`EqF"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="controls_forEach" id="mSJFB?X4b:8/fv^uGD.="> <field name="VAR" id="@wv?o#qCZSC)i1|y#eS(">AlexaAlarm</field> <value name="LIST"> <block type="selector" id="jybuA+.Q1]CwA1D|tYWz"> <field name="TEXT">channel[state.id=alexa2.0.Echo-Devices.*.Alarm.*.enabled]</field> </block> </value> <statement name="DO"> <block type="controls_if" id="P5$OCuEx:,mh}--WppK5"> <value name="IF0"> <block type="get_value_var" id="d.48DbBgtz-Ag@Q^mg5V"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="Y#0,3(2{{cI=E3~+J?=y"> <field name="oid">ID auswählen</field> </shadow> <block type="variables_get" id="TrNrvP=^X+jfgsfTpx[4"> <field name="VAR" id="@wv?o#qCZSC)i1|y#eS(">AlexaAlarm</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="eZ2k9_4Omk(?F`+s^v_e"> <value name="IF0"> <block type="get_value_var" id="L$NF9umhP}8W`_:o{o*;"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="36M_(!;QIcNdW0.Mx(6`"> <field name="oid">ID auswählen</field> </shadow> <block type="text_replace" id="AioU@C^C9/tm`_C;,R18"> <value name="FROM"> <shadow type="text" id="E[B+SQ-SvFMw#;v3n:s%"> <field name="TEXT">enabled</field> </shadow> </value> <value name="TO"> <shadow type="text" id="W/Uq%XoBVq[:$Sr_YCuF"> <field name="TEXT">triggered</field> </shadow> </value> <value name="TEXT"> <shadow type="text" id="n^`h;Qc~Wu,H`=u)-3,H"> <field name="TEXT">text</field> </shadow> <block type="variables_get" id="=[0A/}fffC?Sj:2EpX/3"> <field name="VAR" id="@wv?o#qCZSC)i1|y#eS(">AlexaAlarm</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="[Tr:Yb(4|}/nNw@C^-d!"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="w6,PMT}I{a(D+9HLIY}i"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="nm=HS1gRfJ23$qc$W2rn"> <field name="VAR" id="@wv?o#qCZSC)i1|y#eS(">AlexaAlarm</field> </block> </value> <next> <block type="control_ex" id="BC;gyw3VrLSN7+Eilo(n"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="lRvhf`jKCNK1L!V+iWi7"> <field name="oid">ID auswählen</field> </shadow> <block type="variables_get" id="D15EBYj,vot[1i{Kll1q"> <field name="VAR" id="@wv?o#qCZSC)i1|y#eS(">AlexaAlarm</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="I`gYn)1uQ|^BXR-cs?l-"> <field name="BOOL">FALSE</field> </shadow> </value> <value name="DELAY_MS"> <shadow type="math_number" id="TE-zk%-:ixJ8*rJ2CD)I"> <field name="NUM">0</field> </shadow> </value> <value name="EXPIRE"> <shadow type="math_number" id="Af^CUq4O%S.F1-_1i%O;"> <field name="NUM">0</field> </shadow> </value> <next> <block type="controls_if" id=".2m6G`D91ZE(ngDT9KiU"> <value name="IF0"> <block type="logic_compare" id="H1YIny(Yh]96[k1yeyr/" inline="false"> <field name="OP">NEQ</field> <value name="A"> <block type="get_value_var" id="+?g1PG,9`qC2h8o7-2Io"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="36M_(!;QIcNdW0.Mx(6`"> <field name="oid">ID auswählen</field> </shadow> <block type="text_replace" id="NIljLW?{6-H?RC$QkNx."> <value name="FROM"> <shadow type="text" id="|5=$IBa#;4:#@0=,1Qnv"> <field name="TEXT">enabled</field> </shadow> </value> <value name="TO"> <shadow type="text" id="r7;q=F;RSwsLY#3NRh$C"> <field name="TEXT">recurringPattern</field> </shadow> </value> <value name="TEXT"> <shadow type="text" id="n^`h;Qc~Wu,H`=u)-3,H"> <field name="TEXT">text</field> </shadow> <block type="variables_get" id=";vn`5`glL2a+Qtf=Yk2c"> <field name="VAR" id="@wv?o#qCZSC)i1|y#eS(">AlexaAlarm</field> </block> </value> </block> </value> </block> </value> <value name="B"> <block type="text" id=":QErGNkh|4KFiq%9yVe["> <field name="TEXT">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id="j+w9rO5qa1SDg8Kd`!ui"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="lRvhf`jKCNK1L!V+iWi7"> <field name="oid">ID auswählen</field> </shadow> <block type="variables_get" id="y8hxnG]Y*7TqEQD[T_vE"> <field name="VAR" id="@wv?o#qCZSC)i1|y#eS(">AlexaAlarm</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id=":kLgXA9.YC8(Jrqw^t!o"> <field name="BOOL">TRUE</field> </shadow> </value> <value name="DELAY_MS"> <shadow type="math_number" id="bc-hC}QQ.EZ2=45D}w)="> <field name="NUM">15000</field> </shadow> </value> <value name="EXPIRE"> <shadow type="math_number" id="S~}x.|oNx#`_xj%i`#^6"> <field name="NUM">0</field> </shadow> </value> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </statement> <next> <block type="timeouts_wait" id="QU|C4Q7K^(E~/!%t1x9Z"> <field name="DELAY">15</field> <field name="UNIT">sec</field> <next> <block type="variables_set" id="b#z7HZRmx_yi97^;VrN{"> <field name="VAR" id="-KSsS+Enr$TE4Vsg%mpm">Schaltsperre</field> <value name="VALUE"> <block type="logic_boolean" id="_+LCCe`y*RRXP]b^_:0n"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </xml>
-
@bananajoe
Habe glaube den Fehler gefunden, aber weiß nicht wie ich ihn beheben kann und woran es liegt.
Nach dem ich, dank deiner Hilfe, deine Blocklys jetzt etwas verstanden habe, habe ich auch die Blocklys auf meinem Raspi verstanden.- das Array wird geleert
- das Array wird wie bei dir mit sämtlichen Alarmen befüllt
- die DeviceIDs werden in die Variable geschrieben
- der hintere Teil des Strings ("enabled") wird abgeschnitten und
- durch das Wort "triggered" ersetzt.
Dann wird geprüft, ob das Event "triggered" auf True geht und ich habe mal beim Raspi geschaut, dort geht es wirklich auf True, wenn der Wecker klingelt und das tut er bei meinem anderen neuen ioBroker nicht.
Das wird das Problem sein.Muss ich also nur noch herausfinden, warum dieses Ereignis "triggered" in einem ioB als auf True geht wenn der Wecker klingelt und warum beim anderen ioB nicht.
Hast du eine Ahnung was das sein könnte?
-
@firestone verschiedene Amazon Accounts? oder 2 der gleiche? das ginge nicht
-
@firestone Ich habe meinen Post oben noch einmal überarbeitet, jetzt passt es, hatte vorher noch einen Fehler im Skript
-
@bananajoe
ich habe nur einen Amazon Account und den benutze ich auf beiden ioBs. Hab ja nur das Backup vom Raspi im neuen ioB eingespielt.
der Raspi hat auch die gleiche IP wie der neue ioB im Unraid Docker, aber ich schalte nie beide zu gleich an.
Musste aber die gleiche IP benutzen, sonst hätte ich bei unendlich vielen Devices die MQTT Server Adresse ändern müssen, das wollte ich nicht.
Hat auch alles funktioniert, bis eben auf die Wecker Geschichte.Was kann ich denn da machen? Ich würde auch auf das Wecken auf dem Raspi verzichten, wenn ich es nur auf dem neuen ioB hinbrächte, der wird dann eh abgeschaltet.
-
@firestone Ich kann dir die Frage nicht beantworten.
Hast du denn den vollständigen Start des Adapters abgewartet? der braucht ja eine Weile bis der ready ist.Was ist bei neuen Alarmen, als welche du nach der Umschaltung erstellst? tauchen die auf? und reagieren wie gewünscht?
Sonst müsstest du im Thread das Alexa-Adapters das mal nachfragen -
@bananajoe
hab gerade einen neuen Wecker angelegt, wird sofort hinzugefügt, aber der geht auch nicht auf true.
Okay, dann poste ich das einmal dort und würde mich dann hier wieder melden.Dein angepasstes Script würde ich dann statt meines alten Scriptes benutzen, weil deins wesentlich cleverer aufgebaut ist.
vielen herzlichen Dank noch mal für deine super Hilfe, bin jetzt schon mal sehr erleichtert, das wir wissen wo der Fehler liegt und ich melde mich.
-
@firestone sagte in Alexa Wecker beenden:
Dein angepasstes Script würde ich dann statt meines alten Scriptes benutzen, weil deins wesentlich cleverer aufgebaut ist.
Ach, das ist bei mir auch "Evolution", mit der Zeit schaut man sich vieles ab. Andere Skripte sehen nicht immer so elegant aus, und es gibt immer viele Wege nach Rom.
Aber als jemand der schon seit 30 Jahren mal mehr, mal weniger Programmiert, finde ich Blockly einfach Klasse für die schnelle Nummer zwischendurch. Und es mit Blockly zu lösen hatte mich an deinem Problem gereizt (und ob ich das mit dem Selektor noch gebacken bekomme).Man könnte das Skript auch umdrehen - Den IDs vom Selektor auf
alexa.2.0.Echo-Devices.*.Alarm.*.triggert
loslassen anstatt alle Alarme abzugrasen. Da müsste es dann nur einen Treffer geben. Diese Erkenntnis hat sich aber ja erst hier im Thread entwickelt (und kam mir gestern Abend beim Einschlafen).Vielleicht magst du das entsprechend umbauen und hier posten
-
@bananajoe
hört sich auch clever an.
Leider sitze ich schon seit zwei Tagen an dem Problem mit dem triggered event und kann es nicht lösen.
Bin total verzweifelt gerade, denn ohne irgend etwas was mir zeigt, das gerade dieser eine Wecker klingelt geht es wohl nicht.
Ich hoffe jetzt, dass mir Apollom77 auf GitHub antwortet. -
@bananajoe
so, Fehler gefunden.
Die Uhrzeit/Datum/Zeitzone im ioBroker Docker selbst stimmte nicht. Alle anderen Zeiten (Unraid selbst, im ioBrocker, usw.) haben gestimmt, aber eben nur die des ioB Dockers nicht.
Keine Ahnung wieso genau das entscheidend ist, aber ich habe den Docker jetzt mit dem Unraid Host synchronisiert indem ich in der ioB Docker Konfiguration einen "neuen Pfad" angelegt habe und "Container Pfad" und "Host Pfad" auf "/etc/localtime" und "Access Mode" auf "Nur Lesen" konfiguriert habe. In der Konsole des Containers war dann mittels "Date" Kommandos sofort die korrekte Zeit eingestellt und sofort reagierte auch das "triggered" Event des Alexa Adapters wieder mit "true" sobald der Wecker klingelt.Und dein Script funktioniert auch hervorragend
Ich Danke dir noch einmal von ganzem Herzen für deine Unterstützung und Geduld