Beiträge von geschild

    Kommentar zu meinem: Hat's geholfen?

    Leute fragen, Leute kriegen Antwort, dann ................ nix mehr. Wenn man sich schon die Mühe macht, wäre es schön eine Reaktion zu bekommen (Ja hat geholfen oder war nicht das, was ich wollte oder oder ....). Das ist nicht als "fishing for compliments" zu verstehen, so m.E. eine Frage der Umgangsformen, die man auch im Anonymen pflegen sollte. Es vielleicht ein Generationenproblem.

    Habe mal einen ersten Vorschlag programmiert.

    Hierzu in userdata einen Ordner angelegt: "Script_Fernseher"

    Im diesem 3 Datenpunkte angelegt: "ShellyPower" "StarzeitFernseher" und "StopzeitFernseher".

    Wenn "ShellyPower" von false auf true wechselt wird die aktuelleZeit in "StartzeitFernseher" eingetragen,

    bei true auf false die aktuelle Zeit in "StopzeitFernseher" eingetragen.

    Der Datenpunkt "ShellyPower" wäre bei dir der <Power> im Shelly-datenbaum.

    Bei weiteren Fragen können wir auch gerne telefonischen Kontakt aufnehmen, geht nach meiner Erfahrung oft schneller als die ganze Schreiberei. Tel.Nummernaustausch dann per Email oder Konversation nur unter uns.

    Du legst in NodeRed einen iobroker-input an und verknüpfst diesen mit dem Datenpunkt <alexa2.0.History.summary>. Am Ausgang des input hast du dann den an die Alexa gesprochenen Text.

    Das Auswerten dieses Textes (und auch einlesen) habe ich bisher mit bloickly gemacht. Hierfür könnte ich dir ein Bespiel zukommen lassen.

    Ich habe dieses Verfahren auch selber lange verwendet, bis zum dem Tag als die push Verbindung mit Alexa nicht mehr zuverlässig klappte (in Foren ist man ist man der Meinung, dass zeitweilig seitens Amazon daran "herumgespielt" wird). Es dauerte teilweise recht lange bis der Text eintrudelte.

    Ich habe mit daraufhin entschlossen ein paar Euro pro Jahr zu investieren und iot zu verwenden. Bin bisher damit sehr zufrieden.

    Hier mal ein Vorschlag:

    Ich habe mir erlaubt in Kommentaren ein paar Anmerkungen reinzuschreiben. Bitte wieder löschen.

    Das script nimmt Bezug auf von mir im user_data.0 angelegte Datenpunkte, diese also auf deine richtigen ändern.

    Ich denke der Microcontroller bekommt seine Befehle entweder von den Tasten oder vom ESP. Ist also ohne den ESP an der seriellen Schnittstelle stumm. Solltest du beim Auslesen der seriellen Schnittstelle Unterstützung brauchen, kann ich dir gerne helfen. Ich habe so etwas schon bei anderen Geräten z.B. Dimmern schon gemacht.

    In alexa2.0.history.serialnumber wird nach einem Befehl, die alexa vermerkt, die den Befehl gehört hat.

    Über eine if seriennummer == xx else if .... kannst du nun selektieren und den passenden alexa2.0.echodevice.commands.speak auswählen.


    <xml xmlns="https://developers.google.com/blockly/xml">

    <block type="on_ext" id=":FiZdBGOsY7i0~^/?UB9" x="13" y="13">

    <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="h!5yAOG,*$T9gZZ#Yenx">

    <field name="oid">alexa2.0.History.summary</field>

    </shadow>

    </value>

    <statement name="STATEMENT">

    <block type="controls_if" id="ulMxio2=?Z?!U0outdq7">

    <value name="IF0">

    <block type="logic_compare" id="7)2]~!!+YI9LOvEyGo/]">

    <field name="OP">EQ</field>

    <value name="A">

    <block type="get_value" id="?0qub$$n!mepgBF2SRUx">

    <field name="ATTR">val</field>

    <field name="OID">alexa2.0.History.serialNumber</field>

    </block>

    </value>

    <value name="B">

    <block type="get_value" id="k]W6*ZjgjVJ?~b%1^qP]">

    <field name="ATTR">val</field>

    <field name="OID">alexa2.0.Echo-Devices.aaa55036383c46d6989fd1646b2a7b4f.Info.serialNumber</field>

    </block>

    </value>

    </block>

    </value>

    <statement name="DO0">

    <block type="control" id="pq~#+-SnoD/qO$Q]pIcp">

    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>

    <field name="OID">alexa2.0.Echo-Devices.aaa55036383c46d6989fd1646b2a7b4f.Commands.speak</field>

    <field name="WITH_DELAY">FALSE</field>

    <value name="VALUE">

    <block type="text" id="GhXRWWU%Z[g}::-=4bTL">

    <field name="TEXT">Hallo da bin ich</field>

    </block>

    </value>

    </block>

    </statement>

    </block>

    </statement>

    </block>

    </xml>

    Wenn die Antwort nicht ganz verständlich ist, schick mir eine Email und wir könnten Tel.Nummer austauschen.

    Ich betreibe sowohl Alexa als auch GoogleHomeMIni über den iot-Adapter im iobroker mit Erfolg eingebunden. Über Alexa habe ich keine Probleme Routinen zu erstellen, die einem Gerät = Datenpunkt im iobroker einen Zahlenwert zuweisen.

    Das Gleiche ist mir mit dem GoogleHome bisher nicht gelungen. Ich benötige Hilfe bezüglich des Bearbeitens der Geräte in der Google-Geräte Liste.

    Beispiel: Datenpunkt mit "name": "Rollo" und "type": "number"

    Ich möchte sagen können:

    "OK google, Rollo rauf" und der Datenpunkt nimmt den Wert = 1 an

    "OK google, Rollo runter" und der Datenpunkt nimmt den Wert = 2 an

    "OK google, Rollo halt" und der Datenpunkt nimmt den Wert = 3 an

    und noch einige Befehle mehr.

    Würde auch gerne mit jemandem telefonieren oder teamviewen, um nicht tagelang schreiben zu müssen.

    Wie gesagt, mit Alexa sind die oben genannten Befehle (Routinen) kein Problem und laufen. Würde aber gerne auf GoogleMini umsteigen, da dieses System allgemeine Fragen (z.B. "wie lautet die Telefonnummer von xyz") wesentlich besser beantwortet als Alexa, die oft nur "Dummzeug" von sich gibt.

    Habs korrigiert und, da ich nicht weiss was zwischen 0:00 und 8:00 passiert, noch einen "Sicherheitsschliesser" eingebaut.

    <block xmlns="https://developers.google.com/blockly/xml" type="controls_if" id="TR?.x_kM$N9fQU9dmWVA" x="-741" y="-35">

    <mutation elseif="1" else="1"></mutation>

    <value name="IF0">

    <block type="time_compare_ex" id="@nfB?ZOf_%ygzd|L}+HE">

    <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation>

    <field name="USE_ACTUAL_TIME">TRUE</field>

    <field name="OPTION">&gt;=</field>

    <value name="START_TIME">

    <shadow type="text" id="dX/|lE(N#K0QZQt`P(%N">

    <field name="TEXT">16:00</field>

    </shadow>

    </value>

    </block>

    </value>

    <statement name="DO0">

    <block type="controls_if" id="mXbUSGn_3tI@F/hXrq}v">

    <value name="IF0">

    <block type="logic_compare" id="`zQ*=FBmC%@:xnMxqp]J">

    <field name="OP">EQ</field>

    <value name="A">

    <block type="variables_get" id="tL`w`l~oU=*Tp?5*Eilg">

    <field name="VAR" id=".@;}?ukiF~%oaS.~a|X)">statusGaragentor</field>

    </block>

    </value>

    <value name="B">

    <block type="logic_boolean" id="^Qee#eR0T)|qA$Ma^G^u">

    <field name="BOOL">TRUE</field>

    </block>

    </value>

    </block>

    </value>

    <statement name="DO0">

    <block type="variables_set" id="W^VT/A1Ewt:@,+hCC4.,">

    <field name="VAR" id=".@;}?ukiF~%oaS.~a|X)">statusGaragentor</field>

    <value name="VALUE">

    <block type="logic_boolean" id="W4}]Eh;xE`xp=zE|;kK|">

    <field name="BOOL">FALSE</field>

    </block>

    </value>

    </block>

    </statement>

    </block>

    </statement>

    <value name="IF1">

    <block type="time_compare_ex" id="7DIJV4v2Vu]gL3x;S2$n">

    <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="false" actual_time="true"></mutation>

    <field name="USE_ACTUAL_TIME">TRUE</field>

    <field name="OPTION">&gt;=</field>

    <value name="START_TIME">

    <shadow type="text" id="H4CXWDG!8!N(gizG7Xhh">

    <field name="TEXT">08:00</field>

    </shadow>

    </value>

    </block>

    </value>

    <statement name="DO1">

    <block type="controls_if" id="(u`/8~W@Ev1Q7z~o6jE,">

    <value name="IF0">

    <block type="logic_compare" id="7ycwDj+I9$XT/RdJlZ3P">

    <field name="OP">GTE</field>

    <value name="A">

    <block type="variables_get" id="du.*#ZlI.PccT[Cx[Ve#">

    <field name="VAR" id="xT=N{!)@RjMGtc/4t)jS">differenzLuftfeuchte</field>

    </block>

    </value>

    <value name="B">

    <block type="math_number" id="Cpnf-H.xeo-8CC5(C:$Y">

    <field name="NUM">10</field>

    </block>

    </value>

    </block>

    </value>

    <statement name="DO0">

    <block type="controls_if" id="+kTK?666e--lBSStIWIL">

    <value name="IF0">

    <block type="logic_compare" id="}f*Pn{lbG;*g2%BLs[Mu">

    <field name="OP">EQ</field>

    <value name="A">

    <block type="variables_get" id="e1RFdG~].~-G8HFCJh#P">

    <field name="VAR" id=".@;}?ukiF~%oaS.~a|X)">statusGaragentor</field>

    </block>

    </value>

    <value name="B">

    <block type="logic_boolean" id="|#,WSf}bm`@u%y,y}$/#">

    <field name="BOOL">FALSE</field>

    </block>

    </value>

    </block>

    </value>

    <statement name="DO0">

    <block type="variables_set" id="L)pOu%0nxkyP~IiE3dE?">

    <field name="VAR" id=".@;}?ukiF~%oaS.~a|X)">statusGaragentor</field>

    <value name="VALUE">

    <block type="logic_boolean" id="=!zuz(0CZbz4q+[3/B}6">

    <field name="BOOL">TRUE</field>

    </block>

    </value>

    </block>

    </statement>

    </block>

    </statement>

    <next>

    <block type="controls_if" id="L3f3{L{vc6k-b7B-#w#3">

    <value name="IF0">

    <block type="logic_compare" id=".S/~6VnuWtLM!mCX}/ED">

    <field name="OP">LTE</field>

    <value name="A">

    <block type="variables_get" id="bs[OGul!a8nMW]4Ht`M7">

    <field name="VAR" id="xT=N{!)@RjMGtc/4t)jS">differenzLuftfeuchte</field>

    </block>

    </value>

    <value name="B">

    <block type="math_number" id="wDw:0sc2*W+88i$88b=y">

    <field name="NUM">5</field>

    </block>

    </value>

    </block>

    </value>

    <statement name="DO0">

    <block type="controls_if" id="E]@E(5mqN1=DJJQ?X5;)">

    <value name="IF0">

    <block type="logic_compare" id="@w5+8o+3fm@g^3;?(#u8">

    <field name="OP">EQ</field>

    <value name="A">

    <block type="variables_get" id="6T)WIU]nhHUJr1?UnP$t">

    <field name="VAR" id=".@;}?ukiF~%oaS.~a|X)">statusGaragentor</field>

    </block>

    </value>

    <value name="B">

    <block type="logic_boolean" id="2)GCo-m4pt9$7M~}(j%T">

    <field name="BOOL">TRUE</field>

    </block>

    </value>

    </block>

    </value>

    <statement name="DO0">

    <block type="variables_set" id="98[WmWS%-W97F6|@iELg">

    <field name="VAR" id=".@;}?ukiF~%oaS.~a|X)">statusGaragentor</field>

    <value name="VALUE">

    <block type="logic_boolean" id="S)$Yaor4~dfEDgz(eyE%">

    <field name="BOOL">FALSE</field>

    </block>

    </value>

    </block>

    </statement>

    </block>

    </statement>

    </block>

    </next>

    </block>

    </statement>

    <statement name="ELSE">

    <block type="controls_if" id="yja.z{n/%%oD=B|(6)Fj">

    <value name="IF0">

    <block type="logic_compare" id="^x_(h#{]:l{$g|(k-c7g">

    <field name="OP">EQ</field>

    <value name="A">

    <block type="variables_get" id="/?LMmX.o$E.-b4hGL#4:">

    <field name="VAR" id=".@;}?ukiF~%oaS.~a|X)">statusGaragentor</field>

    </block>

    </value>

    <value name="B">

    <block type="logic_boolean" id="VF*11pAB(nHX7LMYBR?C">

    <field name="BOOL">TRUE</field>

    </block>

    </value>

    </block>

    </value>

    <statement name="DO0">

    <block type="variables_set" id="V/mI031?1!aHYk~lq66h">

    <field name="VAR" id=".@;}?ukiF~%oaS.~a|X)">statusGaragentor</field>

    <value name="VALUE">

    <block type="logic_boolean" id="+fC{+Wt;BJMg;(.3FV%.">

    <field name="BOOL">FALSE</field>

    </block>

    </value>

    </block>

    </statement>

    </block>

    </statement>

    </block>