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
    S
    Ich habe hier einen 2400 AC (ohne +).. da gibt es (noch?) keine 2.0.1...
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    D
    Nochmals herzlichen Dank!!!
  • Hilfe für Skripterstellung mit Node-RED

    964 13k
    964 Themen
    13k Beiträge
    A
    @OliverIO Für mich als ex. Elektroninstallateur ist es eben vielfach einfacher in einer Maske zu sehen was der Code eigentlich machen sollte, als in einem strukturierten Text. Wir verwenden bei uns im Job auch sehr viel strukturierte Text für Steuerungsfunktionen, aber das ist in der Regel eine andere Abteilung, ich bin nur zuständig, dass die Elektropläne korrekt und vollständig für alle sind. Klar, dass interesse an den Möglichkeiten ist schon lange geweckt, aber wie bei allem, wenn man das nicht oft macht, vergisst man sehr vieles wieder. Bei mir ist entstehen solche Dinge eben manchmal aus "dummen" Ideen, oder eben aus "herausforderungen" die man nicht direkt sucht. Ich arbeite mich jetzt mal rund um und schaue was da raus kommt. Nochmals herzlichen Dank Gruss Andi (aus der überhitzten Schweiz)
  • [Gelöst] Fragen zu Blockly

    Verschoben
    67
    1
    0 Stimmen
    67 Beiträge
    12k 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
    586 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
    5k 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
    398 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
    5k 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
    854 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
    861 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
    518 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
    585 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
    491 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
    2k 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
    3k 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
    547 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
  • JavaScript "Hallo Welt", "Lichtschalter" ….. und dann ???

    Verschoben
    40
    0 Stimmen
    40 Beiträge
    8k Aufrufe
    P
    Sorry hab ich übersehen. :geek:

378

Online

33.0k

Benutzer

83.6k

Themen

1.3m

Beiträge