NEWS
[Blockly] Logikbaustein Und/Oder - Kein Textelement möglich?
-
Hallo allerseits!
Nachdem mein Rpi jetzt einige Tage läuft und ich die ersten Anfänge wage habe ich mein erstes Skript begonnen.
Also mein Ziel ist es Alexa anzusprechen mit "jetzt test" um einen Alarm zu triggern, während des Alarms gibt Alexa wiederholt "Testalarm" aus und eine Hue Lampe blinkt.
Das funktioniert grundsätzlich auch schon mal und den Alarm kann ich durch "test ende" auch anhalten.
Mein Problem ist jetzt aber, dass ich mich auf das Objekt "summary" beziehe, welches die letzte Spracheingabe von Alexa ausliest und manchmal steht in der summary eben "Alexa jetzt test" und manchmal nur "jetzt test".
Das hängt wohl mit der Aktualisierungsrate von dem Objekt zusammen, weil wenn ich Alexa sage und erst nach einer Pause "jetzt test" sage dann wird die Eingabe "alexa" wieder überschrieben.
Naja ich hoffe Ihr wisst was ich meine. Jedenfalls dachte ich mir ich kann mir helfen indem ich einfach einen "oder" Logikbaustein verwende und dort dann "alexa jetzt test" und "jetzt test" einfüge. Leider kann ich in den Und/Oder Baustein generell kein Text Element einfügen und ich verstehe nicht wieso.
Lange Rede kurzer Sinn, vielleicht hat ja jemand eine Idee wie ich das lösen könnte. Ich bin dankbar für jede Hilfe und falls ich irgendwas offensichtliches übersehen habe dann sorry! Ich bin blutiger "Programmier"- Anfänger.
Hier noch mein Skript:
~~![](</s><URL url=)https://i.imgur.com/MMxEtXx.png" />
Grüße
Chris~~
-
Sollten sich zwei Texte vergleichen lassen, dann setze doch den oder-Block einfach vor Wert von…= und verwende ein zweites Wert von...=!
Dann hast du noch einen zweiten Trigger im Trigger das geht so nicht!
Den falls-Block einfach unter den anderen falls-Block in den Trigger, oder den ersten falls-Block mit dem kleinen Einstellungssymbol erweitern mit sonst falls!
Enrico
Edit: Und dann sollte der Intervall auch zuverlässig gestoppt werden, ansonsten startet bei jeder Auslösung ein neues Intervall und irgendwann hast du soviel Intervalle am Laufen, dass deine Javascript-Instanz in die Knie geht!
-
Besten Dank für deine schnelle Antwort! So ganz genau kann ich grade nicht folgen, da ich auch nicht mehr am PC bin aber gleich morgen früh geht's ran und dann versuche ich mal das Skript etwas aufzuräumen.
Dass man das Zahnrad auch benutzen kann um den Block zu einem sonst falls zu erweitern wusste ich noch nicht, wie praktisch.
Über den Skript Stopp muss ich mir tatsächlich auch nochmal Gedanken machen weil du hast absolut recht. Ich habe jetzt schon bei nur einem Auslöser das Gefühl dass das wirklich alles andere als flüssig startet und stoppt.
Bin da vielleicht etwas naiv an das ganze ran gegangen. Aber irgendwo muss man ja anfangen nicht wahr?
Nochmals vielen Dank!
Chris
-
Kein Problem, einfach nochmal nachfragen, wenns irgendwo hakt!
Enrico
-
Und dann kannst Dir gleich angewöhnen, nie ein Triger in einen anderen einzubauen, da das zu 99% schief geht wenn man sich nicht 100% sicher ist was man da macht.
Außen also der Triger und darin den Rest mit "FALLS" Bedingungen.
Warum bei einem Logikbaustein kein Text möglich ist, da ist Deine Frage eigentlich auch gleich die Antwort
Logik ist 1 und 0 und Text ist Text, somit wird das nichts. Wie man das trotzdem vergleichen kann, steht ja schon oben.
-
Moin,
ist zwar nicht ganz Dein Aufbau, aber Hinweise dazu hast Du ja schon bekommen.
Man könnte aber sicher auch, die summery triggern, so wie Du es machst und schauen was drinn steht…
Ich habe mir Datenpunkte als Button erstellt und triggere auf wurde aktualisiert und habe mir für manche Sachen noch eine Rotine dahinter gesetzt. (immer wenn etwas an und aus geschaltet werden soll) Würde sicher auch direkt als switch (true/false) gehen, aber dann müsste man das noch anders aufbauen.
Das mit der Routine dahinter hat den Vorteil das ich nicht Alexa, schalte Fernseher an/aus sagen muss, sondern nur Alexa, Fernseher an/aus.
Bei Fernsehsendern mache ich das direkt, da diese ja nur angeschaltet werden und nicht aus. Oft geht es auch ohne das Wort schalte.(Alexa im Aufmerksamkeitsmodus....Alexa, a. r. d. an, z. d. f. an, r. t. l. an usw., dann kann man quasi zappen)
Hier mal ein Beispiel wie ich aktivity über den Harmony Hub schalte und dabei nach sehe welcher Echo angesprochen wurde und was in summery steht wird dann geschaltet.
-
Also alles klar!
Trigger in Trigger… Wenn ich mal drüber nachdenke, ja macht Sinn, dass es wenig Sinn macht! :lol:
Ich habe es jetzt nach euren Tipps angepasst. Die Methode mit "sonst falls" ist sehr viel einleuchtender als wie es vorher war.
Was mir nicht gefällt ist die Art wie meine Lampen blinken. Also dass die ganze Zeit On/Off Befehle gesendet werden... Ich versuche das mal über IFTTT zu steuern. Darüber kann man nämlich die Hue's auch blinken lassen was vermutlich ressourcen schonender ist.
An dslraser: Leider ist die Qualität deines PNG's vom Skript sehr schlecht, das lesen fällt sehr schwer! Wäre es möglich wenn du das nochmal in besserer Qualität hochlädst? Es interessiert mich nämlich sehr wie dein Skript aufgebaut ist und ob ich mir daraus was ableiten kann. Danke
Zur Dokumentation hier mein bisher überarbeitetes Skript. Die Intervalle sollten so auch zuverlässig gestoppt werden.
~~![](</s><URL url=)https://i.imgur.com/5R8VtV2.jpg" />
Herzlichen Dank an euch alle. Wirklich ein sehr tolles Forum hier.
Grüße
Chris~~
-
Ich kann den Screenshot heute Abend austauschen. (ist nur ein Ausschnitt vom Handy gewesen, da ich nicht vorm Rechner saß.)
PS: HUE kannst Du wunderbar blinken lassen. Mit dem command Objekt der Lampe. (hier mal ein Beispiel für eine farbige Birne) Hier mal rot/aus/blau/aus
{"on":true,"level":100,"r":254,"g":53,"b":30,"transitiontime":0}
{"on":false,"transitiontime":0}
{"on":true,"level":100,"r":47,"g":80,"b":254,"transitiontime":0}
{"on":false,"transitiontime":0}
(leider im Moment auch nur vom Handy)
Blockly Export mit noch anderen deaktivierten Sachen
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="procedures_defcustomnoreturn" id="49kvg:%69IF}@lKJq@(J" disabled="true" x="-312" y="-787"><mutation statements="false"><arg name="Name"></arg>
<arg name="Initialisierung"></arg>
<arg name="Beschreibung"></arg>
<arg name="Type"></arg>
<arg name="Rolle"></arg></mutation>
<field name="NAME">Variablen anlegen</field>
<field name="SCRIPT">Y3JlYXRlU3RhdGUoTmFtZSwgSW5pdGlhbGlzaWVydW5nLCB7DQogIG5hbWU6IEJlc2NocmVpYnVuZywNCiAgcmVhZDogdHJ1ZSwgDQogIHdyaXRlOiB0cnVlLCANCiAgdHlwZTogVHlwZSwgDQogIGRlZjogZmFsc2UsDQogIHJvbGU6IFJvbGxlDQp9KTs=</field>
<comment pinned="false" h="80" w="160">Hier ist das Javascript drin.</comment></block>
<block type="procedures_callcustomnoreturn" id="O45R/5Gw(j@)2M*_xdcB" disabled="true" x="-313" y="-762"><mutation name="Variablen anlegen"><arg name="Name"></arg>
<arg name="Initialisierung"></arg>
<arg name="Beschreibung"></arg>
<arg name="Type"></arg>
<arg name="Rolle"></arg></mutation>
<value name="ARG0"><block type="text" id="nSr7Hq~;DUU2#lB+Yj:}"><field name="TEXT">Eigene_Datenpunkte.HUE.Blaulicht</field></block></value>
<value name="ARG1"><block type="text" id="xlqa55O11o`@{+#@Yj;%"><field name="TEXT">true</field></block></value>
<value name="ARG2"><block type="text" id="yEhqZqxh*}Ip8?yzOW7I"><field name="TEXT">Blaulicht</field></block></value>
<value name="ARG3"><block type="text" id="sYAGk@@-Fz^fIDONX!/i"><field name="TEXT">boolean</field></block></value>
<value name="ARG4"><block type="text" id="/t]#6;-K%9u+eD1jG09@"><field name="TEXT">button</field></block></value>
<next><block type="on_ext" id="%Tl,HTmIW-*j;}u#XL1!" disabled="true"><mutation items="1"></mutation>
<field name="CONDITION">any</field><value name="OID0"><shadow type="field_oid" id="FAhu+!}z}^m(x:eHC|_J"><field name="oid">javascript.0.Eigene_Datenpunkte.HUE.Blaulicht</field></shadow></value></block></next></block>
<block type="control" id="mBbbPu8b]=fvWKdeE:1F" x="-263" y="-438"><mutation delay_input="true"></mutation>
<field name="OID">hue.0.HueBridge.Zufahrt.command</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">400</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE"><block type="text" id="K37O@opltENaj^Y[u^!i"><field name="TEXT">{"on":true,"level":100,"r":254,"g":53,"b":30,"transitiontime":0}</field></block></value>
<next><block type="control" id="|2N*9;rAj6dVqXBCuLw"><mutation delay_input="true"></mutation> <field name="OID">hue.0.HueBridge.Zufahrt.command</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">800</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="]WHhSVC8Di)9LGI=|(,f"><field name="TEXT">{"on":false,"transitiontime":0}</field></block></value> <next><block type="control" id="0osXm81HV0+U}I[ZcO1G"><mutation delay_input="true"></mutation> <field name="OID">hue.0.HueBridge.Zufahrt.command</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1200</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="7L~3m.MH-3}U_t|~vj19"><field name="TEXT">{"on":true,"level":100,"r":47,"g":80,"b":254,"transitiontime":0}</field></block></value> <next><block type="control" id="
:+Mod(s,lGcwmwm
_N"><mutation delay_input="true"></mutation>
<field name="OID">hue.0.HueBridge.Zufahrt.command</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">1600</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE"><block type="text" id="?FE10{q}ywn/C^^,B~ag"><field name="TEXT">{"on":false,"transitiontime":0}</field></block></value>
<next><block type="control" id="xTY!c|9a4=ns%jRNsXpp"><mutation delay_input="true"></mutation>
<field name="OID">hue.0.HueBridge.Zufahrt.command</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">2000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE"><block type="text" id="Iz~%f:uc;4obvIs*[p@"><field name="TEXT">{"on":true,"level":100,"r":254,"g":53,"b":30,"transitiontime":0}</field></block></value> <next><block type="control" id="G0o)a)am+qWml6eg=p7d"><mutation delay_input="true"></mutation> <field name="OID">hue.0.HueBridge.Zufahrt.command</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">2400</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="0*:xsed]7|-q)ha9vLlh"><field name="TEXT">{"on":false,"transitiontime":0}</field></block></value> <next><block type="control" id="1*rNIKxX:6gcbbk/FO{."><mutation delay_input="true"></mutation> <field name="OID">hue.0.HueBridge.Zufahrt.command</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">2800</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="4^GkV0=(7KKiu
NJc.g:"><field name="TEXT">{"on":true,"level":100,"r":47,"g":80,"b":254,"transitiontime":0}</field></block></value>
<next><block type="control" id="Ssdq,;Ct--s}q=2m:Bow"><mutation delay_input="true"></mutation>
<field name="OID">hue.0.HueBridge.Zufahrt.command</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">3200</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE"><block type="text" id="sIXLR11qen24+,vL-yhV"><field name="TEXT">{"on":false,"transitiontime":0}</field></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block>
<block type="control" id="mMNY9[M6Dj}6i,#uMLV;" disabled="true" x="-263" y="-37"><mutation delay_input="true"></mutation>
<field name="OID">hue.0.HueBridge.Deckenlampe.command</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">400</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE"><block type="text" id=")@f}|BDkQf[./oCVN6t"><field name="TEXT">{"on":true,"level":100,"r":254,"g":53,"b":30,"transitiontime":0}</field></block></value> <next><block type="control" id="}=YNWR~{{ey)mBm7CJOO" disabled="true"><mutation delay_input="true"></mutation> <field name="OID">hue.0.HueBridge.Deckenlampe.command</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">800</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id=":+ENp|DBhT^/r5_(FHA5"><field name="TEXT">{"on":true,"level":100,"r":47,"g":80,"b":254,"transitiontime":0}</field></block></value> <next><block type="control" id="u/;C#
O83qS4MJt#76RN" disabled="true"><mutation delay_input="true"></mutation>
<field name="OID">hue.0.HueBridge.Deckenlampe.command</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">1200</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE"><block type="text" id="JB:9.62syxYg1s%v8SU8"><field name="TEXT">{"on":true,"level":100,"r":254,"g":53,"b":30,"transitiontime":0}</field></block></value>
<next><block type="control" id="~:=]EEJ1~w1NTDxa9Vz1" disabled="true"><mutation delay_input="true"></mutation>
<field name="OID">hue.0.HueBridge.Deckenlampe.command</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">1600</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE"><block type="text" id="vA)0@A[}d[Zr1*{dx[7("><field name="TEXT">{"on":true,"level":100,"r":47,"g":80,"b":254,"transitiontime":0}</field></block></value>
<next><block type="control" id="ECvC1Oc9,u%jWyI|tFL5" disabled="true"><mutation delay_input="true"></mutation>
<field name="OID">hue.0.HueBridge.Deckenlampe.command</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">2000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE"><block type="text" id="jx+}v_6InW)o(tTM9a%n"><field name="TEXT">{"on":false,"transitiontime":0}</field></block></value></block></next></block></next></block></next></block></next></block></xml>![3822_bildschirmfoto_2019-01-17_um_16.53.26.png](/assets/uploads/files/3822_bildschirmfoto_2019-01-17_um_16.53.26.png)
-
Das ist Goldwert!! Danke! Das letzte Script mit dem command ist gut lesbar, nur das davor nicht.
Bin selbst noch auf Maloche bis heute abend, dann geh ich wieder bei.
Viele Grüße
Chris
-
Das ist Goldwert!! Danke! Das letzte Script mit dem command ist gut lesbar, nur das davor nicht.
Bin selbst noch auf Maloche bis heute abend, dann geh ich wieder bei.
Viele Grüße
Chris `
Ich habe die Bilder aktualisiert und beim letzten noch einen Blockly Export eingefügt. (VPN im Büro…., bin noch arbeiten)
-
Super, so wie du es gelöst hast mit den triggern sieht es noch besser aus, das werd ich später mal so übernehmen.
Danke und Grüße
Chris
-
Hier noch mein Skript:
![](</s><URL url=)https://i.imgur.com/MMxEtXx.png" />` ~~Auch wenn hier scheinbar ein Weg gefunden wurde, die gwünschte Funktion umzusetzen, würde ich gern für nachfolgende nochmal folgende Info dalassen, warum der Vergleich nicht funktioniert:Es handelt sich dabei um ein Syntax-Problem. Man muss nämlich explizit darstellen, was man vergleichen will.
FLASCH ist:
WENN ( <wert von/id="">= [a ODER b] ) DANN …
RICHTIG ist:
WENN ( [ <wert von/id="">= a] ODER [ <wert von/id="">= b] ) DANN …
Dieses Verhalten trifft eigentlich in fast allen Programmiersprachen zu, außer Excel-Formeln.</wert></wert></wert>~~