Skip to content

Skripten / Logik

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

16.5k Topics 213.2k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    P
    Oben steht, dass der Server öfter mal offline ist. Da ist ping meine erste Idee. Ob der Server auf Pings antwortet, weiß ich nicht. Reagiert der Server nicht auf ping, dann evtl. als Ersatz einen httpcheck nehmen. httpcheck nutze ich auf der Synology, bevor die auf den ioBroker zugreift. # ===== HTTP-Check statt Ping ===== curl -s --connect-timeout 3 "$BASE/system.adapter.admin.0.alive" > /dev/null || exit 1 Ist allerdings ein Bash-Skript. Das muss für die Zwecke angepasst werden.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    T
    @schweiger2 du hast im Javascript Adapter über dem Objektbaum ein Lupensymbol. Klicke mal rauf und gib dort die Instanz eines Adapter ein z.B. mqtt.0 Dann siehst du alle Script, wo diese verwendet wird im Code.
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • Skript: Alle RHS/Fenster in einem Raum

    Moved
    11
    0 Votes
    11 Posts
    4k Views
    F
    Das Skript läuft jetzt bei mir mit drei Räumen. Ich habe die val variable global gemacht, für jeden Raum einen Selector eingesetzt und drei on Funktion hinzugefügt. // Script zum Setzen einer Variablen, um z.B. eine kleines Übersichts-Icon/Widget // anzuzeigen. // Die Variable VIS.zeige_1og_fensterstatus_icon kann folgende Werte haben: // 0 - alle Fenster zu // 1 - mindestens 1 Fenster angekippt // 2 - mindestens 1 Fenster offen. // Es wird immer der höhere Wert über allen räumen gesetzt. // Im Widget muss unter der Sichtbarkeit die Variable > 0 abgefragt werden. // Es werden die Sensoren in drei Räumen abgefragt(rooms=xxx), so wie diese gesetzt sind und jweils mit // dem Gewerk (functions=xxx). var sensors_raum1 = $('channel[state.id=*.STATE](rooms=Bad)(functions=Alarmanlage)').each(function(id) { log("R1: " + id); }); var sensors_raum2 = $('channel[state.id=*.STATE](rooms=Wohnen1)(functions=Alarmanlage)').each(function(id) { log("R2: " + id); }); var sensors_raum3 = $('channel[state.id=*.STATE](rooms=Wohnen2)(functions=Alarmanlage)').each(function(id) { log("R3: " + id); }); var val; // Ohne Loginfo jedes erkannte Geräte: //var sensors = $('channel[state.id=*.STATE](rooms=Wohnen1)(functions=Alarmanlage)'); function getCurrentState() { var commonState = 0; sensors_raum3.each(function (id) { val = toInt(getState(id).val); // Find the maximum (2 - opened, 1 - tilted, 0 - closed) if (val > commonState) commonState = val; }); sensors_raum2.each(function (id) { val = toInt(getState(id).val); // Find the maximum (2 - opened, 1 - tilted, 0 - closed) if (val > commonState) commonState = val; }); sensors_raum1.each(function (id) { val = toInt(getState(id).val); // Find the maximum (2 - opened, 1 - tilted, 0 - closed) if (val > commonState) commonState = val; }); return commonState; } // On change Raum3 sensors_raum3.on(function() { setState('VIS.zeige_1og_fensterstatus_icon', getCurrentState()); }); // On change Raum2 sensors_raum2.on(function() { setState('VIS.zeige_1og_fensterstatus_icon', getCurrentState()); }); // On change Raum1 sensors_raum1.on(function() { setState('VIS.zeige_1og_fensterstatus_icon', getCurrentState()); }); createState("VIS.zeige_1og_fensterstatus_icon", getCurrentState(), {name: 'VIS Zeige 1Og Fensterstatus-Icon'}); Es funktioniert. Stellt sich mir nur die Frage, ob es vielleicht in der Abfrage optimiert werden kann oder ob die drei ON's in irgendeiner Form supoptimal sind? Viele Grüße, Fitti
  • Übersicht der verfügbaren JS-Funktionen

    Moved
    8
    0 Votes
    8 Posts
    2k Views
    F
    @pix: @Fitti: Viele Grüße, Pix Das ist mein Gruß! :lol: Jetzt ist es ganz zu spät…. ich ändere das mal. :lol: :oops:
  • Wechselrichter auslesen

    Moved
    12
    1
    0 Votes
    12 Posts
    5k Views
    K
    Guten morgen. Hat das zufällig schon mal jemand für eine SMA Webbox gemacht?
  • Zugriff auf Werte des history Adapters

    Moved
    1
    0 Votes
    1 Posts
    1k Views
    No one has replied
  • Tankstellenliste

    Moved
    1
    2
    0 Votes
    1 Posts
    2k Views
    No one has replied
  • Fritzbox: DECT-Telefon als Fernbdienung

    Moved
    2
    0 Votes
    2 Posts
    2k Views
    ruhr70R
    coole Idee! Danke für die Anregung. Wenn man kürzere Rufnummern verwenden möchte könnte man die interne Rufnummer einees analogen Ports oder einen SIP-Teilnehmer anmelden. Echt schöne Idee und gut durchgetestet ;-)
  • Doku javascript Adapter

    Moved
    3
    0 Votes
    3 Posts
    1k Views
    paul53P
    In der 3. Zeile solltest Du noch 'name' durch 'type' ersetzen, denn 'name' ist ein Element von 'common'.
  • Objekt-ID aus Objektnamen ermitteln ?

    Moved
    11
    0 Votes
    11 Posts
    4k Views
    paul53P
    @Bluefox: Was mache ich aber, falls man zwei States mit dem gleichen Namen habe? ` Den ersten gefundenen State nehmen, so wie HM Script. Noch besser: Einen Prüflauf implementieren, der auf mehrfache Vergabe von Namen testet.
  • Variable abfragen

    Moved
    4
    0 Votes
    4 Posts
    2k Views
    P
    @SchuetzeSchulz: Hat sich erledigt, hab es nun über eine Szene gelöst. Läuft super! ` Hui, da warst du selbst schneller. :D
  • Status erstellen

    Moved
    8
    1
    0 Votes
    8 Posts
    2k Views
    M
    rollo hoch: ` > createState('startPythonhoch'); on({id: "javascript.0.startPythonhoch"}, function (obj) { var python = require('child_process').spawn('python', ["/opt/hoch.py"]); python.on('close', function(code){ if (code !== 0) { log('Error: ' + code); } else { log('OK'); } }); }); ` rollo runter: ` > createState('startPythonrunter'); on({id: "javascript.0.startPythonrunter"}, function (obj) { var python = require('child_process').spawn('python', ["/opt/runter.py"]); python.on('close', function(code){ if (code !== 0) { log('Error: ' + code); } else { log('OK'); } }); }); `
  • (gelöst) Javascript switch case & vis

    Moved
    2
    0 Votes
    2 Posts
    2k Views
    ruhr70R
    oje… habe mich selbst reingelegt. Ich lass den peinlichen Eintrag mal drin, falls noch jemand drüber stolpert. Im vis habe ich im Widget den String, der geschrieben werden soll in Anführungszeichen gesetzt. In Vis: "rot" Dann wird als String auch "rot" geschrieben, inkl. Anführungszeichen. der case würde dann '"rot'" lauten (einfache Anführungszeichen, normale Anführungszeichen, ...). Ist natürlich quatsch... In Vis: rot eintragen dann passt der case auch mit "rot"
  • Mehrere Aktoren abfragen

    Moved
    6
    3
    0 Votes
    6 Posts
    2k Views
    BluefoxB
    Na ja.. Erste var pos = myIndexes.indexOf(obj.id); Habe ich übersehen. Gut, dass es läuft.
  • Anzeige wenn regen

    Moved
    2
    0 Votes
    2 Posts
    2k Views
    BluefoxB
    Was funktioniert nicht? Um deine Frage zu beantworten brauche ich ganzen Payload.
  • [gelöst] Miniscript läuft nicht (Anfänger bittet um Hilfe)

    Moved
    3
    0 Votes
    3 Posts
    1k Views
    coyoteC
    Danke Bluefox, funktioniert jetzt einwandfrei.
  • Skript Ende feststellen

    Moved
    6
    0 Votes
    6 Posts
    1k Views
    P
    Es gibt da wohl eine Api, aber nur für Firmen nach Anmeldung und so weit ich weiß mit Schweigepflicht, auf jeden Fall nichts Öffentliches. Und auch damit ist es meiner Erkenntnis nach nicht möglich auf Harmony zu reagieren, sondern nur Harmony zu steuern. Bei IFTTT und smartthings taucht Harmony auch immer nur im "THEN" Teil auf, kann also nur gesteuert werden. Selbst innerhalb der Harmonywelt ist Steuerbarkeit von Dingen wie Hue usw. stark eingeschränkt. Man kann dann Lampen zusammen mit Aktivitäten schalten, nicht aber innerhalb einer Aktivität => Lampe an bei Pause drücken geht nicht! Überhaupt kann man keine Smart Home Funktionen auf die Tasten belegen. Logitech wäre mit dem Hub gerne die Zentrale für alles Smarte, unterstützt aber kaum Geräte und diese dann auch nur sehr schlecht. Für alles, was über das steuern von Infrarotgeräten hinaus geht ist das Ding nicht zu gebrauchen, wirklich schade. Könnte man die Tasten innerhalb der Geräte- oder Aktivitätsebene aulesen wäre das Teil die perfekte Alternative zu den Handsendern von Homematic und anderen Herstellern.
  • Zugriff auf andere ioBroker Objekte im Flow?

    Moved
    4
    0 Votes
    4 Posts
    2k Views
    ruhr70R
    Danke für die Info! Da hast Du in der Tat eine Lösung gefunden :)
  • ClearTimeout auf Var Object möglich?

    Moved
    5
    2
    0 Votes
    5 Posts
    1k Views
    ruhr70R
    Script ist umgebaut und funktioniert nun wie gewünscht. Die Erkenntnisse: ein setTimeout() kann mehrmals hintereinander gestartet werden. Alle Abläufe werden abgearbeitet ein clearTimeout() löscht nur den letzten Ablauf. Alle anderen mehrmals gestarteten Aufrufe werden noch abgearbeitet. Wenn man setTimeout() komplett stoppen will, darf man es nicht mehrmals aufrufen, sondern muss die Einträge aus einer Queue nacheinander abarbeiten. 3467_aktueller_status.png 3467_fehler_status.png
  • On(pattern, callbackOrId, value) -> Rückgabe: obj

    Moved
    22
    0 Votes
    22 Posts
    4k Views
    carsten04C
    Sieht jetzt alles super aus, auch ohne valNe:2. 2015-07-30 17:31:14.221 - info: javascript.0 script.js.test: {"id":"hm-rpc.0.LEQ1226350.1.STATE","newState":{"val":false,"ts":1438270274,"ack":true,"lc":1438270274,"from":"system.adapter.hm-rpc.0"},"oldState":{"val":true,"ts":1438268324,"ack":true,"lc":1438262778,"from":"system.adapter.hm-rpc.0"},"common":{"def":false,"type":"boolean","read":true,"write":true,"role":"state","name":"Schalter Terrassenlicht:1.STATE"},"native":{"CONTROL":"SWITCH.STATE","DEFAULT":false,"FLAGS":1,"ID":"STATE","MAX":true,"MIN":false,"OPERATIONS":7,"TAB_ORDER":0,"TYPE":"BOOL","UNIT":""},"name":"Schalter Terrassenlicht:1.STATE","channelId":"hm-rpc.0.LEQ1226350.1","channelName":"Schalter Terrassenlicht:1","deviceId":"hm-rpc.0.LEQ1226350","deviceName":"Schalter Terrassenlicht","enumIds":["enum.functions.Licht","enum.rooms.Garten"],"enumNames":["Licht","Garten"]} Die Idee mit dem JS-Adapterstart könnte passen, da ich den Adapter heute mehrmals neu gestartet habe, allerdings hatte ich die functions und rooms auch nicht geändert. So richtig nachvollziehen kann ich es daher noch nicht. Aber egal, bin froh das jetzt alles läuft. Manchmal ist eben alles fuzzy :D Beste Grüße Carsten
  • Fehler abfangen? z.B. nich vorhandene Variablen an Funktion

    Moved
    7
    0 Votes
    7 Posts
    2k Views
    ruhr70R
    @Bluefox: Die Variable solltest du vor erste Verwendung checken: if (typeof hueGruppeWohnzimmer != 'undefined') { hueGruppe(hueGruppeWohnzimmer,"standard"); // (1) hueGruppe(hueGruppeWohnzimmer,"effectColorloop",3000); // (2) hueGruppe(hueGruppeWohnzimmer,"blue",5000); // (3) hueGruppe(hueGruppeWohnzimmer,"blue",1000,50); // (4) hueGruppe(hueGruppeWohnzimmer,"effectOff",7000); // (5) hueGruppe(hueGruppeWohnzimmer,"off",9000); // (6) } ```` ` OK. Danke für die Info! Ich teste das nachher. Schade, dass es nicht anders funktioniert. Der Scriptstart am Ende des Scripts ist nur ein Beispiel, um die Funktion zu testen. D.h. die Funktion hueGruppe() soll hinterher in diversen Scripts eingesetzt werden. Ist dann nicht mehr "so einfach" zu verwenden, wenn das dann ggf. noch Andere einsetzen.
  • [gelöst] If - Abfrage wird nicht ausgeführt - Anfänger

    Moved
    5
    2
    0 Votes
    5 Posts
    2k Views
    E
    Super, Danke das wars.

757

Online

32.6k

Users

82.2k

Topics

1.3m

Posts