Skip to content

Skripten / Logik

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

16.5k Themen 213.2k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    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 Themen
    79k Beiträge
    HomoranH
    @zizu29 sagte in Briefkasten Benachrichtigung / Anzeige Alexa ohne Ton: kann mir keiner helfen mit meinem Blockly? was steckt denn hinter den zu steuernden Datenpunkten?
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • Hue Lampe nach Farbänderung wieder zurück setzen

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    coyoteC
    Funktioniert, danke dir. Bin noch nicht so firm im scripten ;) 10064_shepherd.db.txt
  • Verallgemeinerung zur Weiterverwendung

    Verschoben
    17
    0 Stimmen
    17 Beiträge
    2k Aufrufe
    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?

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    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

    Verschoben
    11
    0 Stimmen
    11 Beiträge
    2k Aufrufe
    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

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    864 Aufrufe
    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

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    879 Aufrufe
    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

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    861 Aufrufe
    Niemand hat geantwortet
  • HUE Motion

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    2k Aufrufe
    I
    Danke geht!
  • Probleme mit Skript Licht an nach Erkennung Bewegung

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    810 Aufrufe
    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 ?

    Verschoben
    32
    0 Stimmen
    32 Beiträge
    3k Aufrufe
    L
    aaah- jetzt hab ichs verstanden. oh mann. Danke dir
  • Rolladen Zeitverzögert ansteuern

    Verschoben
    18
    1
    0 Stimmen
    18 Beiträge
    3k Aufrufe
    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

    Verschoben
    13
    0 Stimmen
    13 Beiträge
    4k Aufrufe
    G
    Genau das war es Danke :D
  • JavaScript die Erste… ein Noob braucht hilfe :(

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    895 Aufrufe
    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?

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    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

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    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

    Verschoben
    34
    0 Stimmen
    34 Beiträge
    3k Aufrufe
    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.

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    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?

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    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

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    970 Aufrufe
    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"

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    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:

735

Online

32.6k

Benutzer

82.2k

Themen

1.3m

Beiträge