Skip to content

Skripten / Logik

16.6k Topics 214.3k Posts

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

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    3k 49k
    3k Topics
    49k Posts
    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 Topics
    80k Posts
    Murphy 0M
    @Martin_1705 sagte: Danke, habe gefunden dass ich das Solarflow 800 Plus über setDeviceAutomationInOutLimit in den Objekten steuere. Sorry aber ich kann mit dem Solarflow 800 nicht wirklich helfen. Ich habe einen Hyper2000 ohne Solarmodule den ich rein AC seitig betreibe. Hier im Fred gibt es aber einiges an Beispielen als Blockly welche dir weiterhelfen solten. Noch besser hier mal schauen, da gehts um die neuen Geräte mit lokalem Betrieb und neuem Adapter: https://forum.iobroker.net/topic/69579/test-adapter-zendure-solarflow
  • Hilfe für Skripterstellung mit Node-RED

    954 13k
    954 Topics
    13k Posts
    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
  • Temperaturwert aus einfacher HTML Seite Auslesen.

    Moved
    25
    0 Votes
    25 Posts
    5k Views
    M
    Hallo, wie müsste ich den Parser einrichten damit ich werte von der seite bekomme?? <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>AQI</title> <script src="aqi.js"></script> <link rel='stylesheet' href='style.css'> </head> <body> <div class="container"> <h1>AQI</h1> <p class='time' id="time"></p> <div class='aqi-container' id="containerPm25"> <div class='aqi-label'>AQI (PM2.5)</div> <div class='aqi' id="aqiPm25"></div> <div class='pm-label' id="pm25"></div> </div> <div class='aqi-container' id="containerPm10"> <div class='aqi-label'>AQI (PM10)</div> <div class='aqi' id="aqiPm10"></div> <div class='pm-label' id="pm10"></div> </div> </div> </body> <script type="text/javascript"> getData(); setInterval(getData, 60000); </script> </html> [image: 1573825210416-partikel.jpg] Das python script läuft am pi direkt und stellt die werte des sensors zur verfügung. https://zefanjas.de/wie-man-feinstaub-mit-einem-raspberry-pi-messen-kann/ Wäre es auch denkbar es direkt in iobroker zu erstellen oder den sensor so einzulesen? LG mike
  • (Echte) Stau-Erkennung mit Bing

    Moved
    57
    3
    0 Votes
    57 Posts
    19k Views
    R
    Ich habe neuerdings ein tolles Phänomen. Ich habe 2 Routen bei denen seit ca einer Woche teilweise minus Werte bei der Route statt minimal 0. Die werte werden aber abgefragt und es wird auch Stau angezeigt.
  • Zählen der Laufzeit der Heizung

    Unsolved heating
    14
    0 Votes
    14 Posts
    2k Views
    C
    @watcherkb said in Zählen der Laufzeit der Heizung: Discrete Danke "Discrete" hab ich schon im Einsatz aber das erfüllt nicht das was ich brauche. Ziel: Eine Ansicht Wochenansicht zu haben wo die Laufzeit(minuten) in einem Balken Angezeigt wird in einem "Graph" Also 11. 12.13.14.15.16.17. Darüber die Balken je nach LAufzeit. Nun lege ich noch eine "Line" mit der Tages Duchschnitstemperatur. Nun sehe ich auf einen Blick wie lange die Heizung gelaufen ist bei welcher Außentemperatur. Um dies in Grafana einzubauen kann ich ja mit "count" arbeiten. Dabei zählt er ja. Auch Bereiche kann ich angeben kein Problem. Mir fehlen aber die Korrekten DATEN die Grafana braucht um damit klarzukommen. Aktuell logge ich bei änderung. Heizung An= 1 Heizung Aus = 0. Was ich mir nun überlegt habe das ich beim Influx Logging einfach sage schreibe alle 60 Sekunden falls sich nichts ändert. EDIT: Genau si geht es Influx alle 60 Minuten Loggen auch wenn keine Änderung. So bekomme ich alle 1 Minute eine "1" welche per "SUM" umgelegt werden kann.
  • Blockly - Laufzeit

    Moved
    3
    1
    0 Votes
    3 Posts
    2k Views
    C
    Gibt es hier ein Update oder kann man jemand sein Blockly hochladen für eine ganz einfache Laufzeiterfassung in Minuten ? Danke
  • Alternative zu Bespoken? gehört besser hier her

    communication
    5
    0 Votes
    5 Posts
    856 Views
    N
    @lobito danke für die Idee! Sowas habe ich gesucht(Alxa Gerät steuern ohne bespoken). Die Routine auf false zu setzen bringt ja eigentlich nix, oder gibt es auch dafür eine Verwendung?
  • [erledigt] History Adapter per JavaScript -> Doku?

    javascript
    3
    0 Votes
    3 Posts
    573 Views
    A
    Hallo Danke - offensichtlich hab ich die unterschiedlichen Stellen noch nicht überblickt o_O. VIelleicht hilfts mal jemandem: sendTo('sql.0', 'getHistory', { id: 'javascript.0.localLoggerMailStripped'/*LoggerMail*/, options: { end: new Date().getTime(), count: 3, aggregate: 'onchange' } }, function (result) { var monthNames = [ "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]; var resultString = '<table>'; for (var i = 0; i < result.result.length; i++) { var d = new Date(result.result[2-i].ts); //var datestring = ("0" + d.getDate()).slice(-2) + "." + monthNames[d.getMonth()] + " " + ("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2); //resultString += '<tr><td style="font-size:small;>' + datestring + '</td> <td style="font-size:normal;font-weight:bold">'+ result.result[4-i].val + '</td></tr>'; var datestringDate = ("0" + d.getDate()).slice(-2) + "." + monthNames[d.getMonth()] + " "; var datestringTime = ("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2); resultString += '<tr><td style="font-size:large;padding-top:11px"> '+ datestringDate + '<br/>' +'<span style="font-size:x-large">' + datestringTime + '</span>' +'</td> <td style="font-size:x-large;padding-left:10px;padding-top:11px">'+ result.result[2-i].val + '</td></tr>'; //console.log(JSON.stringify(result.result[i])); } resultString += "</table>"; //console.log(resultString); setState('javascript.0.scriptEnabled.LastMessagesFiFoHTML'/*LastMessagesFiFoHTML*/, resultString); });
  • Pi 3 als Bluetooth LE Scanner (Beispielscript)

    Moved
    254
    0 Votes
    254 Posts
    68k Views
    Psycho0verloadP
    @calliou1234 [image: 327_bluetooth_ble_0.4.1.js]
  • Sich ändernder Webcam-Link in ioBroker einbinden

    multimedia
    4
    0 Votes
    4 Posts
    194 Views
    bahnuhrB
    regex: embed/(.*)=1 und du bekommst zurück: live_stream?channel=UClywNttOGGvsIF23vwKWy2A&autoplay und dann setzt du noch "=1" dahinter, dann hast du: live_stream?channel=UClywNttOGGvsIF23vwKWy2A&autoplay=1 Probier es aus auf: https://regex101.com/ mfg Dieter
  • Script Alexa fragt, Antwort per Spracheingabe

    blockly javascript
    2
    0 Votes
    2 Posts
    345 Views
    arteckA
    @PeterMueller nope leider nein.. du kannst die ja oder nein routine dirket starten.. aber bis jetzt ist es nicht möglich von extern was anzutriggern wo die alexa auf eine Entscheidung wartet
  • Licht Automatisch aus bei bestimmte bedienungen

    Moved
    13
    1 Votes
    13 Posts
    1k Views
    I
    Danke ja habe ich geändert, jetzt funktioniert es. Aber leider mit den Schalten geht das noch nicht. Also wenn ich das Licht über 25% an machen geht es wieder aus.
  • Garagentorsender 433MHz für licht nutzen?

    blockly javascript
    1
    0 Votes
    1 Posts
    246 Views
    No one has replied
  • HM Aktor für 1 Sek einschalten

    Unsolved blockly javascript
    15
    0 Votes
    15 Posts
    772 Views
    A
    Hallo, Nach langem probieren habe ich es wohl gepackt. Der Schaltvorgang wird so ausgeführt wie verlangt. Kann hier bitte mal jemand überprüfen, ob das Blockly so bleiben kann, oder ob es Verbesserungen gibt.[image: 1573309409059-hunter-ventil.jpg] Geschaltet soll das Ventil über die rot markierten Button werden. [image: 1573309873503-vis-hunter-ventil-test.jpg] Links Ventil auf -- rechts Ventil zu Sie sind in vis.0 so eingestellt, das, wenn aus (falsch) grün und wenn ein (wahr) rot signalisiert wird. Diese Konstellation ist jetzt nicht mehr gegeben. Beide Taster zeigen rot. das Ventil ist aber zu. Gibt es eine Möglichkeit das zu realisieren? Oder sollte ich für diese Frage einen neuen Betreff aufmachen? Gruß Michael
  • Xiaomi Bewegungssensor und Yeelight

    blockly
    4
    0 Votes
    4 Posts
    445 Views
    ostseereiterO
    @crabs ja musst du dir nur auf deine Bedürfnisse zurecht schustern.
  • Was ist in meinen Netzwerk los?

    security
    1
    3
    0 Votes
    1 Posts
    197 Views
    No one has replied
  • Datenpunkt mit Script ändern?

    blockly
    7
    0 Votes
    7 Posts
    366 Views
    K
    Funktioniert perfekt. Danke Dir.
  • Wöchentlicher Eenrgieverbr.: Reboot nullt werte

    monitoring javascript
    4
    0 Votes
    4 Posts
    228 Views
    crunchipC
    @jmeister79 na steht doch da, beim start und stop den wert null schreiben, also musst du es deaktivieren, falls nicht gewünscht
  • Tesla script

    Unsolved javascript
    38
    0 Votes
    38 Posts
    5k Views
    dbwebD
    So, hab das ganze vorgestellt und offiziell zum testen freigegeben. Wer den Adapter schon installiert hatte, sollte ihn idealerweise vorher rasch entfernen. Es haben sich auch noch ein paar Namen geändert und States anders gruppiert, falls ihr also schon vis oder so gemacht hab, müsstet ihr die anpassen. Sollte sich aber ab jetzt nicht mehr so rasch was ändern. Thread der Freigabe: https://forum.iobroker.net/topic/26428/test-adapter-tesla-motors-v0-1-x
  • zigbee2mqtt Osram Steckdose schalten ? (Json MQTT)

    javascript
    5
    2
    0 Votes
    5 Posts
    1k Views
    B
    Danke schon mal für deine Antwort Habe mir solche Router gebaut -> https://www.zigbee2mqtt.io/how_tos/how_to_create_a_cc2530_router.html Das habe ich mir schon so gedacht, wieder mit dem gleichen Weg zurück. Also entweder selber was machen (da ich bisher nichts dazu gefunden habe im Forum) oder eben den Zigbee Adapter nutzen. Dann habe ich ja schon mal einen Ansatz. Danke!
  • Heizkreisregelungen - JS

    Moved
    47
    0 Votes
    47 Posts
    9k Views
    paul53P
    @SilSchm sagte: Das Stellsignal ist 100 und der Mischer fährt nicht mehr. Der Trigger, der die Mischerbewegung anstößt, benötigt eine Wertänderung, die nicht erfolgt, wenn das Stellsignal auf 100 % bleibt. Erweitere bitte den Scriptstart (Zeilen 14 bis 20) um das Fahren in die Sollposition: // Bei Skriptstart fährt Antrieb auf Position 0 (Zu) setState(idAuf, false); setState(idZu, true); var timer = setTimeout(function() { setState(idZu, false); motor = false; move(getState(idy).val); // Fahren in Sollposition }, 1000 * (Laufzeit + 10));
  • 0 Votes
    4 Posts
    456 Views
    J
    Hallo, irgendwie steh ich auf dem Schlauch: Wie sieht denn dann das Widget aus im VIS? Das mit dem Script verstehe ich halb, die Funktionen sind klar, aber wo ist der Link zu der Bilddatei? Und wie machst du dann die Sichtbarkeit abhängig von dem %-Status?

495

Online

32.7k

Users

82.6k

Topics

1.3m

Posts