Skip to content

JavaScript

Hilfe für Skripterstellung mit JavaScript

2.5k Topics 48.9k Posts

NEWS

  • Klassen Import mit jQuery möglich?

    9
    0 Votes
    9 Posts
    531 Views
    haus-automatisierungH
    @wolfgangfb sagte in Klassen Import mit jQuery möglich?: Besonders nervend ist, dass bei jeder Änderung einer zu importierenden Datei der JS Adapter neu gestartet werden muss weil sonst die Änderungen nicht übernommen werde, gibt es da eine Abhilfe? Naja - das Vorgehen ist ja so auch irgendwo dokumentiert oder empfohlen. Eigentlich müsste es aber reichen, das entsprechende Script neuzustarten (dann wird ja das require() erneut ausgeführt). Seit Version v7.11.1 gibt es defaultDataDir in der Sandbox. Das zeigt auf /opt/iobroker/iobroker-data/ (oder wo auch immer der ioBroker läuft). Damit könnte man den Pfad leichter zusammenbauen. Aber wie gesagt: Alles, was Du da versuchst, ist nicht empfohlen oder offiziell unterstützt. Warum die Klassen nicht als eigenes Script in global ablegen und dann verwenden?
  • Wie kann ich in TypeScript "Variablen zusammenfassen"

    9
    0 Votes
    9 Posts
    693 Views
    M
    @haus-automatisierung ja da hab ich wohl noch viel zu lernen :)
  • Sonnenwinkel berechnen

    17
    0 Votes
    17 Posts
    1k Views
    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 Votes
    12 Posts
    1k Views
    leovandavartL
    @asgothian okay weiß ich erst mal bescheid
  • Scheduling / Timing in Java Script

    7
    0 Votes
    7 Posts
    461 Views
    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 Votes
    1 Posts
    146 Views
    No one has replied
  • Zerlegen eines JSON mit bestätigen Werten?

    4
    0 Votes
    4 Posts
    324 Views
    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 Votes
    2 Posts
    122 Views
    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 Votes
    9 Posts
    431 Views
    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

    Moved
    4
    1
    0 Votes
    4 Posts
    638 Views
    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 Votes
    18 Posts
    518 Views
    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 Votes
    11 Posts
    777 Views
    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 Votes
    4 Posts
    374 Views
    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 Votes
    24 Posts
    921 Views
    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 Votes
    8 Posts
    602 Views
    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 :grin: Das Wohlfühl "klima" hängt allerdings von der relativen Feuchte ab.
  • Über Mqtt empfangenes Bild in Datei speichern

    5
    0 Votes
    5 Posts
    532 Views
    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 Votes
    3 Posts
    303 Views
    A
    @homoran Danke, genau daran hat es gelegen.
  • settimeout - leider wird nicht gewartet

    7
    0 Votes
    7 Posts
    239 Views
    N
    @paul53 erst mal Danke für den andere Denkansatz.
  • (erledigt)Hilfe bei Bit operation and / or

    5
    0 Votes
    5 Posts
    369 Views
    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 Votes
    5 Posts
    485 Views
    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.

746

Online

32.6k

Users

82.1k

Topics

1.3m

Posts