Skip to content

Skripten / Logik

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

16.5k Topics 213.5k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    S
    das Wetter gehört doch zu einem anderen unternehmen, meine ich.... Also ich habe 3 Api Keys zum testen... Wenn ich einen ausgereizt habe, kann ich einfsch den zweiten nutzen und trotz gleicher IP geht's direkt weiter.....
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    haselchenH
    @Fibricus Passt Du den Threadtitel noch bitte an ( auch wenn gelöst). Mit „Denk ich falsch?“ kann kein User was anfangen .
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    Marc BergM
    Es gibt in der Verson 1.3.0 einen neuen Node: iob-setObject (Stand 10.02.26 noch beta) Mit dem neuen Node kann man ioBroker-Objektdefinitionen (Metadaten) direkt schreiben und ändern. Hauptfunktionen: Instanz-Konfigurationen ändern - z.B. MQTT publish-Pattern, Intervalle, etc. Objekt-Eigenschaften aktualisieren - Namen, Rollen, Einheiten, Min/Max-Werte ändern es gibt zwei Modi: Merge-Modus : Ändert nur die angegebenen Eigenschaften, alle anderen bleiben erhalten Replace-Modus: Überschreibt das komplette Objekt Typischer Workflow: Objekt mit iob-getobject holen Mit Change-Node gewünschte Properties ändern Mit iob-setobject zurückschreiben
  • 0 Votes
    8 Posts
    3k Views
    etvE
    ….nein gleich danach nicht, hat er auch so übernommen. Fehler war, dass die Datei nach dem Kopieren falsche Zugriffsrechte hatte und erst nach dem Ändern dieser ist es dann gegangen und anscheinend sind genau in dieser Zeit die letzten Fehler ausgeworfen worden... Aber nun klappt's perfekt! Danke nochmal für die rasche Hilfe!! Grüße Tom
  • Anderung in Hm rega überwachen

    Moved
    4
    0 Votes
    4 Posts
    900 Views
    paul53P
    Rechne besser die aktuelle Uhrzeit in ms um, dann kann man einfach substrahieren: schedule ("* * * * *",function(){ var act = getState("hm-rega.0.7761"/*Anwesenheit.string*/).ts; // letzte Aktualisierung var change = getState("hm-rega.0.7761"/*Anwesenheit.string*/).lc; var date =new Date(); date = date.getTime(); // ms seit 1.1.1970 setState ("javascript.0.hmpdetect.neu"/*hmpdetect.neu*/,act); log("act " +act + " change " +change + " date "+date ); var diff = (date - act) / 60000; // Differenz in Minuten });
  • Neuling hat probleme bei Script ausführen

    Moved
    7
    0 Votes
    7 Posts
    3k Views
    M
    Hallo Pix mal einen Herzlichen Dank für deine Geduld und Hilfe hab das script ein wenig umbebaut ,leider funktioniert das mit dem Widget noch ned so richtig kommt nur eine kurze bestätigung ,also das script bleibt auf false hab sicher da irgendwo nen fehler drinnen ..vielleicht kannst du noch mal kurz drüber schauen Gruesse Mario66 createState('RolAlleHoch', false); /* besser createState('RolAlleHoch', { type: 'boolean', def: false }); */ on("javascript.0.RolAlleHoch", function (obj) { if (obj.state.val) { // kann so abgekürzt werden. newState = state, "===true" kann man weglassen setStateDelayed("hm-rpc.0.MEQ1309974.1.LEVEL"/*Jalousien/Wohnzimmer TV.LEVEL*/, 100); // Wert 100 setStateDelayed("hm-rpc.0.MEQ1310286.1.LEVEL"/*Jalousien/Wohnzimmer/Strasse.LEVEL*/, 100); // Wert 100 setStateDelayed("hm-rpc.0.NEQ0111918.1.LEVEL"/*Jalousien/Esszimmer.LEVEL*/, 100); // Wert 100 log('Alle Rollläden werden hochgefahren'); // optional - damit du siehst, wann das Skript greift. } }); on({id: /.MEQ1309974.1.LEVEL|.MEQ1310286.1.LEVEL|.NEQ0111918.1.LEVEL/, // Rolläden werden bei Bewegung abgefragt change: 'ne' }, function(obj) { if (getState("hm-rpc.0.MEQ1309974.1.LEVEL").val === 100 && getState("hm-rpc.0.MEQ1310286.1.LEVEL").val === 100 && getState("hm-rpc.0.NEQ0111918.1.LEVEL").val === 100) setState("javascript.0.RolAlleHoch", false); });
  • Hile node-red läuft 2mal ?

    Moved
    1
    0 Votes
    1 Posts
    1k Views
    No one has replied
  • SSH-Befehle als Skript in ioBroker ausführen

    Moved javascript
    6
    0 Votes
    6 Posts
    8k Views
    K
    Danke euch beiden für die Tipps! Das mit der Skriptdatei werde ich ausprobieren. Sorry für die Anfänger-Fragen, bin einfach kaum Linux-Erfahren und da fehlen mir häufig Basics. Unter Windows wäre das ja alles kein Problem 8-)
  • Blockly

    Moved
    4
    0 Votes
    4 Posts
    2k Views
    BluefoxB
    Es geht schon einiges und zum Spielen reich es aus: [image: 48_2016-07-21_17_40_03-iobroker.admin.png] Ich habe aber das Problem, dass die Projekte nicht immer abgespeichert werden. Also .. nur spielen ;)
  • GetObject liefert falsche Daten (Ziel: Raum zu Gerät finden)

    Moved
    3
    0 Votes
    3 Posts
    865 Views
    P
    Tatsächlich habe ich jetzt nochmal recherchiert und mir alle enums zu den Objekten anzeigen lassen. Die problematischen Geräte sind noch in Favoriten der CCU enthalten und somit unter enum.favorites aufgeführt. Scheinbar wird dann etwas durcheinander geworfen. Da ich die Favoriten nicht mehr nutze, habe ich sie jetzt gelöscht und alles funktioniert korrekt.
  • Setzen von HM Systemvariablen mit JS

    Moved
    27
    0 Votes
    27 Posts
    6k Views
    D
    Hallo paul53, danke. Da lag wohl ein kleiner Denkfehler meinerseits vor. Gruß, Thorsten
  • [ERLEDIGT]Hilfe zur Fehlermeldung.

    Moved
    8
    0 Votes
    8 Posts
    1k Views
    blauholstenB
    @Bluefox: @blauholsten: Hi Pix, Der wird doch neu gestartet oder? ;) Hi, ja die Instanz startet dann neu durch. Ich werde dieses Verhalten bei zukünftigen Skripten beachten, und dann entweder pix seinen Vorschlag nehmen oder für solche Anwendungen eine separate Instanz anlegen. Thanks @all…..
  • 0 Votes
    4 Posts
    877 Views
    P
    Die Steuerung per Skript ist natürlich die sichere Variante und definitiv vorzuziehen. Soll aber wirklich nur dann automatisch verzögert abgeschaltet werden, wenn per VIS der Einschaltbefehl gegeben wurde, eignet sich auch ein ctrl Bool Widget wie dieses: [image: 261_bildschirmfoto_2016-07-18_um_13.57.40.jpg] Der Screenshot erklärt sich selbst. Auto AUS ist hier die Lösung. Gruß Pix
  • 0 Votes
    1 Posts
    2k Views
    No one has replied
  • Variablen Setzen und an andere Node übergeben.

    Moved
    1
    0 Votes
    1 Posts
    1k Views
    No one has replied
  • Daten aus den C.M.I Modul von der Technischen Alternative auslesen.

    Moved
    1
    1
    0 Votes
    1 Posts
    1k Views
    No one has replied
  • In ioBroker mit js eine XML Datei auf den Raspberry speichern

    Moved
    3
    0 Votes
    3 Posts
    1k Views
    T
    Super, genau diesen Hinweis brauchte ich. Hab es gerade getestet, funktioniert. Wenn ich das JS fertige habe, werde ich es hier posten, vielleicht kann das ja mal jemand gebrauchen. DANKE. :)
  • [FIXED] Problem mit Javascript und View Change

    Moved
    15
    0 Votes
    15 Posts
    2k Views
    F
    @blauholsten: @firstfreak: ein Problem ist aber noch, es schaltet jetzt wie es soll, aber ich habe die zeit sogar von 60000 auf 90000 geändert aber es schaltet immer noch ein paar Sekunden zurück. Wo kann da noch der Fehler sein ? on({id: "hm-rpc.0.KEQ0058102.2.PRESS_LONG", change: "any"}, function (obj){ //View wechseln setState("vis.0.control.command", '{"instance": "FFFFFFFF", "data": "Tuerklingel", "command": "changeView"}'); //Nach 60 Sekunden wieder Haupt-View anzeigen setTimeout(function () { setState("vis.0.control.command", '{"instance": "FFFFFFFF", "data": "Allgemein", "command": "changeView"}'); }, 90000); }); ```` ` Weiß nicht ob es hilft, aber leere mal den Browser Cache… ` Das hat funktioniert, vielen Dank
  • IP Türsprechanlage

    Moved
    2
    0 Votes
    2 Posts
    897 Views
    F
    Hi Michael, schaue dir mal die Android App Mediaplayer24 an. Bei dieser kannst Du mit einem Webaufruf eine bestimmte Datei auswählen, die du zuvor auf dem oder dieTablet(s) gespeichert hast. Dann schreibst Du ein JavaScript mit einem on({id:"Deine Variable mit ID Selector einfügen) usw. und sendest die 3 urls zu Deinen Tablets. Dazu findest Du hier bestimmt Beispiele, habe gearde keines Parat. Den URL Aufruf zeigt dir der MediaPlayer24 meine ich sogar an. Du musst dann aber sicherstellen, dass deine Tablets immer die gleiche IP erhalten. Vorteil: Mit dem ioBroker sayit Adapter kannst Du dann auch gleich schöne individuelle Sprachausgaben realisieren. Vielleicht ist das auch schon für Dich die Lösung, da Deine mp3s in Wirklichkeit sprachsamples sind? Dann würde ich eh zum SayIt raten, da individuelle Ansagen nett sind. So long, Fitti
  • [gelöst]öffnen einer URL zur Steuerung

    Moved
    5
    0 Votes
    5 Posts
    1k Views
    Jeeper.atJ
    Hallo, ich dachte so hätte ich es schon mal probiert. Aber offensichtlich nicht. Jetzt funktioniert es. Vielen dank Günther
  • E-mail Script für Statusmeldungen

    Moved
    26
    0 Votes
    26 Posts
    6k Views
    P
    Halo Sven, die Antworten untereinander bekommst Du so: var txtPoolpumpe = ""; var txtGaragentor = ""; var txtTerrassentuer = ""; var txtBadRechts = ""; var txtBadLinks = ""; var txtKind2 = ""; var txtKind1 = ""; var txtSchlafen = ""; var txtArbeit = ""; if (getState("hm-rpc.0.KEQxxxxxxx.1.STATE").val) {txtPoolpumpe = "An"} else{txtPoolpumpe = "Aus"} if (getState("hm-rpc.0.MEQxxxxxxx.1.STATE").val) {txtGaragentor = "Auf"} else{txtGaragentor = "Zu"} if (getState("hm-rpc.0.KEQxxxxxxx.1.STATE").val === 0){txtTerrassentuer = "Zu"} if (getState("hm-rpc.0.KEQxxxxxxx.1.STATE").val === 1){txtTerrassentuer = "gekippt"} if (getState("hm-rpc.0.KEQxxxxxxx.1.STATE").val === 2){txtTerrassentuer = "ganz auf"} if (getState("hm-rpc.0.LEQxxxxxxx.1.STATE").val === 0){txtBadRechts = "Zu"} if (getState("hm-rpc.0.LEQxxxxxxx.1.STATE").val === 1){txtBadRechts = "gekippt"} if (getState("hm-rpc.0.LEQxxxxxxx.1.STATE").val === 2){txtBadRechts = "ganz auf"} if (getState("hm-rpc.0.LEQxxxxxxx.1.STATE").val === 0){txtBadLinks = "Zu"} if (getState("hm-rpc.0.LEQxxxxxxx.1.STATE").val === 1){txtBadLinks = "gekippt"} if (getState("hm-rpc.0.LEQxxxxxxx.1.STATE").val === 2){txtBadLinks = "ganz auf"} if (getState("hm-rpc.0.LEQxxxxxxx.1.STATE").val === 0){txtKind2 = "Zu"} if (getState("hm-rpc.0.LEQxxxxxxx.1.STATE").val === 1){txtKind2 = "gekippt"} if (getState("hm-rpc.0.LEQxxxxxxx.1.STATE").val === 2){txtKind2 = "ganz auf"} if (getState("hm-rpc.0.LEQxxxxxxx.1.STATE").val === 0){txtKind1 = "Zu"} if (getState("hm-rpc.0.LEQxxxxxxx.1.STATE").val === 1){txtKind1 = "gekippt"} if (getState("hm-rpc.0.LEQxxxxxxx.1.STATE").val === 2){txtKind1 = "ganz auf"} if (getState("hm-rpc.0.MEQxxxxxxx.1.STATE").val) {txtSchlafen = "Auf"} else{txtSchlafen = "Zu"} if (getState("hm-rpc.0.MEQxxxxxxx.1.STATE").val) {txtArbeit = "Auf"} else{txtArbeit = "Zu"} sendTo("email", { from: "iobroker@edv-team.de", to: strTo, subject: strBetreff, //text: strText //HTML body html: '``` ' + '**Termine:**' + ' ' + getState("ical.0.data.html").val + ' ' + ' ' + '**Temperaturen & Luftfeuchte:**' + ' ' + 'es wird heute voraussichtlich bis zu ' + getState("yr.0.forecast.day0.temperature_max").val +'°C warm.' + ' ' + ' ' + getState("yr.0.forecast.html").val + ' ' + 'Pool ' + (getState("hm-rpc.0.LEQxxxxxxx.1.TEMPERATURE").val).toFixed(1) +'°C' + ' ' + 'Garten ' + (getState("hm-rpc.0.LEQxxxxxxx.1.TEMPERATURE").val).toFixed(1) +'°C | ' + getState("hm-rpc.0.LEQxxxxxxx.1.HUMIDITY").val + '% ' + 'Wohnzimmer ' + (getState("hm-rpc.0.LEQxxxxxxx.1.TEMPERATURE").val).toFixed(1) +'°C | ' + getState("hm-rpc.0.LEQxxxxxxx.1.HUMIDITY").val + '% ' + 'Bad ' + (getState("hm-rpc.0.LEQxxxxxxx.1.TEMPERATURE").val).toFixed(1) +'°C | ' + getState("hm-rpc.0.LEQxxxxxxx.1.HUMIDITY").val + '% ' + 'Kind2 ' + (getState("hm-rpc.0.LEQxxxxxxx.1.TEMPERATURE").val).toFixed(1) +'°C | ' + getState("hm-rpc.0.LEQxxxxxxx.1.HUMIDITY").val + '% ' + 'Kind1 ' + (getState("hm-rpc.0.LEQxxxxxxx.1.TEMPERATURE").val).toFixed(1) +'°C | ' + getState("hm-rpc.0.LEQxxxxxxx.1.HUMIDITY").val + '% ' + 'Schlafen ' + (getState("hm-rpc.0.LEQxxxxxxx.1.TEMPERATURE").val).toFixed(1) +'°C | ' + getState("hm-rpc.0.LEQxxxxxxx.1.HUMIDITY").val + '% ' + 'Arbeit ' + (getState("hm-rpc.0.LEQxxxxxxx.4.ACTUAL_TEMPERATURE").val).toFixed(1) +'°C' + ' ' + ' ' + '**Offen / Laufzeiten:** '+ '' + '' + '' + '' + '' + '' + '' + '' + '' + ' | Poolpumpe | ' + getState("javascript.0.PoolpumpeAn.Tag").val + ' Min | | | ' + getState("javascript.0.PoolpumpeZaehler.Tag").val + ' | | | ' + txtPoolpumpe + ' | | Garagentor | ' + getState("javascript.0.GaragentorOffen.Tag").val + ' Min | | | ' + getState("javascript.0.GaragentorZaehler.Tag").val + ' | | | ' + txtGaragentor + ' | | Terrassentür | ' + getState("javascript.0.WohnzimmerTerrassentuerOffen.Tag").val + ' Min | | | ' + getState("javascript.0.WohnzimmerTerrassentuerZaehler.Tag").val + ' | | | ' + txtTerrassentuer + ' | | Bad Rechts | ' + getState("javascript.0.BadFensterRechtsOffen.Tag").val + ' Min | | | ' + getState("javascript.0.BadFensterRechtsZaehler.Tag").val + ' | | | ' + txtBadRechts + ' | | Bad Links | ' + getState("javascript.0.BadFensterLinksOffen.Tag").val + ' Min | | | ' + getState("javascript.0.BadFensterLinksZaehler.Tag").val + ' | | | ' + txtBadLinks + ' | | Kind2 | '+ getState("javascript.0.Kind2FensterOffen.Tag").val + ' Min | | | ' + getState("javascript.0.Kind2FensterZaehler.Tag").val + ' | | | ' + txtKind2 + ' | | Kind1 | ' + getState("javascript.0.Kind1FensterOffen.Tag").val + ' Min | | | ' + getState("javascript.0.Kind1FensterZaehler.Tag").val + ' | | | ' + txtKind1 + ' | | Schlafen | ' + getState("javascript.0.SchlafenFensterOffen.Tag").val + ' Min | | | ' + getState("javascript.0.SchlafenFensterZaehler.Tag").val + ' | | | ' + txtSchlafen + ' | | Arbeit | ' + getState("javascript.0.ArbeitFensterOffen.Tag").val + ' Min | | | ' + getState("javascript.0.ArbeitFensterZaehler.Tag").val + ' | | | ' + txtArbeit + ' | ' + ' ' + '**Automatik:** ' + '' + ' ```' entweder Leerzeichen setzten: 'Pool ________' glaube das funktioniert nur mit …. in deinem Script ist nur das Ende ohne start``` oder im HTML mit einer Tabelle arbeiten: fängt die Tabelle an fängt eine Zeile an | füllt eine Zelle ... usw. Die If Abfragen ganz oben benutze ich um nicht 0, 1 oder 2 (Für einen Drehgriffkontakt) in der e-Mail angezeigt zu bekommen, sonder: zu, gekippt bzw. ganz auf. Vielleicht hilft dir das ja bei den Benzinpreisen weiter Gruß Phantomio |
  • Gelöst! Logdatenerstellung Script Fehler

    Moved
    7
    0 Votes
    7 Posts
    1k Views
    W
    Hallo paul53, ich habe das Script gelöscht , Logdatenerstellung.Log unter Objekte gelöscht und alles neu eingespielt. Jetzt funktioniert wieder alles wie gewohnt…Danke für deine Hilfe Sebastian
  • [gelöst] Bei HTTP request "exception: Parse Error"

    Moved
    3
    0 Votes
    3 Posts
    1k Views
    F
    Danke für deine Tipps, werde ich heute Abend ausprobieren. Lösung: Es lag nicht am Skript oder an der URL-Codierung, sondern ich hatte bei meinem Rollladenaktor keine HTTP-Standard Response geschickt. curl, wget & co sind da offenbar etwas toleranter als das request Modul von npm. Also hatte ich einfach in der Antwort folgendes vorne eingefügt: "HTTP/1.1 200 OK" "Content-Type: text/html" "Connection: close" ""

697

Online

32.6k

Users

82.3k

Topics

1.3m

Posts