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
    S
    @TT-Tom Vielen Dank für den Tip.
  • 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?
  • Hue Lampe nach Farbänderung wieder zurück setzen

    Moved
    5
    0 Votes
    5 Posts
    1k Views
    coyoteC
    Funktioniert, danke dir. Bin noch nicht so firm im scripten ;) 10064_shepherd.db.txt
  • Verallgemeinerung zur Weiterverwendung

    Moved
    17
    0 Votes
    17 Posts
    2k Views
    K
    Ich habe ja versprochen mein Ergebnis hier bereitzustellen. Den Countdown habe ich von Bluefox übernommen und an meine Bedürfnisse angepasst. Vielen Dank an Bluefox. /* Enthaltene Funktionen: */ /* CountDown(objekt) Stellt einen CountDown zur Verfügung und schreibt die Werte nach objekt */ /* CountDown1(sekunden,objekt) Wie CountDown als Alternativlösung */ /* Rechnersysteme direkt hoch und herunterfahren */ /* -------------------------------------------------------------------------------------------------- */ function CountDown (objekt) { function count() { setTimeout(function () { var timer = getState(objekt).val; if (timer > 1) { timer=timer-1; if (getState(objekt).val != 0) {setState(objekt, timer)}; count(); } else { setState(objekt, 0); } }, 1000); } count(); } /* -------------------------------------------------------------------------------------------------- */ Im zweiten Teil steuere ich drei Rechnersysteme. Dies kann um weitere Systeme erweitert werden, indem in der Markierung 1 weitere Rechnernamen eingetragen werden und die on-Statements jweils kopiert und hinten angehängt werden. Die Variable i muss jeweils zweimal um eins erhöht werden. Bei Markierung 3 können die eigenen Befehle eingetragen werden, die nach Ablauf des Sleeptimers ausgeführt werden sollen. Wenn jemanden noch Verbesserungen oder Optimierungen auffallen, dann gerne kommentieren. /* –------------------------------------------------------------------------------------------------ */ `var idSayIt = "sayit.0.tts.text"; var hosts = [ "Sonne", "Nuc","Galaxy"]; //MARKIERUNG 1 var anzahl_hosts = hosts.length; var timeout = new Array(anzahl_hosts); for (i=1;i<anzahl_hosts;i++) 0/1/3/60/{/createstate/(hosts[i]+'.sleeptimer',-1);/(hosts[i]+'.sleeptimer_dauer',15);/(hosts[i]+'.countdown',900);/(hosts[i]+'.shutdown_befehl','wget/-o/dev/null/http:/192.168.2.25/remote_'+hosts[i]/+/'_shutdown.php');/(hosts[i]+'.wol_befehl','wget/'_wol.php');/(hosts[i]+'.aktivieren',0);/}/function/start_sleeptimer(host)/setstate/(idsayit,/"sleeptimer/"/host/aktiviert/getstate("javascript.0."+host/".sleeptimer_dauer").val/minuten")/;/setstate("javascript.0."/".countdown",/*/);/countdown("javascript.0."+host/".countdown");/mytimeout="setTimeout(function" ()/timer/ist/abgelaufen")/markierung/".sleeptimer",/-1);/wert/wieder/zurücksetzen/},/getstate("javascript.0."+host+".sleeptimer_dauer").val/1000*60);/return(mytimeout)/stop_sleeptimer/(host,mytimeout)/"+host+"/gestoppt")/cleartimeout(mytimeout);/setstate("javascript.0."+host+".sleeptimer",/setstate("javascript.0."+host+".countdown",/0);/------------------------------------------------------------------------------------------------------/dies/der/auslöser/für/die/aktivierung/des/sleeptimers/wenn/sleeptimer/auf/gesetzt/wird,/wird/ein/countdown/ausgelöst/und/nach/ablauf/aktion/ausgeführt/während/aktiven/countdowns/agbebrochen/beiden/aktinen/sleelptimer/selbst/-1/gesetzt./i="0;" on("javascript.0."+hosts[i]+".sleeptimer",/function(obj)/if/(obj.newstate.val="==" 1)/timeout[i]="start_Sleeptimer(hosts[i]);" else/0)/stop_sleeptimer(hosts[i],timeout[i]);/nichts/tun/});/<e=""></anzahl_hosts;i++)>`[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
  • Ölverbrauch berechnen?

    Moved
    4
    0 Votes
    4 Posts
    1k Views
    L
    Hi Thomas, die werden in ioBroker gespeichert. Die Datenpunkte aus der CCU stehen aber zur Verfügung und können als Trigger eingetragen werden. Die Anzahl der verwendeten Datenpunkte hängt von den Einstellungen ab, z.B. mit Historie oder ohne, mit Tages, Wochen, Monats, Jahreskumulation oder ohne etc. Bisher ist es als Betriebszeitenscript veröffentlicht, allerdings habe ich das Script komplett umgeschrieben und erweitert. Damit sind Verbrauchdarstellungen möglich, auch bewertete Verbräuche, Umrechnungen anderer Art etc. link zum Beitrag: http://forum.iobroker.com/viewtopic.php?f=21&t=2175 aber wie gesagt. Diese Version enthält noch nicht die neuen Funktionen. Ich schicke dir mal die letzte Version via PN. Mal zum schauen. vG
  • Variable Zeitsteuerung

    Moved
    11
    0 Votes
    11 Posts
    2k Views
    B
    @pix: Hallo, auch mal hier im Forum nach 'unsubscribe'. Bin unterwegs und finde den Link gerade nicht. Gruß, Pix Gesendet mit Tapatalk ` Gefunden, gleiche Frage und das obwohl ich gesucht hatte :ugeek: .
  • Selektor ODER Verknüpfung

    Moved
    4
    0 Votes
    4 Posts
    864 Views
    P
    Hallo, es hat funktioniert.: http://forum.iobroker.com/viewtopic.php … 076#p19603 lediglich das "^" habe ich weggelassen. Gruß Pix
  • [gelöst] On id bezogen auf mehrere ID´s möglich

    Moved
    3
    0 Votes
    3 Posts
    879 Views
    B
    Super funzt. Musste noch dahinter steigen, dass nicht alle Aktoren mit LEQ beginnen :), aber das war eine kleine Anpassung. Danke.
  • Per Python den Zustand von Datenpunkten ändern

    Moved
    1
    0 Votes
    1 Posts
    861 Views
    No one has replied
  • HUE Motion

    Moved
    7
    0 Votes
    7 Posts
    2k Views
    I
    Danke geht!
  • Probleme mit Skript Licht an nach Erkennung Bewegung

    Moved
    2
    0 Votes
    2 Posts
    810 Views
    P
    Hallo Freddy, dein Subscribe ist die Kurzschreibweise. Lang geschrieben ist das das gleiche: on({id: 'hm-rpc.0.KEQ0236715.1.MOTION', change: 'ne' }, function (obj) { Das bedeutet erstmal, dass das Skript nur gestartet wird, wenn der Wert sich ändert. Weiter unten fragst du dann ab, ob der neue Wert true ist (also nach einer Änderung, d.h. er muss vorher false sein). Bei den Variablen helligkeit und bewegung fehlt noch das .val. Probier mal so: on({id: 'hm-rpc.0.KEQ0236715.1.MOTION', change: 'any' }, function (obj) { // Bewegung überwachen var bewegung = getState('hm-rpc.0.KEQ0236715.1.MOTION').val; // hier aber auch obj.newState.val var helligkeit = getState('hm-rpc.0.KEQ0236715.1.BRIGHTNESS').val; if (obj.newState.val === true) { // Bewegung true log("---> Licht - Gallerie - ausgelöst durch Bewegungsmelder............","info") if (helligkeit < 50) { // Helligkeitsgrenzwert bei Bedarf ändern setState("hm-rpc.0.KEQ0801517.1.ON_TIME"/*LED Galerie ein - aus.ON_TIME*/, 600); // 600s Einschaltdauer setState("hm-rpc.0.KEQ0801517.1.STATE"/*LED Galerie ein - aus.STATE*/, true); // schalte Lampe an log("---> Licht - Gallerie an für 600 Sekunden............" ,"info"); } else { log("---> Licht - Licht zu hell um anzuschalten da Helligkeit: " + helligkeit + " %" ,"info"); // Helligkeitswert vom Melder sind keine Prozent } } }); Gruß Pix
  • Zuviel fuer JS ?

    Moved
    32
    0 Votes
    32 Posts
    3k Views
    L
    aaah- jetzt hab ichs verstanden. oh mann. Danke dir
  • Rolladen Zeitverzögert ansteuern

    Moved
    18
    1
    0 Votes
    18 Posts
    3k Views
    wendy2702W
    Hi, ich habe mich mal an das bereits in diesem Thema enthaltene Script gewagt. Damit ich irgendwann mal verstehe wie das alles funktioniert mal ein paar fragen: wenn ich das Script so erstelle wie angegeben, muss ich doch zusätzlich in der CCU sagen das bei z.B. Druck der Taste "hm-rpc.0.BidCoS-RF.12.PRESS_SHORT" die Rolladen aktoren auf 0% (zu) fahren, oder mache ich das auch in iobroker? Das wiederhole ich für alle drei Tasten, korrekt? Sieht bei mir z.B. so aus: [image: 999_jalousie_og_alle_ccu.jpg] Wenn ich z.B. diese Taste nehmen würde: "hm-rpc.0.BidCoS-RF.15.PRESS_SHORT" würde der Rolladen 2000ms später fahren, richtig? Das Programm habe ich erstmal 1 zu 1 in iobroker importiert und gestartet. Danach ist mein Status so: [image: 999_jalousie_og_alle.jpg] Ich habe mir zum Testen zwei einfache Widgets erstellt und die jeweils mit der virtuellen Taste für rauf bzw. runter belegt. Das scheint zu klappen. Wie funktioniert jetzt die Umschaltung zwischen Auto/Hand ? Ein Auto Script habe ich zwar noch nicht aber was muss ich machen um wählen zu können? Ich kann mit einen weiteren Widget den Status für "Hand_Auto" zwischen "true und false" wechseln, allerdings kann ich egal was da steht immer meine beiden anderen Widgets zum fahren benutzen. Danke für eure Hilfe
  • Iobroker Unterschied zwischen value und object

    Moved
    13
    0 Votes
    13 Posts
    4k Views
    G
    Genau das war es Danke :D
  • JavaScript die Erste… ein Noob braucht hilfe :(

    Moved
    4
    0 Votes
    4 Posts
    895 Views
    R
    Danke, wollte nur mal mit den ausdrücken und Statusabfragen herumprobieren. Werde mich tapfer damit weiter spielen und sicher wieder fragen stellen… [GRINNING FACE WITH SMILING EYES] Gesendet von meinem HUAWEI CRR-L09 mit Tapatalk
  • Status einer Instanz abfragen – CCU noch am Leben?

    Moved
    3
    0 Votes
    3 Posts
    1k Views
    M
    Hi, vielen Dank für die schnelle Antwort! Super, genau was ich gesucht habe. :D Und ja, der Name ist definitiv Programm ;)
  • On ID und Asynchrones Verhalten

    Moved
    9
    0 Votes
    9 Posts
    1k Views
    L
    ich meinte, dass das script wie ich es gepostet habe mit dem Delay funktioniert. Sorry, dass ich mich da nicht klar ausgedrückt habe. Mittlerweile glaube ich, dass es bei der Kombi Direktverknüpfung und schnelle Schaltfolge keine Lösung gibt, da ja ioBroker offensichtlich vom ersten Schaltvorgang gar nichts mitbekommt. vG Looxer 6558_unbenannt.png
  • On()-Funktion - Reagieren auf _SHORT oder _LONG

    Moved
    34
    0 Votes
    34 Posts
    3k Views
    R
    Hey, frage von einem totalen JavaScript noob: Er schaltet mir die Var output2 nicht, was mache ich falsch? log("Test","info"); //var input1 = "ping.0.input1";/*input1 bool*/ //var input2 = "ping.0.input2";/*input2 zahl*/ //var output1 = "ping.0.output1";/*output1 bool*/ //var output2 = "ping.0.output2";/*output2 zahl*/ function testfunc1() { setState("ping.0.output1", true); } function testfunc2() { setState("ping.0.output1", false); } on({id: "ping.0.input1", val: true}, testfunc1); on({id: "ping.0.input1", val: false}, testfunc2); 305_heizungsscript_220_b14_temp.txt
  • Button zum erstellen eines neuen Scripts funktionier nicht.

    Moved
    8
    0 Votes
    8 Posts
    1k Views
    B
    Hallo, Problem gelöst. Nach einigem rumspielen kam plötzlich das Script. Die Lösung war anscheinend die Eingabe einer "1" in der Filterzeile oben unter ID. Das Feld/Filter war aber vor der Eingabe leer.
  • IoBroker out / Weitere Merkmale/Standardvariablen mitgeben?

    Moved
    2
    0 Votes
    2 Posts
    1k Views
    N
    Hallo Frank, der out-Node unterstützt zurzeit nur das Setzen des Werts und implizit durch die Auswahl der id und des Typs das Setzen des ack-Flags. Soweit ich gesehen habe, können mit der verwendeten Funktion setState der states-Library auch keine Stammdaten der States verändert werden. Gruß Markus
  • Count Up Script Ausgabe in Tagen

    Moved
    2
    0 Votes
    2 Posts
    970 Views
    B
    Die Lösung war doch viel einfacher als gedacht….. var then = new Date(2015, 11, 10, 00, 00, 00), // month is zero based now = new Date; // no arguments -> current date days = "daysincebirth" // 24 hours, 60 minutes, 60 seconds,1000 milliseconds setState (days, Math.round((now - then) / (1000 * 60 * 60 * 24))) und es funktioniert….
  • [erledigt]Benutzen von "confirm"

    Moved
    6
    0 Votes
    6 Posts
    1k Views
    blauholstenB
    Hi, habe es jetzt folgendermaßen gelöst. Beim betätigen des HQ.Widget schreibe ich einen DP auf true. Dieser wiederum lässt ein View in Widget öffnen, das ich per setStateDelay im Script dann nach einer gewissen Zeit verschwinden lasse. Vielen Dank für eure Hilfe. :idea:

423

Online

32.6k

Users

82.2k

Topics

1.3m

Posts