Weiter zum Inhalt

JavaScript

2.5k Themen 49.7k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

  • Sonnenwinkel berechnen

    17
    0 Stimmen
    17 Beiträge
    2k Aufrufe
    P
    @bahnuhr Die Leistung je Strang bekomme ich schon jetzt mittels Modbus vom Wechselrichter und kann in den Objekten abgeholt werden. Wie bekommt man die Daten von Azimuth in VIS und kann diese dann im Halbkreis darstellen.
  • Regenbogen Script

    12
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    leovandavartL
    @asgothian okay weiß ich erst mal bescheid
  • Scheduling / Timing in Java Script

    7
    0 Stimmen
    7 Beiträge
    711 Aufrufe
    O
    @paul53 , hat geklappt. Danke. Ich musste noch ein paar Variablen umbauen und mit Denkfehlern kämpfen, aber jetzt funktioniert alles so wie es soll. Gruß
  • Husqvarna - Entfernung zur Ladestation

    1
    0 Stimmen
    1 Beiträge
    180 Aufrufe
    Niemand hat geantwortet
  • Zerlegen eines JSON mit bestätigen Werten?

    4
    0 Stimmen
    4 Beiträge
    363 Aufrufe
    hg6806H
    Danke euch. Hier funktioniert es: //Datenpunkt mit MQTT-Informationen im json-Format auslesen json = (function () { try {return JSON.parse(getState("mqtt.0.home.OpenMQTTGateway_ESP32_BLE.BTtoMQTT.A4C1381BD71A").val);} catch(e) {return {};}})(); //json auslesen und Datenpunkte für Temperatur, Luftfeuchte und Batterie setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Temperature", getAttr(json, 'tempc'),true); setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Humidity", getAttr(json, 'hum'),true); setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Battery", getAttr(json, 'batt')); setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.RSSI", getAttr(json, 'rssi')); setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Volt", getAttr(json, 'volt')); //Log Ausgabe als return der Funktion return "MQTT MI_A4C1381BD71A aktualisiert"; Aber hier leider nicht: //Datenpunkt mit MQTT-Informationen im json-Format auslesen json = (function () { try {return JSON.parse(getState("mqtt.0.home.OpenMQTTGateway_ESP32_BLE.BTtoMQTT.3F59C86390D1").val);} catch(e) {return {};}})(); //json auslesen und Datenpunkte für Temperatur, Luftfeuchte und Batterie setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Temperature", getAttr(json, 'tempc'),true); setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Humidity", getAttr(json, 'hum'),true); setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Battery", getAttr(json, 'batt')); setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.RSSI", getAttr(json, 'rssi')); //Log Ausgabe als return der Funktion return "MQTT MI_3F59C86390D1 aktualisiert"; da kommt dann jeweils ein {"ack":true} EDIT: Manchmal kommt beim letzteren ein Wert, manchmal das "{"ack":true}"
  • Modbus <-> ioBr <-> Homematic

    2
    0 Stimmen
    2 Beiträge
    164 Aufrufe
    paul53P
    @stef76fd Bau eine Sperre ein: on(id, function(dp) { if(dp.state.c != scriptName) { // Wert weiter geben } }); Mit der Variablen scriptName funktioniert es nur, wenn die Trigger alle im gleichen Skript sind.
  • Regex Vereinfachung gesucht

    9
    0 Stimmen
    9 Beiträge
    565 Aufrufe
    W
    @fastfoot sagte in Regex Vereinfachung gesucht: @wolfgangfb sagte in Regex Vereinfachung gesucht: Ich möchte die führeden Nullen aber nur ganz vorne wegbekommen, 20 Uhr und 5 Sekunden sieht meiner Meinung nach als "20:0:5" nicht wie eine Zeit aus, während 5 Minuten 7 Sekunden meiner Meinung nach durchaus wie 5:07 aussehen können. sieht für mich aus wie 5Std 7Min. :-) In dem Fall werden die Sekunden runtergezählt, da sieht man dann schon, dass es keine 5 Stunden sind. ich formatiere grundsätzlich ss:mm:ss ich nehme an Du meinst hh:mm:ss dann sieht das auch iuntereinander geschrieben richtig aus. Aber sei's drum: log(formatDate(sec,'hh:mm:ss').replace(/^(0+:|0)+/,'')) Super, das ist die Lösung, die ich gesucht habe.
  • On event/trigger in JavaScript Klasse verwenden

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    812 Aufrufe
    W
    @csuser Das Thema ist zwar schon ziemlich alt, weil ich aber selbst vor diesem Problem stand hier die Lösung wie man Trigger in einer Klasse realisiert: Man muss das in eine Methode auslagern (die man aber im constructor ausführen kann) class MyClass{ constructor(){ this.SetUpTrigger(); } SetUpTrigger(){ on("javascript.0.Bla.Blub", function(obj){ console.log(obj.id)}); } } let Class = new MyClass();
  • XLSX-Daten als Datenpunkt im ioBroker

    18
    2
    0 Stimmen
    18 Beiträge
    759 Aufrufe
    OliverIOO
    @miniturtle75 Das hört sich nach einem berechtigungsprpblem an. Die Datei muss für den Benutzer iobroker lesbar sein. Prüfen kannst du das am besten in dem du auf der Konsole mit Sudo auf den Benutzer iobroker wechselst und schaust ob die Datei sichtbar ist Wenn nicht musst du im Mount die Berechtigungen anzupassen https://wiki.ubuntuusers.de/mount/
  • JS mit Visual Studio Code debuggen

    11
    0 Stimmen
    11 Beiträge
    944 Aufrufe
    OliverIOO
    @wolfgangfb Für solche Fälle baue ich mir einfach für die iobroker spezifischen Befehle die man verwendet entsprechende dummy Befehle, die einfach statisch ein entsprechendes Ergebnis zurückgibt. Diese könnte man dann beliebig komplex bauen (bspw für getState) Damit kann man dann ganz gut entwickeln und debuggen. Der letzte integrations schritt dann im JavaScript Adapter kann man dann noch entsprechende log Befehle einbauen um zu prüfen ob man in den dummy Funktionen alle Fälle abgedeckt und getestet hat
  • Gültigkeitsbereiche von Variablen

    4
    0 Stimmen
    4 Beiträge
    544 Aufrufe
    arteckA
    ich habs mir angeschaut... und wusste nicht wo ich anfangen soll... Empfehlung an @ehome setzt dich nochmal mit der Syntax/Semantik von Javascript zusammen (und ich rede nicht von CleanCode) @BananaJoe eigentlich ist es ganz einfach let var1 = true; if (var1) { let var2 = false; } var1 ist allgemein gültig (globale Variable) für den ganzen Programm/Script lauf auch innerhalb der if Abfrage var2 ist nur in der if Abfrage gültig ... (lokale Variable) ..das kann man jetzt weiter treiben auf Schleifen oder Trigger früher war das Problem von globalen Variablen dass diese (wie jede andere auch) speicher Platz im RAM verbraucht haben.. und dieser sehr knapp war.. man musste genaustens überlegen wie viel Byte man braucht.. und ob die Variable nur einmal oder mehrere male oder für den ganzen Programmlauf benötigt war Devs die vor 40 Jahren Programmiert haben wissen wovon ich rede
  • import Syntax

    24
    0 Stimmen
    24 Beiträge
    1k Aufrufe
    W
    @paul53 Das funktioniert taatsächlich, ist aber ziemlich blöd wenn man etwas entwickeln möchte. Bei jedem Fehler oder jeder Änderung die JS Instanz neu starten. Das muss auch irgendwie aders gehen.
  • Lüftungssteuerung

    8
    0 Stimmen
    8 Beiträge
    825 Aufrufe
    HomoranH
    @phil_discount sagte in Lüftungssteuerung: aber wenn ich dich richtig verstehe, trotzden lüften Natürlich! Der @phil_discount sagte in Lüftungssteuerung: tau auf dem feld ist ja nur wegen der niedrigen Temperatur vorhanden. Die Feuchtekapazität der Luft verdoppelt sich in etwa je 10 Grad. Ein Luftentfeuchter funktioniert ja auch nach dem Kondensationsprinzip. Temperatur runter und schon fällt das Wasser aus der Luft aus und tropft in den Behälter. Trockene Luft bleibt übrig. Deswegen vergleicht man ja nur den Wassergehalt der Luft innen und außen. Um das Ganze noch verwirrender zu machen Das Wohlfühl "klima" hängt allerdings von der relativen Feuchte ab.
  • Über Mqtt empfangenes Bild in Datei speichern

    5
    0 Stimmen
    5 Beiträge
    659 Aufrufe
    V
    @haus-automatisierung Danke nochmal. Scheint tatsächlich kein jpg oder anderes Bildformat zu sein. Als ausgabe kommt lediglich "data". Ich glaube ich versuche mal auf einem anderen weg die Bilder zu holen. Eventuell kann ich mir vom Server den Pfad schicken lassen und das Bld dann per SFTP holen. Trotzdem noch einmal vielen lieben Dank für die Unterstützung.
  • schedule, welche syntax

    3
    0 Stimmen
    3 Beiträge
    418 Aufrufe
    A
    @homoran Danke, genau daran hat es gelegen.
  • settimeout - leider wird nicht gewartet

    7
    0 Stimmen
    7 Beiträge
    331 Aufrufe
    N
    @paul53 erst mal Danke für den andere Denkansatz.
  • (erledigt)Hilfe bei Bit operation and / or

    5
    0 Stimmen
    5 Beiträge
    437 Aufrufe
    ubeckerU
    @haus-automatisierung da hast du ja Recht, im Prinzip ist da alles. Mein Problem ist das ich die Syntax von JS noch nicht drin habe und mich damit schwer tue. Manchmal aber auch in Umwegen denke. Ich habe erst im November letztn Jahr mit IOBroker angefangen und da dann erste mal mit JS zu tun gehabt habe. Mein Schwerpunkt ist Hardware und nicht Software. Dafür läuft bei mir mittlerweile MQTT, Modbus, HM, HMIP, Z-Wave. Ich werde mich wohl noch mehrmals melden müssen. danke für die noch kommende Unterstützung.
  • Google API OAuth2 - Wie?

    5
    0 Stimmen
    5 Beiträge
    617 Aufrufe
    M
    Okay, herausgefunden, dass die Datei in den JavaScript Ordner gehört. Dort hab ich es auf oberster Ebene mal getestet. Der Fehler bleibt der gleiche.
  • Adapter-Update führt zu Neukompilieren des NPM-Moduls

    Ungelöst
    11
    0 Stimmen
    11 Beiträge
    947 Aufrufe
    foxriver76F
    Lkonnte ich in letzter Zeit auch wieder bei jedem Update beobachten dass die von mir im JavaScript Adapter hinzugefügten Module nach jedem Update durch npm gelöscht wurden. Wir haben ein Ticket wird allerdings was größeres vermute ich. https://github.com/ioBroker/ioBroker.js-controller/issues/2006
  • Wie kann man einem Scheduler Callback einen Wert übergeben?

    2
    0 Stimmen
    2 Beiträge
    133 Aufrufe
    B
    @burningfrog neuer Scope für item, damit scheint es zu gehen: var list = [ {time:"22:33", dp_execute:"a"}, {time:"22:34", dp_execute:"b"}, {time:"22:35", dp_execute:"c"}, ]; for (var i=0; i<list.length;i++) { var item = list[i]; (function(item) { schedule('{"time":{"exactTime":true,"start":"'+item.time+'"},"period":{"days":1}}', function () { console.log(item.dp_execute); } ); })(item); }

329

Online

33.0k

Benutzer

83.4k

Themen

1.3m

Beiträge