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. Skripten / Logik
  4. JavaScript
  5. Wetterstationsdaten per csv in IOB einpflegen (importieren)

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    486

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

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

Wetterstationsdaten per csv in IOB einpflegen (importieren)

Geplant Angeheftet Gesperrt Verschoben JavaScript
10 Beiträge 3 Kommentatoren 690 Aufrufe 1 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.
  • G Offline
    G Offline
    geophysiker
    schrieb am zuletzt editiert von
    #1

    Moin, Moin

    Ich mache schon seit Jahren erst mit Fhem dann mit IOB (Win) und jetzt mit IOB Raspi rum.
    Ich habe es in den ganzen Jahren nicht geschafft meine Wetterdaten einzupflegen. Auch bei IOB gibt es mehr Suchtreffer bei CSV Export als bei Import.
    Ich kann nicht Programmieren da fehlt mir ein Gen zu.;-)) Proggies verbiegen geht manchmal.;-)
    Diese Wettersoftware wird nicht mehr weiterentwickelt aber am Leben gehalten. (WSWIN)
    Also ist die einzige möglichkeit Werte mit einer CSV auszugeben.
    Inhalt der CSV:

    Datum,Zeit,TT Wohnz.,TT Keller,TT Schlaf,TT Winterg.,TT Büro,TT Aussen,Temp. Wind,Windchill X,Diff Temp.,RF innen,RF Keller,RF Schlaf,RF Winterg.,RF Büro,RF Aussen,Feuchte 15,Luftdruck,Regen,Wind,Richtung,Sonnenschein,Taupunkt,Windchill,Windböen
    ,,°C,°C,°C,°C,°C,°C,°C,°C,°C,%,%,%,%,%,%,%,hPa,l/m²,kts,°,min,°C,°C,kts
    28.01.2023,19:50,22.6,17.7,17.8,8.5,20.7,3.0,2.0,0.0,0.0,50,41,53,56,43,92,0,1035.3,0.000,0.0,180,0,1.8,0.0,0.0
    

    Nun habe ich durch Suchen ein Script gefunden:

    const fs = require("fs");
    const {parse} = require("csv-parse");
    
    const results = [];
    
    fs.createReadStream("/home/ralf/1.csv").pipe(parse({
       comment: '#',
       columns: true,
    })).on('data', (data) => {
       results.push(data)
    }).on('end', () => {
       console.log(results); 
        
    })
    

    was mir die Daten einliest.

    19:48:56.434	info	javascript.0 (20382) script.js.Tests.test: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
    19:48:56.449	info	javascript.0 (20382) script.js.Tests.test: [{'Datum':'','Zeit':'','TT Wohnz.':'�C','TT Keller':'�C','TT Schlaf':'�C','TT Winterg.':'�C','TT B�ro':'�C','TT Aussen':'�C','Temp. Wind':'�C','Windchill X':'�C','Diff Temp.':'�C','RF innen':'%','RF Keller':'%','RF Schlaf':'%','RF Winterg.':'%','RF B�ro':'%','RF Aussen':'%','Feuchte 15':'%','Luftdruck':'hPa','Regen':'l/m�','Wind':'kts','Richtung':'�','Sonnenschein':'min','Taupunkt':'�C','Windchill':'�C','Windb�en':'kts'},{'Datum':'28.01.2023','Zeit':'19:50','TT Wohnz.':'22.6','TT Keller':'17.7','TT Schlaf':'17.8','TT Winterg.':'8.5','TT B�ro':'20.7','TT Aussen':'3.0','Temp. Wind':'2.0','Windchill X':'0.0','Diff Temp.':'0.0','RF innen':'50','RF Keller':'41','RF Schlaf':'53','RF Winterg.':'56','RF B�ro':'43','RF Aussen':'92','Feuchte 15':'0','Luftdruck':'1035.3','Regen':'0.000','Wind':'0.0','Richtung':'180','Sonnenschein':'0','Taupunkt':'1.8','Windchill':'0.0','Windb�en':'0.0'}]
    

    Jetzt mein Problem wie bekomme ich die Daten z.b. in Objekte: 0_userdata.0.Wetter .... eingefügt.

    Mein grosses Problem ist wenn irgendwo ein Wert ist, ihn in IOB einzubauen, damit man Ihn weiterverarbeiten kann. Für alles was ein Adapter hat ist es meist kein Problem, aber eine Hilfe für einen Wert denn man irgendwo generiert hat bekommt man über Google nicht. Einen einfachen weg nur. Meist liesst man etwas versteht aber nur Bahnhof, weil sich dort Wissende unterhalten.

    Ich habe einen Threat gefunden, wo aber nur die hälfte gepostet wurde:
    csv-auslesen

    Mal gucken was kommt.

    Danke fürs lesen.;)

    Tschö

    HomoranH 1 Antwort Letzte Antwort
    0
    • G geophysiker

      Moin, Moin

      Ich mache schon seit Jahren erst mit Fhem dann mit IOB (Win) und jetzt mit IOB Raspi rum.
      Ich habe es in den ganzen Jahren nicht geschafft meine Wetterdaten einzupflegen. Auch bei IOB gibt es mehr Suchtreffer bei CSV Export als bei Import.
      Ich kann nicht Programmieren da fehlt mir ein Gen zu.;-)) Proggies verbiegen geht manchmal.;-)
      Diese Wettersoftware wird nicht mehr weiterentwickelt aber am Leben gehalten. (WSWIN)
      Also ist die einzige möglichkeit Werte mit einer CSV auszugeben.
      Inhalt der CSV:

      Datum,Zeit,TT Wohnz.,TT Keller,TT Schlaf,TT Winterg.,TT Büro,TT Aussen,Temp. Wind,Windchill X,Diff Temp.,RF innen,RF Keller,RF Schlaf,RF Winterg.,RF Büro,RF Aussen,Feuchte 15,Luftdruck,Regen,Wind,Richtung,Sonnenschein,Taupunkt,Windchill,Windböen
      ,,°C,°C,°C,°C,°C,°C,°C,°C,°C,%,%,%,%,%,%,%,hPa,l/m²,kts,°,min,°C,°C,kts
      28.01.2023,19:50,22.6,17.7,17.8,8.5,20.7,3.0,2.0,0.0,0.0,50,41,53,56,43,92,0,1035.3,0.000,0.0,180,0,1.8,0.0,0.0
      

      Nun habe ich durch Suchen ein Script gefunden:

      const fs = require("fs");
      const {parse} = require("csv-parse");
      
      const results = [];
      
      fs.createReadStream("/home/ralf/1.csv").pipe(parse({
         comment: '#',
         columns: true,
      })).on('data', (data) => {
         results.push(data)
      }).on('end', () => {
         console.log(results); 
          
      })
      

      was mir die Daten einliest.

      19:48:56.434	info	javascript.0 (20382) script.js.Tests.test: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
      19:48:56.449	info	javascript.0 (20382) script.js.Tests.test: [{'Datum':'','Zeit':'','TT Wohnz.':'�C','TT Keller':'�C','TT Schlaf':'�C','TT Winterg.':'�C','TT B�ro':'�C','TT Aussen':'�C','Temp. Wind':'�C','Windchill X':'�C','Diff Temp.':'�C','RF innen':'%','RF Keller':'%','RF Schlaf':'%','RF Winterg.':'%','RF B�ro':'%','RF Aussen':'%','Feuchte 15':'%','Luftdruck':'hPa','Regen':'l/m�','Wind':'kts','Richtung':'�','Sonnenschein':'min','Taupunkt':'�C','Windchill':'�C','Windb�en':'kts'},{'Datum':'28.01.2023','Zeit':'19:50','TT Wohnz.':'22.6','TT Keller':'17.7','TT Schlaf':'17.8','TT Winterg.':'8.5','TT B�ro':'20.7','TT Aussen':'3.0','Temp. Wind':'2.0','Windchill X':'0.0','Diff Temp.':'0.0','RF innen':'50','RF Keller':'41','RF Schlaf':'53','RF Winterg.':'56','RF B�ro':'43','RF Aussen':'92','Feuchte 15':'0','Luftdruck':'1035.3','Regen':'0.000','Wind':'0.0','Richtung':'180','Sonnenschein':'0','Taupunkt':'1.8','Windchill':'0.0','Windb�en':'0.0'}]
      

      Jetzt mein Problem wie bekomme ich die Daten z.b. in Objekte: 0_userdata.0.Wetter .... eingefügt.

      Mein grosses Problem ist wenn irgendwo ein Wert ist, ihn in IOB einzubauen, damit man Ihn weiterverarbeiten kann. Für alles was ein Adapter hat ist es meist kein Problem, aber eine Hilfe für einen Wert denn man irgendwo generiert hat bekommt man über Google nicht. Einen einfachen weg nur. Meist liesst man etwas versteht aber nur Bahnhof, weil sich dort Wissende unterhalten.

      Ich habe einen Threat gefunden, wo aber nur die hälfte gepostet wurde:
      csv-auslesen

      Mal gucken was kommt.

      Danke fürs lesen.;)

      Tschö

      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von Homoran
      #2

      @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

      Ich kann nicht Programmieren da fehlt mir ein Gen zu.;-))

      Warum dann hier unter Javascript?
      es gibt doch auch andere, grafische Logikmaschinen.
      Und als Geophysiker sollte es beindir doch nicht am logischen, strukturierten Denken hapern.

      @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

      Meist liesst man etwas versteht aber nur Bahnhof, weil sich dort Wissende unterhalten.

      Hier wird man dich schon an die Hand nehmen!

      @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

      Jetzt mein Problem wie bekomme ich die Daten z.b. in Objekte: 0_userdata.0.Wetter .... eingefügt.

      das dürfte das geringste Problem sein.

      Die Antwort scheint ein Array mit einem JSON zu sein.
      Screenshot_20230521-202248_Firefox.jpg

      Damit sollte es zerlegbar sein.
      Allerdings sind die Sonderzeichen falsch konvertiert
      und Einheiten und die dazugehörigen Werte sind in 2 verschiedenen JSONs

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      G 1 Antwort Letzte Antwort
      0
      • HomoranH Homoran

        @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

        Ich kann nicht Programmieren da fehlt mir ein Gen zu.;-))

        Warum dann hier unter Javascript?
        es gibt doch auch andere, grafische Logikmaschinen.
        Und als Geophysiker sollte es beindir doch nicht am logischen, strukturierten Denken hapern.

        @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

        Meist liesst man etwas versteht aber nur Bahnhof, weil sich dort Wissende unterhalten.

        Hier wird man dich schon an die Hand nehmen!

        @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

        Jetzt mein Problem wie bekomme ich die Daten z.b. in Objekte: 0_userdata.0.Wetter .... eingefügt.

        das dürfte das geringste Problem sein.

        Die Antwort scheint ein Array mit einem JSON zu sein.
        Screenshot_20230521-202248_Firefox.jpg

        Damit sollte es zerlegbar sein.
        Allerdings sind die Sonderzeichen falsch konvertiert
        und Einheiten und die dazugehörigen Werte sind in 2 verschiedenen JSONs

        G Offline
        G Offline
        geophysiker
        schrieb am zuletzt editiert von geophysiker
        #3

        @homoran said in Wetterstationsdaten per csv in IOB einpflegen (importieren):

        @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

        Ich kann nicht Programmieren da fehlt mir ein Gen zu.;-))

        Warum dann hier unter Javascript?

        Weil ich beim Suchmaschinen horror als einziges csv-parse gefunden habe und etliche Infos das es unter Blockly nicht geht. Auch NodeRed würde gehen.

        es gibt doch auch andere, grafische Logikmaschinen.
        Und als Geophysiker sollte es beindir doch nicht am logischen, strukturierten Denken hapern.

        Mit dem Alter lässt es nach.:((

        @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

        Meist liesst man etwas versteht aber nur Bahnhof, weil sich dort Wissende unterhalten.

        Hier wird man dich schon an die Hand nehmen!

        Hört sich gut an!

        @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

        Jetzt mein Problem wie bekomme ich die Daten z.b. in Objekte: 0_userdata.0.Wetter .... eingefügt.

        das dürfte das geringste Problem sein.

        Da sind wir wieder bei den wissenden.;-))

        Die Antwort scheint ein Array mit einem JSON zu sein.
        Screenshot_20230521-202248_Firefox.jpg

        Sieht ja schon spannend aus.

        Damit sollte es zerlegbar sein.
        Allerdings sind die Sonderzeichen falsch konvertiert

        Ist mir schon aufgefallen. Im MidnightCommander sind sie I.O. also verbastellt IOB da was.
        Das kann man in den Objekten ja zurechtrücken.

        und Einheiten und die dazugehörigen Werte sind in 2 verschiedenen JSONs

        Ägypten
        (JSON (JavaScript Object Notation))

        Tschö, Ralf

        HomoranH 1 Antwort Letzte Antwort
        0
        • G geophysiker

          @homoran said in Wetterstationsdaten per csv in IOB einpflegen (importieren):

          @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

          Ich kann nicht Programmieren da fehlt mir ein Gen zu.;-))

          Warum dann hier unter Javascript?

          Weil ich beim Suchmaschinen horror als einziges csv-parse gefunden habe und etliche Infos das es unter Blockly nicht geht. Auch NodeRed würde gehen.

          es gibt doch auch andere, grafische Logikmaschinen.
          Und als Geophysiker sollte es beindir doch nicht am logischen, strukturierten Denken hapern.

          Mit dem Alter lässt es nach.:((

          @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

          Meist liesst man etwas versteht aber nur Bahnhof, weil sich dort Wissende unterhalten.

          Hier wird man dich schon an die Hand nehmen!

          Hört sich gut an!

          @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

          Jetzt mein Problem wie bekomme ich die Daten z.b. in Objekte: 0_userdata.0.Wetter .... eingefügt.

          das dürfte das geringste Problem sein.

          Da sind wir wieder bei den wissenden.;-))

          Die Antwort scheint ein Array mit einem JSON zu sein.
          Screenshot_20230521-202248_Firefox.jpg

          Sieht ja schon spannend aus.

          Damit sollte es zerlegbar sein.
          Allerdings sind die Sonderzeichen falsch konvertiert

          Ist mir schon aufgefallen. Im MidnightCommander sind sie I.O. also verbastellt IOB da was.
          Das kann man in den Objekten ja zurechtrücken.

          und Einheiten und die dazugehörigen Werte sind in 2 verschiedenen JSONs

          Ägypten
          (JSON (JavaScript Object Notation))

          Tschö, Ralf

          HomoranH Nicht stören
          HomoranH Nicht stören
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von
          #4

          @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

          Tschö

          is nit wohr!
          sach ens!
          Was willst du mit den Daten machen, wenn du sie in Datenpunkte gepackt hast?
          Wie bekommst du diese Daten importiert?
          sofort online oder manuell im Nachgang?

          mit einfachsten Mitteln kann man nämlich nicht den Werten vergangene Timestamps zuordnen.

          @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

          Da sind wir wieder bei den wissenden.;-))

          nöö, nicht wirklich.

          Erst das zerlegen, dann (in Blockly den Block) aktualisiere Datenpunktxy mit extrahiertem Wert.

          @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

          das es unter Blockly nicht geht.

          Sollte mit so was wie Attribut TT Schlaf von Objekt IMPORT gehn

          @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

          Mit dem Alter lässt es nach.:((

          nicht wirklich!

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          G 1 Antwort Letzte Antwort
          0
          • HomoranH Homoran

            @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

            Tschö

            is nit wohr!
            sach ens!
            Was willst du mit den Daten machen, wenn du sie in Datenpunkte gepackt hast?
            Wie bekommst du diese Daten importiert?
            sofort online oder manuell im Nachgang?

            mit einfachsten Mitteln kann man nämlich nicht den Werten vergangene Timestamps zuordnen.

            @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

            Da sind wir wieder bei den wissenden.;-))

            nöö, nicht wirklich.

            Erst das zerlegen, dann (in Blockly den Block) aktualisiere Datenpunktxy mit extrahiertem Wert.

            @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

            das es unter Blockly nicht geht.

            Sollte mit so was wie Attribut TT Schlaf von Objekt IMPORT gehn

            @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

            Mit dem Alter lässt es nach.:((

            nicht wirklich!

            G Offline
            G Offline
            geophysiker
            schrieb am zuletzt editiert von
            #5

            Was willst du mit den Daten machen, wenn du sie in Datenpunkte gepackt hast?

            Die Wetterstation erstellt alle 5 min eine neue csv, die liegt auf einem gemountetem Path. Von dort will ich sie alle 5 min in Iobroker einlesen (cron) ,in die Datenbank packen Influxdb und mariadb (laufen beide auf der synology) und Grafiken erstellen (echarts). Grafana kenn ich nix von.;-)
            Das Dashboard mit aktuellen Daten befüllen.

            mit einfachsten Mitteln kann man nämlich nicht den Werten vergangene Timestamps zuordnen.

            In der csv ist ja ein Zeitwert.

            @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

            Da sind wir wieder bei den wissenden.;-))

            nöö, nicht wirklich.

            Erst das zerlegen, dann (in Blockly den Block) aktualisiere Datenpunktxy mit extrahiertem Wert.

            @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

            das es unter Blockly nicht geht.

            Sollte mit so was wie Attribut TT Schlaf von Objekt IMPORT gehn

            sagt mir nix.;(

            nicht wirklich!
            bin jetzt schon 63.;-)

            Tschö, Ralf

            mickymM HomoranH 2 Antworten Letzte Antwort
            0
            • G geophysiker

              Was willst du mit den Daten machen, wenn du sie in Datenpunkte gepackt hast?

              Die Wetterstation erstellt alle 5 min eine neue csv, die liegt auf einem gemountetem Path. Von dort will ich sie alle 5 min in Iobroker einlesen (cron) ,in die Datenbank packen Influxdb und mariadb (laufen beide auf der synology) und Grafiken erstellen (echarts). Grafana kenn ich nix von.;-)
              Das Dashboard mit aktuellen Daten befüllen.

              mit einfachsten Mitteln kann man nämlich nicht den Werten vergangene Timestamps zuordnen.

              In der csv ist ja ein Zeitwert.

              @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

              Da sind wir wieder bei den wissenden.;-))

              nöö, nicht wirklich.

              Erst das zerlegen, dann (in Blockly den Block) aktualisiere Datenpunktxy mit extrahiertem Wert.

              @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

              das es unter Blockly nicht geht.

              Sollte mit so was wie Attribut TT Schlaf von Objekt IMPORT gehn

              sagt mir nix.;(

              nicht wirklich!
              bin jetzt schon 63.;-)

              Tschö, Ralf

              mickymM Online
              mickymM Online
              mickym
              Most Active
              schrieb am zuletzt editiert von mickym
              #6

              @geophysiker Mit NodeRed hast Du eine CSV Node, die Dir ein Objekt macht und mit meinem Flow kannst Du dann Datenpunkte schreiben.

              So ich habe mal Deine Daten unter Windows genutzt:

              4bd85b0e-55a0-4af2-b27c-d07b2354a6e7-image.png

              Du siehst gibt ein Objekt - dass man dann easy mit meinem Flow in Datenpunkte schreiben kann.

              Leider sind in der CSV diese Punkte als Abkürzungen drin und die darf es in Datenpfaden nicht geben. Ich habe den Subflow aber nun dahingehend bearbeitet, dass unzulässige Punkte in Objekteigenschaften (rot markiert) gegen Unterstriche ersetzt werden.

              14549ff7-3fa5-4c3e-8255-b2f1083e4ed7-image.png

              [
                 {
                     "id": "6e802f1553b18149",
                     "type": "subflow",
                     "name": "JSON or Obj to IOBroker",
                     "info": "# Creates an IOBroker tree\n\nThis node creates an IOBroker tree out of an Java-Object or JSON String.\n\nThe object tree will be created under 0_userdata.0\nIn addition to the JSON-String or Java Object as `msg.payload` it is necessary to specify a `msg.top` properity in addition to the msg-Object.\n\nThe object tree will be created under 0_userdata.0\n\nExisting `msg.topic` entries will be deleted.\nAn iobroker-out node has to be appended to this subflow node. It is not part of the subflow itself. No topic should be specified in the iobroker out node.\n\nIs `msg.top` property isn't defined, the `top` property of the subflow-node is used. \n\nIn the properties of the subflow node a new property `keepTopic` has been added. Default is _false_ to keep the current behaviour. If set to _true_ then the originial topic will be placed between the `top` property of the subflow node and the property of the analyzed JSON object.\n\n**Attention:**\nIf msg.top and top is empty, all msg.topics (msg.topic) will be directly prefixed with 0_userdata.0. . \n\n**Update 13.09.2022:**\nSpaces in topics of objects are no longer replaced with underscores in objects. No differences between all data types.\n\n# Erstellt einen Objektbaum im ioBroker\n\nDiese Node erstellt einen Objektbaum im ioBroker aus einem JAVA Objekt bzw. einem JSON String. \n\nDer Baum wird in jedem Fall unter 0_userdata.0 erstellt und zwar unter dem Topic der in` msg.top` mitgegeben wurde. In der `msg.payload` befindet sich dann der JSON String oder das entsprechende Objekt.\n\nExistierende `msg.topic `Einträge werden gelöscht.\nEin entsprechende iobroker-out Node muss an den Flow angehängt werden. Sie ist nicht Bestandteil des Subflows. In dieser iobroker-out Node darf kein Topic angegeben werden. \n\nFalls msg.top nicht definiert wurde, wird der `top`-Wert der Subflow-Node verwendet.\n\nIn den Eigenschaften der Subflow-Node wurde ein neuer Parameter `keepTopic` hinzugefügt. Standardwert ist _false_, um das bisherige Verhalten beizubehalten. Setzt man die Eigenschaft auf _true_, dann wird das originale Topic zwischen der `top` Eigenschaft der Subflow-Node und Eigenschaft des analysierten JSON Objektes eingefügt.\n\n**Achtung:**\nWenn top und msg.top leer ist, werden alle msg.topics (msg.topic) direkt unter dem Präfix 0_userdata.0., angelegt bzw. ausgegeben. \n\n**Update 13.09.2022:**\nLeerzeichen werden in Topics von Objekten nicht mehr durch Unterstriche ersetzt. Es gibt keine Unterschiede mehr zwischen den Datentypen.",
                     "category": "",
                     "in": [
                         {
                             "x": 60,
                             "y": 160,
                             "wires": [
                                 {
                                     "id": "554b8c663bcb46c2"
                                 }
                             ]
                         }
                     ],
                     "out": [
                         {
                             "x": 2620,
                             "y": 280,
                             "wires": [
                                 {
                                     "id": "0962842ebd23e0d7",
                                     "port": 0
                                 }
                             ]
                         }
                     ],
                     "env": [
                         {
                             "name": "top",
                             "type": "str",
                             "value": "objRoot"
                         },
                         {
                             "name": "keepTopic",
                             "type": "bool",
                             "value": "false"
                         }
                     ],
                     "meta": {},
                     "color": "#E2D96E",
                     "icon": "node-red/batch.svg"
                 },
                 {
                     "id": "3e11e8338f694832",
                     "type": "split",
                     "z": "6e802f1553b18149",
                     "name": "split object",
                     "splt": "\\n",
                     "spltType": "str",
                     "arraySplt": 1,
                     "arraySpltType": "len",
                     "stream": false,
                     "addname": "key",
                     "x": 1370,
                     "y": 160,
                     "wires": [
                         [
                             "0562a4249c8b856b"
                         ]
                     ]
                 },
                 {
                     "id": "0562a4249c8b856b",
                     "type": "change",
                     "z": "6e802f1553b18149",
                     "name": "add key to topic",
                     "rules": [
                         {
                             "t": "set",
                             "p": "stateName",
                             "pt": "msg",
                             "to": "key",
                             "tot": "msg"
                         },
                         {
                             "t": "change",
                             "p": "key",
                             "pt": "msg",
                             "from": ".",
                             "fromt": "str",
                             "to": "_",
                             "tot": "str"
                         },
                         {
                             "t": "set",
                             "p": "topic",
                             "pt": "msg",
                             "to": "topic  & '.' & key",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 1560,
                     "y": 160,
                     "wires": [
                         [
                             "ddc90985bef0fafa"
                         ]
                     ]
                 },
                 {
                     "id": "ddc90985bef0fafa",
                     "type": "switch",
                     "z": "6e802f1553b18149",
                     "name": "is type?",
                     "property": "payload",
                     "propertyType": "msg",
                     "rules": [
                         {
                             "t": "istype",
                             "v": "array",
                             "vt": "array"
                         },
                         {
                             "t": "istype",
                             "v": "object",
                             "vt": "object"
                         },
                         {
                             "t": "else"
                         }
                     ],
                     "checkall": "true",
                     "repair": false,
                     "outputs": 3,
                     "x": 1740,
                     "y": 160,
                     "wires": [
                         [
                             "bfce19b206660fbe"
                         ],
                         [
                             "3e11e8338f694832"
                         ],
                         [
                             "1a8c03d866b85b12"
                         ]
                     ]
                 },
                 {
                     "id": "bfce19b206660fbe",
                     "type": "split",
                     "z": "6e802f1553b18149",
                     "name": "split array",
                     "splt": "\\n",
                     "spltType": "str",
                     "arraySplt": 1,
                     "arraySpltType": "len",
                     "stream": false,
                     "addname": "",
                     "x": 780,
                     "y": 280,
                     "wires": [
                         [
                             "e89927810c6d75ec"
                         ]
                     ]
                 },
                 {
                     "id": "e89927810c6d75ec",
                     "type": "change",
                     "z": "6e802f1553b18149",
                     "name": "add index to topic",
                     "rules": [
                         {
                             "t": "set",
                             "p": "topic",
                             "pt": "msg",
                             "to": "topic  & '.' & parts.index",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 970,
                     "y": 280,
                     "wires": [
                         [
                             "a4d1a5d04564dc77"
                         ]
                     ]
                 },
                 {
                     "id": "f5d52c6a57d08904",
                     "type": "change",
                     "z": "6e802f1553b18149",
                     "name": "finalize msg.topic",
                     "rules": [
                         {
                             "t": "set",
                             "p": "top",
                             "pt": "msg",
                             "to": "'0_userdata.0.' & top",
                             "tot": "jsonata"
                         },
                         {
                             "t": "set",
                             "p": "topic",
                             "pt": "msg",
                             "to": "top & '.' & topic",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 2170,
                     "y": 240,
                     "wires": [
                         [
                             "0962842ebd23e0d7"
                         ]
                     ]
                 },
                 {
                     "id": "1a8c03d866b85b12",
                     "type": "switch",
                     "z": "6e802f1553b18149",
                     "name": "is msg.top != null",
                     "property": "top",
                     "propertyType": "msg",
                     "rules": [
                         {
                             "t": "nnull"
                         },
                         {
                             "t": "null"
                         }
                     ],
                     "checkall": "true",
                     "repair": false,
                     "outputs": 2,
                     "x": 1950,
                     "y": 280,
                     "wires": [
                         [
                             "f5d52c6a57d08904"
                         ],
                         [
                             "74c895ce724750de"
                         ]
                     ]
                 },
                 {
                     "id": "e023fe88445ce43e",
                     "type": "change",
                     "z": "6e802f1553b18149",
                     "name": "",
                     "rules": [
                         {
                             "t": "delete",
                             "p": "topic",
                             "pt": "msg"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 350,
                     "y": 200,
                     "wires": [
                         [
                             "3649300b4c233b10"
                         ]
                     ]
                 },
                 {
                     "id": "3649300b4c233b10",
                     "type": "switch",
                     "z": "6e802f1553b18149",
                     "name": "is type?",
                     "property": "payload",
                     "propertyType": "msg",
                     "rules": [
                         {
                             "t": "istype",
                             "v": "json",
                             "vt": "json"
                         },
                         {
                             "t": "istype",
                             "v": "array",
                             "vt": "array"
                         },
                         {
                             "t": "istype",
                             "v": "object",
                             "vt": "object"
                         },
                         {
                             "t": "else"
                         }
                     ],
                     "checkall": "true",
                     "repair": false,
                     "outputs": 4,
                     "x": 600,
                     "y": 160,
                     "wires": [
                         [
                             "fc7913a8524badb7"
                         ],
                         [
                             "bfce19b206660fbe"
                         ],
                         [
                             "3e11e8338f694832"
                         ],
                         [
                             "9ac3cc3681e8b6c6"
                         ]
                     ]
                 },
                 {
                     "id": "1b8480cd2df7ba3f",
                     "type": "comment",
                     "z": "6e802f1553b18149",
                     "name": "Array",
                     "info": "",
                     "x": 600,
                     "y": 280,
                     "wires": []
                 },
                 {
                     "id": "b3541807672be040",
                     "type": "comment",
                     "z": "6e802f1553b18149",
                     "name": "object",
                     "info": "",
                     "x": 1340,
                     "y": 100,
                     "wires": []
                 },
                 {
                     "id": "a4d1a5d04564dc77",
                     "type": "switch",
                     "z": "6e802f1553b18149",
                     "name": "is type?",
                     "property": "payload",
                     "propertyType": "msg",
                     "rules": [
                         {
                             "t": "istype",
                             "v": "object",
                             "vt": "object"
                         },
                         {
                             "t": "istype",
                             "v": "array",
                             "vt": "array"
                         },
                         {
                             "t": "else"
                         }
                     ],
                     "checkall": "true",
                     "repair": false,
                     "outputs": 3,
                     "x": 1160,
                     "y": 280,
                     "wires": [
                         [
                             "3e11e8338f694832"
                         ],
                         [
                             "bfce19b206660fbe"
                         ],
                         [
                             "a096a93bb82b7a93"
                         ]
                     ]
                 },
                 {
                     "id": "74c895ce724750de",
                     "type": "change",
                     "z": "6e802f1553b18149",
                     "name": "finalize msg.topic",
                     "rules": [
                         {
                             "t": "set",
                             "p": "top",
                             "pt": "msg",
                             "to": "top",
                             "tot": "env"
                         },
                         {
                             "t": "set",
                             "p": "top",
                             "pt": "msg",
                             "to": "'0_userdata.0.' & top",
                             "tot": "jsonata"
                         },
                         {
                             "t": "set",
                             "p": "topic",
                             "pt": "msg",
                             "to": "top & '.' & topic",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 2170,
                     "y": 320,
                     "wires": [
                         [
                             "0962842ebd23e0d7"
                         ]
                     ]
                 },
                 {
                     "id": "554b8c663bcb46c2",
                     "type": "switch",
                     "z": "6e802f1553b18149",
                     "name": "",
                     "property": "keepTopic",
                     "propertyType": "env",
                     "rules": [
                         {
                             "t": "true"
                         },
                         {
                             "t": "false"
                         }
                     ],
                     "checkall": "true",
                     "repair": false,
                     "outputs": 2,
                     "x": 170,
                     "y": 160,
                     "wires": [
                         [
                             "e30ba9f0483285e4"
                         ],
                         [
                             "e023fe88445ce43e"
                         ]
                     ]
                 },
                 {
                     "id": "e30ba9f0483285e4",
                     "type": "change",
                     "z": "6e802f1553b18149",
                     "name": "",
                     "rules": [
                         {
                             "t": "change",
                             "p": "topic",
                             "pt": "msg",
                             "from": "/",
                             "fromt": "str",
                             "to": ".",
                             "tot": "str"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 350,
                     "y": 120,
                     "wires": [
                         [
                             "3649300b4c233b10"
                         ]
                     ]
                 },
                 {
                     "id": "0962842ebd23e0d7",
                     "type": "change",
                     "z": "6e802f1553b18149",
                     "name": "translate invalid chars in topic",
                     "rules": [
                         {
                             "t": "change",
                             "p": "topic",
                             "pt": "msg",
                             "from": "..",
                             "fromt": "str",
                             "to": ".",
                             "tot": "str"
                         },
                         {
                             "t": "change",
                             "p": "topic",
                             "pt": "msg",
                             "from": "€",
                             "fromt": "str",
                             "to": "EUR",
                             "tot": "str"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 2430,
                     "y": 280,
                     "wires": [
                         []
                     ]
                 },
                 {
                     "id": "9ac3cc3681e8b6c6",
                     "type": "change",
                     "z": "6e802f1553b18149",
                     "name": "set topic, if empty",
                     "rules": [
                         {
                             "t": "set",
                             "p": "topic",
                             "pt": "msg",
                             "to": "topic ? topic : $type(payload)\t",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 950,
                     "y": 200,
                     "wires": [
                         [
                             "a096a93bb82b7a93"
                         ]
                     ]
                 },
                 {
                     "id": "fc7913a8524badb7",
                     "type": "json",
                     "z": "6e802f1553b18149",
                     "name": "",
                     "property": "payload",
                     "action": "obj",
                     "pretty": false,
                     "x": 750,
                     "y": 100,
                     "wires": [
                         [
                             "d9e7bdd4c48a8aa1"
                         ]
                     ]
                 },
                 {
                     "id": "d9e7bdd4c48a8aa1",
                     "type": "switch",
                     "z": "6e802f1553b18149",
                     "name": "is type?",
                     "property": "payload",
                     "propertyType": "msg",
                     "rules": [
                         {
                             "t": "istype",
                             "v": "array",
                             "vt": "array"
                         },
                         {
                             "t": "istype",
                             "v": "object",
                             "vt": "object"
                         },
                         {
                             "t": "else"
                         }
                     ],
                     "checkall": "true",
                     "repair": false,
                     "outputs": 3,
                     "x": 900,
                     "y": 100,
                     "wires": [
                         [
                             "1520be42bcc2145e"
                         ],
                         [
                             "1520be42bcc2145e"
                         ],
                         [
                             "9ac3cc3681e8b6c6"
                         ]
                     ]
                 },
                 {
                     "id": "a096a93bb82b7a93",
                     "type": "junction",
                     "z": "6e802f1553b18149",
                     "x": 1380,
                     "y": 280,
                     "wires": [
                         [
                             "1a8c03d866b85b12"
                         ]
                     ]
                 },
                 {
                     "id": "1520be42bcc2145e",
                     "type": "junction",
                     "z": "6e802f1553b18149",
                     "x": 480,
                     "y": 20,
                     "wires": [
                         [
                             "3649300b4c233b10"
                         ]
                     ]
                 },
                 {
                     "id": "c53b8bc1f4825088",
                     "type": "file in",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "filename": "/home/iobroker/Wetterdaten.csv",
                     "filenameType": "str",
                     "format": "utf8",
                     "chunk": false,
                     "sendError": false,
                     "encoding": "none",
                     "allProps": false,
                     "x": 350,
                     "y": 3560,
                     "wires": [
                         [
                             "ce8af10a11f7acd2"
                         ]
                     ]
                 },
                 {
                     "id": "f9e3cc13fc60fa15",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "Start",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "true",
                     "payloadType": "bool",
                     "x": 130,
                     "y": 3560,
                     "wires": [
                         [
                             "c53b8bc1f4825088"
                         ]
                     ]
                 },
                 {
                     "id": "0dfca42ed4a97466",
                     "type": "debug",
                     "z": "7e6af0015415146d",
                     "name": "Wetterdaten",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 950,
                     "y": 3520,
                     "wires": []
                 },
                 {
                     "id": "ce8af10a11f7acd2",
                     "type": "csv",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "sep": ",",
                     "hdrin": true,
                     "hdrout": "none",
                     "multi": "mult",
                     "ret": "\\r\\n",
                     "temp": "",
                     "skip": "0",
                     "strings": true,
                     "include_empty_strings": "",
                     "include_null_values": "",
                     "x": 570,
                     "y": 3560,
                     "wires": [
                         [
                             "f45288436a76b70d"
                         ]
                     ]
                 },
                 {
                     "id": "f45288436a76b70d",
                     "type": "change",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload[1]",
                             "tot": "msg"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 750,
                     "y": 3560,
                     "wires": [
                         [
                             "0dfca42ed4a97466",
                             "139934be8278f7a1"
                         ]
                     ]
                 },
                 {
                     "id": "e6f4846bd92b1225",
                     "type": "ioBroker out",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "topic": "",
                     "ack": "true",
                     "autoCreate": "true",
                     "stateName": "",
                     "role": "",
                     "payloadType": "",
                     "readonly": "",
                     "stateUnit": "",
                     "stateMin": "",
                     "stateMax": "",
                     "x": 1220,
                     "y": 3560,
                     "wires": []
                 },
                 {
                     "id": "139934be8278f7a1",
                     "type": "subflow:6e802f1553b18149",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "env": [
                         {
                             "name": "top",
                             "value": "Wetterdaten",
                             "type": "str"
                         }
                     ],
                     "x": 990,
                     "y": 3560,
                     "wires": [
                         [
                             "e6f4846bd92b1225"
                         ]
                     ]
                 }
              ]
              

              Die CSV Datei wird momentan aus CSV in das Homeverzeichnis des iobrokers gelesen, ansonsten musst halt schauen, dass die Berechtigungen stimmen.

              1aafe3a0-b582-48fb-b8a6-ca1dee49025a-image.png

              Ggf. musst Du auch noch das Zeilentrennzeichen ändern. Da ich das mit Deiner CSV Datei erst unter Windows getestet habe, um zu sehen, ob das funktioniert - da die 1. Zeile mit den Units ignoriert werden muss.

              Das musst ggf. dann halt hier umstellen:
              d27a5568-ac00-4850-8561-def5dd02eef1-image.png

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              G 1 Antwort Letzte Antwort
              0
              • mickymM mickym

                @geophysiker Mit NodeRed hast Du eine CSV Node, die Dir ein Objekt macht und mit meinem Flow kannst Du dann Datenpunkte schreiben.

                So ich habe mal Deine Daten unter Windows genutzt:

                4bd85b0e-55a0-4af2-b27c-d07b2354a6e7-image.png

                Du siehst gibt ein Objekt - dass man dann easy mit meinem Flow in Datenpunkte schreiben kann.

                Leider sind in der CSV diese Punkte als Abkürzungen drin und die darf es in Datenpfaden nicht geben. Ich habe den Subflow aber nun dahingehend bearbeitet, dass unzulässige Punkte in Objekteigenschaften (rot markiert) gegen Unterstriche ersetzt werden.

                14549ff7-3fa5-4c3e-8255-b2f1083e4ed7-image.png

                [
                   {
                       "id": "6e802f1553b18149",
                       "type": "subflow",
                       "name": "JSON or Obj to IOBroker",
                       "info": "# Creates an IOBroker tree\n\nThis node creates an IOBroker tree out of an Java-Object or JSON String.\n\nThe object tree will be created under 0_userdata.0\nIn addition to the JSON-String or Java Object as `msg.payload` it is necessary to specify a `msg.top` properity in addition to the msg-Object.\n\nThe object tree will be created under 0_userdata.0\n\nExisting `msg.topic` entries will be deleted.\nAn iobroker-out node has to be appended to this subflow node. It is not part of the subflow itself. No topic should be specified in the iobroker out node.\n\nIs `msg.top` property isn't defined, the `top` property of the subflow-node is used. \n\nIn the properties of the subflow node a new property `keepTopic` has been added. Default is _false_ to keep the current behaviour. If set to _true_ then the originial topic will be placed between the `top` property of the subflow node and the property of the analyzed JSON object.\n\n**Attention:**\nIf msg.top and top is empty, all msg.topics (msg.topic) will be directly prefixed with 0_userdata.0. . \n\n**Update 13.09.2022:**\nSpaces in topics of objects are no longer replaced with underscores in objects. No differences between all data types.\n\n# Erstellt einen Objektbaum im ioBroker\n\nDiese Node erstellt einen Objektbaum im ioBroker aus einem JAVA Objekt bzw. einem JSON String. \n\nDer Baum wird in jedem Fall unter 0_userdata.0 erstellt und zwar unter dem Topic der in` msg.top` mitgegeben wurde. In der `msg.payload` befindet sich dann der JSON String oder das entsprechende Objekt.\n\nExistierende `msg.topic `Einträge werden gelöscht.\nEin entsprechende iobroker-out Node muss an den Flow angehängt werden. Sie ist nicht Bestandteil des Subflows. In dieser iobroker-out Node darf kein Topic angegeben werden. \n\nFalls msg.top nicht definiert wurde, wird der `top`-Wert der Subflow-Node verwendet.\n\nIn den Eigenschaften der Subflow-Node wurde ein neuer Parameter `keepTopic` hinzugefügt. Standardwert ist _false_, um das bisherige Verhalten beizubehalten. Setzt man die Eigenschaft auf _true_, dann wird das originale Topic zwischen der `top` Eigenschaft der Subflow-Node und Eigenschaft des analysierten JSON Objektes eingefügt.\n\n**Achtung:**\nWenn top und msg.top leer ist, werden alle msg.topics (msg.topic) direkt unter dem Präfix 0_userdata.0., angelegt bzw. ausgegeben. \n\n**Update 13.09.2022:**\nLeerzeichen werden in Topics von Objekten nicht mehr durch Unterstriche ersetzt. Es gibt keine Unterschiede mehr zwischen den Datentypen.",
                       "category": "",
                       "in": [
                           {
                               "x": 60,
                               "y": 160,
                               "wires": [
                                   {
                                       "id": "554b8c663bcb46c2"
                                   }
                               ]
                           }
                       ],
                       "out": [
                           {
                               "x": 2620,
                               "y": 280,
                               "wires": [
                                   {
                                       "id": "0962842ebd23e0d7",
                                       "port": 0
                                   }
                               ]
                           }
                       ],
                       "env": [
                           {
                               "name": "top",
                               "type": "str",
                               "value": "objRoot"
                           },
                           {
                               "name": "keepTopic",
                               "type": "bool",
                               "value": "false"
                           }
                       ],
                       "meta": {},
                       "color": "#E2D96E",
                       "icon": "node-red/batch.svg"
                   },
                   {
                       "id": "3e11e8338f694832",
                       "type": "split",
                       "z": "6e802f1553b18149",
                       "name": "split object",
                       "splt": "\\n",
                       "spltType": "str",
                       "arraySplt": 1,
                       "arraySpltType": "len",
                       "stream": false,
                       "addname": "key",
                       "x": 1370,
                       "y": 160,
                       "wires": [
                           [
                               "0562a4249c8b856b"
                           ]
                       ]
                   },
                   {
                       "id": "0562a4249c8b856b",
                       "type": "change",
                       "z": "6e802f1553b18149",
                       "name": "add key to topic",
                       "rules": [
                           {
                               "t": "set",
                               "p": "stateName",
                               "pt": "msg",
                               "to": "key",
                               "tot": "msg"
                           },
                           {
                               "t": "change",
                               "p": "key",
                               "pt": "msg",
                               "from": ".",
                               "fromt": "str",
                               "to": "_",
                               "tot": "str"
                           },
                           {
                               "t": "set",
                               "p": "topic",
                               "pt": "msg",
                               "to": "topic  & '.' & key",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 1560,
                       "y": 160,
                       "wires": [
                           [
                               "ddc90985bef0fafa"
                           ]
                       ]
                   },
                   {
                       "id": "ddc90985bef0fafa",
                       "type": "switch",
                       "z": "6e802f1553b18149",
                       "name": "is type?",
                       "property": "payload",
                       "propertyType": "msg",
                       "rules": [
                           {
                               "t": "istype",
                               "v": "array",
                               "vt": "array"
                           },
                           {
                               "t": "istype",
                               "v": "object",
                               "vt": "object"
                           },
                           {
                               "t": "else"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 3,
                       "x": 1740,
                       "y": 160,
                       "wires": [
                           [
                               "bfce19b206660fbe"
                           ],
                           [
                               "3e11e8338f694832"
                           ],
                           [
                               "1a8c03d866b85b12"
                           ]
                       ]
                   },
                   {
                       "id": "bfce19b206660fbe",
                       "type": "split",
                       "z": "6e802f1553b18149",
                       "name": "split array",
                       "splt": "\\n",
                       "spltType": "str",
                       "arraySplt": 1,
                       "arraySpltType": "len",
                       "stream": false,
                       "addname": "",
                       "x": 780,
                       "y": 280,
                       "wires": [
                           [
                               "e89927810c6d75ec"
                           ]
                       ]
                   },
                   {
                       "id": "e89927810c6d75ec",
                       "type": "change",
                       "z": "6e802f1553b18149",
                       "name": "add index to topic",
                       "rules": [
                           {
                               "t": "set",
                               "p": "topic",
                               "pt": "msg",
                               "to": "topic  & '.' & parts.index",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 970,
                       "y": 280,
                       "wires": [
                           [
                               "a4d1a5d04564dc77"
                           ]
                       ]
                   },
                   {
                       "id": "f5d52c6a57d08904",
                       "type": "change",
                       "z": "6e802f1553b18149",
                       "name": "finalize msg.topic",
                       "rules": [
                           {
                               "t": "set",
                               "p": "top",
                               "pt": "msg",
                               "to": "'0_userdata.0.' & top",
                               "tot": "jsonata"
                           },
                           {
                               "t": "set",
                               "p": "topic",
                               "pt": "msg",
                               "to": "top & '.' & topic",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 2170,
                       "y": 240,
                       "wires": [
                           [
                               "0962842ebd23e0d7"
                           ]
                       ]
                   },
                   {
                       "id": "1a8c03d866b85b12",
                       "type": "switch",
                       "z": "6e802f1553b18149",
                       "name": "is msg.top != null",
                       "property": "top",
                       "propertyType": "msg",
                       "rules": [
                           {
                               "t": "nnull"
                           },
                           {
                               "t": "null"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 2,
                       "x": 1950,
                       "y": 280,
                       "wires": [
                           [
                               "f5d52c6a57d08904"
                           ],
                           [
                               "74c895ce724750de"
                           ]
                       ]
                   },
                   {
                       "id": "e023fe88445ce43e",
                       "type": "change",
                       "z": "6e802f1553b18149",
                       "name": "",
                       "rules": [
                           {
                               "t": "delete",
                               "p": "topic",
                               "pt": "msg"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 350,
                       "y": 200,
                       "wires": [
                           [
                               "3649300b4c233b10"
                           ]
                       ]
                   },
                   {
                       "id": "3649300b4c233b10",
                       "type": "switch",
                       "z": "6e802f1553b18149",
                       "name": "is type?",
                       "property": "payload",
                       "propertyType": "msg",
                       "rules": [
                           {
                               "t": "istype",
                               "v": "json",
                               "vt": "json"
                           },
                           {
                               "t": "istype",
                               "v": "array",
                               "vt": "array"
                           },
                           {
                               "t": "istype",
                               "v": "object",
                               "vt": "object"
                           },
                           {
                               "t": "else"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 4,
                       "x": 600,
                       "y": 160,
                       "wires": [
                           [
                               "fc7913a8524badb7"
                           ],
                           [
                               "bfce19b206660fbe"
                           ],
                           [
                               "3e11e8338f694832"
                           ],
                           [
                               "9ac3cc3681e8b6c6"
                           ]
                       ]
                   },
                   {
                       "id": "1b8480cd2df7ba3f",
                       "type": "comment",
                       "z": "6e802f1553b18149",
                       "name": "Array",
                       "info": "",
                       "x": 600,
                       "y": 280,
                       "wires": []
                   },
                   {
                       "id": "b3541807672be040",
                       "type": "comment",
                       "z": "6e802f1553b18149",
                       "name": "object",
                       "info": "",
                       "x": 1340,
                       "y": 100,
                       "wires": []
                   },
                   {
                       "id": "a4d1a5d04564dc77",
                       "type": "switch",
                       "z": "6e802f1553b18149",
                       "name": "is type?",
                       "property": "payload",
                       "propertyType": "msg",
                       "rules": [
                           {
                               "t": "istype",
                               "v": "object",
                               "vt": "object"
                           },
                           {
                               "t": "istype",
                               "v": "array",
                               "vt": "array"
                           },
                           {
                               "t": "else"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 3,
                       "x": 1160,
                       "y": 280,
                       "wires": [
                           [
                               "3e11e8338f694832"
                           ],
                           [
                               "bfce19b206660fbe"
                           ],
                           [
                               "a096a93bb82b7a93"
                           ]
                       ]
                   },
                   {
                       "id": "74c895ce724750de",
                       "type": "change",
                       "z": "6e802f1553b18149",
                       "name": "finalize msg.topic",
                       "rules": [
                           {
                               "t": "set",
                               "p": "top",
                               "pt": "msg",
                               "to": "top",
                               "tot": "env"
                           },
                           {
                               "t": "set",
                               "p": "top",
                               "pt": "msg",
                               "to": "'0_userdata.0.' & top",
                               "tot": "jsonata"
                           },
                           {
                               "t": "set",
                               "p": "topic",
                               "pt": "msg",
                               "to": "top & '.' & topic",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 2170,
                       "y": 320,
                       "wires": [
                           [
                               "0962842ebd23e0d7"
                           ]
                       ]
                   },
                   {
                       "id": "554b8c663bcb46c2",
                       "type": "switch",
                       "z": "6e802f1553b18149",
                       "name": "",
                       "property": "keepTopic",
                       "propertyType": "env",
                       "rules": [
                           {
                               "t": "true"
                           },
                           {
                               "t": "false"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 2,
                       "x": 170,
                       "y": 160,
                       "wires": [
                           [
                               "e30ba9f0483285e4"
                           ],
                           [
                               "e023fe88445ce43e"
                           ]
                       ]
                   },
                   {
                       "id": "e30ba9f0483285e4",
                       "type": "change",
                       "z": "6e802f1553b18149",
                       "name": "",
                       "rules": [
                           {
                               "t": "change",
                               "p": "topic",
                               "pt": "msg",
                               "from": "/",
                               "fromt": "str",
                               "to": ".",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 350,
                       "y": 120,
                       "wires": [
                           [
                               "3649300b4c233b10"
                           ]
                       ]
                   },
                   {
                       "id": "0962842ebd23e0d7",
                       "type": "change",
                       "z": "6e802f1553b18149",
                       "name": "translate invalid chars in topic",
                       "rules": [
                           {
                               "t": "change",
                               "p": "topic",
                               "pt": "msg",
                               "from": "..",
                               "fromt": "str",
                               "to": ".",
                               "tot": "str"
                           },
                           {
                               "t": "change",
                               "p": "topic",
                               "pt": "msg",
                               "from": "€",
                               "fromt": "str",
                               "to": "EUR",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 2430,
                       "y": 280,
                       "wires": [
                           []
                       ]
                   },
                   {
                       "id": "9ac3cc3681e8b6c6",
                       "type": "change",
                       "z": "6e802f1553b18149",
                       "name": "set topic, if empty",
                       "rules": [
                           {
                               "t": "set",
                               "p": "topic",
                               "pt": "msg",
                               "to": "topic ? topic : $type(payload)\t",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 950,
                       "y": 200,
                       "wires": [
                           [
                               "a096a93bb82b7a93"
                           ]
                       ]
                   },
                   {
                       "id": "fc7913a8524badb7",
                       "type": "json",
                       "z": "6e802f1553b18149",
                       "name": "",
                       "property": "payload",
                       "action": "obj",
                       "pretty": false,
                       "x": 750,
                       "y": 100,
                       "wires": [
                           [
                               "d9e7bdd4c48a8aa1"
                           ]
                       ]
                   },
                   {
                       "id": "d9e7bdd4c48a8aa1",
                       "type": "switch",
                       "z": "6e802f1553b18149",
                       "name": "is type?",
                       "property": "payload",
                       "propertyType": "msg",
                       "rules": [
                           {
                               "t": "istype",
                               "v": "array",
                               "vt": "array"
                           },
                           {
                               "t": "istype",
                               "v": "object",
                               "vt": "object"
                           },
                           {
                               "t": "else"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 3,
                       "x": 900,
                       "y": 100,
                       "wires": [
                           [
                               "1520be42bcc2145e"
                           ],
                           [
                               "1520be42bcc2145e"
                           ],
                           [
                               "9ac3cc3681e8b6c6"
                           ]
                       ]
                   },
                   {
                       "id": "a096a93bb82b7a93",
                       "type": "junction",
                       "z": "6e802f1553b18149",
                       "x": 1380,
                       "y": 280,
                       "wires": [
                           [
                               "1a8c03d866b85b12"
                           ]
                       ]
                   },
                   {
                       "id": "1520be42bcc2145e",
                       "type": "junction",
                       "z": "6e802f1553b18149",
                       "x": 480,
                       "y": 20,
                       "wires": [
                           [
                               "3649300b4c233b10"
                           ]
                       ]
                   },
                   {
                       "id": "c53b8bc1f4825088",
                       "type": "file in",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "filename": "/home/iobroker/Wetterdaten.csv",
                       "filenameType": "str",
                       "format": "utf8",
                       "chunk": false,
                       "sendError": false,
                       "encoding": "none",
                       "allProps": false,
                       "x": 350,
                       "y": 3560,
                       "wires": [
                           [
                               "ce8af10a11f7acd2"
                           ]
                       ]
                   },
                   {
                       "id": "f9e3cc13fc60fa15",
                       "type": "inject",
                       "z": "7e6af0015415146d",
                       "name": "Start",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "true",
                       "payloadType": "bool",
                       "x": 130,
                       "y": 3560,
                       "wires": [
                           [
                               "c53b8bc1f4825088"
                           ]
                       ]
                   },
                   {
                       "id": "0dfca42ed4a97466",
                       "type": "debug",
                       "z": "7e6af0015415146d",
                       "name": "Wetterdaten",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 950,
                       "y": 3520,
                       "wires": []
                   },
                   {
                       "id": "ce8af10a11f7acd2",
                       "type": "csv",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "sep": ",",
                       "hdrin": true,
                       "hdrout": "none",
                       "multi": "mult",
                       "ret": "\\r\\n",
                       "temp": "",
                       "skip": "0",
                       "strings": true,
                       "include_empty_strings": "",
                       "include_null_values": "",
                       "x": 570,
                       "y": 3560,
                       "wires": [
                           [
                               "f45288436a76b70d"
                           ]
                       ]
                   },
                   {
                       "id": "f45288436a76b70d",
                       "type": "change",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "payload[1]",
                               "tot": "msg"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 750,
                       "y": 3560,
                       "wires": [
                           [
                               "0dfca42ed4a97466",
                               "139934be8278f7a1"
                           ]
                       ]
                   },
                   {
                       "id": "e6f4846bd92b1225",
                       "type": "ioBroker out",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "topic": "",
                       "ack": "true",
                       "autoCreate": "true",
                       "stateName": "",
                       "role": "",
                       "payloadType": "",
                       "readonly": "",
                       "stateUnit": "",
                       "stateMin": "",
                       "stateMax": "",
                       "x": 1220,
                       "y": 3560,
                       "wires": []
                   },
                   {
                       "id": "139934be8278f7a1",
                       "type": "subflow:6e802f1553b18149",
                       "z": "7e6af0015415146d",
                       "name": "",
                       "env": [
                           {
                               "name": "top",
                               "value": "Wetterdaten",
                               "type": "str"
                           }
                       ],
                       "x": 990,
                       "y": 3560,
                       "wires": [
                           [
                               "e6f4846bd92b1225"
                           ]
                       ]
                   }
                ]
                

                Die CSV Datei wird momentan aus CSV in das Homeverzeichnis des iobrokers gelesen, ansonsten musst halt schauen, dass die Berechtigungen stimmen.

                1aafe3a0-b582-48fb-b8a6-ca1dee49025a-image.png

                Ggf. musst Du auch noch das Zeilentrennzeichen ändern. Da ich das mit Deiner CSV Datei erst unter Windows getestet habe, um zu sehen, ob das funktioniert - da die 1. Zeile mit den Units ignoriert werden muss.

                Das musst ggf. dann halt hier umstellen:
                d27a5568-ac00-4850-8561-def5dd02eef1-image.png

                G Offline
                G Offline
                geophysiker
                schrieb am zuletzt editiert von
                #7

                @mickym said in Wetterstationsdaten per csv in IOB einpflegen (importieren):

                Mal ein bischen Zeit gefunden.

                @geophysiker Mit NodeRed hast Du eine CSV Node, die Dir ein Objekt macht und mit meinem Flow kannst Du dann Datenpunkte schreiben.

                So ich habe mal Deine Daten unter Windows genutzt:

                Habe die Abkürzungspunkte entfernt.

                Für die ü`s werde ich wohl ue nehmen.

                Die CSV Datei wird momentan aus CSV in das Homeverzeichnis des iobrokers gelesen, ansonsten musst halt schauen, dass die Berechtigungen stimmen.

                Zwischenablage01.jpg

                Danke das Du Dich meiner angenommen hast.:)

                Ich bin mir nicht sicher, aber so werden die Daten ja nur in 1 Objekt geschrieben.
                So kann man sie ja nicht weiterverarbeiten.
                Wenn ich eine Temperaturkurve für TT Wohnzimmer erstellen will habe ich ja kein Objekt zur Auswahl.

                Ich dachte mir das ich ObjektName: TT Wohnzimmer und als Wert: 22.6 °C haben möchte. Das also für alle Werte.
                So nützt es mir nichts.

                Tschö, Ralf

                mickymM 1 Antwort Letzte Antwort
                -1
                • G geophysiker

                  @mickym said in Wetterstationsdaten per csv in IOB einpflegen (importieren):

                  Mal ein bischen Zeit gefunden.

                  @geophysiker Mit NodeRed hast Du eine CSV Node, die Dir ein Objekt macht und mit meinem Flow kannst Du dann Datenpunkte schreiben.

                  So ich habe mal Deine Daten unter Windows genutzt:

                  Habe die Abkürzungspunkte entfernt.

                  Für die ü`s werde ich wohl ue nehmen.

                  Die CSV Datei wird momentan aus CSV in das Homeverzeichnis des iobrokers gelesen, ansonsten musst halt schauen, dass die Berechtigungen stimmen.

                  Zwischenablage01.jpg

                  Danke das Du Dich meiner angenommen hast.:)

                  Ich bin mir nicht sicher, aber so werden die Daten ja nur in 1 Objekt geschrieben.
                  So kann man sie ja nicht weiterverarbeiten.
                  Wenn ich eine Temperaturkurve für TT Wohnzimmer erstellen will habe ich ja kein Objekt zur Auswahl.

                  Ich dachte mir das ich ObjektName: TT Wohnzimmer und als Wert: 22.6 °C haben möchte. Das also für alle Werte.
                  So nützt es mir nichts.

                  Tschö, Ralf

                  mickymM Online
                  mickymM Online
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von mickym
                  #8

                  @geophysiker Doch es wird ja so geschreiben ;)

                  Wenn Du meinen Subflow nimmst bekommst Du genau diese Datenpunkte:

                  Du hast meinen Flow anscheinend gar nicht probiert. Der Flow erzeugt Dir genau diese Datenpunkte/Objekte mit diesen Werten:

                  6cc323b6-6d11-4a31-aafe-8a4e95be654b-image.png

                  Mein Subflow nimmt das Objekt auseinander und schreibt jedes einzelne Objekt getrennt. Die Debug-Node hängt ja vor dem Subflow. Ausserdem hatte ich den Subflow inzwischen angepasst, damit die Punkte in den Objekten durch Unterstriche ersetzt werden. Na ja schade, dass man sich die Mühe macht.

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  G 1 Antwort Letzte Antwort
                  0
                  • G geophysiker

                    Was willst du mit den Daten machen, wenn du sie in Datenpunkte gepackt hast?

                    Die Wetterstation erstellt alle 5 min eine neue csv, die liegt auf einem gemountetem Path. Von dort will ich sie alle 5 min in Iobroker einlesen (cron) ,in die Datenbank packen Influxdb und mariadb (laufen beide auf der synology) und Grafiken erstellen (echarts). Grafana kenn ich nix von.;-)
                    Das Dashboard mit aktuellen Daten befüllen.

                    mit einfachsten Mitteln kann man nämlich nicht den Werten vergangene Timestamps zuordnen.

                    In der csv ist ja ein Zeitwert.

                    @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

                    Da sind wir wieder bei den wissenden.;-))

                    nöö, nicht wirklich.

                    Erst das zerlegen, dann (in Blockly den Block) aktualisiere Datenpunktxy mit extrahiertem Wert.

                    @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

                    das es unter Blockly nicht geht.

                    Sollte mit so was wie Attribut TT Schlaf von Objekt IMPORT gehn

                    sagt mir nix.;(

                    nicht wirklich!
                    bin jetzt schon 63.;-)

                    Tschö, Ralf

                    HomoranH Nicht stören
                    HomoranH Nicht stören
                    Homoran
                    Global Moderator Administrators
                    schrieb am zuletzt editiert von
                    #9

                    @geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):

                    sagt mir nix.;(

                    das ist der Blockly Befehl für das Extrahieten eines Wertes und Schreiben in einen Datenpunkt.

                    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                    1 Antwort Letzte Antwort
                    0
                    • mickymM mickym

                      @geophysiker Doch es wird ja so geschreiben ;)

                      Wenn Du meinen Subflow nimmst bekommst Du genau diese Datenpunkte:

                      Du hast meinen Flow anscheinend gar nicht probiert. Der Flow erzeugt Dir genau diese Datenpunkte/Objekte mit diesen Werten:

                      6cc323b6-6d11-4a31-aafe-8a4e95be654b-image.png

                      Mein Subflow nimmt das Objekt auseinander und schreibt jedes einzelne Objekt getrennt. Die Debug-Node hängt ja vor dem Subflow. Ausserdem hatte ich den Subflow inzwischen angepasst, damit die Punkte in den Objekten durch Unterstriche ersetzt werden. Na ja schade, dass man sich die Mühe macht.

                      G Offline
                      G Offline
                      geophysiker
                      schrieb am zuletzt editiert von geophysiker
                      #10

                      @mickym said in Wetterstationsdaten per csv in IOB einpflegen (importieren):

                      @geophysiker Doch es wird ja so geschreiben ;)

                      Wenn Du meinen Subflow nimmst bekommst Du genau diese Datenpunkte:

                      Hatte erst eine anderen Komment hier geschrieben und wieder gelöscht.

                      Der Fehler lag bei mir, ich hatte in Deinem anderen Post noch mal gelesen und den Punkt
                      "Erstellung von Fremdobjekten zulassen" entdeckt. :)

                      Ich danke Dir das Du Dir die Mühe gemacht hast!!!

                      Glücklich
                      Ralf

                      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

                      780

                      Online

                      32.5k

                      Benutzer

                      81.8k

                      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