NEWS
Text2Command
-
Mit dem Text2Command aktiviere ich meine eigenen Scripte um z.B mit einem Kommando aus dem Telagram mehrere Sonofs oder Osram SmartPlugs ein oder auszuschalten. Seit einiger Zeit finde ich aber unter text2command die neu erstellten Scripte nicht mehr. Unter Scripte sind sie natürlich sichtbar. Auch wenn ich einen, mit Text2Command in der Vergangenheit verbundenen und funktionierenden Script kopiere und ihm einen neuen Namen verpasse, ist er unter Text2Command unsichtbar. In dem angehängten Beispiel würde ich gerne den Script "Gartenbeleuchtung" auswählen. Der ist aber unter Text2Command nicht sichtbar. Ich habe schon IOBroker mehrfach neu gestartet und auch die entsprechenden Adapter neugestartet.
Wo muss ich den Fehler suchen?
Danke und Grüße
Christian
-
Das ist formal kein Fehler, sondern Absicht. Es war niemandem bewusst das user so arbeiten.
Daher mal die frage: Wie funktionieren die Skripte denn? Schalten die sich selbst wieder aus? Weil wenn Sie laufen dann kann man Sie ja nicht nochmal starten, oder doch?
-
Die Scripte schalten mehrere wlan und Zigbee Steckdosen gleichzeitig ein oder aus und geben mir auch per Text über Telegram über die Änderung feedback.
Bis jetzt bin ich damit immer gut gefahren, jetzt weiß ich nicht, wie ich das lösen kann.
-
Hallo,
ich muss gestehen, dass ich das früher auch so gemacht habe und noch immer einige Skripte von meinem text2command per scriptEnabled eingeschaltet werden, damit sie etwas ausführen. Dann schaltet sich das Skript wieder aus.
Ich werde mich zeitnah dran setzen und das umbauen.-
EIN Skript anlegen. Name zB "Steuerknoepfe_fuer_text2command"
-
darin mit createState() für jede Aufgabe einen State anlegen (role: "button")
-
mit on() jeden dieser States überwachen und bei neuem true (gedrückter Knopf) gewünschte Befehle ausführen
Vorteile:
-
Alles in einem Skript - übersichtlicher
-
weniger Code, da zB Code für Benachrichtigungen gemeinsam genutzt werden kann
-
Ausführung ggf. schneller, da kein Skript gestartet werden muss
-
keine Probleme mit dem Datenpunkt scriptEnabled
-
keine lange Liste von roten/ausgeschalteten Skript im Skripteditor
! Bisher habe ich solche Skripte gehabt, die beim Skriptstart Befehle abarbeiten und sich dann selbst stoppen
const idRollo1 = "homepilot.0.devices.RolloTronStandard.10000.level_inverted"/*level inverted Rollo SZ links*/; const idRollo2 = "homepilot.0.devices.RolloTronStandard.10001.level_inverted"/*level inverted Rollo SZ rechts*/; >! function aktion () { let ziel = 100; setState(idRollo1, ziel); setStateDelayed(idRollo2, ziel, 500); } >! // bei Skriptstart ausführen aktion(); // selbständig Skript wieder anhalten setStateDelayed("javascript." + instance + ".scriptEnabled." + name.slice(10), false, 5*1000); >! // Meldung, wenn Skript gestoppt (ioBroker Befehl onStop) onStop (function(){ log("Skript: javascript." + instance + ".scriptEnabled." + name.slice(10) + " gestoppt"); }, 1000);
Danke für die Anregung, das muss ich dringend ändern.
Pix
-
-
Genau so habe ich das bisher gemacht und würde es gerne weiter so machen, da es für uns viele Vorteile hat, über telegram selbst erstellte Szenen auzuführen. Leider ist es seit irgendeinem Adapterupdate nicht mehr möglich, neu geschriebene blockly -Scrypte auzuwählen. Im text2commend werden nur noch die älteren Scrypte angezeigt, die neuen nicht mehr. Kann ich irgendeinen Adapter auf eine vorherige Version zurückstellen, damit das wieder möglich ist? Welcher wäre das und in welche Version hat das zuletzt unterstützt?
-
Nimm dir bitte den Rat von Pix zu gute und erstelle die dazugehörigen Objekte das ist das gleiche wie ihr jetzt auch macht nur halt auch auf die Art wie es sein soll.
Es gehen dadurch keine Funktionalität verloren wird sogar besser/effizienter realisiert und auch besser verknüpfbar.
Sent from my iPhone using Tapatalk
-
Ich muss gestehen, ich verstehe im Moment nicht, wie er das genau gemacht hat. Muss mich da erstmal einlesen und informieren.
Schade, dass ich das nicht mehr so machen kann, wie es lange Zeit gut funktioniert hat.
-
Brauchst ein Beispiel?
Sent from my iPhone using Tapatalk
-
Ja, das wäre super.
Im Moment weiß ich nicht, wo ich anfangen soll.
-
Ich möchte nochmal zu meinem Anliegen kommen und um Hilfe bitten.
Pix’s Lösung, die er oben beschrieben hat mit „createState“ werde ich wohl nicht realisieren können, da ich nicht programmieren kann. Wenn sich etwas mit Blockly nicht lösen lässt, werde ich es mit Java nicht hinbekommen.
Soeben habe ich festgestellt, dass seit dem letzten Java-Adapter Update viele, viele Sachen, die ich aufgebaut habe und die lange Zeit, fehlerfrei funktioniert hatten, nicht mehr möglich sind.
Zum Beispiel kann die Familie mit Hilfe der Telagram- „Zusatzbuttons“ prüfen, wer zuhause ist oder ob, bzw. welche Fenster geöffnet sind. Auch die Temperatur und Luftfeuchtigkeit der Räume lassen sich auf Telegram senden. Dazu senden wir per Telegram die entsprechenden Begriffe an Iobroker, text2kommand startet den entsprechenden Blockly-Skript, der die angeforderten Informationen werden an Telegramm gesendet.
Nach dem letzten Update lassen sich zwar die alten Skripte unter text2command auswählen, neu erstellte jedoch nicht. Als Beispiel habe ich hier den Skript „Check Admin“ kopiert und zu „Check Admin Test“ umbenannt. Auf dem Screenshot sieht man, dass der neue Skript „Check Admin Test“ nicht mehr sichtbar und somit nicht mehr ausgewählt werden kann.
Ich weiß nicht, was gegen diese Methode spricht und warum diese Möglichkeit nicht mehr existiert.
Nach dem Downgrade des Java Adapters war alles wieder beim Alten. Ich hätte jedoch gerne eine aktuelle Adapterversion und trotzdem die beschriebene Option.
7614_screenshot__5__li.jpg
7614_screenshot__6__li.jpg
7614_screenshot__4__li.jpg -
Nach dem Downgrade des Java Adapters war alles wieder beim Alten. Ich hätte jedoch gerne eine aktuelle Adapterversion und trotzdem die beschriebene Option. `
Na ja…Der javascript Adapter in der Version 4.0.6 ist latest, also Beta Version, da kann sowas sein und wird dann geändert, optimiert usw. bis zur stable version...
Da must du schon eine issue auf git anlegen... wenn es nicht schon jemand anders gemacht hat...
Und hat übrigens nichts mit dem thema text2command zu tun...
-
Ich möchte nochmal zu meinem Anliegen kommen und um Hilfe bitten.
Pix’s Lösung, die er oben beschrieben hat mit „createState“ werde ich wohl nicht realisieren können, da ich nicht programmieren kann. Wenn sich etwas mit Blockly nicht lösen lässt, werde ich es mit Java nicht hinbekommen. `
Datenpunkte kannst Du auch in Blockly anlegen.
Hier mal ein Beispiel als Button.
Und hier der Blockly Export! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="procedures_defcustomnoreturn" id="49kvg:%69IF}@lKJq@(J" x="-337" y="13"><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" x="-337" y="62"><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.OrdnerX.DatenpunktY</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">neuer Datenpunkt</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></block></xml>Hier ein Switch  Blockly Export >! ```` <xml xmlns="http://www.w3.org/1999/xhtml"><block type="procedures_defcustomnoreturn" id="49kvg:%69IF}@lKJq@(J" x="-337" y="13"><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" x="-337" y="62"><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.OrdnerXX.DatenpunktYY</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">neuer Datenpunkt</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">switch</field></block></value></block></xml>
Sieht dann so aus
Andere Datenpunkte gehen auch…
PS:
Wenn Du Deine eigenen Scripte kopieren willst und es über Deinen Weg nicht geht bzw. diese dann nicht angezeigt werden, dann probiere doch einen Blockly Export Deines eigenen Scripts und erstelle Dir ein neues leeres Blockly und importiere Dein Blockly. Funktioniert das dann ?
Also nicht kopieren, sondern ein neues leeres Blockly erstellen und dann importieren.
-
Vielleicht hilft Dir auch das hier.
-
PS:
Wenn Du Deine eigenen Scripte kopieren willst und es über Deinen Weg nicht geht bzw. diese dann nicht angezeigt werden, dann probiere doch einen Blockly Export Deines eigenen Scripts und erstelle Dir ein neues leeres Blockly und importiere Dein Blockly. Funktioniert das dann ?
Also nicht kopieren, sondern ein neues leeres Blockly erstellen und dann importieren. `
hallo,Die kopierten Skripte sind unter "Skripte" ´natürlich zu sehen. Problem ist, dass weder die kopierten noch die importierten Skripte unter Text2Command zu sehen sind.
Ich habe es jetzt tatsächlich geschafft, dslraser's Vorschlag zu realisieren. Die angelegten Datenpunkte lassen sich mit Text2Command auswählen und mit true oder false beschreiben. Die Skripte werden jetzt ausgeführt, wenn die Datenpunkte den entsprechenden Status besitzen.
Keine Ahnung, ob das die reine Programmierlehre ist, es funktioniert aber
Vielen Dank.