Skip to content

Skripten / Logik

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

16.5k Themen 213.3k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    azzkikrboyA
    @arnod OK, dann lass ich es leiber so :-) Als ich die neue Version kopiert habe ist mir aufgefallen, dass es ein neues Design für die Übersicht gibt. Wenn ich das neue .js bei mir einbaue, sieht es aber immer noch so aus wie vorher ... Ist zwar nur die Optik, sieht aber besser aus ;-) Woran kann das liegen? neu: [image: 1770466556270-ea702700-2a5a-49aa-bd8f-f6f4a89477dc-grafik.png] alt? (nach einfügen der neuen .js) [image: 1770467005603-d70df4e6-08b4-4c6b-abbc-914ac65bf5fe-grafik.png]
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    J
    Es funzt !! DANKE! Anfangs zwar etwas humpelig, weil das Script 3-4x durchlaufen werden muss, aber es geht.. Der Langzeittest steht aus... [image: 1770500349513-dfe1bbbf-36ad-4e83-9fa2-72deca072439-image.png]
  • 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?
  • Fibaro RGBW in Szene

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    496 Aufrufe
    Niemand hat geantwortet
  • [gelöst] Scripte für Systeminfos Raspi (nicht rpi2-Adapter)

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    631 Aufrufe
    paul53P
    Für die CPU-Last verwende ich folgendes Skript: // CPU-Last aus Datei /proc/stat ermitteln var fs = require('fs'); var idLast = getIdByName('Service.CPU-Last'); var fn = '/proc/stat'; var cpuUser = 0; var cpuNice = 0; var cpuSystem = 0; var cpuIdle = 0; function cpuLast(text) { var lines = text.split('\n'); var cpu = lines[0].split(' '); var cUser = parseFloat(cpu[2]) - cpuUser; var cNice = parseFloat(cpu[3]) - cpuNice; var cSystem = parseFloat(cpu[4]) - cpuSystem; var cIdle = parseFloat(cpu[5])- cpuIdle; var last = 100 * (1 - cIdle / (cUser + cNice + cSystem + cIdle)); setState(idLast, runden(last, 1), true); cpuUser = parseFloat(cpu[2]); cpuNice = parseFloat(cpu[3]); cpuSystem = parseFloat(cpu[4]); cpuIdle = parseFloat(cpu[5]); } function getStat() { fs.readFile(fn, 'utf8', function(err, text) { if(err) log('Fehler beim Lesen von /proc/stat', 'error'); else cpuLast(text); }); } schedule('*/10 * * * * *', getStat); und das für die Chip-Temperatur: // Chiptemperatur var tempid = getIdByName("Service.Pi-Temperatur"); var temp = require("pi-temperature"); function pitemp() { temp.measure(function(err, temp) { if(err) log('Fehler Pi-Temperatur', 'error'); else setState(tempid, temp, true); }); } schedule("*/1 * * * *", pitemp);
  • Node-red Datenübergabe OWL - ioBroker

    Verschoben
    3
    4
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    twonkyT
    Ich bin auch auf den Fehler gestoßen und habe ihn behoben. Genauer gesagt funktioniert im ioBroker.node-red (v1.4.0) beim ioBroker output node das leer lassen des Topic nicht. Sobald eine neue Version des ioBroker.node-red released wird (> v1.4.0) ihr updaten.
  • [Gelöst]Subscribe/on und Arrays

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    AlCalzoneA
    Sowas meinte ich mit > in Abhängigkeit von der ID des geänderten States die richtige Aktion ;)
  • [Gelöst] Stufenschalter mit Dash Button

    Verschoben
    12
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    rantanplanR
    Vielleicht noch ein Tip für die Optik. Ich finde die ellenlangen UND Verbindungen immer recht unübersichtlich. Wenn man einen UND/ODER Baustein mit der rechten Maustaste anklickt, kann man "externe Eingänge" anwählen. Dann werden die Bedingungen untereinander angezeigt. [image: 147_beispiel.png] Grüße
  • JavaScript RS232

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    524 Aufrufe
    Niemand hat geantwortet
  • Lowbat-Script

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    1k Aufrufe
    T
    Hallo Hermann, um auch auf deine eigentliche Frage zu antworten: ich hatte das neulich auch einmal, das für ca. 15 Minuten ein TFK angeblich lowbat hatte… danach war wieder alles super.
  • [Frage] zu Laufzeit erstellen State verarbeiten

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    975 Aufrufe
    AlCalzoneA
    @Lucky: on({id: /\.play$/, val:true},function (obj){ console.log('GEDRÜCKT 5') }); funktioniert ! ` Hat aber den Nachteil, dass ALLE States gefunden werden, die auf ".play" enden, nicht nur die in javascript.0.Spotify. Probier mal Pauls Variante
  • Videos per Telegram

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    2k Aufrufe
    S
    Schein eher am Timing zu liegen. Die Nachricht wurde gesendet bevor das Video fertig verarbeitet wurde Damit geht es on({id: "telegram.0.communicate.request"/*Last received request*/, change: "any"}, function (obj) { var d = new Date(); var curr_date = d.getDate(); var curr_month = d.getMonth() + 1; //Months are zero based var curr_year = d.getFullYear(); var curr_hour = d.getHours(); var curr_min = d.getMinutes(); if (getState("telegram.0.communicate.request").val.toLowerCase().search("picam") != -1 ) { var filename = curr_year +""+ curr_month +""+ curr_date + "_" + curr_hour+""+curr_min + ".jpg"; exec ("raspistill -q 90 -o /home/pi/picam/" + filename + " > /home/pi/picam/picerr.log"); setTimeout(function() { sendTo('telegram.0', { text: '/home/pi/picam/' + filename, caption: filename, disable_notification: true }); }, 6000); } if (getState("telegram.0.communicate.request").val.toLowerCase().search("pivid") != -1 ) { filename = curr_year +""+ curr_month +""+ curr_date + "_" + curr_hour+""+curr_min + ".h264"; filenamefin = curr_year +""+ curr_month +""+ curr_date + "_" + curr_hour+""+curr_min + ".mp4"; setTimeout(function() { exec ("raspivid -o /home/pi/picam/" + filename + " -t 10000 -w 1280 -h 720"); }, 1000); setTimeout(function() { exec ("MP4Box -add /home/pi/picam/"+filename+" /home/pi/picam/" + filenamefin + " >> vidconerr.log"); setTimeout(function() { sendTo('telegram.0', { text: '/home/pi/picam/' + filenamefin, caption: filenamefin, disable_notification: true }); }, 4000); }, 12000); } });
  • Node Red und Python

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    4k Aufrufe
    R
    Hallo ihr beiden. Erst mal herzlich willkommen!! Habe ich das jetzt richtig verstanden , ihr wollt eine Zusatz Funktion in Node-red im iobroker hin zu installieren ? Es ist zwar schon eine Zeit her als ich intensiver damit arbeitete, aber mir wurde damals ans Herz gelegt das ich die zusätzlichen Funktionen doch bitte über den node-red Adapter installieren soll. Geht auf Instanzen und sucht den node-red Adapter. Dann klickt ihr in der Zeile auf das Einstellungen Symbol. Und dort könnt ihr die Namen der Pakete getrennt durch ein Komma eintragen. Vorteil ist sehr groß, denn es ist einfach, man sieht was installiert ist und der wichtigste Grund…. Bei einem update des Adapter werden die Pakete immer wieder automatisch nachinstalliert. Wenn ihr diese über die Konsole installiert dann werden die nach dem update evtl weg sein. Grüße Tobi Gesendet von meinem D5803 mit Tapatalk
  • [Gelöst]Lowbat script

    Verschoben
    5
    1
    0 Stimmen
    5 Beiträge
    665 Aufrufe
    totocotonioT
    Hi Jungs, genau das war es. Jetzt zählt er auch die möglichen. Vielen Dank für die wie immer tolle Hilfe. Gruß totocotonio
  • Bewegungsmelder und Ihre Problemchen

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    Jey CeeJ
    Hast ne PN. Gesendet von Unterwegs
  • [gelöst] Locky-Skript: Uhrzeit im Mail-Betreff

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    546 Aufrufe
    rantanplanR
    @Kuddel: Perfekt, damit geht es ` Prima! Bitte Betreff Deines ersten Eintrags ändern. "[gelöst] Blockly-Script: Uhrzeit im Mail-Betreff" Siehe http://forum.iobroker.net/viewtopic.php?f=8&t=2451 Grüße
  • [Gelöst] Blockly-script zur steuerung Aussenbeleuchtung mit Bewegungsmelder

    Verschoben
    12
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    S
    ja, das würde natürlich auch funktionieren…
  • [Frage] Data Logging in Textdadei [gelöst]

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    815 Aufrufe
    paul53P
    Übrigens kann formatDate() mittlerweile auch ms: var Zeitstempel = new Date(); Datum = formatDate(Zeitstempel, "YYYY-MM-DD") + " \t"; Zeit = formatDate(Zeitstempel, "hh:mm:ss.sss") + " \t"; oder als Einzeiler Zeit = formatDate(new Date(), "YYYY-MM-DD \thh:mm:ss.sss \t");
  • Initialzündung benötigt

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    784 Aufrufe
    T
    ok… der Tipp mit der Aktualisierung hat schon mal weiter geholfen!
  • Nachhilfe in Javascript

    Verschoben
    11
    0 Stimmen
    11 Beiträge
    1k Aufrufe
    AlCalzoneA
    @Thisoft: if (err || !client) ```` ` Ich glaube das wichtigste wurde hier noch nicht erwähnt. Nicht sicher ob dir das bewusst ist: Die Variablen err und client sind sehr wahrscheinlich Objekte. Diese sind in JavaScript "truthy" (also "wahr oder so ähnlich"), wenn sie weder null noch undefined sind. Der obige Code prüft also, ob entweder err einen Wert hat oder client keinen hat. Sollte eine dieser Variablen ein boolean sein, kann es seltsam werden. Ausführlich wäre das so: if (err != null || client == null) mit dem Hinweis dass "!= null" prüft ob die Variable weder null noch undefined ist. (!== null würde nur mit null vergleichen) oder if (typeof err !== "undefined" || typeof client === "undefined") Kurz: 1. funktioniert, kann aber unvorhergesehene Auswirkungen haben 2. ist weniger anfällig und mein Favorit 3. ist mir persönlich zu lang, funktioniert aber auch wenn du die Variable vorher nicht definiert hast.
  • [gelöst] Testen von Blockly Scripten

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    4k Aufrufe
    S
    O.k. das schreiben ins Log funktioniert nun. (Ich hatte nicht begriffen dass man die Variable über das hellblaue Feld, das am Baustein Debug Output mit "xy" hängt einfach rüberziehen kann.) Besten Dank
  • Hausstatus Script

    Verschoben
    15
    0 Stimmen
    15 Beiträge
    2k Aufrufe
    lobomauL
    @BuZZy: @lobomau: Inzwischen zählt er doch. Habe nichts geändert (außer js-controller update und damit auch iobroker neugestartet). Mein Problem sind jetzt aber die Geräte von homematic IP, die haben zwei Kanäle mit STATE, die auch beide reagieren wenn Licht angehen. Eine Möglichkeit wäre vielleicht wenn ich dem einen nicht mehr zuordne der Function Licht. Aber man es sicherlich auch so programmieren dass doppelte Namen nicht doppelt gezählt werden sollen. ` createState('Watchdogs.Lichter.WieVieleSindOffen', 0); createState('Watchdogs.Lichter.WelcheSindOffen', " "); var cacheSelectorLICHTER = $('channel(functions=Licht)[state.id=*.STATE]'); function countLichter(obj) { var textLICHTER = []; cacheSelectorLICHTER.each(function (id, i) { var status = getState(id).val; var obj = getObject(id); if (status === true && textLICHTER.indexOf(obj.common.name.substr(0, obj.common.name.indexOf(':'))) === -1) { textLICHTER.push(obj.common.name.substr(0, obj.common.name.indexOf(':'))); } }); setState("Watchdogs.Lichter.WelcheSindOffen", textLICHTER.join(', ')); setState("Watchdogs.Lichter.WieVieleSindOffen", textLICHTER.length); } cacheSelectorLICHTER.on(function(obj) { countLichter(obj); }); schedule("0 */1 * * *", function () { countLichter(); }); Probier es mal da mit.. Gruß ` Cool. Läuft!
  • 0 Stimmen
    15 Beiträge
    3k Aufrufe
    M
    Sorry, dass ich jetzt erst antwortet. Bzgl. der Frage, wann das passiert, kann ich derzeit keine vernünftige Antwort geben. Die genauen Randbedingungen habe ich derzeit noch nicht eingekreist. Optimalerweise sollte es überhaupt keine "verbotenen" Zustände bei der Benutzung eines API geben. Der Adapter sollte die Kommandos so lange verzögern, bis die Sonos Box wieder empfangsbereit ist, ohne Zicken zu machen. Werde noch ein bisschen forschen und dann ein Update geben.

338

Online

32.6k

Benutzer

82.2k

Themen

1.3m

Beiträge