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
    S
    @Berny-K oh sorry, da habe ich das irgendwie überlesen das es bei dir um ein 800 Pro ging.... Sorry!! Du kannst es testen, theoretisch sollte es auch funktionieren, würde nur interessant werden was bei Überschuss am Netzpunkt passiert... ob der 800pro anfängt dann über AC zu laden... Aber da "stecke" ich gar nicht im Thema
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    M
    @schweiger2 Übergabe der Daten an command? z.B. DP: hue.0.Hue_Bridge.Schubladen.command {"on":true,"bri":128,"r":255,"g":0,"b":0,"transitiontime":0}
  • 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
  • [gelöst]setTimeout geht nicht

    Moved
    8
    0 Votes
    8 Posts
    4k Views
    F
    Danke. Da wäre ich nie drauf gekommen.
  • Schedule variabel über Vis ändern?

    Moved
    2
    0 Votes
    2 Posts
    815 Views
    apollon77A
    Hild das vllt weiter: http://forum.iobroker.net/viewtopic.php?f=21&t=3612&e=1 ?! Oder per Blockly
  • [Gelöst]Über Java ein CMD befehl ausgeben

    Moved
    6
    0 Votes
    6 Posts
    2k Views
    PatrickP
    Perfekt vielen Dank
  • Blockly

    Moved
    19
    0 Votes
    19 Posts
    2k Views
    rantanplanR
    @Bluefox: Die Idee mit dem XML Auszügen ist so, dass man die nur in der deutschen Version einmal importieren muss und dann hat man übersetztes Bild. Und ein Screenshot ist schon fast fertig. ` Habe ich gerade ausprobiert. Klappt. Eventuelle Komentare übersetzen, Screenshot und fertig. Werde mich ab Freitag mal dransetzten. Grüße
  • Iobroker, Wert von mysensors an CCU übergeben

    Moved
    2
    0 Votes
    2 Posts
    667 Views
    paul53P
    Das Datenpunktobjekt hat eine falschen "type": "string"; es sollte "type": "number" sein. Außerdem fehlt "unit": "°C". { "common": { "name": "192_168_1_103.0.0_TEMP.V_TEMP", "type": "number", "role": "value.temperature", "min": 0, "def": 0, "read": true, "write": false, "unit": "°C" }, "native": { "ip": "192.168.1.103", "id": "0", "childId": "0", "subType": "S_TEMP", "varType": "V_TEMP", "subTypeNum": 6, "varTypeNum": 0 }, "acl": { "object": 1638, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1638 }, "_id": "mysensors.0.192_168_1_103.0.0_TEMP.V_TEMP", "type": "state" } Wenn die Werte vom Typ "number" sind: setState('hm-rega.0.5237', getState('mysensors.0.192_168_1_103.0.0_TEMP.V_TEMP').val); Wenn die Werte aber vom Typ "string" sind, dann: setState('hm-rega.0.5237', parseFloat(getState('mysensors.0.192_168_1_103.0.0_TEMP.V_TEMP').val)); Den Typ kann man testen: log('Typ: ' + typeof getState('mysensors.0.192_168_1_103.0.0_TEMP.V_TEMP').val);
  • [gelöst] Briefkastenscript: Umzug von der CCU auf ioBroker

    Moved
    5
    0 Votes
    5 Posts
    2k Views
    P
    Hi Pix! Jetzt klappt es! Hab den Arduino so umkonfiguriert das er direkt mit ioBroker spricht! Das Script hab ich auch noch etwas eingekürzt! ! ```` /* ##### Programm zum Erfassen der Briefkasteneinwürfe ########/ / #### Verfasst durch Schneider Johann (PrinzEisenherz1) #######*/ var logging = false; var instanz = 'javascript.0'; instanz = instanz + '.'; var pfad = 'Briefkasten.'; var idSayIt = 'sayit.0.tts.text'; var lautstaerke = 100; var ansagetext = "Post ist da."; var betreff = 'Briefkastenmeldung'; var von = "eMail-Adresse"; // Absender var an = "eMail-Adresse"; // Empfänger /* Erzeugen der nötigen Datenpunkte */ createState(pfad + 'Briefkasten_gefuellt', true, {read: true, write: true, type: 'boolean', name: 'Briefkasten voll in VIS Widget anzeigen', desc: 'Steuervariable für VIS Widget Sichtbarkeit'}); createState(pfad + 'Briefwürfe_zaehlen', 0, {read: true, write: true, type: 'number', name: 'Briefwürfe zählen', desc: 'Counter für Briefwürfe'}); createState(pfad + 'Briefkastensperre', false, {read: true, write: true, type: 'boolean', name: 'Briefkastensperre', desc: 'Sperrt die Zählung der Einwürfe für eine festgelegte Zeit'}); ! /* Abfragen eingestellten Nachrichten-Dienst / / aus=0 ; alle=1 ; Pushover=2 ; Telegram=3 ; eMail=4 */ var pushdienst = 'hm-rega.0.32673'; var pushprio = 0; var idSound = 'bugle'; var idDevice = ''; var TelegramID = 'ChatID'; /* ############## Variablen deklarieren ############################# / var idBriefkasteneinwurf = 'javascript.0.Technikraum.Homeduino.homeduino_001_D27'; var idBriefentnahme = 'javascript.0.Technikraum.Homeduino.homeduino_001_D26'; var idCountEinwurf = instanz + pfad + 'Briefwürfe_zaehlen'; var idSperre = instanz + pfad + 'Briefkastensperre'; var idShowPostIcon = instanz + pfad + 'Briefkasten_gefuellt'; / ######################################################### */ ! /* Deklarieren der Benachrichtigungsdienste / function meldung_push (text, titel, prio, sound, device) { sendTo("pushover", { message: text, title: titel, priority: prio, sound: sound, device: device }); } function meldung_email (from, to, subject, html) { sendTo("email", { from: from, to: to, subject: subject, html: html }); } function meldung_telegram (text, chatID ) { sendTo('telegram.0', { text: text, chatID: chatID }); } ! on({id: idBriefkasteneinwurf, val: 0}, function (obj) { var counter = getState(idCountEinwurf).val; // bisherige Zahl aus Variable einlesen var sperre = getState(idSperre).val; // Zustand Briefkastensperre einlesen setState(idShowPostIcon, true); // Icon für Briefkasteneinwürfe setzen setState('hm-rpc.0.JEQ0087074.15.LED_STATUS', 3); // LED16-Status Orange if(sperre === false){ setState(idCountEinwurf, ++counter); // eins hochzählen if(counter === 1){ Briefkastenmeldung(counter); } else if(counter > 1){ Briefkastenmeldung(counter); } setState(idSperre, true); // Briefkastensperre aktivieren setStateDelayed(idSperre, false, 30000); // Briefkastensperre nach 30.000 ms wieder deaktivieren } }); ! on({id: idBriefentnahme, val: 0}, function (obj) { var clearpost = instanz + pfad + 'Briefwürfe_zaehlen'; // bisherige Zahl aus Variable einlesen setState(clearpost, 0); // Briefkasteneinwürfe löschen setState('hm-rpc.0.JEQ0087074.15.LED_STATUS', 2); // LED16-Status grün setState(idShowPostIcon, false); // Icon für Briefkasteneinwürfe löschen Briefkastenentleerung(); }); ! / ################## Funktion für Meldung bei einem Einwurf ########################## / function Briefkastenmeldung(anzahl) { / Variablen befüllen / var Einwurfanzahl = ((getState(idCountEinwurf).val) +1); / ###### Ausgabe über SayIt und auf der Dreambox PVR600 ####### / setState(idSayIt, lautstaerke + ";" + ansagetext); // Ansagetext über Tablet require('request')("http://192.168.178.90/cgi-bin/xmessage?caption=Postkasten&timeout=0&body=Post&=1"); / ##################################################################### */ var meldung = 'Briefkasten: '; var meldunghtml = ' ! <u>Briefkastenmeldung</u> ! ' + 'Briefkasten: '; if (anzahl === 1){ meldung = meldung + Einwurfanzahl + ' Einwurf! \n\n' + 'ioBroker'; meldunghtml = meldunghtml + Einwurfanzahl + ' Einwurf!' + ' ' + ' ' + ' ' + 'ioBroker' + ' ' + ' ' + ' ' + 'ioBroker' + ''; } /* Nachrichteninhalt für Pushover*/ if ( (getState(pushdienst).val === 2) || (getState(pushdienst).val === 1) ) { meldung_push(meldung, betreff, pushprio, idSound, idDevice); } if ( (getState(pushdienst).val === 2) || (getState(pushdienst).val === 3) || (getState(pushdienst).val === 1) ) { meldung_telegram(meldung, TelegramID); } /* Nachrichteninhalt an email übertragen */ if ( (getState(pushdienst).val === 1) || (getState(pushdienst).val === 4) ) { meldung_email(von, an, betreff, meldunghtml); } if (logging) log('Anzahl Briefkasteneinwürfe an Pushover und eMail übertragen'); } /* ############### Funktion für Meldung bei Entleerung ###################### */ function Briefkastenentleerung() { /* Variablen befüllen */ var meldung2 = 'Briefkasten wurde entleert! \n\n' + 'ioBroker'; var meldunghtml2 = ' >! <u>Briefkastenmeldung</u> >! ' + 'Briefkasten wurde entleert!' + ' ' + ' ' + ' ' + 'ioBroker' + ''; /* Nachrichteninhalt für Pushover*/ if ((getState(pushdienst).val === 2) || (getState(pushdienst).val === 1) ) { meldung_push(meldung2, betreff, pushprio, idSound, idDevice); } if ((getState(pushdienst).val === 2) || (getState(pushdienst).val === 3) || (getState(pushdienst).val === 1) ) { meldung_telegram(meldung2, TelegramID); } /* Nachrichteninhalt an email übertragen */ if ((getState(pushdienst).val === 1) || (getState(pushdienst).val === 4) ) { meldung_email(von, an, betreff, meldunghtml2); } if (logging) log('Briefkastenentleerung an Pushover und eMail übertragen'); }` Sieht hoffentlich jetzt besser aus? *fg* Nochmal vielen Dank! Johnny
  • 0 Votes
    9 Posts
    3k Views
    BluefoxB
    @RS_Tobi: Kann mir jemand sagen, wie ich den Beitrag als gelöst markiere? gibts einen Button oder muss ich es im Betreff hinein schreiben? Tobi ` Einfach auf editieren beim ersten post drücken und Betreff editieren.
  • Neuling braucht Hilfe: Heizkörperthermostate steuern

    Moved
    7
    0 Votes
    7 Posts
    1k Views
    S
    Danke Ralf, mit Scenes gehts wirklich wesentlich schneller und einfacher. Läuft jetzt :D
  • [gelöst] Between Function

    Moved
    3
    0 Votes
    3 Posts
    734 Views
    M
    Danke, das mit dem Kaufmanns UND kannte ich nicht. probiere es gleich mal. Danke
  • JavaScript einem VIS Button zuweisen….

    Moved
    16
    0 Votes
    16 Posts
    13k Views
    N
    Es funktioniert. Habe nichts geändert, aber auf einmal gehts! Vielen Dank für die Hilfe! Gruß Nanouk
  • [gelöst]Pushover und sayit

    Moved
    5
    0 Votes
    5 Posts
    1k Views
    fischi87F
    Danke für die Ansätze. Mit freundlichen Grüßen
  • Nur etwas einmal auslösen beim Neustart von iobroker

    Moved
    3
    0 Votes
    3 Posts
    805 Views
    S
    Aaah, perfekt, vielen Dank! Klappt! Habe jetzt im Skript nach dem Abschnitt der Variablendeklaration folgendes eingebaut: //############################################################# // Bewässerung zunächst ausschalten beim erstmaligen Skriptstart // um im Falle eines Reboots den zuvor laufenden Bewässerungstimer auszuschalten (Not-Aus), // da er nach Reboot den zuvor gesetzten Ausschalttrigger nicht mehr ausführen kann setState(idHaupthahn, false); setState(idHeckehatti, false); //#############################################################
  • [erledigt]Objekt-Struktur on/subscribe()?

    Moved
    7
    0 Votes
    7 Posts
    1k Views
    S
    Vielen Dank für eure Hilfe. So wie von Paul beschrieben , habe ich es jetzt gemacht und es funktioniert wunderbar!
  • Alle scripte sind verschwunden

    Moved
    8
    1
    0 Votes
    8 Posts
    1k Views
    fischi87F
    hat nicht funktioniert, die condes bei dem thread funktionieren nicht :-(
  • [gelöst] Status eines Aktors abfragen per Script

    Moved
    14
    0 Votes
    14 Posts
    3k Views
    HomoranH
    Hallo Alchy @Alchy: Wenn ich mal irgendwann helfen kann, werde ich das natürlich auch hier tun, wenn ich darf. ` Ich freue mich schon drauf. @Alchy: Außerdem schadet es nie, sich mit weiteren Scriptsprachen usw. zu beschäftigen. Man lernt ja nie aus ` Dauernd unterwegs und immer noch nicht ausgelastet. Wenn wir dir hier etwas helfen können, sag Bescheid. Gruß Rainer
  • [gelöst] View-Wechsel über CCU klappt nur ein Mal

    Moved
    4
    0 Votes
    4 Posts
    815 Views
    B
    Ihr seid die Besten!! :D Danke!! Off Topic: Geile Software - geiles Projekt!!
  • Wie kann man States übergeben

    Moved
    7
    0 Votes
    7 Posts
    1k Views
    A
    Das ist für mich eine völlig neue Art zu programmieren, da muss ich mich wirklich erst einarbeiten. Bin eher ein "traditioneller" Coder;). Aber ist schon klasse was ihr da so entwickelt. Gesendet von meinem GT-N8000 mit Tapatalk
  • URL mit Tastendruck aufrufen

    Moved
    3
    0 Votes
    3 Posts
    1k Views
    P
    Hallo ianmoone, lies mal hier: http://forum.iobroker.net/viewtopic.php?t=1115#p8984 Gruß Pix
  • DWD Warnungen ein/ausblenden

    Moved
    4
    0 Votes
    4 Posts
    1k Views
    andreA
    Also hier gleich mal vorweg meine Widgets: ! [{"tpl":"tplDwdAdapter","data":{"visibility-cond":"==","visibility-val":"false","oid-begin":"dwd.0.warning.begin","oid-end":"dwd.0.warning.end","oid-headline":"dwd.0.warning.headline","oid":"dwd.0.warning.description","oid-severity":"dwd.0.warning.severity","visibility-oid":"javascript.0.vis.wetterwarnung.bestaetigung1","name":"Popup - Wetterwarnung 1","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false},"style":{"left":"235px","top":"635px","color":"","width":"895px","height":"128px","background-color":"","padding":"","margin-top":"","font-size":"medium","z-index":"10","border-radius":"25px","border-style":"none","padding-top":""},"widgetSet":"dwd"},{"tpl":"tplMetroTileToggle","data":{"oid":"javascript.0.vis.wetterwarnung.bestaetigung1","visibility-cond":"==","visibility-val":"false","hover":false,"transform":false,"bg_class_false":"","bg_class_true":"","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","badge_top":"0","badge_left":"0","gestures-offsetX":0,"gestures-offsetY":0,"visibility-oid":"javascript.0.vis.wetterwarnung.bestaetigung1","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"name":"Popup - Bestätigung Wetterwarnung 1"},"style":{"left":"235px","top":"635px","padding":"0px","width":"895px","height":"128px","z-index":"11","opacity":"0"},"widgetSet":"metro"}] ! Zwei Widgets. Das DWD Widget für die Warnung selbst, das Tile Toggle Widget zum manuellen bestätigen der Warnung oben drüber. Mit dem Script wird es jetzt ein bisschen komplizierter. :( Da ich mir bis zu drei Wetterwarnungen anzeigen lasse, ebenso wie eine Meldung "Keine Wetterwarnungen vorhanden", ist in dem Script auch noch eine Variable enthalten, die mir Sagt ob überhaupt eine Wetterwarnung vorhanden ist. Hier mal das Script mit kurzen Kommentaren: ! // Datenpunkte anlegen createState('vis.wetterwarnung.vorhanden', false, {name: 'Liegt mindestens eine Wetterwarnung vor?'}); // Variable für "Ist eine Wetterwarnung vorhanden?" createState('vis.wetterwarnung.bestaetigung1', false, {name: 'Bestätigung der Wetterwarnung1'}); // Variablen für die Bestätigung und damit die Sichtbarkeit der einzelnen Warnungen createState('vis.wetterwarnung.bestaetigung2', false, {name: 'Bestätigung der Wetterwarnung2'}); createState('vis.wetterwarnung.bestaetigung3', false, {name: 'Bestätigung der Wetterwarnung3'}); ! // Datenpunkt-IDs var idVorhanden = "vis.wetterwarnung.vorhanden"; var idBestaetigung1 = "vis.wetterwarnung.bestaetigung1"; var idWarnung1 = "dwd.0.warning.severity"; var idBestaetigung2 = "vis.wetterwarnung.bestaetigung2"; var idWarnung2 = "dwd.0.warning2.severity"; var idBestaetigung3 = "vis.wetterwarnung.bestaetigung3"; var idWarnung3 = "dwd.0.warning3.severity"; ! // Variablendeklaration und Initialisierung bei Scriptstart var stateVorhanden = getState(idVorhanden).val; var stateBestaetigung1 = getState(idBestaetigung1).val; var stateWarnung1 = getState(idWarnung1).val; var stateBestaetigung2 = getState(idBestaetigung2).val; var stateWarnung2 = getState(idWarnung1).val; var stateBestaetigung3 = getState(idBestaetigung3).val; var stateWarnung3 = getState(idWarnung1).val; ! // Funktion zum Ermitteln ob Wetterwarnungen vorliegen function setvorhanden() { if (stateWarnung1 !== 0 || stateWarnung2 !== 0 || stateWarnung3 !== 0) { // Wenn severity bei einer Warnung ungleich 0, dann liegt mindestens eine Warnung vor. setState(idVorhanden, true); } else { setState(idVorhanden, false); } } ! // Funktionsaufruf bei Scriptstart setvorhanden(); ! // Funktionsaufruf bei Änderung der Stati on(idWarnung1, function(dp) { // Wenn severity sich ändert... stateWarnung1 = dp.newState.val; // Neuen severity Wert in den state schreiben... setState(idBestaetigung1, false); // Bestätigung auf "nicht bestätigt setzten" setvorhanden(); // Funktion zum Vorhandensein aufrufen um auch den Status für das Vorhandensein einer Warnung zu aktualisieren }); on(idWarnung2, function(dp) { stateWarnung2 = dp.newState.val; setState(idBestaetigung2, false); setvorhanden(); }); on(idWarnung3, function(dp) { stateWarnung3 = dp.newState.val; setState(idBestaetigung3, false); setvorhanden(); }); ! Wo ich das hier aber gerade so nochmal durchdenke und teste fällt mir auf, dass in meinem Script noch ein Denkfehler ist. So wird aktuell der Status für die Bestätigung auch auf false gesetzt wenn eine Warnung aufgehoben wird (also z.B. severity von 1 auf 0 gesetzt wird). Das fällt bei mir in vis aber nicht auf, da in diesem Fall meine Widgets sowieso durchsichtig sind… :) Werde das nochmal ein bisschen umkonfigurieren müssen... MfG, André
  • Zugriff auf Objektstruktur / Ermitteln ob History aktiviert

    Moved
    21
    0 Votes
    21 Posts
    4k Views
    ThisoftT
    Danke, Bluefox, für die Erklärung. Jetzt hab ich's :) Aber in der Tat - da muss man erstmal drauf kommen ;)

684

Online

32.6k

Users

82.3k

Topics

1.3m

Posts