Weiter zum Inhalt

Skripten / Logik

16.6k Themen 214.3k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 49k
    3k Themen
    49k Beiträge
    ofri2607O
    @ticaki Ja, das mit der Sinnhaftigkeit ist so eine Sache. Bei mir haben sich mittlerweile über 100 Skripte angesammelt und es kommt immer wieder mal noch was dazu. Und auch hier, ja, mir ist bewusst das 5 Instanzen vom Javascript-Adapter speichermäßig „teuer“ erkauft sind. Daher auch der eigene Pi als Slave. Performanceprobleme hatte ich dadurch bis dato noch keine, zumindest nicht bemerkt. Was für mich nicht sinnvoll war / ist, ist mehrfach verwendeten Code zu kopieren oder parallel in Skripten zu haben, das macht aus meiner Sicht irgendwann die Wartung oder Ausrollung von Erweiterungen fast unmöglich. Die Klassen und Module im großen Stil in global zu verpacken ist für mich auch keine sinnvolle Option. Auch wenn es vermutlich nicht soviel Performance kostet. Ich habe auch mehrere Funktionen die ich mehr oder wenige in jedem Skript in irgendeiner Art verwende, z.B. erweiterte Logging-Funktionen, die habe ich auch im global in zwei Closures zusammengefasst. Mir gefällt dabei aber nicht, das bei einer kleinen Änderung in einem globalen Skript alle Skripte in allen Instanzen neu starten und weiters auch nicht, dass ich da im Hauptskript irgendwas unsichtbar im Vorbau geschrieben habe (das ist aber eine persönliche Befindlichkeit). Aber als Beispiel, ich habe ein Modul mit Funktionen zu diversen Farbwertumrechnungen. Diese benötige ich in 7 von den etwas über 100 Skripten. Dafür jetzt diese in global überall „mitzuschleppen“ widerstrebt mir irgendwie. Aus diesem Grund ist für mich die Einbindung von Modulen und Klassen über require die sinnvollste Lösung. Vor allem weil ich alles an einem Platz im Javascript-Adapter habe, nicht mit externen Files herumhantieren muss, im Hauptskript immer genau sehe was ich über require eingebunden habe, die Skripte aus meiner Sicht besser strukturieren und aufteilen kann und auch die Sicherung mit allen Hauptskripten einfach mitläuft. (und ja, das bietet global im Wesentlichen auch) Aber wie geschrieben für mich. Ich denke es muss jeder für sich selbst die praktikabelste Lösung finden.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    L
    Hallo @paul53 erstmal vielen vielen Dank für die Hilfe beim Skript. DIe Pflanzen freuen sich und bilden trotz der noch kalten Temperaturen viele neue gesunde weiße Wurzelansätze und Blätter. Die Praxis zeigte noch ein Problem bei leichten Temperaturschwankungen bzw. fallenden Temperturen am Tag und in der Nacht. Hier kommt es vor, dass die Pumpe teilweise 3 mal hintereinander aktiviert wird wenn die Temperatur leicht um einen Grenzwert schwankt. Bzw. wenn die Tempertur unter einen Grenzwert fällt und die Pumpe dann nach nur 3-4 min Auszeit wieder aktiviert wird. Vorallem da die Ausschaltintervalle bei niedrigeren Temperaturen größer sind wird hier öfters einen unnötig lange Bewässerung durchgeführt die auch Energie kostet. Ebenso reduziert dies die Lebensdauer der Pumpe. Wäre es möglich, wenn eine Schwelle nach unten erreicht wird den Ausschaltzyklus erst zu beenden wenn die Zeit des alten Ausschaltzyklus (also die Off-Zeit) beendet ist. Nach unten wäre dies unkritisch da die Ausschaltzyklen immer länger werden. Auch beim Übergang von Tag zu Nacht kommt der Effekt, dass die Pumpe relativ lang läuft öfters vor. Da beim Übergang Tag zur Nacht direkt wieder ein neues Intervall mit Pumpe an angetriggert wird. Auch hier wäre es sinnvoll den alten Zyklus des Ausschaltintervalls erst auslaufen zu lassen bevor der das neue On-Intervall in einem anderen Temperaturbereich beginnt. Bei steigenden Tempraturen würde ich es in Kauf nehmen, da es bei höheren Temperaturen sonst zu Sauerstoffmangel der Pflanzen an den Wurzeln oder Austrocknung der Wurzeln kommen könnte. Anbei das aktuelle Skript mit geänderten Temperatursensoren usw. und meinen großen Dank im Voraus!!!! <block xmlns="https://developers.google.com/blockly/xml" type="schedule" id="vbIVcD1KaDJJ~I2JS+6E" x="-513" y="-1588"> <field name="SCHEDULE">* * * * *</field> <statement name="STATEMENT"> <block type="math_change" id="{_2G@689k!l?bOZuH|kD"> <field name="VAR" id="vGD4^:?$tv;A|f#hKk[X">cnt</field> <value name="DELTA"> <shadow type="math_number" id="mpj`cJhX9=dw-2yWD0L="> <field name="NUM">1</field> </shadow> </value> <next> <block type="controls_if" id="pc/|^luOsp71PW#HG^BD"> <value name="IF0"> <block type="logic_compare" id="WTIS,Yhv~18WSL#IUb^m"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="]v+*`999?)/*n5PUbmxg"> <field name="VAR" id="vGD4^:?$tv;A|f#hKk[X">cnt</field> </block> </value> <value name="B"> <block type="math_number" id="?+HW]4e,;=*9[r~vES~6"> <field name="NUM">120</field> </block> </value> </block> </value> <statement name="DO0"> <block type="telegram" id="W|O:dyKP6:!Mvo}lg8RJ" inline="true"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <field name="ESCAPING">FALSE</field> <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field> <value name="MESSAGE"> <shadow type="text" id="U/hkhig[Gdi?J+,e$.,g"> <field name="TEXT">Warnung Temperaturfühler hängt!</field> </shadow> </value> <value name="USERNAME"> <block type="text" id="gg!KQ(H0z+/d45Kr6Qti"> <field name="TEXT">Ronny</field> </block> </value> </block> </statement> </block> </next> </block> </statement> </block>
  • Hilfe für Skripterstellung mit Node-RED

    954 13k
    954 Themen
    13k Beiträge
    F
    Hallo ich habe ein Problem mit Nodered und Alexa Echo. Ich habe in Nodered die Wemo Emulation installiert und eine Wemo Steckdose emuliert um an einer Zigbeesteckdosenleiste einen Platz der Leiste zu schalten. "node-red-contrib-wemo-emulator" Das klappt auch wunderbar leider nicht länger als ein zwei Tage. Wenn ich dann den Echo der mit der emulierten Steckdose verbunden ist neu starte geht es wieder. Leider ist das sehr nervig. Hat schon mal jemand gehabt? Durch die Forumssuche habe ich leider nicht gefunden. Gruss Achim
  • Variablen anlegen und verwalten

    Verschoben
    15
    0 Stimmen
    15 Beiträge
    4k Aufrufe
    paul53P
    @Franklin sagte: wenn ich mir das Javascript im Blockly anzeigen lasse sehe ich am Anfang immer nur die Definition der zuerst angelegten Variablen. Beim Umschalten in die Javascript-Ansicht werden nicht verwendete Variablen gelöscht. Variablen, die in das Editor-Fenster gezogen wurden, bleiben erhalten.
  • [gelöst] Dateigröße von ls -l ermitteln

    javascript
    14
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    R
    Ihr seit spitze :D
  • gelöst: Script an bestimmter Zeit ausführen

    javascript
    12
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    R
    @Jan1 done.
  • Durchschnitts Temperatur

    monitoring javascript blockly
    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    G
    @el_malto Es funktioniert, genauso wie ich es haben wollte. Vielen Dank für deine Hilfe :)
  • Script - Messwert dämpfen

    javascript blockly template
    1
    1
    1 Stimmen
    1 Beiträge
    494 Aufrufe
    Niemand hat geantwortet
  • Zoneminder Port überwachen

    javascript
    3
    0 Stimmen
    3 Beiträge
    353 Aufrufe
    MeistertrM
    https://forum.iobroker.net/topic/25315/aufruf-zoneminder-0-2-0-testen
  • Timeout variabel in Blockly [gelöst]

    Verschoben
    6
    1
    0 Stimmen
    6 Beiträge
    3k Aufrufe
    paul53P
    @aleks-83 sagte: Das Thema kann nicht mehr gefunden werden. Link oder Variante mit Count down: [image: 1569330919322-blockly_temp.jpg]
  • Xiaomi Tür/Fenster Kontakt meldet ständig "Haustür wurde geschlossen"

    blockly
    10
    2
    0 Stimmen
    10 Beiträge
    2k Aufrufe
    A
    Zwar schon älter aber ich gebe trotzdem mal ne Hilfestellung. @Gerni Du solltest deinen Trigger auch ändern auf: Trigger, falls Objekt wurde geändert. Anschließend eine If then Abfrage machen. @Gerni und @Jeek : Ihr könntet um solche direkten Doppelnachrichten zu vermeiden natürlich eine Variable setzen zum kurzzeitigen Blockieren/Entprellen der Nachrichten. Ungefähr so: [image: 1569314946078-d91fc826-e0f8-40ef-91ec-25610aadff10-image.png]
  • Schaltzustände im VIS über Status anzeigen

    node-red blockly monitoring
    3
    0 Stimmen
    3 Beiträge
    562 Aufrufe
    D
    Hallo Sigi, Danke! Das mit der "Sichtbarkeit" habe ich auch schon versucht, doch dann ist das Symbol ja nicht da solange nicht 'true' eintritt. Somit lässt sich das Objekt auch nicht schalten. Wie bei dir mit einem extra "Schalter" geht das natürlich. Ich würde mir vorstellen in einem Widget eine Objekt-ID einfügen zu können die allein für den Zustand des Widget verantwortlich ist. Was macht eigentlich die "Signal-ID"? Damit habe ich zwar schon rum gespielt, jedoch den Sinn noch nicht erkannt. Habe ich einen Denkfehler?
  • Sonoff DS18B20 ID's mit Tempwerten verknüpfen

    heating monitoring blockly javascript
    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    M
    Hi, ich habe es jetzt endlich hinbekommen. Ich trage die ID von einem Sensor manuell in einen Datenpunkt ein und vergleiche den dann fortlaufend mit allen ID's die der Sonoff Adapter zurückmeldet. Falls der Wert gleich ist, nimm den entsprechenden Tempwert und schreibe den an einen weiteren Datenpunkt. Vielleicht etwas holprig aber es funktioniert Grüße Monsterkiller var j, zaehler_var, temp_var; for (j = 1; j <= 5; j++) { zaehler_var = ['sonoff.0.DVES_5A8310.DS18B20-',('' + j),'_Id'].join(''); temp_var = ['sonoff.0.DVES_5A8310.DS18B20-',('' + j),'_Temperature'].join(''); if (getState(zaehler_var).val == getState("ID auswählen").val) { setState("Object ID", getState(temp_var).val); } } [image: 1569220283427-sonoff_loesung.png]
  • [gelöst]Fehler bei subscribe(channel:"…

    Verschoben
    106
    0 Stimmen
    106 Beiträge
    22k Aufrufe
    F
    HI all, ich bekomme das Script irgendwie nicht ans laufen. Ich habe das Gewerk Fenster erstellt. Ich habe allen Fenster Kontakten im Namen das TFK vorrangestellt. Bsp: TFK Wohnzimmer. Das Script habe ich eins zu eins kopiert un gestartet. Die Variabeln wurden korrekt vom Script erstellt. Leider bleibt zählen_Fenster.anzahlFenster bei 0. Irgendwie erkennt er die Kontakte nicht. Habe ich irgendetwas vergessen? PS: Java Adapter habe ich auch neu gestartet
  • Zeitplan funktioniert nicht

    blockly
    5
    1
    0 Stimmen
    5 Beiträge
    981 Aufrufe
    P
    @paul53 danke trotzdem
  • *gelöst* Timer "Sensor zuletzt gesehn vor..."

    blockly
    1
    2
    0 Stimmen
    1 Beiträge
    190 Aufrufe
    Niemand hat geantwortet
  • Zigbee-Adapter: Fragen zum Verhalten

    communication
    4
    2
    0 Stimmen
    4 Beiträge
    454 Aufrufe
    AsgothianA
    @Mic Wie gesagt - das Netz organisiert sich selber, und so lange wie die Endgeräte mit dem Koordinator kommunizieren können tun sie das auch. Das die Router alle direkt am Koordinator und nicht aneinander hängen ist also kein Problem. A.
  • [Erledigt] Umwandeln von Dezimalwert in Hexadezimal

    blockly javascript
    2
    1
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    padrinoP
    Hier https://www.mediaevent.de/javascript/umrechnen.html steht Die Umrechnung von Dezimal zu Hexadezimal erfolgt mit var myHex = myNum.toString(16); Also, das in eine Funktion in Blockly packen, würde ich als Laie sagen. :)
  • Bei Alarm Video aufnehmen

    blockly security
    4
    0 Stimmen
    4 Beiträge
    904 Aufrufe
    E
    Du musst halt gucken ob deine Software über http oder sonst was gesteuert werden kann. Ich benutze iSpy und da kann man die Software über http steuern und so alles mögliche umsetzen. Unter "Available commands" sind die Befehle zum steuern. https://www.ispyconnect.com/userguide-http.aspx
  • Keine "Telegram" Aktion in Blockly

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    JebaJ
    @kubu War bei mir auch so. Hört sich vielleicht doof an, aber du musst den cloud Adapter installieren. Nur installieren, aber nicht laufen lassen. So hat es bei mir funktioniert
  • Parser stoppen und starten

    javascript
    1
    0 Stimmen
    1 Beiträge
    152 Aufrufe
    Niemand hat geantwortet
  • Zeitplan funktioniert nicht mehr?

    blockly
    47
    1
    0 Stimmen
    47 Beiträge
    7k Aufrufe
    J
    @puckthefly War mein Einstieg in Linux und hat mir sehr geholfen. Deshslb poste ich den Link hier im Forum auch oft. Ist erstens die offizelle Seite und zweitens für Einsteiger sehr gut erklärt und immer aktuell.
  • [Frage] JSON format umwandeln

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    4k Aufrufe
    paul53P
    @ernesto sagte: Muss man das createState(...) immer aufrufen, auch wenn der State schon mal angelegt wurde? Nein, das sollte man auch nicht innerhalb der Callback-Funktion eines Triggers machen.

258

Online

32.7k

Benutzer

82.6k

Themen

1.3m

Beiträge