Skip to content

Skripten / Logik

16.6k Topics 214.3k Posts

Hilfe zu JavaScript, Blockly, TypeScript, Node-RED, Scenes und text2command

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    3k 49k
    3k Topics
    49k Posts
    OliverIOO
    @jwerlsdf Klappe den alles? Habe keine Rückmeldung mehr gelesen
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    T
    Hallo Zusammen, wie müsste ein Blockly aussehen um den Wert des aktuellen Tages einzulesen (und als kWh abzuspeichern, influxdb und echart auszuwerten). HIer stehe ich kompeltt auf dem Schlauch. Danke [image: 1775393210681-92e779b4-0628-4a47-9d9c-0d72ac1d49df-image.jpeg]
  • Hilfe für Skripterstellung mit Node-RED

    954 13k
    954 Topics
    13k Posts
    F
    Hallo ich habe ein Problem mit Nodered und Alexa Echo. Ich habe in Nodered die Wemo Emulation installiert und eine Wemo Steckdose emuliert um an einer Zigbeesteckdosenleiste einen Platz der Leiste zu schalten. "node-red-contrib-wemo-emulator" Das klappt auch wunderbar leider nicht länger als ein zwei Tage. Wenn ich dann den Echo der mit der emulierten Steckdose verbunden ist neu starte geht es wieder. Leider ist das sehr nervig. Hat schon mal jemand gehabt? Durch die Forumssuche habe ich leider nicht gefunden. Gruss Achim
  • Zeitspanne, Trigger und if Abfrage

    Moved
    3
    0 Votes
    3 Posts
    460 Views
    M
    Ahhhh jetzt habe ich verstanden wie man es machen muss. Vielen Dank für deine Hilfe! :)
  • Node-Red ändert Value, Schaltet aber nicht

    Moved
    12
    3
    0 Votes
    12 Posts
    4k Views
    K
    @Matzebhv: Einzig Scripte bekomme ich so nicht getriggert. Der Datenpunkt wird einwandfrei auf true oder false gesetzt, die zugehörigen Scripte triggern aber nicht. Setze ich den DP von Hand läuft das Script. Mir scheint es wird zwar true/false gesetzt, aber nicht als Logikwert. Hat jemand eine Idee? ` <u>Edit:</u> Mein Problem ist inzwischen behoben: im ioBroker-Ausgangsadapter stand bei Type value drin, dort muss aber command stehen. Dann ging es bei mir. Ich habe ein ähnliches Problem. Ich wollte die Lautstärke meines AV-Receivers per Alexa und Node-Red steuern. Habe ich den Wert im Datenpunkt manuell eingegeben, klappte es, aber nicht, wenn derselbe Wert über Alexa und Node-Red gesetzt wurde. Als workaround habe ich das jetzt so gelöst. Und zwar setze ich den Datenpunkt denon.0.zoneMain.volume über Node-Red, reagiere aber mittels Script nochmals darauf und setze den gleich Wert erneut. Klingt zwar unlogisch, aber anders bekomme ich es nicht zum laufen. on({id: 'denon.0.zoneMain.volume', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("denon.0.zoneMain.volume"/*Main Volume*/, getState("denon.0.zoneMain.volume").val); }); //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uX2V4dCUyMiUyMGlkJTNEJTIyIVdhJTNGJTNGTzZVJTJCRCU0MDklMkMuM2hPVlklNUUlMjIlMjB4JTNEJTIyMzglMjIlMjB5JTNEJTIyMzglMjIlM0UlM0NtdXRhdGlvbiUyMGl0ZW1zJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09ORElUSU9OJTIyJTNFbmUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFDS19DT05ESVRJT04lMjIlM0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRDAlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIyZmllbGRfb2lkJTIyJTIwaWQlM0QlMjJ+Z1JDUDVkYkVEKFlFJTJGeDYxQ19MJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyb2lkJTIyJTNFZGVub24uMC56b25lTWFpbi52b2x1bWUlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMlNUQVRFTUVOVCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMiFQLVYlN0RBJTYwR3BZdyUzQTQlMjNMY0hJJTVEJTQwJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VkZW5vbi4wLnpvbmVNYWluLnZvbHVtZSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyJTQwNGNrUmxJXyklMjNobiUzQVIlM0ElN0REJTVCLiolMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VkZW5vbi4wLnpvbmVNYWluLnZvbHVtZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ4bWwlM0U= 4630_2018-12-20_23_03_09-javascript_-_iobroker.png
  • [gelößt] Frage zu Rückgabewert/Callback nach request

    Moved
    5
    0 Votes
    5 Posts
    481 Views
    SteffS
    Hier noch meine Lösung, falls jemand ein ähnliches Problem hat: ! ```` // Variablen deklarieren / ID´s einlesen var request = require ('request'); var bSetAusgang1 = "javascript.0.Netio230B.Set_Ausgang_1"; var bAusgang1 = "javascript.0.Netio230B.Ausgang_1"; ! // Ausgang 1 behandeln on({id: bSetAusgang1, val: true}, function() { log("1. Ausgang 1 soll geschaltet werden"); LeseStatus (1); setState(bSetAusgang1, false); // VIS-Variable wieder zurücksetzen }); ! // Status der Ausgänge lesen function LeseStatus (Out) { var url = "http://192.168.0.190/cgi/control.cgi?login=p:USER:PASSWORD&p=l"; var OutStatus; request(url, function (error, state, body) { if (body) { var abody = body.slice(6, 13).split(' '); // Status der 4 Ausgänge extrahieren und in Array splitten OutStatus = abody[Out-1]; // Übergebener Wert ist vom Typ string!! log("2. Ausgang " + Out + " hat Zustand " + OutStatus); if (OutStatus === "1") { log("3. Ausgang " + Out + " wird ausgeschaltet"); SchalteAusgang ("0uuu"); setState(bAusgang1, false); } if (OutStatus === "0") { log("3. Ausgang " + Out + " wird eingeschaltet"); SchalteAusgang ("1uuu"); setState(bAusgang1, true); } } }); } ! // Ausgänge schalten function SchalteAusgang (befehl) { var url = "http://192.168.0.190/cgi/control.cgi?login=p:USER:PASSWORD&p=" + befehl; log ("4. Sende Befehl: " + url); request(url, function(error, state, body) { log("5. Rückmeldung: " + state); }); } Gruß Steffen
  • [ VORLAGE ] Müll Warnung / Erinnerung via Telegram am Vorabend

    Moved
    5
    0 Votes
    5 Posts
    2k Views
    T
    Hallo, das Skript ist leider nicht mehr wirklich zu nutzen. Zu der Zeit als ich es geschrieben habe, war der Adapter noch auf Version 1.4.2 und hatte eien HTML Formatierung, die nun nicht mehr uneingeshränkt so gilt. D.h. die Suchfunktion funktioniert nicht mehr zuverlässig. Der neue Ical Adapter im Stand Version 1.7 ht aber neue Events an Bord, die solch ein Skript ohnehin unnötig machen bzw vereinfachen. Du kannst dort als Event deinen Müll eingeben und dann täglich um 18h (oder wann auch immer) schauen, ob eins der Events auf 1 steht. Dan wäre dieses Event morgen dran und du kannst dir ein Telegram mit der jeweiligen Info schicken lassen
  • [gelöst] Wärmepumpe anbinden - Daten aus JSON einlesen

    Moved
    11
    0 Votes
    11 Posts
    2k Views
    khgK
    @mattgas: Danke paul, dein Vorschlag hat funktioniert: Ich werde nun versuchen, die Vairablen mit Datenpunkten zu verknüpfen…sollte ja nicht so schwierig sein :? . Vielen Dank für die schnelle und kompetente Unterstützung! Wenn ich fertig bin, stelle ich das Ergebnis hier zur Verfügung....im Forum hatten vor einger Zeit schonmal Leute nach einer Anbindung der Rotex HPSU gefragt, könnte also auch für andere interessant sein. ` Eine Anbindung der Rotex HPSU (nur zur Datendarstellung in iobroker) fehlt mir auch noch. Habe einen Raspi mit Canbus Interface und möchte darüber die Daten erfassen und für iobroker bereitstellen. Bin aber noch ganz am Anfang.
  • Müllabfuhr integrieren - Script erstellen

    Moved
    5
    0 Votes
    5 Posts
    782 Views
    kmxakK
    Moin, cool. Ich probiere es im Januar mit der ICAL Datei und ansonsten muss ich mit dem Script nochmals auseinandersetzen.
  • Blockly-Rollladenscript funktioniert nicht

    Moved
    66
    1
    0 Votes
    66 Posts
    10k Views
    rasiegfrR
    hallo zusammen, wie ich zu anfang geschrieben habe, verfolge ich hier die ideen. nun ist es auch bei mir soweit dass die shellys verbaut sind. habe im wohnzimmer zurzeit einen xiaomi bewegungsmelder (sollen insgesamt drei werden) welche überpüfen sollen ob noch jemand aktiv ist. das ziel ist es wenn 30 minuten keine aktivität in einem gewissen zeitfenster ist, dass die rollos automatisch runtergefahren werden. dafür habe ich einen datenpunkt gesetzt (wz_rollos_bm_status) wo sämtlche bewegungsmelder bei erkannter bewegung ein "wahr" setzen. wenn dann 30 minuten keine bewegung erkannt wurde soll der wert auf "unwahr" gesetzt werden. wo ich nicht weiterkomme ist dass er ja den timer "30 minuten" hat und danach stumpf auf unwahr setzt. wie kann ich dort eine nachprüfung einbauen ob es zwischenzeitig eine neue aktivität gab und der timer dann wieder auf null gesetzt wird? komme an diesem punkt nicht weiter und wäre über hilfe dankbar. lg ralph <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="tz;D9#.+4p*3?FtR{4?(" x="63" y="38"><mutation items="4"></mutation> <field name="CONDITION">any</field> <value name="OID0"><shadow type="field_oid" id=";T`833RRx:ZOmW)gCmQR"><field name="oid">Werte_zwischenspeicher.0.wz_rollos_bm_status</field></shadow></value> <value name="OID1"><shadow type="field_oid" id="2x{Slmg1.2E/~y,DoO8Q"><field name="oid">mihome.0.devices.sensor_motion_aq2_158d00029c019e.state</field></shadow></value> <value name="OID2"><shadow type="field_oid" id="Zd|t!]om|=mpim*iVi9a"><field name="oid">mihome.0.devices.sensor_motion_aq2_158d000276d226.state</field></shadow></value> <value name="OID3"><shadow type="field_oid" id="T+%NOoZQ,P(W4Bs^ck3r"><field name="oid">mihome.0.devices.sensor_motion_aq2_158d0002752318.state</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="Y38R}w(/ZJE-Xao,=188"><value name="IF0"><block type="logic_operation" id="cY7X%s+VI:oWVnmOHVm6" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_operation" id="guHXnlf?.TTZa6nv:B~=" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_operation" id="IzMPn,@2t93WV=?3~DcQ" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="i~{LKE2GRq!=CghO?bh="><field name="OP">EQ</field> <value name="A"><block type="get_value" id="_fg-3w|dQ,TjU6qZT6q9"><field name="ATTR">val</field> <field name="OID">mihome.0.devices.sensor_motion_aq2_158d00029c019e.state</field></block></value> <value name="B"><block type="logic_boolean" id="U(B.w*RkUPwV?ml,DFE1"><field name="BOOL">TRUE</field></block></value></block></value> <value name="B"><block type="logic_compare" id="a7{vPB`w5^]1+d8b:eQh"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="uVx6LOE|r0kvpIgHXW^D"><field name="ATTR">val</field> <field name="OID">mihome.0.devices.sensor_motion_aq2_158d0002752318.state</field></block></value> <value name="B"><block type="logic_boolean" id="MgbZ2ey!x(%IA`c3]S0L"><field name="BOOL">TRUE</field></block></value></block></value></block></value> <value name="B"><block type="logic_compare" id="j+CvzLb9q;N!0yP1WQ}6"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="Z3Jdw19D%#Xg4!*J=ljd"><field name="ATTR">val</field> <field name="OID">mihome.0.devices.sensor_motion_aq2_158d000276d226.state</field></block></value> <value name="B"><block type="logic_boolean" id="E+(%#YD5gMqiJhiOmv`p"><field name="BOOL">TRUE</field></block></value></block></value></block></value> <value name="B"><block type="logic_operation" id="@u9M]SIQ:4NUiHNgQA:B" inline="false"><field name="OP">OR</field></block></value></block></value> <statement name="DO0"><block type="control" id="U-;ov8(is!)A;b,}CWbu"><mutation delay_input="false"></mutation> <field name="OID">Werte_zwischenspeicher.0.wz_rollos_bm_status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="a/hkdu[w8}W{Xk:McnL#"><field name="BOOL">TRUE</field></block></value></block></statement> <next><block type="comment" id="?g=#:O9,]UNw|6z3S/7z"><field name="COMMENT">Wert zurück setzen</field> <next><block type="controls_if" id="muP@A+k6JgyFmNX-Q/{B"><value name="IF0"><block type="logic_compare" id="qoO1CG_~v(ABV#(Xz_+K"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="/zdz!YCIQIy/j!l0k;+f"><field name="ATTR">val</field> <field name="OID">Werte_zwischenspeicher.0.wz_rollos_bm_status</field></block></value> <value name="B"><block type="logic_boolean" id="0Sh!Q~.?)GU)l#nuG._]"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="control" id="L7Xg/A]..w(FY}Eqf^9X"><mutation delay_input="true"></mutation> <field name="OID">Werte_zwischenspeicher.0.wz_rollos_bm_status</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">30</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="%w!NIlru[79Gn06b-Uk="><field name="BOOL">FALSE</field></block></value></block></statement></block></next></block></next></block></statement></block></xml> 9191_skript_rollo.jpg
  • Philips Hue Szenen

    Moved
    13
    0 Votes
    13 Posts
    3k Views
    A
    @siggi85: Kann man das Script zum Import der in der Bridge gespeicherten Szenen nicht auch in den Hue Adapter einbauen? Ich denke dass viele Leute so etwas gebrauchen können. ` Das denke ich auch! Ich nutze das Skript auch. Richtig super! Ich schalte damit bestimmte hie Szenen wenn ich an meiner harmony Aktionen starte oder stoppe. Funktioniert auch wie gewünscht. Gibt es eine Möglichkeit, die Szenen langsam über zu blenden? Also aktuell wird die neue Szene einfach eingeschaltet. Ich möchte gerne dass die aktuelle Einstellung in die neue Szene überblendet. Innerhalb z.B. 3 Sekunden.
  • Flow Optimieren

    Moved
    27
    0 Votes
    27 Posts
    2k Views
    D
    Japp genau, das mache ich dann kurz vorm Zerteilen in die einzelnen Flows.. jetzt für alles auf einmal war es einfacher in einem Flow. Ich muss die ganzen Link`s auch noch beschriften und dann kommen später die Comments ;-)
  • Aktuellen Heizölpreis anzeigen?

    Moved
    5
    0 Votes
    5 Posts
    552 Views
    B
    Ich nehme jetzt dieses Skript. viewtopic.php?f=8&t=3455&p=31964#p31964 Grüße und Danke
  • Node-red Flow zum Steuern von tuya

    Moved
    20
    0 Votes
    20 Posts
    4k Views
    R
    Sieht eigentlich alles richtig aus. Welcher Kalender? Wie schaltet denn der Kalender die Steckdose? Kann mir eigentlich nur denken, dass der state nicht gesetzt wird. Häng doch mal den debug-node an den iobroker-in-node und lass per Kalender schalten. Dann kannst du sehen, on und wenn ja welches Signal am state anliegt.
  • Rollladensteuerung mit Blockly

    Moved
    16
    1
    0 Votes
    16 Posts
    4k Views
    N
    Servus, und danke! Mittlerweile funktioniert alles wie es soll und ja, es war tatsächlich die Laufzeit. ;-) Ich hatte die vom HM-IP Accesspoint einfach übernommen und in die CCU eingetragen. Das hat nur um den Betrag von 3sec eben nicht gepasst. Ein Problem was ich ab und zu noch habe ist, dass bei erkanntem "IS OPEN" vom Türsensor der Rolladen erst runterfährt wenn die Tür geschlossen ist, aber dann der CCU - Duty Cycle auf 99% nach oben schnellt. Wenn ich zu Hause bin poste ich mal das skript. Viele Grüße
  • [gelöst] Lichtsteuerung mit zwei Türsensoren

    Moved
    5
    1
    0 Votes
    5 Posts
    603 Views
    paul53P
    @kaputtzich: funktioniert soweit wie angedacht, ` Dann markiere bitte das Thema im Betreff des ersten Beitrags als [gelöst].
  • Heizungssteuerung

    Moved
    3
    1
    0 Votes
    3 Posts
    413 Views
    B
    Danke für die schnelle Antwort. Was du sagst macht natürlich Sinn. Hab es jetzt geändert, wie im Anhang. Habe auch ausprobiert, ob die Reihenfolge eine Rolle spielt, aber scheinbar ist es egal –> Perfekt! Danke für die Hilfe :-) Ich habe devolo Z-Wave Heizkörper Thermostate im Einsatz: Weiß jemand, ob man diese auch gezielt wecken kann? 12469_heizung_bad_test.png
  • Thermometer auf dem Dashboard

    Moved
    2
    0 Votes
    2 Posts
    329 Views
    R
    Da reicht es nicht, das flow zu kopieren ;-) Wenn du Pete Scargills Beispiel verwenden wills, musst du auch seine Lib installieren. Siehe https://tech.scargill.net/thermometers/ Und seine Lib, die du benötigst findest du hier: https://canvas-gauges.com/download/ Und wenn es dann immer noch nicht tut, kannst du mit dem ersten Link Pete direkt fragen.
  • I2C-Bus auslesen

    Moved
    3
    0 Votes
    3 Posts
    613 Views
    M
    Herzlichen Dank für deine ausführliche Info!
  • [Gelöst] Uhrzeit aus Sekunden errechnen

    Moved
    15
    0 Votes
    15 Posts
    1k Views
    T
    Danke, das war die Lösung. Jetzt läuft es.
  • [gelöst]Einschalten mit Nachlauf

    Moved
    12
    0 Votes
    12 Posts
    2k Views
    R
    Ist zwar schon länger her aber falls jemand hier mal drüber stolpert: Klar wird nur der zweite Aktor geschaltet - du überschriebst ja auch die Variable mit dem zweiten Statement: var idAktor = "hm-rpc.0.OEQ0098506.2.STATE"/Poolpumpe.STATE/ ; var idAktor = "hm-rpc.0.OEQ0098506.3.STATE"/Clorinator.STATE/ ; Du musst dem zweiten Aktor dann schon eine eigene Variable spendieren: var idAktor1 = "hm-rpc.0.OEQ0098506.2.STATE"/Poolpumpe.STATE/ ; var idAktor2 = "hm-rpc.0.OEQ0098506.3.STATE"/Clorinator.STATE/ ;
  • Möglichkeit im tr-64 den Rundruf abzufragen

    Moved
    2
    0 Votes
    2 Posts
    292 Views
    M
    Hi, Leute hat keiner eine Idee?
  • Mqtt Username und Password undefined [gelöst]

    Moved
    3
    0 Votes
    3 Posts
    2k Views
    W
    [glöst]vielen Dank für die Info. Kann ich denn die Client[Namen] im mqtt-adapter vergeben? Wenn ich im Client keinen Namen vergebe sehe ich im iobroker-Log nicht ob sich ein von welchen Cilent etwas kommt. oder liege ich da jetzt neben der Spur?

584

Online

32.8k

Users

82.7k

Topics

1.3m

Posts