Skip to content

Skripten / Logik

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

16.5k Topics 213.4k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    B
    Hi, Würde gerne meinen Solarflow 800 Pro mit 4 PV Modulen (gesamt ca. 1700 Wp) zur Null-Einspeisung mit iobroker und Tasmota smartmeter betreiben. Sollte das mit dem Script möglich sein?
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    paul53P
    @Cephalopod sagte: Also "schlampig" Programmiert? Sieht so aus. Ich hätte die Button so programmiert: // NET USB Down if (id === adapter.namespace + '.Device.MediaDown' && state.val === true) { const new_val = 'NTCDOWN'; adapter.log.debug('new_val: ' + new_val); adapter.setState(adapter.namespace + '.Device.command', {val: new_val, ack: false}); }
  • 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?
  • [gelöst]Onkyo AMP mit Homematic Taster einschalten!

    Moved
    26
    2
    0 Votes
    26 Posts
    3k Views
    HomoranH
    @jwedenig: danke, der Port wars ` nope, du hattest als IP 0.0.0.0 drin, da muss eine 192.16.8.x.y drin sein. Gruß Rainer
  • Fibaro RGBW in Szene

    Moved
    1
    0 Votes
    1 Posts
    496 Views
    No one has replied
  • [gelöst] Scripte für Systeminfos Raspi (nicht rpi2-Adapter)

    Moved
    3
    0 Votes
    3 Posts
    631 Views
    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

    Moved
    3
    4
    0 Votes
    3 Posts
    1k Views
    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

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

    Moved
    12
    0 Votes
    12 Posts
    1k Views
    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

    Moved
    1
    0 Votes
    1 Posts
    524 Views
    No one has replied
  • Lowbat-Script

    Moved
    10
    0 Votes
    10 Posts
    1k Views
    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

    Moved
    10
    0 Votes
    10 Posts
    975 Views
    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

    Moved
    5
    0 Votes
    5 Posts
    2k Views
    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

    Moved
    4
    0 Votes
    4 Posts
    4k Views
    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

    Moved
    5
    1
    0 Votes
    5 Posts
    665 Views
    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

    Moved
    6
    0 Votes
    6 Posts
    1k Views
    Jey CeeJ
    Hast ne PN. Gesendet von Unterwegs
  • [gelöst] Locky-Skript: Uhrzeit im Mail-Betreff

    Moved
    6
    0 Votes
    6 Posts
    546 Views
    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
  • 0 Votes
    12 Posts
    1k Views
    S
    ja, das würde natürlich auch funktionieren…
  • [Frage] Data Logging in Textdadei [gelöst]

    Moved
    9
    0 Votes
    9 Posts
    815 Views
    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

    Moved
    4
    1
    0 Votes
    4 Posts
    784 Views
    T
    ok… der Tipp mit der Aktualisierung hat schon mal weiter geholfen!
  • Nachhilfe in Javascript

    Moved
    11
    0 Votes
    11 Posts
    1k Views
    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

    Moved
    4
    0 Votes
    4 Posts
    4k Views
    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

    Moved
    15
    0 Votes
    15 Posts
    2k Views
    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!

320

Online

32.6k

Users

82.3k

Topics

1.3m

Posts