Skip to content

JavaScript

Hilfe für Skripterstellung mit JavaScript

2.5k Topics 48.9k Posts

NEWS

  • [Gelöst] Einzelwert aus Array-Objekt?

    3
    0 Votes
    3 Posts
    239 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
    20k 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
    274 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
    389 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
    140 Views
    ?
    @arteck sry, es sollte in die [Vorlage] lightcontrol.
  • objekt-Daten per Script ändern

    5
    0 Votes
    5 Posts
    371 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
    232 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
    647 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
    627 Views
    H
    Danke schön für den Tipp. :)
  • Gelöst! Elemente nach Ereignis am Anfang eines Array [...]

    4
    0 Votes
    4 Posts
    544 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
    372 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
    401 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
  • fs.watch läuft weiter

    3
    0 Votes
    3 Posts
    301 Views
    D
    @alcalzone Super, funktioniert und wieder was gelernt! Dankeschön!!!
  • Integrieren in javascript

    12
    0 Votes
    12 Posts
    643 Views
    HomoranH
    @sgtpinback sagte in Integrieren in javascript: wenn ich nach einem Jahr feststelle, die Form der Anzeige gefällt mir nicht Ich lese hier schon länger oberflächlich mit. Einerseits glaube ich zu verstehen was du willst und kann auch den Wunsch nachvollziehen. Andererseits habe ich mit dieser Idee so meine Probleme. Historisierte Daten sind für mich ein Audit-Trail, da kann ich nicht nach einem Jahr sagen: das gefällt mir aber nicht. Zum Weiteren fällt mir auch gar nicht ein worum es da gehen sollte. Die Temperatur von Heiligabend 2019 um 13:42 ist gegeben, was willst du da ändern? Ebenso die Jahressumme der Regenmenge oder des Stromverbrauchs.
  • Parameter Übergabe beim Aufruf von Datenpunkten

    6
    0 Votes
    6 Posts
    285 Views
    arteckA
    @loxdan dann halt andersrum http://[MEINE-IP]:8087/set/javascript.0.scriptEnabled.common.Alexa_Text2Speak.TTS-Alexa-Garage-Test?value=1&tts=Test&prettyPrint hast du doch schon javascript.0.scriptEnabled.common.Alexa_Text2Speak.TTS-Alexa-Garage-Test dann musst du auf änderung dieser variable reagieren und diese auswerten.. du kannst abe rnicht mehrere parameter übergeben.. wenn dann so.. javascript.0.scriptEnabled.common.Alexa_Text2Speak.TTS-Alexa-Garage-Test?value=1Test&prettyPrint und dann dir die Variable zerlegen als das 1 raus holen und Test
  • [Gelöst]Bild von Webcam speichern

    javascript
    13
    0 Votes
    13 Posts
    1k Views
    amg_666A
    @glasfaser DANKE !!!!
  • [gelöst] Script Datenpunkte anlegen inkl. Logging

    9
    0 Votes
    9 Posts
    847 Views
    S
    @paul53 Top!, hat alles bestens funktioniert :)
  • Pushover Textgestaltung

    2
    0 Votes
    2 Posts
    249 Views
    cashC
    @stefanh-0 mir ist keine Möglichkeit bekannt, das zu realisieren. Meines Wissens kannst Du Text farbig machen, bold, italic usw. aber viel mehr geht nicht.

778

Online

32.6k

Users

82.2k

Topics

1.3m

Posts