Weiter zum Inhalt

Skripten / Logik

16.7k Themen 215.9k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 50k
    3k Themen
    50k Beiträge
    G
    @GombersIOB Danke für deine ausführliche Erläuterung, jetzt ist "fast" alles klar. Nur zur Sicherheit: Der Ladestart erfolgt durch Schalten der Dose in der Shelly-App, an der Dose selbst oder über den Datenpunkt ".relay.0.switch"? Danke Thomas
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    W
    erledigt
  • Hilfe für Skripterstellung mit Node-RED

    964 13k
    964 Themen
    13k Beiträge
    A
    @Homoran Ja, ich weiss. Und ich habe etliches getestet, nur er hat weder die Schnittstelle noch die Pytes gefunden. Mit den genau gleichen Vorgaben und Linux Rechten schafft es mein Node-Red aus dem gleichen LXC Container raus das Master BMS zu erreichen. Der Adapter schaffte es aber nicht, zu dem hat er automatisch Datenpunkte angelegt beim einfügen der Instanz, die es gar nicht gibt. Ich gehe davon aus, dass der Adapter mal geschaffen und getesten wurde mit Pylontech und weil die BMS vieleicht mal identisch gearbeitet hatten das dann so reingekommen ist. Leider hat auch der Entwickler des Adapters bis jetz keine Reaktion gezeigt, so dass ich davon aus gehe, dass kein Interesse mehr besteht. Darum habe ich eben den mir einigermassen gangbare Weg gewählt. Adapterentwicklung oder Anpassung ist ausserhalb meiner Fähigkeiten. Ich helfe gerne wenn ich was testen kann, aber wie man im ganzen Verlauf sehen kann, begreife ich gewisse Software Dinge irgend wie nicht. Ich weiss man könnte auch den Flow viel eleganter machen mit einer Liste und immer der gleichen Abfrage, aber ich habe es nicht hingekriegt.
  • Licht Dimmer miteinander + Javascript Obkekt binden

    Verschoben
    5
    2
    0 Stimmen
    5 Beiträge
    2k Aufrufe
    smileS
    Hmm sehr merkwürdig. Ich habe das ganze jetzt nochmal mit etwas anderem getestet, simpler Gedanke: –> Verknüpfung einer Systemvariable auf der Homematic (Beschattungsautomatik = wahr/falsch) mit einem Script in io.broker (scriptenabled = wahr/falsch) [image: 3472_beschattung_modus_kn_pfen.png] ! ```` <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="`04oM6(o%bNeVq@/#zB{" x="-537" y="-237"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="I?QRr,;BEMk~/g~9!P5#"><field name="oid">javascript.0.scriptEnabled.Beschattungen.Beschattung_Schlaf_Auto_Sonne</field></shadow></value> <statement name="STATEMENT"><block type="update" id="iIdy2c%:Q}-6p=rTU}Lu"><mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.10602</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="get_value" id="~T,trarZ#uumgbZut:bb"><field name="ATTR">val</field> <field name="OID">javascript.0.scriptEnabled.Beschattungen.Beschattung_Auto_Sonne</field></block></value></block></statement> <next><block type="on_ext" id="ArbHcj(O]Ecd5KzOyxpw"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION">false</field> <value name="OID0"><shadow type="field_oid" id="^LRAnfnJzKLHL4KC54dW"><field name="oid">hm-rega.0.10602</field></shadow></value> <statement name="STATEMENT"><block type="control" id="I,p%:gKl@b7c?,tCKPL3"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.scriptEnabled.Beschattungen.Beschattung_Auto_Switch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="get_value" id="Q^KMIXVJ!R{kNlZm*lz)"><field name="ATTR">val</field> <field name="OID">hm-rega.0.10602</field></block></value></block></statement></block></next></block></xml> Leider tut sich in beiden Fällen garnichts, also weder wenn auf der Homematic die Variable geändert wird, noch wenn ich in io.broker das Script manuell Starte/beende. Es kann doch eigentlich nicht so schwer / umständlich sein Zustände untereinander zu synchronisieren?
  • Blockly - Verwendung von Aufzählungen /enum.functions.verschluss zb.

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    2k Aufrufe
    rantanplanR
    @Holger76: Schade, dachte ich mir. Falls sich das irgendwie integrieren liese, wäre das ne gute Sache. ` Das wird wohl nie funktionieren. Ein Script ist statisch. Du kannst innerhalb eines Scripts mit enums arbeiten. Aber nicht als Trigger! Wenn Du einem enum etwas hinzufügst müsste sich das Script ja selbst umschreiben. Grüße
  • [gelöst] Benötige Hilfe beim Variable setzen

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    769 Aufrufe
    H
    Danke, so habe ich es hin bekommen.
  • Unterstützung bei den ersten Skripten gesucht…

    Verschoben
    31
    0 Stimmen
    31 Beiträge
    4k Aufrufe
    H
    Guten Abend, kann man das Script```` on({id: 'hm-rpc.1.IEQ053xxxx.1.PRESS_SHORT‘}, function (obj) { setState("hm-rpc.1.IEQ038xxxx3.State",!getState("hm-rpc.1.IEQ038xxxx3.State").val); }); Egal wo ich z. B. XXX.level und den Wert einbaue, schaltet die Lampe nicht mehr sauber. :?
  • [gelöst]Onkyo AMP mit Homematic Taster einschalten!

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

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

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    685 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
    2k 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
    2k 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
    563 Aufrufe
    Niemand hat geantwortet
  • Lowbat-Script

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    2k 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
    1k 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
    836 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
    635 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
    2k Aufrufe
    S
    ja, das würde natürlich auch funktionieren…
  • [Frage] Data Logging in Textdadei [gelöst]

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

371

Online

33.0k

Benutzer

83.6k

Themen

1.3m

Beiträge