Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Script Datenpunkte anlegen inkl. Logging

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Script Datenpunkte anlegen inkl. Logging

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      stockics6 last edited by stockics6

      Hi,

      ich versuche gerade ein Script zu schreiben um Datenpunkte anzulegen, die automatisch über Influxdb mit geloggt werden.

      Typischer Datenpunkt:
      createState("javascript.0.API.Hauptordner.Straße.Inputs.Input_1", (JSON.stringify(response.data.Data.Inputs[1].Value.Value)))

      1. Wie kann ich dem Datenpunkt weitere Eigenschaften mitgeben?
        role = value
        type = number
        automatisches Logging über influxdb.0 mit den Voreingestellten Werten aus dem Adapter?

      2. Kann man beim Erstellen der Datenpunkte den Namen "Straße" als variable hinterlegen, sodass man nur
        zu beginn des Scriptes ein Straßennamen eingeben muss?

      3. Wie kann ich eine zyklische Abfrage einbauen, sodass das Script automatisch alle 5 Minuten neu startet
        um die Datenpunkte zu aktualisieren?

      Hat jemand einen Lösungsansatz?

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @stockics6 last edited by paul53

        @stockics6 sagte in Script Datenpunkte anlegen inkl. Logging:

        Wie kann ich eine zyklische Abfrage einbauen

        schedule()

        Zu 2. Ja: String-Verkettung

        Zu 1.

        createState(id, val, {role: 'value', type: 'number', name: 'xyz'});
        
        1 Reply Last reply Reply Quote 1
        • S
          stockics6 last edited by

          @paul53

          Erst einmal vielen Dank für das schnelle Feedback!

          Zu 2:
          Die String-Verkettung habe ich hinbekommen und funktioniert auch.
          Leider wird die Objektbeschreibung nicht übernommen

          createState(filepath + "." + streetname + "." + "Version", JSON.stringify(response.data.Header.Version), {role: 'value', type: 'number', name: 'xyz'});
          

          In dem erzeugten Datenpunkt steht weiterhin: role = state und type = mixed

          Woran könnte das liegen?

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @stockics6 last edited by paul53

            @stockics6 sagte: Woran könnte das liegen?

            creatState() überschreibt normalerweise keinen existierenden Datenpunkt, außer mit true für forceCreation.

            createState(filepath + "." + streetname + "." + "Version", JSON.stringify(response.data.Header.Version), true, {role: 'value', type: 'number', name: 'xyz'});
            

            Anmerkung: JSON.stringify() passt nicht zu common.type = "number".

            S 1 Reply Last reply Reply Quote 1
            • S
              stockics6 @paul53 last edited by stockics6

              @paul53
              Super vielen lieben Dank! 🙂

              Bis auf den CRON hat alles perfekt funktioniert.

              Ich habe das Example in die erste Zeile des JS-Script kopiert aber dieses startet leider nicht neu, lediglich
              die Info wird übers log ausgegeben.

              // Example with 5 digits:
              schedule("*/2 * * * *", function () {
                  log("Will be triggered every 2 minutes!");
              });
              

              Muss ich das irgendwie anders verknüpfen?

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @stockics6 last edited by

                @stockics6
                Was soll alle 2 Minuten passieren?

                S 1 Reply Last reply Reply Quote 0
                • S
                  stockics6 @paul53 last edited by

                  @paul53

                  das gesamte Script soll neu starten. Aktuell löse ich das über Blockly aber schöner wäre es, wenn es direkt im
                  Script mit implementiert wäre.

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @stockics6 last edited by

                    @stockics6 sagte: das gesamte Script soll neu starten.

                    Dann muss alles, was ausgeführt werden soll, in die Callback-Funktion von schedule().

                    schedule("*/2 * * * *", function () {
                        log("Will be triggered every 2 minutes!");
                        // Alle weiteren Aktionen, die ausgeführt werden sollen
                    });
                    
                    S 1 Reply Last reply Reply Quote 1
                    • S
                      stockics6 @paul53 last edited by

                      @paul53
                      Top!, hat alles bestens funktioniert 🙂

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      746
                      Online

                      31.8k
                      Users

                      80.0k
                      Topics

                      1.3m
                      Posts

                      2
                      9
                      545
                      Loading More Posts
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes
                      Reply
                      • Reply as topic
                      Log in to reply
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      The ioBroker Community 2014-2023
                      logo