Skip to content

Skripten / Logik

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

16.4k Themen 211.9k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Themen
    48k Beiträge
    T
    Ich hab das doch oben erklärt - types sind da um dir zu helfen und wenn das mit common: { name: any; //... } definiert ist wäre eine Verbesserung das als: common: { name: StringOrTranslated; //... } zu definieren. Anstatt es zu casten kannste es auch richtig machen: const cname = getObject(deviceId).common.name; let name: string = typeof cname === 'string' ? cname : cname?.de ? cname.de : cname.en weiß nicht genau was der scriptadapter da zurück liefert, daher wäre für mich die richtig lösung const obj = getObject(deviceId) const cname = obj?.common?.name let name: string = typeof cname === 'string' ? cname : cname?.de ? cname.de : (cname?.en ?? '')
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Themen
    78k Beiträge
    HomoranH
    @peterfido sagte in Woher kommen diue Schaltzeiten von "Sonnenuntergang" ?: Es gibt z.B. Sonnenuntergang und Start des Sonnenuntergangs. korrekt! aber dann ist es nicht sagte in Woher kommen diue Schaltzeiten von "Sonnenuntergang" ?: Verwendung des gleichen Befehls Daher die Aufforderung sagte in Woher kommen diue Schaltzeiten von "Sonnenuntergang" ?: zeigen! genau wie es hier beschrieben ist https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge um genau diese Ratespiele zu vermeiden
  • Hilfe für Skripterstellung mit Node-RED

    952 13k
    952 Themen
    13k Beiträge
    HomoranH
    @fiddle sagte in [Gelöst]: Adapter per {Node Red | JS} (de)aktivieren: Ok, nicht als "Wert" schreiben, sondern als "Befehl". Dann scheint ihn das zu beeindrucken. du zeigst ja nichts, aber es geht mit true/false [image: 1763416200051-screenshot_20251117-224854_firefox.jpg] gesteuert über eigenen DP vom typ Bool
  • Farbe aus einen Bild auslesen

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    T
    …Danke euch beiden. Beides sehr hilfreich! ! ```` ! var Jimp = require("jimp"); var pixel; var RGB; var pixel_rgb; var red_value; var green_value; var blue_value; ! //Return as RGB ;-) //######################################## Jimp.read("E:/test.jpg", function (err, image) { pixel = image.getPixelColor(100,100); RGB = Jimp.intToRGBA(pixel); pixel_rgb = JSON.stringify(RGB); red_value = RGB['r']; green_value = RGB['g']; blue_value = RGB['b']; console.log(pixel_rgb); console.log(red_value); console.log(green_value); console.log(blue_value); //Return as HEX //######################################## function padStart(source, targetLength,padString) { targetLength = targetLength>>0; //floor if number or convert non-number to 0; padString = String(padString || ' '); if (source.length > targetLength) { return source; } else { targetLength = targetLength - source.length; if (targetLength > padString.length) { padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed } return padString.slice(0,targetLength) + String(source); } } ! console.log('#' + padStart(pixel.toString(16), 8)); }); ! ```` …..wenn es noch jemand benötigt! Grüße, Torsten
  • [Gelöst] Fragen zu Blockly

    Verschoben
    67
    1
    0 Stimmen
    67 Beiträge
    9k Aufrufe
    S
    @rantanplan: Schau mal hier für Ideen. http://forum.iobroker.net/viewtopic.php … 4&start=20 Grüße ` Danke den Tipp. Damit hast Du mir weitergeholfen. Habe jetzt die Woche abends das Bewässerungsprogramm fertiggestellt. Bei über 15 Grad wird jetzt 3 Tage die Woche bewässert in Abhängigkeit der Regenmenge und der Menge die durch die Bewässerung in den Boden kommt. Ein Riesenskript. :D Danke nochmal. Grüße, Stefan
  • [gelöst] JavaScript: gesetzte setStateDelayed abfragen

    Verschoben
    23
    0 Stimmen
    23 Beiträge
    5k Aufrufe
    htreckslerH
    Damit, also mit dem Verstehen des "ack" tu ich mich echt verdammt schwer. Vielleicht kann mir das jemand anhand eines Beispiels erklären? Was ich bisher glaube/vermute Ich setze über ein Script, sagen wir mal, einen Schalter der CCU auf true. In dem Moment ist ack = false. Wenn die CCU den Befehl jetzt bestätigt setzt die CCU den Wert auf ack=true. Daran könnte ich dann erkennen das der Befehl erfolgreich war. Ist das so?
  • [gelöst]Datum in Backupskript

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    451 Aufrufe
    K
    Google konnte mir dann doch weiterhelfen #Datum definieren datum=`date +%Y_%m_%d` #Backup kopieren scp /opt/iobroker/backups/$datum* admin@192.168.1.11:xxxxxxx/xxxxxxx/xxxxxx
  • [Problem] Berechnungen mit Variablen, warum klappt das nicht?

    Verschoben
    24
    0 Stimmen
    24 Beiträge
    3k Aufrufe
    AlCalzoneA
    @Homoran: Und ein Einsteiger erwartet natürlich, dass Arbeitsschritte nacheinander abgearbeitet werden und man im dritten Schritt auf das Ergebnis vom ersten Schritt zugreifen kann. ` Die Erwartung kann ich nachvollziehen. Dennoch (und das sollte Einsteigern verständlich gemacht werden) sollten States nicht als Variablenersatz gesehen werden, da der Rattenschwanz dahinter zu groß ist (DB-Aktualisierung, mögliche UI-Aktualisierung, Skript-Trigger, etc…). Das erwartete Verhalten, das du beschreibst, ist mit Skript-Variablen gegeben. Dafür sind sie da und dafür sollten sie benutzt werden. Das hat nichts mit "nicht schön" zu tun. Zwischenergebnisse von Rechnungen sollten in Variablen landen, nicht in States. States sind gedacht für etwas langlebigere Werte mit Bedeutung. Jedes System hat Grenzen innerhalb derer man arbeiten soll/muss. Klare Regeln wie States sind für Eingabewerte (wie Sensordaten) und Endergebnisse von Berechnungen Variablen sind für Zwischenwerte verstehen auch Anfänger, wenn man es entsprechend kommuniziert. Das ursprüngliche Problem vom TE ist für mit von der Kategorie "Bist du dir sicher, dass du das wirklich machen willst? Ich glaube nicht!"
  • [gelöst]Crontab zeigt Backup-Job nicht mehr an

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    367 Aufrufe
    Niemand hat geantwortet
  • Allgemeine Frage zu Blockly

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    2k Aufrufe
    L
    Vielen dank für die Hilfe. Nun geht es so wie es sein sollte.
  • [gelöst] Listener/Events/ext. Subscriptions stoppen, wie?

    Verschoben
    22
    0 Stimmen
    22 Beiträge
    4k Aufrufe
    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

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

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

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    641 Aufrufe
    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

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

    Verschoben
    2
    1
    0 Stimmen
    2 Beiträge
    407 Aufrufe
    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]
  • Alarmmeldung, sofern viele unreach in kurzer Zeit. Kann ein Könner drauf gucken?

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    436 Aufrufe
    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

    Verschoben
    6
    1
    0 Stimmen
    6 Beiträge
    2k Aufrufe
    AlCalzoneA
    Dann bitte den Titel des Threads bearbeiten und ein [gelöst] voranstellen.
  • (Frage) logik Problem Blocky

    Verschoben
    16
    0 Stimmen
    16 Beiträge
    1k Aufrufe
    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!?

    Verschoben
    10
    1
    0 Stimmen
    10 Beiträge
    7k Aufrufe
    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

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

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

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    479 Aufrufe
    DutchmanD
    Kannst du zusammenschieben ausgeführt wird nur das innerhalb der Trigger Blöcke und jeder Trigger lebt weiterhin seperat –----------------------- Send from mobile device

803

Online

32.5k

Benutzer

81.6k

Themen

1.3m

Beiträge