@da_woody sagte in Test Adapter iQontrol 1.5.x:
genau darüber bin ich gestern auch gestolpert. ist mir aufgefallen, da ich einen der 3d-drucker gestartet hab und trotzdem beide instanzen moniert wurden. (octoprint.0 grün) stop/start hat nichts gebracht, außer der fehler. objekte gelöscht, blockly neu importiert (mit instanzen nummern), DP werden angelegt, aber nicht befüllt.
erst der neustart von javascript.0 hats gelöst.
Ich habe mal bissl rum probiert was den Neustart einer JS Instanz angeht, wenn ein Adapter oder eine Adapter Instanz nicht mehr existiert, damit das Blockly dann weiter arbeitet. Ich habe nur noch nicht die Stelle in Deinem Blockly gefunden, an der man es so "ähnlich" wie das hier einbauen könnte. In diesem Beispiel wird geprüft ob system.adapter.iqontrol.1 existiert, wenn nicht, dann wird die iQontrol.0 neu gestartet. (Ich habe iQontrol.0 Neustart nur zum testen genommen, damit mir nicht immer die JS Instanz neu startet, geht aber auch mit einer JS Instanz)
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="Kin_d{P!1pKMo+5cZU`O">Instanz</variable>
<variable id="b/PDv/D$qo]b|JPj@BAK">start</variable>
<variable id=",j4pW-+`o0`$it)x%87p">id</variable>
<variable id="zo1Op7v|*wc4=aE`p65c">adapter</variable>
</variables>
<block type="procedures_defcustomnoreturn" id="`HD|n)F.zEhjAS[_Ha*9" disabled="true" x="13" y="13">
<mutation statements="false">
<arg name="Instanz" varid="Kin_d{P!1pKMo+5cZU`O"></arg>
<arg name="start" varid="b/PDv/D$qo]b|JPj@BAK"></arg>
</mutation>
<field name="NAME">Adapter_start_stop</field>
<field name="SCRIPT">ZXh0ZW5kT2JqZWN0KCdzeXN0ZW0uYWRhcHRlci4nICsgSW5zdGFueiwge2NvbW1vbjoge2VuYWJsZWQ6IHN0YXJ0fX0pOw==</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
<block type="procedures_defcustomnoreturn" id="ah/A{b.V+X!ZYAf:RS[E" x="13" y="63">
<mutation statements="false">
<arg name="Instanz" varid="Kin_d{P!1pKMo+5cZU`O"></arg>
</mutation>
<field name="NAME">Adapter_neustart</field>
<field name="SCRIPT">ZXh0ZW5kT2JqZWN0KCdzeXN0ZW0uYWRhcHRlci4nICsgSW5zdGFueiwge2NvbW1vbjoge2VuYWJsZWQ6IHRydWV9fSk7</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
<block type="procedures_defcustomreturn" id="o:pnwUjsAZo^uRO[{Odn" x="13" y="113">
<mutation statements="false">
<arg name="id" varid=",j4pW-+`o0`$it)x%87p"></arg>
</mutation>
<field name="NAME">checkAdapterExist</field>
<field name="SCRIPT">aWYgKCFleGlzdHNPYmplY3QoaWQpKSByZXR1cm4gJ0FkYXB0ZXIgZXhpc3RpZXJ0IG5pY2h0ICEn</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
<block type="procedures_callcustomnoreturn" id="ih~h61Q(ObZv?~_lB4)0" disabled="true" x="13" y="163">
<mutation name="Adapter_start_stop">
<arg name="Instanz"></arg>
<arg name="start"></arg>
</mutation>
<value name="ARG0">
<block type="text" id="%zVo=K]Eh*18L:d2HupD">
<field name="TEXT">iqontrol.0</field>
</block>
</value>
<value name="ARG1">
<block type="logic_boolean" id="f9;bz|~4KqI9RDyGrziD">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="procedures_callcustomnoreturn" id="8}!J;SmVluH$9uh{.EaU" disabled="true">
<mutation name="Adapter_neustart">
<arg name="Instanz"></arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="@4X}Mh%VsnLhu|oU9@/w">
<field name="VAR" id="Kin_d{P!1pKMo+5cZU`O">Instanz</field>
</block>
</value>
<next>
<block type="variables_set" id="1nG-0,2cO~CsBA4G-Z74">
<field name="VAR" id="Kin_d{P!1pKMo+5cZU`O">Instanz</field>
<value name="VALUE">
<block type="text" id="3E(K)Q(J55__4KbbW[7{">
<field name="TEXT">iqontrol.0</field>
</block>
</value>
<next>
<block type="variables_set" id="x0eDM%ULXd(nC!4Plh6z">
<field name="VAR" id="zo1Op7v|*wc4=aE`p65c">adapter</field>
<value name="VALUE">
<block type="text" id="l/JOlY7phs)D9`dAgJ49">
<field name="TEXT">system.adapter.iqontrol.1</field>
</block>
</value>
<next>
<block type="controls_if" id="@3C8CHwMC|AXv|,aH##!">
<value name="IF0">
<block type="procedures_callcustomreturn" id="$INpYC`X+YC#8X$2yNsY" inline="true">
<mutation name="checkAdapterExist">
<arg name="id"></arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="qH!fd2Tz;!-|AZZ3;B9R">
<field name="VAR" id="zo1Op7v|*wc4=aE`p65c">adapter</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="debug" id="rv#oca6XFE!?a]c{;^Vg">
<field name="Severity">warn</field>
<value name="TEXT">
<shadow type="text" id="1^Y@sA2-4)r5ERoHZtZI">
<field name="TEXT">test</field>
</shadow>
<block type="procedures_callcustomreturn" id="[/Kn}mQPOXsx+[RD[r50" inline="true">
<mutation name="checkAdapterExist">
<arg name="id"></arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id=".?HECVWZ7^5gi89t0Q=x">
<field name="VAR" id="zo1Op7v|*wc4=aE`p65c">adapter</field>
</block>
</value>
</block>
</value>
<next>
<block type="procedures_callcustomnoreturn" id="E-#dEn8@)M)~ouw3P.G`">
<mutation name="Adapter_neustart">
<arg name="Instanz"></arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="`;p1^T3pR+``)zh7aF;0">
<field name="VAR" id="Kin_d{P!1pKMo+5cZU`O">Instanz</field>
</block>
</value>
<next>
<block type="debug" id="2wJ~{q(uRg9-0NYo/HHA">
<field name="Severity">warn</field>
<value name="TEXT">
<shadow type="text" id="Zo@aFR,~(X0D!E/zJRX!">
<field name="TEXT">iQontrol.0 startet neu !</field>
</shadow>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</xml>