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
    P
    @ArnoD sagte in E3DC Hauskraftwerk steuern: @azzkikrboy Hierfür brauchst du den Adapter ‚Energiefluss-erweitert‘. Damit lässt sich der Energiefluss richtig schick grafisch darstellen. Die Konfiguration ist zwar etwas zeitaufwendig, aber die Mühe lohnt sich definitiv für das Design! ;) [image: 1770554279240-video-project.gif] Sieht sehr gut aus, hab ich bei mir auch mal ausprobiert. Leider funktioniert das nicht mit der Android VIS-App. Lösung wäre nur der Kiosk Browser aber das ist mir zu umständlich. Schade :-(
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    L
    Ja, sollte gehen.
  • 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]Crontab zeigt Backup-Job nicht mehr an

    Moved
    1
    0 Votes
    1 Posts
    373 Views
    No one has replied
  • Allgemeine Frage zu Blockly

    Moved
    10
    0 Votes
    10 Posts
    2k Views
    L
    Vielen dank für die Hilfe. Nun geht es so wie es sein sollte.
  • [gelöst] Listener/Events/ext. Subscriptions stoppen, wie?

    Moved
    22
    0 Votes
    22 Posts
    5k Views
    ruhr70R
    @redoced: Der stopPoll Aufruf bekommt eigentlich ein callback, was im original code allerdings nicht genutzt wird. Ändere deinen Code auf folgendes: ` Danke!!! :D Das hat funktioniert :!: . Dein Post hatte ich nicht gesehen. Und als ich nun das Thema noch einmal angehen wollte habe ich ihn zum Glück gefunden. Hat auf Anhieb geklappt, auch wenn ich keine Ahnung habe, was da abläuft :?
  • Script zur Berechnung des Eigenverbrauchs

    Moved
    10
    2
    0 Votes
    10 Posts
    5k Views
    wendy2702W
    @pix: Hallo Marco, @Marcolotti: Zahlen sind Werte ` das war mir eh klar! :lol: Da ich den Adapter mit den entsprechenden Werten nicht habe, konnte ich das Skript nicht testen. Ich bin einfach davon ausgegangen, dass alle Werte reine Zahlen sind und ich keine Strings umwandeln musste. /* PV Eigenverbrauch Skript errechnet den Eigenverbrauch aus den Daten des modbus Adapters erstellt: 09.11.2015 von Pix */ // Objekt erstellen createState('PV_Anlage.Eigenverbrauch',0, { name: 'PV-Anlage: Eigenverbrauch', desc: 'Eigenverbrauch = PV-Leistung - Einspeisung', read: true, write: true, type: 'number', unit: 'kWh' }); var idEinspeisung = 'modbus.0.inputRegisters.30867_Einspeisung', idPVLeistung = 'modbus.0.inputRegisters.30775_PVLeistung', idEigenverbrauch = 'PV_Anlage.Eigenverbrauch'; // Berechnung mit aktuellen Daten, wenn Leistung >0 on({ id: idPVLeistung, change: 'ne', valGt: 0 }, function (data) { var einspeisung = getState(idEinspeisung).val, eigenverbrauch; // zu errechnen eigenverbrauch = data.newState.val - einspeisung; log('PV-Anlage - Eigenverbrauch: ' + eigenverbrauch + 'kWh'); setState(idEigenverbrauch, eigenverbrauch); }); Ein neues Objekt wird erstellt und konfiguriert (Einheit kWh - ist das richtig?), die komplizierten Objektnamen mit der Adapterinstanz vorneweg werden in "leichtere" Variablen id*** gespeichert, der Datenpunkt PV_Leistung wird überwacht (wenn Änderung und neuer Wert > 0, dann Berechnung mit aktuellen Zahlen ausführen und in State schreiben). Drittletzte Zeile (log****) kannst du später auskommentieren oder löschen, sonst müllt sie dir bei jeder Änderung der PV-Leistung das log zu. Die Einheit kWh ist nicht als Text im Objekt gespeichert. Du kannst also trotzdem weiter mit dem Wert rechnen. Gib mir bescheid, ob es läuft. Gruß Pix ` Hi, ich würde auch gerne meinen Eigenverbrauch berechnen. Habe aber das Problem das ich keinen Datenpunkt```` modbus.0.inputRegisters.30867_Einspeisung Ob ich Energie Einspeise oder Beziehe kann ich nur am "Vorzeichen" meiner Wirkleistung erkennen. Bei Bezug ist der Wert "positiv" und bei Einspeisung "negativ" (- als Vorzeichen). Wenn ich das Script jetzt so übernehme und nur den Punkt: var idEinspeisung = 'modbus.0.inputRegisters.30867_Einspeisung', gegen meinen Datenpunkt Wirkleistung ersetze: modbus.3.holdingRegisters.20498_Wirkenergie_Total Bleibt der neu angelegte Datenpunkt "Eigenverbrauch" auf "0" stehen obwohl ich ja aktuell Bezug/Verbrauch habe. Kann mir bitte jemand helfen das Script entsprechend zu ändern? Ich kann leider kein Javascript und habe aktuell keinen Schimmer warum bei Eigenverbrauch nichts angezeigt wird. Vielen Dank Mirko
  • Gleizeitiges Schalten von mehreren Funksteckdosen

    Moved
    2
    0 Votes
    2 Posts
    776 Views
    BuZZyB
    Was spricht gegen die Verwendung vom Scenen-Adapter? Da kann man auch die Verzögerung zwischen den Befehlen einstellen.. Gruß
  • Subscription von Aufzählung funktioniert nicht

    Moved
    4
    0 Votes
    4 Posts
    690 Views
    BuZZyB
    Ah okay, das konnte ich nun nicht wissen dass du keine channels drunter hast.. :D Schön dass du es selber lösen konntest. Weiter so! :) ;) Gruß
  • Denkanstoss für Blockly Neuling

    Moved
    2
    0 Votes
    2 Posts
    446 Views
    rantanplanR
    @onkelfrisko: Ich habe 4 LED Farben . Weiß,Rot,Grün und Blau. Jetzt möchte ich das wenn ich zb. Rot anmache auch Rot angeht. Wenn ich Rot ausmache, soll Weiß angehen ( Das bekomme ich auch so hin) Ich bekomme es aber nicht hin das wenn ich Rot anhabe und zb. Grün anschalte ,ohne Rot vorher auszumachen, das Grün angeht und Rot ausgeht aber Weiß ausbleibt. Also entweder eine Farbe oder eben Weiß. Ich hoffe Ihr versteht was ich meine ;) ` Alle Möglichkeiten in Blockly abbilden wird sehr umfangreich. Da würde ich mir in VIS 4 Widgets anlegen und fertig. Oder man sagt ich habe ein paar Lieblingseinstellungen. Das könnte man über Blockly mit Statusvariablen abbilden. Oder man bildet diese "Szenen" mit dem Szenen-Adapter ab. Grüße
  • Blockly Script will nicht

    Moved
    2
    1
    0 Votes
    2 Posts
    447 Views
    R
    Auf jeden Fall fehlt schon mal ein Trigger (auf das Objekt, dass du auch abfragst also HUMIDITY)außenrum, du musst auf irgendwas reagieren! Enrico Edit: Den z.B.: [image: 2216_trigger3.jpg]
  • 0 Votes
    5 Posts
    456 Views
    T
    Hallo Paul, Ich dachte, "!" würde immer negieren; und da ich initial "triggered = false" setze, war ich der Meinung, es prüft auf ungleich false, mithin true. Danke fürs richtigstellen. Edit: bei genauerer Überlegung hätte ich mir das auch denken können. Da habe ich mich selbst verschlimmbessert… Kann gut sein, dass eine Klammer fehlt oder zuviel ist. Wie gesagt habe ich es nicht im JS Editor geschrieben sondern nur hier im Forum, bin nicht daheim. Von der Logik her passt aber alles? Danke dir! Steffen
  • Zeitplan Blockly funktioniert nicht

    Moved
    6
    1
    0 Votes
    6 Posts
    2k Views
    AlCalzoneA
    Dann bitte den Titel des Threads bearbeiten und ein [gelöst] voranstellen.
  • (Frage) logik Problem Blocky

    Moved
    16
    0 Votes
    16 Posts
    1k Views
    rantanplanR
    @RappiRN: In welchen Automatismus wird denn deiner Meinung nach eingegriffen? Die Rollläden (oder Rollladen?) fahren doch trotzdem automatisch hoch und runter!? :?: ` Der "Automatismus" ist Variable schalten = beide Rollos fahren rauf/runter. Man hat aber die Möglichkeit über einen Taster die Rollos manuell zu schalten. Schon hat man eingegriffen und man muss ein Konstrukt bauen um dies wieder auszugleichen. Und dieses Konstrukt kann sehr umfangreich werden. Denke z.B. an die Aktualisierung der Variablen, damit der Zustand in VIS aktuell dargestellt wird. OK. Man kann sie im Blockly entsprechen anpassen. Die wird aber auch gleichzeitig getriggert! Und schon geht's los. Zwischenvariable, aktuellen Zustand, vorherigen Zustand usw. usw. Das kann schon umfangreich und unübersichtlich werden. Und hier geht es nur um 2 Rolladen EDIT: hier stand was dummes Grüße
  • Blockly: Minus vorzeichen wegmachen!?

    Moved
    10
    1
    0 Votes
    10 Posts
    7k Views
    wendy2702W
    @Homoran: Dir fehlt ein Trigger. dein "falls"-Block darf nur innerhalb eines Triggerbausteins genutzt werden, sonst startet das Skript… @wendy2702: nur einmal wenn ich das Script starte. ` Gruß Rainer PS, bitte [Blockly] in den Titel schreiben und ich verschiebe das jetzt nach "Scripte" ` OK. Danke. Jetzt mal wieder auf Sonne warten um zu testen ob das so funktioniert mit dem umrechnen. [image: 999_blockly_minus.jpg] @Rainer: Sorry, das mit dem Blockly im Namen hatte ich nicht auf dem Schirm da es ja ein relativ altes Thema ist und es initial nicht um Blockly ging. Apropos Blockly: da ist ein fieser Schreibfehler beim Trigger Baustein "aktulaisiert" steht da. Kannst du das an Bluefox weiter geben? Mirko
  • Datenpunkt als Channel erzeugen für selection

    Moved
    8
    0 Votes
    8 Posts
    2k Views
    P
    Lang ist her, aber nun kann ich mich mit dem Problem wieder beschäftigen. Ich habe da einiges ausprobiert, aber noch zu keiner Lösung gekommen. Hier mal ein Beispiel $('channel[state.id=*][role=javascript]').each(function (id, i) { console.log(" gefunden wurde: " + id); log("gefilter"); }); Damit kann ich alle Datenpunkte finden, die die Rolle javascript besitzen. Bei mir sind das alle Datenpunkte aus dem Betriebsstundenzähler (Danke Looxer01). Jedoch habe ich auch einige Datenpunkte, die aus meinen Scripten erzeugt werden und genau die werden nicht aufgelistet, nur ich weiß nicht warum. Ist es möglich, mir die ID zurückgeben zu lassen, wenn ich nur nach Raum oder Funktion oder Rolle oder auch alle 3 zusammen filter? Oder ist es so nicht möglich. Ist vielleicht die Baumstruktur meiner erzeugten Datenpunkte aus den Scripten falsch? Hat das einen Grund, warum die Filterfunktionen mal mit () gemacht werden für room, {} für type, [] role??? Das $('state oder auch $('channel was bewirkt das? Gruß und vielen Dank.
  • Scripte nach Update ohne Funktion

    Moved
    13
    0 Votes
    13 Posts
    2k Views
    T
    so… zumindest habe ich eine händische Lösung gefunden. hab die Scripte als java-script kopiert und einen neuen angelegt den script wieder eingefügt. offensichtlich legt er diesen dann richtig an... es geht! freu keine Ahnung, was vorher schilfgelaufen ist...
  • Generelle kurze Frage

    Moved
    2
    0 Votes
    2 Posts
    486 Views
    DutchmanD
    Kannst du zusammenschieben ausgeführt wird nur das innerhalb der Trigger Blöcke und jeder Trigger lebt weiterhin seperat –----------------------- Send from mobile device
  • JavaScript "Hallo Welt", "Lichtschalter" ….. und dann ???

    Moved
    40
    0 Votes
    40 Posts
    7k Views
    P
    Sorry hab ich übersehen. :geek:
  • Zugriff auf Werte in einem json-objekt

    Moved
    5
    0 Votes
    5 Posts
    3k Views
    AlCalzoneA
    Noch eine Variante im funktionalen Stil: var werte=JSON.parse(json); var verbrauchszeitraum='2017-10'; var wert = werte.find(w => w.Monat === verbrauchszeitraum); var verbrauch = wert ? wert.Verbrauch : null; Die find-Funktion liefert den ersten Eintrag eines Array, der die Bedingung erfüllt, bzw. bei der die übergebene Funktion wahr zurückgibt. Oder undefined, wenn der Eintrag nicht gefunden wurde.
  • Strompreis errechnen mittels Skript

    Moved
    19
    0 Votes
    19 Posts
    2k Views
    paul53P
    @hg6806: wie man den Datenpunkt auf 2 Nachkommastellen reduzieren kann. ` wert = Math.round(100 * wert) / 100;
  • [geloest] Log wird zugemüllt

    Moved
    13
    1
    0 Votes
    13 Posts
    687 Views
    HomoranH
    @paul53: Hattest Du das Skript erst unter der Instanz 0 laufen und nachträglich auf Instanz 1 geändert ? ` Frag mich sowas doch nicht nach drei Tagen :lol: Spontan hätte ich das abgestritten, aber ganz ausschließen will ich es jetzt auch nicht. Danke nochmals Rainer
  • Befehl wird im Skript nicht ausgeführt

    Moved
    13
    0 Votes
    13 Posts
    2k Views
    P
    @HMuser: Also die Datei liegt in /raspberry-remote/. Die Syntax mit ./send habe ich aus mehreren Tutorien so übernommen, funktioniert übrigens genau so in der Konsole nicht: Da muss der . vor den Anfang, also ./raspberry-remote/send/ Ich sehe auch keine Fehlermeldung. Kann ich Bei Skriptausführung entstehende Fehler sichtbar machen? ` Ja, das geht. Du müsstest der exec-Ausführung einen callback verpassen. Hier ist ein Beispiel von ruhr70: http://forum.iobroker.net/viewtopic.php … 935#p26547 ! Auszug aus dem Code:```` function abfrageConsole() { exec(abfrage, function(err, stdout, stderr) { // <--------DAS IST DIE RELEVANTE ZEILE if (err) { log(err,"error"); return; } stdout = stdout.replace(/\n+/g, " "); // neue Zeile gegen Leerzeichen ersetzen stdout = stdout.split(/ +/g); // array erstellen, Lerzeichen als Trenner var anzProzesse = (stdout.length-1) / 11; //log(stdout); //log("Anzahl laufender ioBroker Prozesse: " + anzProzesse); var jsonArr = createArrayJson(stdout); var mem = Math.floor(getMemAbsolut(jsonArr)/1024); var cpu = Math.floor(getCpu(jsonArr)*10)/10; var memPercent = Math.floor(getMem(jsonArr)*10)/10; ! setState(idProzesse ,writeJson(jsonArr)); setState(idMemAll ,mem); setState(idAnzProzesse ,anzProzesse); setState(idCpuAll ,cpu); setState(idMemPercent ,memPercent); }); } Gruß Pix

458

Online

32.6k

Users

82.3k

Topics

1.3m

Posts