NEWS
Alexa2 Version 3.23.1+
-
@fa-bio sagte in Alexa2 Version 3.23.1+:
ja das könnte echt sein, habe gerade mal einen neuen Wecker angelegt per Sprachbefehl das wird direkt im Adapter angezeigt.
selbes ist mir bei den Play Sachen aufgefallen.
Start/Stopp usw. aus der VIS funktioniert.
Wird aber über den Echo oder der App direkt ein Song gestartet, aktualisiert sich nichts an den DPs. -
@negalein Pause und Next via Vis auch nicht mehr korrekt.
-
Amazon geht mir echt aufn...
-
gerade noch ein Phänomen entdeckt.
Bin mir aber nicht sicher ob es wirklich vom Alexa-Adapter, oder vom Iot oder Hue kommt.Jedes mal wenn der Befehl an Alexa geht, kommen diese 4 Warn-Meldungen.
iot.0 2023-07-28 18:54:36.746 warn [ALEXA] Cannot controlOnOff Error: Won't control hue.0.Wohnzimmer.sat as we have a switch available iot.0 2023-07-28 18:54:36.696 warn [ALEXA] Cannot controlOnOff Error: Won't control hue.0.Wohnzimmer.on as we have a switch available iot.0 2023-07-28 18:54:36.695 warn [ALEXA] Cannot controlOnOff Error: Won't control hue.0.Wohnzimmer.hue as we have a switch available iot.0 2023-07-28 18:54:36.692 warn [ALEXA] Cannot controlOnOff Error: Won't control hue.0.Wohnzimmer.ct as we have a switch available
-
@negalein sagte in Alexa2 Version 3.23.1+:
iot.0 2023-07-28 18:54:36.746
Die Nachricht kommt vom iot -
Bei mir sind seit gestern weitere Bereiche nicht mehr so nutzbar.
- Radioplayer
- Timer
Auch hier erfolgt nur eine Aktualisierung nach Neustart vom Adapter. In der jetzigen Form ist der Alexa2 Adapter leider nahezu nutzlos und kaum noch nutzbar. Es wäre super, wenn sich der Ersteller des Adapter der Probleme bitte mal annehmen würde.
Auf GIT wurde die Problematik ja auch schon beschrieben. Eigentlich geht ja alles, nur eben keine automatische Aktualisierung (Push) mehr.
Lieber ersteller des Adapters. Baue doch bitte für jeden Bereich DP ein, womit eine manuelle Aktualisierung möglich ist (Timer, List, Player, ...) via JS, Blockly, ... Der von einigen GIT-Nutzern angegebene Workaround mit permanenten Adapterneustart halte ich für sinnlos.
LG Ro75.
-
@ro75 , @apollon77 wird erstmal noch anders Beschäftigt sein, zudem ist noch Urlaubszeit.
Ich habe keine Alexa Probleme und nutze den Adapter nur für Volumes. Den Rest mache ich anders und ist bei weitem nicht so belastent für Amazon.....wurde hier schon zu genüge diskutiert. Zudem habe ich keine Fremdgeräte die sonst keine Alexa-Unterstützung haben.btw.....ich besitze eine hochwertige Anlage und werde ein Teufel tun in irgend einer Weise mir was von Alexa quäken zu lassen. Sie ist rein nur für Befehle da.
Zudem steht in der Küche ein Inder Nett Radio . -
@esp8266 sagte in Alexa2 Version 3.23.1+:
wird erstmal noch anders Beschäftigt sein, zudem ist noch Urlaubszeit.
Das ist OK und ist voll nachvollziehbar.
Der Rest, jedem das Seine.
-
@ro75 Bitte Issues im GitHub schauen... Amazon hat Dinge geändert ... Test. einer potentiellen Lösung: Sooo... vllt Lösung in Sicht: Bitte mit testen: https://github.com/Apollon77/ioBroker.alexa2/issues/1045#issuecomment-1666966375
-
Kann Erfolg vermelden freu
-
@apollon77
Super klappt prima, alles durchgetestet und funktioniert, Vielen Danke
War der zweite Pfad und hat kurz gedauert -
-
@apollon77 Vielen Dank für die rasche Antwort und Lösung. Ja, alle von mir beschriebenen Probleme sind hier auch vom Tisch. Dafür ein dickes Danke.
Ro75.
-
Hey Freunde... Ich nutze einen Echo Dot im Bad in Kombination mit einem Bewegungsmelder.
Gebaut habe ich ein Blockly, welches bei Bewegung für eine gewisse Zeit den TuneIn Radaiosender "Defjay Radio Deutschland" abspielt.An sich funktioniert das Skript auch einwandfrei. Allerdings scheint es mir so als ob der Echo-Dot nach Lust und Laune mit dem abspielen der Musik auf sich warten lässt. Manchmal läuft die Musik direkt kurz nachdem der Bewegungsmelder getriggert hat und mal dauert es 30-40 Sekunden bis Musik abgespielt wird.
Sorry für die doofe Frage aber vielleicht hat jemand für mich eine Antwort oder schon ein ähnliches Problem festgestellt.
-
@sushibomba
Häng doch einfach einen DebugBlock direkt hinter den TuneInBlock. Dann kannst Du sehen ob der Sender direkt geschaltet wird.
Alternativ kannst Du auch den DP "currentState" abfragen, jedoch würde ich dann aber noch zusätzlich ein TimeoutBlock verwenden da dieser DP erst auf true geht wenn tatsächlich auch TuneIn läuft... so 5 Sekunden als BeispielUnd zeig mal Dein aktuelles Blockly bitte.
-
Ja habe schon angefangen den Fehler zu finden mit Telegram Bausteinen.
Bin aber bisher nicht schlauer geworden.<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="sBgq}6,1_9cu9MeIH+I0">Musik wird abgespielt</variable> </variables> <block type="comment" id="rqOx29~ynC7C)12RDf]}" x="-1088" y="388"> <field name="COMMENT">BWM Badezimmer</field> <next> <block type="variables_set" id="Vqz*jo9Rio~zBpm682tz"> <field name="VAR" id="sBgq}6,1_9cu9MeIH+I0">Musik wird abgespielt</field> <value name="VALUE"> <block type="math_number" id="0{idy16_FX8Gept0C855"> <field name="NUM">0</field> </block> </value> <next> <block type="on_ext" id="/Yk:jVsvr56%3y3bwUuB"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="UZ,{ey#XwF;`BMXgbB/P"> <field name="oid">alias.0.Räume.Badezimmer.Sensoren.Bewegungsmelder.BWM4.occupancy</field> </shadow> </value> <statement name="STATEMENT"> <block type="debug" id="]T.HdPwC93)s)T%[W3-n"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="3qEw:^JXfhLaRLQ+BLYt"> <field name="TEXT">Jemand ist im Badezimmer</field> </shadow> </value> <next> <block type="telegram" id="tO$aG`O[^RIrul3,{6{V"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <field name="ESCAPING">FALSE</field> <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field> <value name="MESSAGE"> <shadow type="text" id="C#N;BS8R~{~4!b1bvj0r"> <field name="TEXT">Bewegung Bad erkannt</field> </shadow> <block type="text_join" id="c)Ju8_=CQPBnSvscv{;A"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="Oi*rly}2nrQq=S!-^4j^"> <field name="TEXT">Bewegung Bad erkannt</field> </block> </value> <value name="ADD1"> <block type="convert_from_date" id="DqE%(#Nk}*[$4wG}.2]b"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">hh:mm</field> <value name="VALUE"> <block type="get_value" id="}a}xT15lFQyxzTOfc1m3"> <field name="ATTR">ts</field> <field name="OID">alias.0.Räume.Badezimmer.Sensoren.Bewegungsmelder.BWM4.occupancy</field> </block> </value> </block> </value> <value name="ADD2"> <block type="convert_from_date" id="~m]l5lv|:wO#otU$)R75"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">hh:mm:ss</field> <value name="VALUE"> <block type="get_value" id="(TaS}4v9Rl#J5qlY2.*7"> <field name="ATTR">ts</field> <field name="OID">alias.0.Räume.Badezimmer.Sensoren.Bewegungsmelder.BWM4.occupancy</field> </block> </value> </block> </value> </block> </value> <value name="USERNAME"> <block type="text" id="y!xW9Tt,ZNAXr8iXyFHx"> <field name="TEXT">Sushibomba</field> </block> </value> <next> <block type="controls_if" id="ut*G272W_=3Zn.NUJ;Yr"> <value name="IF0"> <block type="logic_operation" id="e=]{)Wk8LyFob9ald{F=" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="m=#kEG_+zV,z]Yl?@8_o"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="j?Z$[!y@*iQlv2be31@{"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.VIS.Eigene_Datenpunkte.Tageszeit</field> </block> </value> <value name="B"> <block type="text" id="d;{20JtT(5yu*WP=5gHq"> <field name="TEXT">Tag</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="GoTumq/Ir+0hjn+G;VAl"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="1q`+4u5M{#eptG^po$0a"> <field name="VAR" id="sBgq}6,1_9cu9MeIH+I0">Musik wird abgespielt</field> </block> </value> <value name="B"> <block type="math_number" id="NY4:)nUd1{kO9j!r/jg-"> <field name="NUM">0</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="+MW^N#+4;-pkdWOA!z;I"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="e/Zly6KPc!h3evs~@Yhf"> <field name="TEXT">Defjay Radio starten</field> </shadow> </value> <next> <block type="telegram" id="1T}7d9||Y[KOun!_0mwV"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <field name="ESCAPING">FALSE</field> <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field> <value name="MESSAGE"> <shadow type="text"> <field name="TEXT">Bewegung Bad erkannt</field> </shadow> <block type="text_join" id="CXyh:}4~|_AACHw#)G9)"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="8T[:*PvqSf{aAw`(4({J"> <field name="TEXT">Alexa soll TuneIn starten</field> </block> </value> <value name="ADD1"> <block type="convert_from_date" id="Z-D~H-E/f9`K1V1IXAu)"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">hh:mm</field> <value name="VALUE"> <block type="get_value" id="w4=(,^(S^r}(r36$zJ%#"> <field name="ATTR">ts</field> <field name="OID">alexa2.0.Echo-Devices.G090VC09910207S1.Music-Provider.TuneIn</field> </block> </value> </block> </value> </block> </value> <value name="USERNAME"> <block type="text" id="_@j`I}rU0-8uDMuv;^(n"> <field name="TEXT">Sushibomba</field> </block> </value> <next> <block type="comment" id="U#8I}4B:Wa+l-@hV|o.i"> <field name="COMMENT">Alexa Dot schwarz steuern</field> <next> <block type="control" id="pvZnPe;2-G$QX|$5_*/;"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090VC09910207S1.Music-Provider.TuneIn</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="O2+Dsi,ddy(4QvvuvK*U"> <field name="TEXT">Defjay Radio Deutschland</field> </block> </value> <next> <block type="on_ext" id="t,5J*s;Wv$T@F!d}*1;v"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="(54@eM8f-32Kx^nXpY7{"> <field name="oid">alexa2.0.Echo-Devices.G090VC09910207S1.Player.currentArtist</field> </shadow> </value> <statement name="STATEMENT"> <block type="telegram" id="i;KgB!HJ]0]!2_7*NTFQ"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <field name="ESCAPING">FALSE</field> <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field> <value name="MESSAGE"> <shadow type="text"> <field name="TEXT">Bewegung Bad erkannt</field> </shadow> <block type="text_join" id="wiWW-a-zj=i]q/n;L0;]"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="?|d}:Yc=alyFO=Y*`o;f"> <field name="TEXT">TuneIn läuft</field> </block> </value> <value name="ADD1"> <block type="convert_from_date" id="+td%=?K=5ch.$@azHoc,"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">hh:mm</field> <value name="VALUE"> <block type="get_value" id=",WXEj,otFEAa0ji6Gv,J"> <field name="ATTR">ts</field> <field name="OID">alexa2.0.Echo-Devices.G090VC09910207S1.Player.currentArtist</field> </block> </value> </block> </value> </block> </value> <value name="USERNAME"> <block type="text" id="rv7j%.;ywuSnb@H^q=ab"> <field name="TEXT">Sushibomba</field> </block> </value> </block> </statement> <next> <block type="math_change" id="t-_2o1)V7(f=;udjKb+/"> <field name="VAR" id="sBgq}6,1_9cu9MeIH+I0">Musik wird abgespielt</field> <value name="DELTA"> <shadow type="math_number" id="{np_=_Kl7VYA$Wod0eV3"> <field name="NUM">1</field> </shadow> </value> <next> <block type="comment" id="Ir|eok?qPRe)qYxTZ(cP"> <field name="COMMENT">Alexa Volume 5</field> <next> <block type="controls_if" id="Z04LA5PQG*.GcKcWKoFU"> <value name="IF0"> <block type="time_compare_ex" id="TH3cgE`7?AaHnramOj~k"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">between</field> <value name="START_TIME"> <shadow type="text" id="*^QJ5|HFqrAqg_bBq};y"> <field name="TEXT">06:00</field> </shadow> </value> <value name="END_TIME"> <shadow type="text" id="{=UQ7T4U#x+X7f?TXD}i"> <field name="TEXT">08:00</field> </shadow> </value> </block> </value> <statement name="DO0"> <block type="debug" id="k6^MK;h0q$JA^CT,UiG}"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="-3ys]rzY_B_m#%!f^[4."> <field name="TEXT">Alexa Volume 5</field> </shadow> </value> <next> <block type="control" id="Uivn-{ic?vz|[eAHX*mZ"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090VC09910207S1.Player.volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="Z@4CqaEvM*[G3oD19m[L"> <field name="NUM">5</field> </block> </value> </block> </next> </block> </statement> <next> <block type="comment" id="pK*-)$?|52p!sE~zRvGV"> <field name="COMMENT">Alexa Volume 10</field> <next> <block type="controls_if" id="n:7W{fx6T]jhYK=4w^5Z"> <value name="IF0"> <block type="time_compare_ex" id="RAgqW4e%G$bN9NQ^@4EU"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">between</field> <value name="START_TIME"> <shadow type="text" id="aK`U2ibW$~5b(qi7:.p1"> <field name="TEXT">08:01</field> </shadow> </value> <value name="END_TIME"> <shadow type="text" id=")RbT}o+oyR9vTTz0wSgO"> <field name="TEXT">21:00</field> </shadow> </value> </block> </value> <statement name="DO0"> <block type="debug" id="2o$*CSVr|:zJOIid.Lrx"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="|q5!!JO~70gXDKI#K6@@"> <field name="TEXT">Alexa Volume 10</field> </shadow> </value> <next> <block type="control" id="T}pyrRcS?s!g#N+8Ro/%"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090VC09910207S1.Player.volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="A;#R|eGf,C~-26~xjS[;"> <field name="NUM">10</field> </block> </value> </block> </next> </block> </statement> <next> <block type="comment" id="c`D5#;N31.0|Wiu[hf8m"> <field name="COMMENT">Alexa Volume 5</field> <next> <block type="controls_if" id="R(80Okmb_}YetioHK:V~"> <value name="IF0"> <block type="time_compare_ex" id="KtVUoW/7U@6,k5W:6@@g"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">between</field> <value name="START_TIME"> <shadow type="text" id="#32jCC+J{Ej57_F,2OMN"> <field name="TEXT">21:01</field> </shadow> </value> <value name="END_TIME"> <shadow type="text" id="^=Jp}_?M}qeLBFpH-Yh@"> <field name="TEXT">23:59</field> </shadow> </value> </block> </value> <statement name="DO0"> <block type="debug" id="_47qh3L^0zSG$N)!KfS7"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="ZZFFQnmcF!d;B,T63EZa"> <field name="TEXT">Alexa Volume 5</field> </shadow> </value> <next> <block type="control" id="5dT(iytFx%e--Ta}OpC~"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090VC09910207S1.Player.volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id=".5(6Y;1[P,::iQ[(Y+m%"> <field name="NUM">5</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> <next> <block type="on_ext" id="_{o?0p9U]=+yuDTlZs~T"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="|nuyER1R,79^@AI=n_7L"> <field name="oid">alias.0.Räume.Badezimmer.Sensoren.Bewegungsmelder.BWM4.no_motion</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="}U)iezdPQEGD4u:mFcRp"> <value name="IF0"> <block type="logic_operation" id="bNaaWnRRoyKL6#BgX]g=" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="9.(TIl#:pFd;t,1up((u"> <field name="OP">NEQ</field> <value name="A"> <block type="variables_get" id="!V!jQ}{;xFXTwJl$CVvJ"> <field name="VAR" id="sBgq}6,1_9cu9MeIH+I0">Musik wird abgespielt</field> </block> </value> <value name="B"> <block type="math_number" id="LSRix6iEbN-O/^jIP$Ds"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="B"> <block type="logic_operation" id="pY5#ZxZY5y{%9s,1GPxY" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="v45/~PNIP24YCdy#j^}o"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="#r.##+@B`?*}j0K,XG]f"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.VIS.Eigene_Datenpunkte.Tageszeit</field> </block> </value> <value name="B"> <block type="text" id="EJ+B@}:1?m5H{!iBdt^P"> <field name="TEXT">Tag</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="#-K0Hzj+kl4#b)KpjiX{"> <field name="OP">GTE</field> <value name="A"> <block type="on_source" id="ZJ[nj%yX=^D=eEI*K}/="> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="xM*j^#nkW{+V5bYw~p{|"> <field name="NUM">180</field> </block> </value> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="|w(0sYmY?Eb8u?O+j|[)"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="P%;#p08=B5Yh~I5.)Ez+"> <field name="TEXT">Niemand mehr im Badezimmer</field> </shadow> </value> <next> <block type="comment" id="KML;%o`jnx`S!(ra|`%m"> <field name="COMMENT">Alexa Dot schwarz steuern</field> <next> <block type="control" id="Dx3?wM-]$aG$@}hW=1+]"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090VC09910207S1.Commands.textCommand</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="text" id="4N5H)`DiqQ;nmHqRJQsC"> <field name="TEXT">Abbruch</field> </block> </value> <next> <block type="variables_set" id="ag4{ctBZG~]ESrf.jt|("> <field name="VAR" id="sBgq}6,1_9cu9MeIH+I0">Musik wird abgespielt</field> <value name="VALUE"> <block type="math_number" id="z~xc_r4hY/!wR#W*)FJM"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </xml>
-
@sushibomba zeig auch mal bitte einen Screenshot
-
@djmarc75
Sorry mehr passt nicht auf den Screenshot -
@apollon77
Super. Klappt einwandfrei.
Vielen Dank! -
@sushibomba sagte in Alexa2 Version 3.23.1+:
Sorry mehr passt nicht auf den Screenshot
Reicht schon....
nutze um TuneinSender abzuspielen folgenden DP (nicht den "phrase to play with tunein")
alexa2.0.Echo-Devices.*.Player.TuneIn-Station
und im Falle von Deinem Sender dann folgendes dort eintragen:
s54430
Die SenderIDs kann man über die Homepage von TuneIn quasi "herausfinden" und beginnt immer mit einem "S"