NEWS
[Gelößt] Hilfe brauche ein Script
-
@rantanplan na gut. Um wieder auf das Theme zu kommen
Hier mal ein einfaches Blockly mit einer Javascript funktion:
Die Funktion sieht dann so aus:
Alles minimaler Aufwand, wie es @paul53 schon hatte, nur in einem Blockly.
Was macht es?
Es holt sich zuerst den JSON strin aus dem Datenpunkt mit "getState", macht daraus ein JSON-Objekt "JSON.parse" und splittet es dann bei jedem Semikolon und gibt es als Array (hier auch Liste genannt) zurück.Die Funktion kannst du auch in einen Trigger packen, wenn sich der Wert ändert und dann in einen seperaten Datenpunkt schreiben.
-
@winny1900 sagte:
Kannst du mir da vlt. noch ein wenig weiter helfen ?
const idSrc = 'mqtt.0.domoticz.in'; const idTemp = 'Aussen.Temperatur'; const idHum = 'Aussen.Luftfeuchte'; createState(idTemp, 0, {type: 'number', unit: '°C'}); createState(idHum, 0, {type: 'number', unit: '%'}); function values(val) { var svalue = JSON.parse(val).svalue.split(';'); setState(idTemp, parseFloat(svalue[0]), true); setState(idHum, parseFloat(svalue[1]), true); } setTimeout(function() { // Skriptstart values(getState(idSrc).val); }, 100); on(idSrc, function(dp) { values(dp.state.val); });
-
@paul53 Wir sind hier in der Blockly Rubrik.
-
@rantanplan sagte:
Wir sind hier in der Blockly Rubrik.
Habe ich übersehen.
Blockly ist mir zu anstrengend. Schadet es jemandem, an Beispielen Javascript zu lernen ? -
Hey Jungs
Ich möchte euch danken für die Hilfe werde es zu Hause gleich ausprobieren.
Ich wollte hier kein Ärger verursachen mit meiner Frage.
Bevor ich es hier gepostet habe , habe ich alles was mir in Sachen blockly bekannt ist ausprobiert. Ohne Erfolg. Deshalb und nur deshalb habe ich um Hilfe gebeten.
Mit den Jason Scripts habe ich noch gar keine Erfahrung.
Nochmals danke für die Hilfe ich werde mich melden ob es geklappt hat.
Grüße vom Niederrhein
-
@winny1900 sagte in Hilfe brauche ein Script:
habe ich alles was mir in Sachen blockly bekannt ist ausprobiert
Dann zeig das mal.
Es ist immer einfacher an den Fragmenten zu erkennen wo die Denkfehler sind
-
@rantanplan
Danke das klappt soweit ganz gut. Er zeigt mir die Daten richtig an die oben im Text stehen. Der Text ändert sich ja nicht wenn sich der Zustand der Temp ändert. Habe ich doch richtig verstanden oder ?Das heißt der müsste sich doch wenn sich die Temp aktualisiert einen neue Textzeile holen oder ?
-
@winny1900 sagte in Hilfe brauche ein Script:
@rantanplan
Danke das klappt soweit ganz gut. Er zeigt mir die Daten richtig an die oben im Text stehen. Der Text ändert sich ja nicht wenn sich der Zustand der Temp ändert. Habe ich doch richtig verstanden oder ?Das heißt der müsste sich doch wenn sich die Temp aktualisiert einen neue Textzeile holen oder ?
Ich habe keinen Adapter der einen JSON liefert. Deshalb habe ich Deine Angabe in einen Text gepackt.
Da müsste Dein Datenpunkt von Deinem Adapter hin. Habe ich aber auch drüber kommentiert. -
So schauts aus und Klappt. Jedes mal wenn der Wert neu rein kommt wird neu geladen.
Danke das hätte ich so nicht hinbekommen !!!
Grüße
-
Prima. Kannste aber noch "optimieren".
Setze bitte ein [gelöst] in Deinem ersten Beitrag-Titel. -
eine Frage noch dann ist es wohl Gelößt.
Wie bekomme ich diese Zahl jetzt in VIS ?
Ist das erste Blockly für mich in verbindung mit VIS.
-
@winny1900 sagte:
Wie bekomme ich diese Zahl jetzt in VIS ?
Erstelle unter javascript.0 zwei Datenpunkte vom Typ Zahl. Die kannst Du in Vis anzeigen.
Hier noch eine einfachere Variante in Blockly: -
Der ansatz ist doch richtig. Der soll den wert in den neu angelegten Datenpunkt schreiben. Wenn ich da Liste eintrage schreibt der mir 3 Werte da rein.
Wie bekomme ich das gelößt ?Ich mus auf jedenfall einen zweiten schreibe Block hinzufügen der mit ID Luftfeuchte.
Grüße
-
@winny1900 sagte:
zweiten schreibe Block hinzufügen der mit ID Luftfeuchte.
Schau mal in den Post davor: Die Variable Liste heißt dort svalue.
-
bei aktualisiere Objekt ID kommt domoticz rein oder ?
Weil das Script bei mir nicht läuft.
17:30:05.712 error javascript.0 script.js.common.Test_2: Cannot get svalue of undefined
17:30:05.713 error javascript.0 at Object.<anonymous> (script.js.common.Test_2:7:35) -
@winny1900 sagte in Hilfe brauche ein Script:
bei aktualisiere Objekt ID kommt domoticz rein oder ?
Nein, beim ersten kommt die ID des Datenpunktes für die Temperaturanzeige und beim zweiten für die Feuchteanzeige rein (steht im Kommentar darüber). domoticz/in kommt beim Trigger rein.
-
hatte ich auch aber klappt nicht !
-
-
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="M3M(d4mStWF20,0YTs8-">svalue</variable> <variable type="" id="rXRrCB6TjAFBN}u0m?94">Wert</variable> </variables> <block type="on_ext" id="?0aUoyJ54YONx4lpTknk" x="-62" y="38"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="X@|.GI#NMkm!tpElg:0N"> <field name="oid">mqtt.0.domoticz.in</field> </shadow> <block type="field_oid" id="=|F.L85D:FZ~uR(VAqL9"> <field name="oid">mqtt.0.domoticz.in</field> </block> </value> <statement name="STATEMENT"> <block type="variables_set" id=",$-$oLn`tLQuKnm=HAP?"> <field name="VAR" id="M3M(d4mStWF20,0YTs8-" variabletype="">svalue</field> <value name="VALUE"> <block type="lists_split" id="7:n2~,g/#UErIRm78!bd"> <mutation mode="SPLIT"></mutation> <field name="MODE">SPLIT</field> <value name="INPUT"> <block type="get_attr" id="P6Gq~]6C.+XQ}:j%rL!Q"> <value name="PATH"> <shadow type="text" id="UA6bAniM.d`]{i.G)AUU"> <field name="TEXT">svalue</field> </shadow> <block type="text" id="/]q34ws4q$)`qxanFm83"> <field name="TEXT">svalue</field> </block> </value> <value name="OBJECT"> <block type="variables_get" id="#8(Jdx2lV75rL:?gh}!A"> <field name="VAR" id="rXRrCB6TjAFBN}u0m?94" variabletype="">Wert</field> </block> </value> </block> </value> <value name="DELIM"> <shadow type="text" id="YI.KKD*:?hqMram{#d:R"> <field name="TEXT">;</field> </shadow> <block type="text" id=",XR}u%x}l|~rfkM?eg/."> <field name="TEXT">;</field> </block> </value> </block> </value> <next> <block type="update" id="+Qw~Z-c]b(7XXG;SQ=,-"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Außentemp</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id=",KQE85]PB{DEo.#kx,1B"> <value name="VALUE"> <block type="lists_getIndex" id="R+k,Tks}7GP2k!0U7x)8"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="wZ6)t!iOCh%It;@{4GZ$"> <field name="VAR" id="M3M(d4mStWF20,0YTs8-" variabletype="">svalue</field> </block> </value> <value name="AT"> <block type="math_number" id="5_zkgF{7ky)jKLqU|;lA"> <field name="NUM">1</field> </block> </value> </block> </value> </block> </value> <next> <block type="update" id="idUi)E`+(nGu=!Zgf}L`"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.Außenluftfeuchte</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_tonumber" id="(hT.wec}=+(x8(|n@ckG"> <value name="VALUE"> <block type="lists_getIndex" id="|y-mRDdVe%`abvj`+39I"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="|1kG5WAlJ35yF,10|i-h"> <field name="VAR" id="M3M(d4mStWF20,0YTs8-" variabletype="">svalue</field> </block> </value> <value name="AT"> <block type="math_number" id="7)gDqXV+Lv~A9(v,]*;}"> <field name="NUM">2</field> </block> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </xml>
-
@winny1900 Wert ist keine Variable, sondern eine Eigenschaft des Triggerdatenpunktes (unter Blöcke Trigger) !
Du kannst auch die Variable Wert umbenennen nach value, damit es funktioniert.