Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Alexa Routinen zum Schalten von Geräten

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    13
    1
    150

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

Alexa Routinen zum Schalten von Geräten

Geplant Angeheftet Gesperrt Verschoben Blockly
blockly
22 Beiträge 5 Kommentatoren 2.4k Aufrufe 5 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • GaspodeG Gaspode

    @dslraser said in Alexa Routinen zum Schalten von Geräten:

    Irgendwie auch logisch, das Alexa mit "ich kenne das Gerät nicht" usw...antwortet, denn sie kennt es ja tatsächlich nicht. Funktionieren wird Dein Script dann trotzdem, weil das ja nur auf die History reagiert...Nur die erste Antwort von Alexa nervt halt.

    Diese Antwort lässt sich zwar nicht komplett unterbinden, aber per Routine verändern.
    Ich löse das so, dass ich für alle Sprachbefehle, die ein Script per History triggern sollen, eine Routine anlege, die als einzige Reaktion eine Sprachausgabe macht. Also z.B. würde die Routine auf den Sprchbefehl "wer hat angerufen" reagieren und als einzige Reakton auf dem angegebenen Echo sagen "Moment, ich sehe nach". Die eigentliche Aussage wird dann per ioBroker Script gemacht, dass auf die History mit "wer hat angerufen" triggert. Die Routine muss übrigens nur ein einziges Mal in der Alexa App angelegt werden.

    G Offline
    G Offline
    G.Hawk
    schrieb am zuletzt editiert von
    #12

    @Alexi
    Das habe ich auch so gemacht, aber hast du mal gesehen, dass der Datenpunkt Summery dann sofort wieder gelöscht wird, wenn eine Routine darauf startet?

    GaspodeG 1 Antwort Letzte Antwort
    0
    • M Michi68

      @Martin-0
      Hallo,
      vielleicht ist das so etwas einfacher zu verstehen.
      Um eine Abfrage zu stellen brauchst du nur ein Script, hier mal ein Beispiel, Ausgabe ist immer auf dem Gerät das du ansprichst.

      einmal die lange variante
      Status_Lampen2.png


      <xml xmlns="https://developers.google.com/blockly/xml">
      <variables>
      <variable id="~J%;V(L_kdEvsqQ~IBk">Ausgabetext</variable>
      <variable type="timeout" id="timeout">timeout</variable>
      <variable type="timeout" id="timeout2">timeout2</variable>
      </variables>
      <block type="comment" id="cU,}hA#oC@+|ueGSN6{" x="-837" y="-838"> <field name="COMMENT">Alexa, sind noch Lampen eingeschaltet</field> <next> <block type="comment" id="4PKyNb9DKivCB/%Q6R@v"> <field name="COMMENT">Alexa, ist noch Licht eingeschaltet</field> <next> <block type="control" id="@J7@ob/rsR9OCYN+!hI7"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.History.#trigger</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="oI]KS-#7{Lh(W#]MB7C">
      <field name="BOOL">TRUE</field>
      </block>
      </value>
      <next>
      <block type="controls_if" id="{_JT|3Mpv
      tSOVWD3Pz6">
      <value name="IF0">
      <block type="logic_compare" id="D?,QGBBwauCm,Qte=Q-">
      <field name="OP">EQ</field>
      <value name="A">
      <block type="get_value" id="]irLwLWGul].x{m.#.@"> <field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Status.Lampen.Lampen_die_an_sind</field> </block> </value> <value name="B"> <block type="math_number" id="5LL6xi4F_7}-aEi^jHY@"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="5VFfHYTB!S7A^A*?SicA"> <field name="VAR" id="~J%;V(L_kdEvs*qQ~IBk">Ausgabetext</field> <value name="VALUE"> <block type="text_join" id="4?k[0reCRn.mjkxHg41~"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="NgpEM1aq.?1o;p,vmj.">
      <field name="TEXT"><speak><voice name="Alexa"></field>
      </block>
      </value>
      <value name="ADD1">
      <block type="get_value" id="Vh/8rxU]yD!3mT}0y[eC">
      <field name="ATTR">val</field>
      <field name="OID">javascript.0.Eigene_Datenpunkte.Status.Lampen.Lampen_sind_wo_an</field>
      </block>
      </value>
      <value name="ADD2">
      <block type="text" id="nbjQLM
      ~Fd1@ly;mL|Z*">
      <field name="TEXT"></voice></speak></field>
      </block>
      </value>
      </block>
      </value>
      <next>
      <block type="timeouts_settimeout" id="^c,bQ)^![(HGz2QrWw/u">
      <field name="NAME">timeout</field>
      <field name="DELAY">500</field>
      <field name="UNIT">ms</field>
      <statement name="STATEMENT">
      <block type="comment" id="3e5[cR-lQ2P@g3-V]T.">
      <field name="COMMENT">Wohnzimmer</field>
      <next>
      <block type="controls_if" id="KauxWUEJAP2sp)D%Cdm9">
      <value name="IF0">
      <block type="logic_compare" id="F4MK(fbY8WU[yWO)@Z~O">
      <field name="OP">EQ</field>
      <value name="A">
      <block type="get_value" id="Oe@)VM+1Y_1YJn?6xyl"> <field name="ATTR">val</field> <field name="OID">alexa2.0.History.name</field> </block> </value> <value name="B"> <block type="text" id="Q8@T8q|P]D*WR6aG#*j0"> <field name="TEXT">Wohnzimmer</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="r|w?GKF2R8A%WSX@AP[|"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.XXX.Commands.ssml</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="HTcKd2V9F)=k:Ae4mS}F"> <field name="VAR" id="~J%;V(L_kdEvs*qQ~IBk">Ausgabetext</field> </block> </value> </block> </statement> <next> <block type="comment" id="Lg@:ha-a2x,0rfhC.]_="> <field name="COMMENT">Küche</field> <next> <block type="controls_if" id="DTWD3KK_f2CmowWl}Dw+"> <value name="IF0"> <block type="logic_compare" id="*r~k%Po!vzUQHybU)sv">
      <field name="OP">EQ</field>
      <value name="A">
      <block type="get_value" id="285L,qT@eWkZS(#hgXnl">
      <field name="ATTR">val</field>
      <field name="OID">alexa2.0.History.name</field>
      </block>
      </value>
      <value name="B">
      <block type="text" id="w!HtM,nb,KI1aqaOeI36">
      <field name="TEXT">Küche</field>
      </block>
      </value>
      </block>
      </value>
      <statement name="DO0">
      <block type="control" id="_H{%k4b|sj!:P^rDu%};">
      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
      <field name="OID">alexa2.0.Echo-Devices.XXX.Commands.ssml</field>
      <field name="WITH_DELAY">FALSE</field>
      <value name="VALUE">
      <block type="variables_get" id="~51B8(3{stq1BpR1J~p%">
      <field name="VAR" id="~J%;V(L_kdEvs
      qQ~IBk">Ausgabetext</field>
      </block>
      </value>
      </block>
      </statement>
      <next>
      <block type="comment" id="?k8YL[;!mE5;-NddVTc"> <field name="COMMENT">Schlafzimmer</field> <next> <block type="controls_if" id="zyeAn3wMc!;hYZDhK)hy"> <value name="IF0"> <block type="logic_compare" id="bq=B-rG}sw}7gG1{/Y-."> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="ZrS-l8E!}8.4{,qM9i">
      <field name="ATTR">val</field>
      <field name="OID">alexa2.0.History.name</field>
      </block>
      </value>
      <value name="B">
      <block type="text" id="te+gSwhWiVR4,scYV%ca">
      <field name="TEXT">Schlafzimmer</field>
      </block>
      </value>
      </block>
      </value>
      <statement name="DO0">
      <block type="control" id="grH6#whY1.N-q[pLM5X.">
      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
      <field name="OID">alexa2.0.Echo-Devices.XXX.Commands.ssml</field>
      <field name="WITH_DELAY">FALSE</field>
      <value name="VALUE">
      <block type="variables_get" id="[hMf^;p|,CaZVyd+qTm~">
      <field name="VAR" id="~J%;V(L_kdEvs
      qQ~IBk">Ausgabetext</field>
      </block>
      </value>
      </block>
      </statement>
      <next>
      <block type="comment" id="zB.uUF.v)YSQB%fh-NeN">
      <field name="COMMENT">Badezimmer</field>
      <next>
      <block type="controls_if" id="yLDA;+i/I+kd:0zZE}WS">
      <value name="IF0">
      <block type="logic_compare" id="c!s}w1%u#jEsW#BP^],=">
      <field name="OP">EQ</field>
      <value name="A">
      <block type="get_value" id="ANko_h~ho^4}^aa=9sS">
      <field name="ATTR">val</field>
      <field name="OID">alexa2.0.History.name</field>
      </block>
      </value>
      <value name="B">
      <block type="text" id="O,6A4Ym6Pm;LnGW{aHh:">
      <field name="TEXT">Badezimmer</field>
      </block>
      </value>
      </block>
      </value>
      <statement name="DO0">
      <block type="control" id="tg_[?#}w5X(T6O@aJwK8">
      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
      <field name="OID">alexa2.0.Echo-Devices.XXX.Commands.ssml</field>
      <field name="WITH_DELAY">FALSE</field>
      <value name="VALUE">
      <block type="variables_get" id=";#p5#I+i.f#xUjF#U7)@">
      <field name="VAR" id="~J%;V(L_kdEvs
      qQ~IBk">Ausgabetext</field>
      </block>
      </value>
      </block>
      </statement>
      <next>
      <block type="comment" id="Z^qFzd.$Eq69H^BadO9t">
      <field name="COMMENT">Flur</field>
      <next>
      <block type="controls_if" id="M7hV07aa/l?O]8?~Q1;">
      <value name="IF0">
      <block type="logic_compare" id="Kh%.^Ls~FUNBCw.S!;5"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="jQ)Is^0?xsU%Gp=LLE"> <field name="ATTR">val</field> <field name="OID">alexa2.0.History.name</field> </block> </value> <value name="B"> <block type="text" id="bVIu?*Y3KEq}V}ehCWF."> <field name="TEXT">Flur</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="DA3W]TJ_CX$)2O3}Ca|~"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.XXX.Commands.ssml</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="?n:m6}Y4|gYD7,oulgk#"> <field name="VAR" id="~J%;V(L_kdEvs*qQ~IBk">Ausgabetext</field> </block> </value> </block> </statement> <next> <block type="comment" id="t3]i)L+2B.Jnfa2eap,:"> <field name="COMMENT">Gästezimmer</field> <next> <block type="controls_if" id="TO9RT7C9la!v9ZgSMcs4"> <value name="IF0"> <block type="logic_compare" id="~cyXuqsTmYgp5o=wWmm)"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="p%xttIq4BmLwwKxz__+">
      <field name="ATTR">val</field>
      <field name="OID">alexa2.0.History.name</field>
      </block>
      </value>
      <value name="B">
      <block type="text" id="~K5Qg^xQEePp(z.M]wU2">
      <field name="TEXT">Gästezimmer</field>
      </block>
      </value>
      </block>
      </value>
      <statement name="DO0">
      <block type="control" id="yNv9Ae7e^u;=HgPlo_6b">
      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
      <field name="OID">alexa2.0.Echo-Devices.XXX.Commands.ssml</field>
      <field name="WITH_DELAY">FALSE</field>
      <value name="VALUE">
      <block type="variables_get" id="Fa52rB4f[7U3aHZ8eZA"> <field name="VAR" id="~J%;V(L_kdEvs*qQ~IBk">Ausgabetext</field> </block> </value> </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> <next> <block type="debug" id=".{Ew66Z]MiR,{4e08hvp" disabled="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text" id="+;gROYIhif%4n~j.}Nhz"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="H2iPnI=xf$iC3jL9$mQV"> <field name="VAR" id="~J%;V(L_kdEvs*qQ~IBk">Ausgabetext</field> </block> </value> </block> </next> </block> </next> </block> </statement> <next> <block type="controls_if" id="N+F+/fYbDeMZL#(HaEo|"> <value name="IF0"> <block type="logic_compare" id="T+)nZ(]w4LgDY/|?p56g"> <field name="OP">NEQ</field> <value name="A"> <block type="get_value" id="k=BXdEuQo7?Mo%bdfdng"> <field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Status.Lampen.Lampen_die_an_sind</field> </block> </value> <value name="B"> <block type="math_number" id="j-blGyC;V4jTLHKvikXr"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="mk,--n%8x}e1WshOCBc."> <field name="VAR" id="~J%;V(L_kdEvs*qQ~IBk">Ausgabetext</field> <value name="VALUE"> <block type="text_join" id="Ew3VTw7qG|Fx:}vq3hIR"> <mutation items="5"></mutation> <value name="ADD0"> <block type="text" id="L(r$t@)3fal36K.]Oag."> <field name="TEXT">&lt;speak&gt;&lt;voice name="Alexa"&gt;</field> </block> </value> <value name="ADD1"> <block type="text" id="Lo0@rGsN^gt1iZ#@~A/7"> <field name="TEXT">Im Moment sind im </field> </block> </value> <value name="ADD2"> <block type="get_value" id="i?[Ze,W23|M_S5@d?;q">
      <field name="ATTR">val</field>
      <field name="OID">javascript.0.Eigene_Datenpunkte.Status.Lampen.Lampen_sind_wo_an</field>
      </block>
      </value>
      <value name="ADD3">
      <block type="text" id="NqEob9;8UT11wTdCQi#"> <field name="TEXT">eingeschaltete Lampen</field> </block> </value> <value name="ADD4"> <block type="text" id="-9oSLmZYA~kWjO#/VdCp"> <field name="TEXT">&lt;/voice&gt;&lt;/speak&gt;</field> </block> </value> </block> </value> <next> <block type="timeouts_settimeout" id="YUcn[QksR=DsW0nE^6~;"> <field name="NAME">timeout2</field> <field name="DELAY">500</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="comment" id="~/NGTn@Mn185A#A@}8|#"> <field name="COMMENT">Wohnzimmer</field> <next> <block type="controls_if" id="t/iFREg+aB[Tg|fNABO1"> <value name="IF0"> <block type="logic_compare" id="D(x#GpMhMaD67h~IXyLv"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="+}2st9y5DfUl-#ll]Z}:"> <field name="ATTR">val</field> <field name="OID">alexa2.0.History.name</field> </block> </value> <value name="B"> <block type="text" id=";}C_.s[i7I4,Veg*qcG)"> <field name="TEXT">Wohnzimmer</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="K:5m9f*LTG}^bDe*EMRM"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.XXX.Commands.ssml</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="$oM=t$]eZXT[~+[[FM87"> <field name="VAR" id="~J%;V(L_kdEvs*qQ~IBk">Ausgabetext</field> </block> </value> </block> </statement> <next> <block type="comment" id="T-*4J_}8s|[qg1JO7rZB"> <field name="COMMENT">Küche</field> <next> <block type="controls_if" id="ncx,@hS5whA03;Ip5;VA"> <value name="IF0"> <block type="logic_compare" id="Q.RwM6/fds:jBUCp:wUU"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="+DUh%F)wI-Arbp;uhIJO"> <field name="ATTR">val</field> <field name="OID">alexa2.0.History.name</field> </block> </value> <value name="B"> <block type="text" id="PVeTUK8X:tB-(u13[+pC"> <field name="TEXT">Küche</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="_:8l4dLKjuOI@p_I@/qI"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.XXX.Commands.ssml</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id=")!9E6@!U?T#0iZ8?rtU">
      <field name="VAR" id="~J%;V(L_kdEvs
      qQ~IBk">Ausgabetext</field>
      </block>
      </value>
      </block>
      </statement>
      <next>
      <block type="comment" id="rnL!p!!mhI[hPHPE,^8Y">
      <field name="COMMENT">Schlafzimmer</field>
      <next>
      <block type="controls_if" id="15Q%R0g[m.$Q#SiqV,tx">
      <value name="IF0">
      <block type="logic_compare" id="Mr.EdOG:^c[0n[eUPq@">
      <field name="OP">EQ</field>
      <value name="A">
      <block type="get_value" id="NNWi7X3~PA1~?bB.o1z%">
      <field name="ATTR">val</field>
      <field name="OID">alexa2.0.History.name</field>
      </block>
      </value>
      <value name="B">
      <block type="text" id="MNDwMm~j]|[/(L|yNzR4">
      <field name="TEXT">Schlafzimmer</field>
      </block>
      </value>
      </block>
      </value>
      <statement name="DO0">
      <block type="control" id=")kA0gFFA]g2:yn@o=gJQ">
      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
      <field name="OID">alexa2.0.Echo-Devices.XXX.Commands.ssml</field>
      <field name="WITH_DELAY">FALSE</field>
      <value name="VALUE">
      <block type="variables_get" id="3B}%@Yz[li)JZjP,Ylqr">
      <field name="VAR" id="~J%;V(L_kdEvsqQ~IBk">Ausgabetext</field>
      </block>
      </value>
      </block>
      </statement>
      <next>
      <block type="comment" id="]ua=kK~)+chG).Mnyh7w">
      <field name="COMMENT">Badezimmer</field>
      <next>
      <block type="controls_if" id="Z:Gocl?5n,AY)W%/@m4e">
      <value name="IF0">
      <block type="logic_compare" id="m6g}@gs
      B9l
      +iVI_]}b">
      <field name="OP">EQ</field>
      <value name="A">
      <block type="get_value" id="M;]frUPdx-7ZESpG.,,x">
      <field name="ATTR">val</field>
      <field name="OID">alexa2.0.History.name</field>
      </block>
      </value>
      <value name="B">
      <block type="text" id="0:D*?Zgedt*[@sv!0W%n">
      <field name="TEXT">Badezimmer</field>
      </block>
      </value>
      </block>
      </value>
      <statement name="DO0">
      <block type="control" id="DeMs)NQDVQ}.^sj(/%6w">
      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
      <field name="OID">alexa2.0.Echo-Devices.XXX.Commands.ssml</field>
      <field name="WITH_DELAY">FALSE</field>
      <value name="VALUE">
      <block type="variables_get" id="bnCyexNAWsN}xyb7taH"> <field name="VAR" id="~J%;V(L_kdEvs*qQ~IBk">Ausgabetext</field> </block> </value> </block> </statement> <next> <block type="comment" id="mDHc|DBRr51nE8XeHB">
      <field name="COMMENT">Flur</field>
      <next>
      <block type="controls_if" id="W50K|L9rUZ7j%YS7S26H">
      <value name="IF0">
      <block type="logic_compare" id="bznXcs(PYerfY|p.tcj">
      <field name="OP">EQ</field>
      <value name="A">
      <block type="get_value" id="-gei;oNvi;cY7T%]c:|"> <field name="ATTR">val</field> <field name="OID">alexa2.0.History.name</field> </block> </value> <value name="B"> <block type="text" id="|pQKH4O!;YfvapWjdkrQ"> <field name="TEXT">Flur</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="]b)sZp,{Xv0YuzH1s.X)"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.XXX.Commands.ssml</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="3mw_T}b_CW|}j0XUAWlQ"> <field name="VAR" id="~J%;V(L_kdEvs*qQ~IBk">Ausgabetext</field> </block> </value> </block> </statement> <next> <block type="comment" id="#tN~zg61IsMw]DodsqV0"> <field name="COMMENT">Gästezimmer</field> <next> <block type="controls_if" id="g*?G|Wk98SP,fF#~@.DW"> <value name="IF0"> <block type="logic_compare" id="jS#T#,6$9#^Ne$048-x">
      <field name="OP">EQ</field>
      <value name="A">
      <block type="get_value" id="ZOETTZ^TH,)wA;WoSQ:?">
      <field name="ATTR">val</field>
      <field name="OID">alexa2.0.History.name</field>
      </block>
      </value>
      <value name="B">
      <block type="text" id="=RM
      =?4Iq6%q!@8uBJ]6">
      <field name="TEXT">Gästezimmer</field>
      </block>
      </value>
      </block>
      </value>
      <statement name="DO0">
      <block type="control" id="?/@ICyV_A~Le~]P]+jaV">
      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
      <field name="OID">alexa2.0.Echo-Devices.XXX.Commands.ssml</field>
      <field name="WITH_DELAY">FALSE</field>
      <value name="VALUE">
      <block type="variables_get" id="Ri6x|2|F%=P}T|aw+S%"> <field name="VAR" id="~J%;V(L_kdEvs*qQ~IBk">Ausgabetext</field> </block> </value> </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> <next> <block type="debug" id="S(nJ=3w67ayn/{bF]icJ" disabled="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="text" id="+;gROYIhif%4n~j.}Nhz"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="@,rV[(ci[uW6uGM36,]">
      <field name="VAR" id="~J%;V(L_kdEvs
      qQ~IBk">Ausgabetext</field>
      </block>
      </value>
      </block>
      </next>
      </block>
      </next>
      </block>
      </statement>
      </block>
      </next>
      </block>
      </next>
      </block>
      </next>
      </block>
      </next>
      </block>
      </xml>

      und einmal die kurze

      Status_Lampen.png


      <xml xmlns="https://developers.google.com/blockly/xml">
      <variables>
      <variable id="~J%;V(L_kdEvsqQ~IBk">Ausgabetext</variable>
      </variables>
      <block type="comment" id="cU,}hA#oC@+|ueGSN6{" x="-837" y="-838"> <field name="COMMENT">Alexa, sind noch Lampen eingeschaltet</field> <next> <block type="comment" id="4PKyNb9DKivCB/%Q6R@v"> <field name="COMMENT">Alexa, ist noch Licht eingeschaltet</field> <next> <block type="control" id="@J7@ob/rsR9OCYN+!hI7"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.History.#trigger</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="oI]KS-#7{Lh(W#]MB7C">
      <field name="BOOL">TRUE</field>
      </block>
      </value>
      <next>
      <block type="controls_if" id="{_JT|3Mpv
      tSOVWD3Pz6">
      <value name="IF0">
      <block type="logic_compare" id="D?,QGBBwauCm,Qte=Q-">
      <field name="OP">EQ</field>
      <value name="A">
      <block type="get_value" id="]irLwLWGul].x{m.#.@"> <field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Status.Lampen.Lampen_die_an_sind</field> </block> </value> <value name="B"> <block type="math_number" id="5LL6xi4F_7}-aEi^jHY@"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="5VFfHYTB!S7A^A*?SicA"> <field name="VAR" id="~J%;V(L_kdEvs*qQ~IBk">Ausgabetext</field> <value name="VALUE"> <block type="text_join" id="4?k[0reCRn.mjkxHg41~"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="NgpEM1aq.?1o;p,vmj.">
      <field name="TEXT"><speak><voice name="Alexa"></field>
      </block>
      </value>
      <value name="ADD1">
      <block type="get_value" id="Vh/8rxU]yD!3mT}0y[eC">
      <field name="ATTR">val</field>
      <field name="OID">javascript.0.Eigene_Datenpunkte.Status.Lampen.Lampen_sind_wo_an</field>
      </block>
      </value>
      <value name="ADD2">
      <block type="text" id="nbjQLM
      ~Fd1@ly;mL|Z*">
      <field name="TEXT"></voice></speak></field>
      </block>
      </value>
      </block>
      </value>
      <next>
      <block type="control_ex" id="+x0q7E?Hft)ajTWnsbCG">
      <field name="TYPE">false</field>
      <field name="CLEAR_RUNNING">FALSE</field>
      <value name="OID">
      <shadow xmlns="http://www.w3.org/1999/xhtml" type="field_oid" id="jnJO@~-TZSnZH4eTlWi^">
      <field name="oid">Object ID</field>
      </shadow>
      <block type="text_join" id="Uc(C1DhkN=(Ej:3;/_{">
      <mutation items="3"></mutation>
      <value name="ADD0">
      <block type="text" id="3N=uEC@l
      )_nr#{g4uNp">
      <field name="TEXT">alexa2.0.Echo-Devices.</field>
      </block>
      </value>
      <value name="ADD1">
      <block type="get_value" id="mTQ}3#/=?3VG-}4O,m-">
      <field name="ATTR">val</field>
      <field name="OID">alexa2.0.History.serialNumber</field>
      </block>
      </value>
      <value name="ADD2">
      <block type="text" id="E|q29/u43a=DeTghbcsC">
      <field name="TEXT">.Commands.ssml</field>
      </block>
      </value>
      </block>
      </value>
      <value name="VALUE">
      <shadow xmlns="http://www.w3.org/1999/xhtml" type="logic_boolean" id="Xul}ZCl#TwB{^r7um)n{">
      <field name="BOOL">TRUE</field>
      </shadow>
      <block type="variables_get" id="D_FnDB|lSUf55^mbVG7]">
      <field name="VAR" id="~J%;V(L_kdEvs
      qQ~IBk">Ausgabetext</field>
      </block>
      </value>
      <value name="DELAY_MS">
      <shadow type="math_number" id="N@fDKf#STgixesQWvdkZ">
      <field name="NUM">500</field>
      </shadow>
      </value>
      <next>
      <block type="debug" id=".{Ew66Z]MiR,{4e08hvp" disabled="true">
      <field name="Severity">log</field>
      <value name="TEXT">
      <shadow xmlns="http://www.w3.org/1999/xhtml" type="text" id="+;gROYIhif%4n~j.}Nhz">
      <field name="TEXT">test</field>
      </shadow>
      <block type="variables_get" id="H2iPnI=xf$iC3jL9$mQV">
      <field name="VAR" id="~J%;V(L_kdEvsqQ~IBk">Ausgabetext</field>
      </block>
      </value>
      </block>
      </next>
      </block>
      </next>
      </block>
      </statement>
      <next>
      <block type="controls_if" id="N+F+/fYbDeMZL#(HaEo|">
      <value name="IF0">
      <block type="logic_compare" id="T+)nZ(]w4LgDY/|?p56g">
      <field name="OP">NEQ</field>
      <value name="A">
      <block type="get_value" id="k=BXdEuQo7?Mo%bdfdng">
      <field name="ATTR">val</field>
      <field name="OID">javascript.0.Eigene_Datenpunkte.Status.Lampen.Lampen_die_an_sind</field>
      </block>
      </value>
      <value name="B">
      <block type="math_number" id="j-blGyC;V4jTLHKvikXr">
      <field name="NUM">0</field>
      </block>
      </value>
      </block>
      </value>
      <statement name="DO0">
      <block type="variables_set" id="mk,--n%8x}e1WshOCBc.">
      <field name="VAR" id="~J%;V(L_kdEvs
      qQ~IBk">Ausgabetext</field>
      <value name="VALUE">
      <block type="text_join" id="Ew3VTw7qG|Fx:}vq3hIR">
      <mutation items="5"></mutation>
      <value name="ADD0">
      <block type="text" id="L(r$t@)3fal36K.]Oag.">
      <field name="TEXT"><speak><voice name="Alexa"></field>
      </block>
      </value>
      <value name="ADD1">
      <block type="text" id="Lo0@rGsN^gt1iZ#@~A/7">
      <field name="TEXT">Im Moment sind im </field>
      </block>
      </value>
      <value name="ADD2">
      <block type="get_value" id="i?[Ze,W23|M`_S5@d?;q">
      <field name="ATTR">val</field>
      <field name="OID">javascript.0.Eigene_Datenpunkte.Status.Lampen.Lampen_sind_wo_an</field>
      </block>
      </value>
      <value name="ADD3">
      <block type="text" id="NqEob9;8UT11wT`dCQi#">
      <field name="TEXT">eingeschaltete Lampen</field>
      </block>
      </value>
      <value name="ADD4">
      <block type="text" id="-9oSLmZYA~kWjO#/VdCp">
      <field name="TEXT"></voice></speak></field>
      </block>
      </value>
      </block>
      </value>
      <next>
      <block type="control_ex" id="AmH$dRclYraFxYn_M[@N">
      <field name="TYPE">false</field>
      <field name="CLEAR_RUNNING">FALSE</field>
      <value name="OID">
      <shadow xmlns="http://www.w3.org/1999/xhtml" type="field_oid" id="jnJO@~-TZSnZH4eTlWi^">
      <field name="oid">Object ID</field>
      </shadow>
      <block type="text_join" id="UzlVgfT#m#ZF~KKfJRD">
      <mutation items="3"></mutation>
      <value name="ADD0">
      <block type="text" id="X{Xt
      :vkWZD-xQ-@GOTb">
      <field name="TEXT">alexa2.0.Echo-Devices.</field>
      </block>
      </value>
      <value name="ADD1">
      <block type="get_value" id="lev,hwALzsP%~ck[Gq(@">
      <field name="ATTR">val</field>
      <field name="OID">alexa2.0.History.serialNumber</field>
      </block>
      </value>
      <value name="ADD2">
      <block type="text" id="b/=7G)A}}r/0L,~}#8lZ">
      <field name="TEXT">.Commands.ssml</field>
      </block>
      </value>
      </block>
      </value>
      <value name="VALUE">
      <shadow xmlns="http://www.w3.org/1999/xhtml" type="logic_boolean" id="Xul}ZCl#TwB{^r7um)n{">
      <field name="BOOL">TRUE</field>
      </shadow>
      <block type="variables_get" id="f(wOW[koP;iSAE;2ith">
      <field name="VAR" id="~J%;V(L_kdEvs
      qQ~IBk">Ausgabetext</field>
      </block>
      </value>
      <value name="DELAY_MS">
      <shadow type="math_number" id="@[ja$X%TAqP8Vx/RP(.m">
      <field name="NUM">500</field>
      </shadow>
      </value>
      <next>
      <block type="debug" id="S(nJ=3w67ayn/{bF]icJ" disabled="true">
      <field name="Severity">log</field>
      <value name="TEXT">
      <shadow xmlns="http://www.w3.org/1999/xhtml" type="text" id="+;gROYIhif%4n~j.}Nhz">
      <field name="TEXT">test</field>
      </shadow>
      <block type="variables_get" id="@,rV[(ci[u`W6uGM36,]">
      <field name="VAR" id="~J%;V(L_kdEvs*qQ~IBk">Ausgabetext</field>
      </block>
      </value>
      </block>
      </next>
      </block>
      </next>
      </block>
      </statement>
      </block>
      </next>
      </block>
      </next>
      </block>
      </next>
      </block>
      </next>
      </block>
      </xml>

      machen im Endeffekt aber beide das gleiche
      iot Brauchst du um das an Alexa weiter zugeben, also hier das Script auswählen

      iot.png

      dann in der Alexa app eine Routine anlegen und das Script auswählen
      wie zum Beispiel,
      Alexa, sind noch Lampen eingeschaltet
      Alexa, ist noch Licht eingeschaltet
      sind dann halt zwei Routinen auf dasselbe Script

      Routine.PNG

      nur über die History geht es nicht so richtig sauber, schreibt ja auch schon dslraser weiter vorne.
      Mehrere Abfragen geht auch ohne Probleme man muss halt nur die Datenpunkte haben oder sie sich selber befüllen.

      wetter.png

      nur eine Temperatur abfragen geht auch ohne Routine oder Script, nur den Datenpunkt im iot hinzufügen

      multi.png

      hier geht dann Alexa, wie ist die Temperatur von Multisensor Wohnzimmer oder auch Alexa, Temperatur Multisensor Wohnzimmer.
      Geräte steuern also An und Aus macht iot es muss auch keine Routine erstellt werden.

      iot2.png

      und zum Schluss immer Alexa, Geräte suchen, nicht vergessen

      und die Luxus variante gibt es von @dslraser dann hier Fenster und andere Geräte zählen opt. Alexa Ansagen

      vielleicht Hilft es ja was weiter

      Gruß Michael

      G Offline
      G Offline
      G.Hawk
      schrieb am zuletzt editiert von
      #13

      @Michi68
      Super danke. Welchen Typ verwende ich denn im IOT wenn ich ein Skript auslösen will bzw was ist der Trigger?

      M 1 Antwort Letzte Antwort
      0
      • G G.Hawk

        @Alexi
        Das habe ich auch so gemacht, aber hast du mal gesehen, dass der Datenpunkt Summery dann sofort wieder gelöscht wird, wenn eine Routine darauf startet?

        GaspodeG Offline
        GaspodeG Offline
        Gaspode
        schrieb am zuletzt editiert von Gaspode
        #14

        @Martin-0 said in Alexa Routinen zum Schalten von Geräten:

        @Alexi
        Das habe ich auch so gemacht, aber hast du mal gesehen, dass der Datenpunkt Summery dann sofort wieder gelöscht wird, wenn eine Routine darauf startet?

        Es geht doch nur darum, das Event zu triggern. Also per JScript z.B. so:
        (Sorry, mit Blockly kann ich nicht dienen, aber das Prinzip sollte klar werden)

        on('alexa2.0.History.json'/*json*/, function (json) {
        
            let jsonObj = JSON.parse(json.state.val); 
            let summary = jsonObj.summary;
            let echoID = 'alexa2.0.Echo-Devices.' + jsonObj.serialNumber;
            
            if (jsonObj.status == "SUCCESS") {
                if (summary == "wer hat angerufen") {
                    setStateDelayed(echoID+".Commands.speak", "Das geht dich überhaupt nix an!", 1000, true);
                }
            }
            else if (summary == "wer hat angerufen")
        });
        
        G 1 Antwort Letzte Antwort
        0
        • GaspodeG Gaspode

          @Martin-0 said in Alexa Routinen zum Schalten von Geräten:

          @Alexi
          Das habe ich auch so gemacht, aber hast du mal gesehen, dass der Datenpunkt Summery dann sofort wieder gelöscht wird, wenn eine Routine darauf startet?

          Es geht doch nur darum, das Event zu triggern. Also per JScript z.B. so:
          (Sorry, mit Blockly kann ich nicht dienen, aber das Prinzip sollte klar werden)

          on('alexa2.0.History.json'/*json*/, function (json) {
          
              let jsonObj = JSON.parse(json.state.val); 
              let summary = jsonObj.summary;
              let echoID = 'alexa2.0.Echo-Devices.' + jsonObj.serialNumber;
              
              if (jsonObj.status == "SUCCESS") {
                  if (summary == "wer hat angerufen") {
                      setStateDelayed(echoID+".Commands.speak", "Das geht dich überhaupt nix an!", 1000, true);
                  }
              }
              else if (summary == "wer hat angerufen")
          });
          
          G Offline
          G Offline
          G.Hawk
          schrieb am zuletzt editiert von
          #15

          @Alexi
          OK
          Die Frage ist folgende:
          Lege ich einen Datenpunkt an, der z.B heißt: Garagentor öffnen. Diesen wurde ich dann in iot einbinden und diesen als Trigger für ein Skript nehmen?

          Ich habe drei Systemvariablen in der CCU die stimmen müssen bevor Alexa das Garagentor öffnen darf.

          Ich schreibe also ein Blockly: Wenn die Bedingungen stimmen, dann Garagentor.state auf wahr.

          Ich will es nur nicht so kompliziert machen, deswegen die Frage, ob ich dieses Skript einfach so in iot starten kann, also über eine Routine oder ob ich einen Datenpunkt anlege der als Trigger für das Skript dient.

          GaspodeG 1 Antwort Letzte Antwort
          0
          • G G.Hawk

            @Alexi
            OK
            Die Frage ist folgende:
            Lege ich einen Datenpunkt an, der z.B heißt: Garagentor öffnen. Diesen wurde ich dann in iot einbinden und diesen als Trigger für ein Skript nehmen?

            Ich habe drei Systemvariablen in der CCU die stimmen müssen bevor Alexa das Garagentor öffnen darf.

            Ich schreibe also ein Blockly: Wenn die Bedingungen stimmen, dann Garagentor.state auf wahr.

            Ich will es nur nicht so kompliziert machen, deswegen die Frage, ob ich dieses Skript einfach so in iot starten kann, also über eine Routine oder ob ich einen Datenpunkt anlege der als Trigger für das Skript dient.

            GaspodeG Offline
            GaspodeG Offline
            Gaspode
            schrieb am zuletzt editiert von Gaspode
            #16

            @Martin-0
            Wenn ich dich richtig verstehe, willst du doch einen Echo etwas fragen bzw. etwas zu ihm sagen und dann eine von einem Script generierte Antwort bekommen, oder?

            Wenn ja, kopiere doch mal zum Verständnis folgenden Code in ein JScript:

            on('alexa2.0.History.json'/*json*/, function (json) {
                let jsonObj = JSON.parse(json.state.val); 
                let summary = jsonObj.summary;
                let echoID = 'alexa2.0.Echo-Devices.' + jsonObj.serialNumber;
                log (echoID+": "+summary);
            });
            

            Wenn du jetzt zu irgendeinem Echo etwas sagst, wirst du eine entsprechende Ausgabe bekommen. Die kannst du verarbeiten und einen Echos sagen lassen, was du willst (s. Beispiel oben).

            Das Problem: Da die Echos mit dem Text nix anfabngen können, kommen Meldungen wie "Kenn ich nicht", "weiß ich nicht", etc. Um das abzustellen, musst du für jeden Text, den du sagen willst eine "leere" Routine in der Alexa App anlegen.

            1 Antwort Letzte Antwort
            0
            • G G.Hawk

              @Michi68
              Super danke. Welchen Typ verwende ich denn im IOT wenn ich ein Skript auslösen will bzw was ist der Trigger?

              M Offline
              M Offline
              Michi68
              schrieb am zuletzt editiert von
              #17

              @Martin-0
              Auf das Beispiel von mir oben bezogen ist der Auslöser

              trigger.png

              In iot wählst du das Script selbst aus

              iot_auswahl.png

              Sieh dir mal die Screenshots oben genauer an dann verstehst du das schon, ist ganz einfach

              G dslraserD 2 Antworten Letzte Antwort
              0
              • M Michi68

                @Martin-0
                Auf das Beispiel von mir oben bezogen ist der Auslöser

                trigger.png

                In iot wählst du das Script selbst aus

                iot_auswahl.png

                Sieh dir mal die Screenshots oben genauer an dann verstehst du das schon, ist ganz einfach

                G Offline
                G Offline
                G.Hawk
                schrieb am zuletzt editiert von
                #18

                @Michi68
                Also ich gebe mir wirklich Mühe, aber was macht den der Trigger rescan?
                Ich will ja nicht bei jeder Aktualisierung alle Skripte laufen lassen.

                Ich hatte jetzt gedacht ich mach mir einfach einen Datenpunkt als Schalter, binde diesen in den iot ein und benutze ihn bei einer Routine, der dann einfach ein skript ausführt.
                Oder bin ich total auf dem Holzweg?

                dslraserD 2 Antworten Letzte Antwort
                0
                • M Michi68

                  @Martin-0
                  Auf das Beispiel von mir oben bezogen ist der Auslöser

                  trigger.png

                  In iot wählst du das Script selbst aus

                  iot_auswahl.png

                  Sieh dir mal die Screenshots oben genauer an dann verstehst du das schon, ist ganz einfach

                  dslraserD Offline
                  dslraserD Offline
                  dslraser
                  Forum Testing Most Active
                  schrieb am zuletzt editiert von dslraser
                  #19

                  @Michi68 sagte in Alexa Routinen zum Schalten von Geräten:

                  In iot wählst du das Script selbst aus

                  Du schaltest scriptEnabled ? (das ist keine gute Idee)
                  Beim Neustart des JS Adapter oder ioBroker selbst werden dann diese Scripte alle ausgeführt.
                  Das wird auch ausdrücklich nicht empfohlen.

                  M 1 Antwort Letzte Antwort
                  0
                  • G G.Hawk

                    @Michi68
                    Also ich gebe mir wirklich Mühe, aber was macht den der Trigger rescan?
                    Ich will ja nicht bei jeder Aktualisierung alle Skripte laufen lassen.

                    Ich hatte jetzt gedacht ich mach mir einfach einen Datenpunkt als Schalter, binde diesen in den iot ein und benutze ihn bei einer Routine, der dann einfach ein skript ausführt.
                    Oder bin ich total auf dem Holzweg?

                    dslraserD Offline
                    dslraserD Offline
                    dslraser
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von dslraser
                    #20

                    @Martin-0 sagte in Alexa Routinen zum Schalten von Geräten:

                    Ich hatte jetzt gedacht ich mach mir einfach einen Datenpunkt als Schalter, binde diesen in den iot ein und benutze ihn bei einer Routine, der dann einfach ein skript ausführt.
                    Oder bin ich total auf dem Holzweg?

                    so ist es richtig.
                    (ich nehme immer Button und triggere auf wurde aktualisiert. Im iot Adapter Switch einstellen.)

                    1 Antwort Letzte Antwort
                    0
                    • G G.Hawk

                      @Michi68
                      Also ich gebe mir wirklich Mühe, aber was macht den der Trigger rescan?
                      Ich will ja nicht bei jeder Aktualisierung alle Skripte laufen lassen.

                      Ich hatte jetzt gedacht ich mach mir einfach einen Datenpunkt als Schalter, binde diesen in den iot ein und benutze ihn bei einer Routine, der dann einfach ein skript ausführt.
                      Oder bin ich total auf dem Holzweg?

                      dslraserD Offline
                      dslraserD Offline
                      dslraser
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von
                      #21

                      @Martin-0 sagte in Alexa Routinen zum Schalten von Geräten:

                      aber was macht den der Trigger rescan?

                      wenn Du im Alexa2 Adapter Push Verbindung aktiviert hast, dann brauchst Du das eigentlich nicht.

                      1 Antwort Letzte Antwort
                      0
                      • dslraserD dslraser

                        @Michi68 sagte in Alexa Routinen zum Schalten von Geräten:

                        In iot wählst du das Script selbst aus

                        Du schaltest scriptEnabled ? (das ist keine gute Idee)
                        Beim Neustart des JS Adapter oder ioBroker selbst werden dann diese Scripte alle ausgeführt.
                        Das wird auch ausdrücklich nicht empfohlen.

                        M Offline
                        M Offline
                        Michi68
                        schrieb am zuletzt editiert von
                        #22

                        @dslraser sagte in Alexa Routinen zum Schalten von Geräten:

                        @Michi68 sagte in Alexa Routinen zum Schalten von Geräten:

                        In iot wählst du das Script selbst aus

                        Du schaltest scriptEnabled ? (das ist keine gute Idee)
                        Beim Neustart des JS Adapter oder ioBroker selbst werden dann diese Scripte alle ausgeführt.
                        Das wird auch ausdrücklich nicht empfohlen.

                        Ja stimmt macht er ab und zu, aber nicht immer ich hatte es aber bis jetzt noch nicht so richtig geschnallt warum. :man-facepalming: Danke für den Hinweis, man lernt nie aus.

                        Ich muss doch noch eine ganze menge umstellen, und es wird immer mehr.

                        1 Antwort Letzte Antwort
                        0
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        244

                        Online

                        32.7k

                        Benutzer

                        82.4k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe