Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Automatisierung / batch-Veränderung von Objekten?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.4k

Automatisierung / batch-Veränderung von Objekten?

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
5 Beiträge 3 Kommentatoren 503 Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • J Offline
    J Offline
    Jens77
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich habe eine ioBroker Installation auf einem Raspi 4b und ein gutes Dutzend Sonoff-basierte Steckdosen, die dem ioBroker mit Tasmota bestückt Spannung und Energieverbrauch usw. mitteilen. Das ganze wird in einer Influx DB gespeichert.

    Jetzt möchte ich bei allen "sonoff.0.OBJEKTNAME.Wifi_Signal" - wobei OBJEKTNAME variabel ist, eine Liste von 16 Tasmotas - das Speichern in der InfluxDB abschalten, der aktuelle Wert reicht mir.

    Ich könnte mich natürlich durch die Web-UI klicken, aber lässt sich das nicht auch auf der Kommandozeile automatisieren, als Skript oder sogar innerhalb von iobroker? Ich kann mir zwar mit iobroker list sonoff.0.* | grep Wifi_Signal alle diese Objekte anzeigen lassen und könnte mit for X in $(...) ; do ... ; done weiter machen, aber wie modifiziere ich den influxdb-Status der einzelnen Objekte von der Kommandozeile aus?

    Danke für alle Hinweise :-)

    AlCalzoneA 1 Antwort Letzte Antwort
    0
    • J Jens77

      Hallo,

      ich habe eine ioBroker Installation auf einem Raspi 4b und ein gutes Dutzend Sonoff-basierte Steckdosen, die dem ioBroker mit Tasmota bestückt Spannung und Energieverbrauch usw. mitteilen. Das ganze wird in einer Influx DB gespeichert.

      Jetzt möchte ich bei allen "sonoff.0.OBJEKTNAME.Wifi_Signal" - wobei OBJEKTNAME variabel ist, eine Liste von 16 Tasmotas - das Speichern in der InfluxDB abschalten, der aktuelle Wert reicht mir.

      Ich könnte mich natürlich durch die Web-UI klicken, aber lässt sich das nicht auch auf der Kommandozeile automatisieren, als Skript oder sogar innerhalb von iobroker? Ich kann mir zwar mit iobroker list sonoff.0.* | grep Wifi_Signal alle diese Objekte anzeigen lassen und könnte mit for X in $(...) ; do ... ; done weiter machen, aber wie modifiziere ich den influxdb-Status der einzelnen Objekte von der Kommandozeile aus?

      Danke für alle Hinweise :-)

      AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #2

      @jens77 Zwar nicht im Batch, aber per CLI geht:

      $ iob object set
      iobroker object set <id> propertyname=<value or json-value>
      
      Update part of the object by providing a new value or partial object
      

      Z.B. kannst du damit auch Teile eines Objektes bearbeiten, z.B. common.name:

      iob object set "my.0.id" common.name="Neuer Name"
      

      Escapen ist ab und an ein bisschen tricky, gerade wenn du JSON reincshreiben willst.

      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

      J 1 Antwort Letzte Antwort
      0
      • AlCalzoneA AlCalzone

        @jens77 Zwar nicht im Batch, aber per CLI geht:

        $ iob object set
        iobroker object set <id> propertyname=<value or json-value>
        
        Update part of the object by providing a new value or partial object
        

        Z.B. kannst du damit auch Teile eines Objektes bearbeiten, z.B. common.name:

        iob object set "my.0.id" common.name="Neuer Name"
        

        Escapen ist ab und an ein bisschen tricky, gerade wenn du JSON reincshreiben willst.

        J Offline
        J Offline
        Jens77
        schrieb am zuletzt editiert von
        #3

        @alcalzone Danke für den Anstoß, das war ja eine schnelle Antwort :-) Batchverarbeitung in iobroker ist nicht notwendig - das dann in einen for-loop mit bash einzubauen kriege ich auch selber hin. Ich bin jetzt einen Schritt weiter, aber stehe vor dem nächsten Problem: Wie du schon gesagt hast, funktioniert das escaping nicht richtig.

        ~/tmp $ iob object get sonoff.0.Backofen.Wifi_Signal
        {"_id":"sonoff.0.Backofen.Wifi_Signal","common":{"role":"value","read":true,"write":false,"type":"number","name":"Backofen Wifi  Signal","custom":{"influxdb.0":{"enabled":true,"storageType":"","aliasId":"","changesOnly":true,"debounce":1001,"changesRelogInterval":3600,"changesMinDelta":0}}},"native":{},"type":"state","from":"system.adapter.admin.0","user":"system.user.admin","ts":1637511781276}
        

        Wie es aussieht, müsste ich wohl custom { influxdb.0 { enabled: true } } auf false setzen.
        Das klappt aber mit dem von Dir vorgeschlagenen Syntax nicht:

        ~/tmp $ iob object set sonoff.0.Backofen.Wifi_Signal custom.influxdb\.0.enabled=false
        The requested property "custom.influxdb.0.enabled" or one of its parents was not found in the object "sonoff.0.Backofen.Wifi_Signal"!
        ~/tmp $ iob object set sonoff.0.Backofen.Wifi_Signal custom."influxdb.0".enabled=false
        The requested property "custom.influxdb.0.enabled" or one of its parents was not found in the object "sonoff.0.Backofen.Wifi_Signal"!
        ~/tmp $ iob object set sonoff.0.Backofen.Wifi_Signal custom.'influxdb.0'.enabled=false
        The requested property "custom.influxdb.0.enabled" or one of its parents was not found in the object "sonoff.0.Backofen.Wifi_Signal"!
        
        

        Wie bekomme ich den String "influxdb.0" (mit Punkt) als JSON Key korrekt übertragen?
        Oder was übersehe ich?

        Danke :-)

        AlCalzoneA 1 Antwort Letzte Antwort
        0
        • J Jens77

          @alcalzone Danke für den Anstoß, das war ja eine schnelle Antwort :-) Batchverarbeitung in iobroker ist nicht notwendig - das dann in einen for-loop mit bash einzubauen kriege ich auch selber hin. Ich bin jetzt einen Schritt weiter, aber stehe vor dem nächsten Problem: Wie du schon gesagt hast, funktioniert das escaping nicht richtig.

          ~/tmp $ iob object get sonoff.0.Backofen.Wifi_Signal
          {"_id":"sonoff.0.Backofen.Wifi_Signal","common":{"role":"value","read":true,"write":false,"type":"number","name":"Backofen Wifi  Signal","custom":{"influxdb.0":{"enabled":true,"storageType":"","aliasId":"","changesOnly":true,"debounce":1001,"changesRelogInterval":3600,"changesMinDelta":0}}},"native":{},"type":"state","from":"system.adapter.admin.0","user":"system.user.admin","ts":1637511781276}
          

          Wie es aussieht, müsste ich wohl custom { influxdb.0 { enabled: true } } auf false setzen.
          Das klappt aber mit dem von Dir vorgeschlagenen Syntax nicht:

          ~/tmp $ iob object set sonoff.0.Backofen.Wifi_Signal custom.influxdb\.0.enabled=false
          The requested property "custom.influxdb.0.enabled" or one of its parents was not found in the object "sonoff.0.Backofen.Wifi_Signal"!
          ~/tmp $ iob object set sonoff.0.Backofen.Wifi_Signal custom."influxdb.0".enabled=false
          The requested property "custom.influxdb.0.enabled" or one of its parents was not found in the object "sonoff.0.Backofen.Wifi_Signal"!
          ~/tmp $ iob object set sonoff.0.Backofen.Wifi_Signal custom.'influxdb.0'.enabled=false
          The requested property "custom.influxdb.0.enabled" or one of its parents was not found in the object "sonoff.0.Backofen.Wifi_Signal"!
          
          

          Wie bekomme ich den String "influxdb.0" (mit Punkt) als JSON Key korrekt übertragen?
          Oder was übersehe ich?

          Danke :-)

          AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          schrieb am zuletzt editiert von
          #4

          @jens77 Oh, das ist nicht vorgesehen. Die Logik zum Ermitteln des Objekt-"Pfads" splittet streng an Punkten.
          Wäre ggf. ein Issue in https://github.com/ioBroker/ioBroker.js-controller wert, um diesen Fall zu berücksichtigen.

          Alternativ kannst du dir mit einem Skript in ioBroker behelfen, du musst dazu die IDs kennen oder ermitteln und für jede ID dann getObject, property ändern, setObject machen.

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          1 Antwort Letzte Antwort
          0
          • I Offline
            I Offline
            IckZ
            schrieb am zuletzt editiert von
            #5

            Ich bin heute über google auf das Thema gekommen, hatte gleiches "Problem" und habe kein andere Lösung gefunden. Deshalb hier für andere die auf das Thema aufmerksam werden könnten mal meine Lösung wie ich es für "mein Pytontech Objekt" erledigt habe:

            chmod +x für die Datei nicht vergessen und entsprechend die Werte für das/die Objekt/e (pylontech.0. und die Elemente battery/volt) entsprechend für den eigenen Bedarf anpasen.

            #!/bin/bash
            
            # Setzt die InfluxDB Custom-Parameter für alle ioBroker-Objekte mit 'battery' und 'volt' im Namen im Element pylontech.0
            
            iobroker object list pylontech.0.* | awk '{print $5}' | grep "battery" | grep "\.volt$" | while read -r OBJECT_ID; do
              echo "Setze InfluxDB Custom-Parameter für: $OBJECT_ID"
              iobroker object extend "$OBJECT_ID" '{
                "common": {
                  "custom": {
                    "influxdb.0": {
                      "enabled": true,
                      "storageType": "",
                      "aliasId": "",
                      "debounceTime": 0,
                      "blockTime": 0,
                      "changesOnly": false,
                      "changesRelogInterval": "0",
                      "changesMinDelta": 0,
                      "ignoreBelowNumber": "",
                      "disableSkippedValueLogging": false,
                      "enableDebugLogs": false,
                      "debounce": 0
                    }
                  }
                }
              }'
            done
            
            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate
            FAQ Cloud / IOT
            HowTo: Node.js-Update
            HowTo: Backup/Restore
            Downloads
            BLOG

            680

            Online

            32.4k

            Benutzer

            81.5k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Anmelden

            • Du hast noch kein Konto? Registrieren

            • Anmelden oder registrieren, um zu suchen
            • Erster Beitrag
              Letzter Beitrag
            0
            • Home
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe