Skip to content

JavaScript

2.5k Topics 49.9k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • setTimeout Verständnisproblem

    7
    0 Votes
    7 Posts
    706 Views
    SokomotoS
    @jmeister79 sagte in setTimeout Verständnisproblem: Ich habe es ejtzt so umgebaut, Ich bin als Anfänger mit dem SetTimeout() und Cron auch schon schwer gegen die Wand gelaufen. Deshalb habe ich mir für mein Waschhaus eine Routine gebaut ohne diese zwei Timer. Ist allerdings nicht die schönste Technik. :-) // Pause Timer in Sekunden function Pause(ms=1) { ms=ms*1000; // Millisekunden return new Promise(resolve => setTimeout(resolve, ms)); } async function Waschhaus(){ While (true){ // Endlosschleife code..... await Pause(600); // hier wird dann der Code angehalten für 10 Minuten code.... await Pause(10); // stop 10 Sekunden usw... } } // Start Waschhaus(); tschuess
  • Error by canceling scheduled job

    1
    0 Votes
    1 Posts
    196 Views
    No one has replied
  • Ultraschallsensor sk04/ MQTT / Übertragung

    Moved
    7
    1
    0 Votes
    7 Posts
    552 Views
    paul53P
    @matti1993 sagte: nehme ich da den Datenpunkt „Sensor“ ? Für den Trigger den Datenpunkt "tasmota/SENSOR". Für das Ergebnis einen selbst erstellten Datenpunkt vom Typ "number" unter "0_userdata.0".
  • Zugriffsrechte auf erstellten DP Ordner

    7
    1
    0 Votes
    7 Posts
    950 Views
    SokomotoS
    @paul53 sagte in Zugriffsrechte auf erstellten DP Ordner: @sokomoto sagte: Gibt es jetzt eine Möglichkeit mit createState den Ordner richtig anzulegen, oder nicht. Nein. Um ein Objekt, das kein Datenpunkt ist, zu erstellen, benötigt man setObject(). Jetzt habe ich es begriffen, danke :-) tschuess
  • Bereich "global" fehlt?

    javascript
    17
    1
    0 Votes
    17 Posts
    2k Views
    HomoranH
    @kbrausew sagte in Bereich "global" fehlt?: Zu Upload: Den Hinweis findet man ab und an beim HeatingController bei verschiedentlichen Problemen den findet man auch in der Doku und wäre mein nächster Versuch gewesen. Bei einem "drüberinstallieren" wäre aber ein upload mit drin gewesen
  • Vorlage/Code snippet Alexa Lautstärke limitieren

    javascript
    1
    2
    1 Votes
    1 Posts
    246 Views
    No one has replied
  • [Gelöst] Einzelwert aus Array-Objekt?

    3
    0 Votes
    3 Posts
    313 Views
    frank2604F
    @mickym Ja, funktioniert. Vielen Dank! refresh(); function refresh() { let targetDP = '0_userdata.0.Strom.Heizung.Heizung_Energie_gestern'; let value = 0; sendTo('influxdb.0', 'query', 'from(bucket: "iobroker") \ |> range(start: -24h) \ |> filter(fn: (r) => r["_measurement"] == "Strom.Heizung.Energie_in_der_letzten_Stunde") \ |> drop(columns: ["_field", "ack", "from", "q"]) \ |> aggregateWindow(every: 1w, fn: sum, createEmpty: false) \ |> limit(n:1) \ ', function (query) { if (query.error) { console.error(query.error); } else { // Ergebnis in Datenpunkt console.log('Row: ' + JSON.stringify(query)); value = query.result[0][0]._value console.log("value: " + value); setState(targetDP, value, true); } }) };
  • [Vorlage] Skript: Erstellen von User-Datenpunkten

    86
    8 Votes
    86 Posts
    24k Views
    dslraserD
    @passuff sagte in [Vorlage] Skript: Erstellen von User-Datenpunkten: "def": "0" "def": "0" Die 0 ist Text...(lass mal die Anführungsstriche weg) "def": 0
  • Javascript variablen verschieben, Pfad ändern

    2
    1
    0 Votes
    2 Posts
    329 Views
    arteckA
    @pi_noob15 na so einfach ist es nicht.. ich habe auch noch unzählige unter den einzelnen javascript instanzen liegen... meine Empfehlung.. lass es so .
  • (gelöst) mehrere Datenpunkte mit einem Befehl schalten

    javascript
    7
    0 Votes
    7 Posts
    540 Views
    C
    @percy Danke!!! Genau danach habe ich gesucht. Herzlichen Dank
  • [gelöst] Script stündlich ausgeführt, aber nicht um 0 Uhr

    12
    0 Votes
    12 Posts
    1k Views
    G
    Hallo zusammen Mit der Cron-Syntax wird das Script auch um 0 Uhr ausgeführt. Nun wäre es noch interessant zu wissen, warum die Pattern-Syntax nicht um 0 Uhr ausgeführt wird. Aber für mich hat sich das Thema erledigt und kann geschlossen werden.
  • [Vorlage] LightControl brightness

    3
    0 Votes
    3 Posts
    193 Views
    ?
    @arteck sry, es sollte in die [Vorlage] lightcontrol.
  • objekt-Daten per Script ändern

    5
    0 Votes
    5 Posts
    475 Views
    H
    Hallo paul53, vielen Dank für die Ergänzung. Ich musste allerdings den Wert bei mir auf 35000 hochsetzten ,da bei mir auf meinem PI 3 die JS-Instance mit als Erstes startet und die Shelly fast zum Schluss. Jetzt war der Wert auf jeden Fall nach dem Reboot automatisch gesetzt. Muss dann wahrscheinlich jeder Benutzer bei sich selber den passenden Wert ermitteln. Vielen Dank und einen schönen Sonntag. VG Hasso
  • This topic is deleted!

    2
    0 Votes
    2 Posts
    22 Views
  • Datenpunktwert per JSON als HTTP Post versenden

    6
    0 Votes
    6 Posts
    360 Views
    mickymM
    @dominic-haußmann Wenn Du halt mehrere Datenpuntkte überwachen willst musst halt quasi ein regex nehmen oder einzelne Datenpunkte und die events als globales Array definieren. Hier mal das Bespiel mit 2 Datenpunkten. const request = require('axios'); var events = []; // Überwachen des Datenpunktes oder Wildcards // on({id: /0_userdata.0.*/, change: 'any'}, function (obj) { on({id: '0_userdata.0.doorStatus', change: 'any'}, sendObj); on({id: '0_userdata.0.target', change: 'any'}, sendObj); // Versenden des JSON Strings function sendObj(obj){ var state = getState(obj.id) var date = new Date(state.ts); var event = {"timestamp": date}; event[obj.id] =state.val; events.push(event); var data = JSON.stringify([{"tags": {"host":"iobroker"}, "events" : events}]); var url='$YOUR_HUMIO_URL/api/v1/ingest/humio-structured'; //var data = '[{"tags": {"host":"iobroler"}, "events" : [{"timestamp": "2021-06-06T12:00:00+02:00", "attributes": {"key1":"value1"}}]}]'; var config = { headers: { "Content-Type": "application/json", "Authorization": "Bearer $INGEST_TOKEN" } } request.post(url,data,config); } Das Ergebnis ist dann halt ein immer weiter wachsendes Array mit jeder Aktualisierung als Event: {"tags":{"host":"iobroker"},"events":[{"timestamp":"2022-01-22T16:20:46.811Z","0_userdata.0.target":5},{"timestamp":"2022-01-22T16:20:52.947Z","0_userdata.0.doorStatus":"40 %"},{"timestamp":"2022-01-22T16:22:44.935Z","0_userdata.0.doorStatus":"12.5 %"}]} [image: 1642868639968-a4e60f86-69d2-492c-b9a0-8730f0cddcc3-image.png] EDIT: Die ID des Selectors über eine Variable zu setzen geht natürlich auch. Du musst halt bedenken, dass Du jedes Mal einen neuen Selector generierst. Also müsstest Du mit unsubscribe den erst wieder löschen Mit Wildcards habe ich es auch getestet, aber da ist mein Array im Nu sehr lang. ;). Aber ich bin kein JS Fachmann, arbeite lieber mit NR - aber für weitere Fragen ist Dir @paul53 sicher behilflich.
  • axios Abfragen funktioniet nicht mehr

    4
    0 Votes
    4 Posts
    795 Views
    cashC
    @alcalzone wie peinlich. Ja damit geht es wieder. Vorher hat baseURL aber auch funktioniert.
  • Datenpunkte im Python-Skript lesen/ändern

    3
    0 Votes
    3 Posts
    696 Views
    H
    Danke schön für den Tipp. :)
  • Gelöst! Elemente nach Ereignis am Anfang eines Array [...]

    4
    0 Votes
    4 Posts
    598 Views
    ?
    @paul53 said in Elemente nach Ereignis am Anfang eines Array schreiben: Das gehört nicht in die Funktion count_doors(), sondern in den Trigger. Das war es danke. Manchmal denkt man einfach zu kompliziert. Ich danke dir und @liv-in-sky für euer Input! :)
  • Wake on Lan auf zweite Netzwerkkarte

    8
    0 Votes
    8 Posts
    703 Views
    B
    Hallo zusammen, ich bin jetzt endlich zum weitertesten gekommen. Also es liegt definitiv an den Berechtigungen in der sudoers-Datei. Ich habe mir mal einen test-User angelegt und für den einen Eintrag in meiner custom_iobroker-Datei gemacht. Der darf dann auch den etherwake-Befehl ohne Passwortabfrage machen. Für den iobroker-Benutzer habe ich das mit: sudo -u iobroker sudo /sbin/etherwake -i eth1 xx:xx:xx:1f:12:ab getestet und dort wurde das Passwort des iobroker-users abgefragt. Ich habe dann den gleichen Eintrag, den ich auch in meiner custom_iobroker-Datei gemacht habe, direkt in der /etc/sudoers.d/iobroker-Datei gemacht und es wird kein Passwort mehr abgefragt. Das Script funktioniert dann. Hat einer eine Erklärung dafür warum es nicht mit der custom_iobroker-Datei funktioniert? Ich habe sogar mal testweise ALL ALL=(ALL) NOPASSWD: /sbin/etherwake eingetragen gehabt. Für meinen test-User hat das auch funktioniert. Für den iobroker-User kam weiterhin eine Passwortabfrage. Ich bin verwirrt. Aber zur Not lebe ich damit, dass ich die /etc/sudoers.d/iobroker-Datei anpassen muss. Grüße und noch einen schönen Sonntag :-)
  • IP Devices im Netzwerk - HTML Tabelle, Unbekannte Geräte?

    4
    0 Votes
    4 Posts
    483 Views
    HomoranH
    @assid sagte in IP Devices im Netzwerk - HTML Tabelle, Unbekannte Geräte?: Also dann nicht wirklich erkennbar, um was für ein Gerät es sich handelt. Name, MAC-Adresse wäre schon gut. (Vendor der MAC-Adresse) ich weiß nicht ob @liv-in-sky da noch was eingebaut hat. Wir hatten an so etwas gearbeitet. Ich nutze noch ein uralte Version und da wird der Name wenn vorhanden schon angezeigt. Ich habe aber inzwischen alle Devices im Skript neu benannt, auch damit sie vernünftig sortiert werden: [image: 1642182566341-ip_scan.png] Ein testweise installierter RasPi wird mit seinem hostnamen angezeigt

467

Online

33.0k

Users

83.7k

Topics

1.3m

Posts