Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Falsche werte schon bei Aufzeichnung ausschliessen

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    802

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.6k

Falsche werte schon bei Aufzeichnung ausschliessen

Scheduled Pinned Locked Moved ioBroker Allgemein
21 Posts 4 Posters 1.5k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    cainam
    wrote on last edited by cainam
    #1

    Hallo zusammen

    Ich zeichne diverse Temperaturwerte über iobroker auf influxdb auf. Die Werte kommen von Aquara sensoren. Leider hat es immer mal wieder Tage mit -100 drin. Ich kann die zwar manuel löschen, doch gibt es eine Möglichkeit, dass ich diese schon bei der aufzeichnung ausschliessen kann?

    Danke und Gruess Raphi

    Es müsste anstatt min.Differenz noch eine max.different geben:
    071ff715-9d51-4cbb-89a9-f9f5c9fd7ad8-image.png

    L paul53P A 4 Replies Last reply
    0
    • C cainam

      Hallo zusammen

      Ich zeichne diverse Temperaturwerte über iobroker auf influxdb auf. Die Werte kommen von Aquara sensoren. Leider hat es immer mal wieder Tage mit -100 drin. Ich kann die zwar manuel löschen, doch gibt es eine Möglichkeit, dass ich diese schon bei der aufzeichnung ausschliessen kann?

      Danke und Gruess Raphi

      Es müsste anstatt min.Differenz noch eine max.different geben:
      071ff715-9d51-4cbb-89a9-f9f5c9fd7ad8-image.png

      L Offline
      L Offline
      legro
      wrote on last edited by legro
      #2

      @cainam

      Ich verschaffe mir die Kontrolle über das Schreiben der Werte in InfluxDB, indem ich die Daten selbst in die Datenbank schreibe. Auf diese Weise kann ich sie nicht nur vorab prüfen und korrigieren, darüber hinaus kann ich auch noch den Namen des Datenfeldes, Zeitpunkt, .. usw. angeben.

      6ebb6024-8dae-412e-b745-ff7300cf01eb-image.png

      Die Javascript-Funktion dataInfluxDB lautet in diesem Beispiel ..

      zeit=zeit-12*3600*1000 // Vortag 12:00 Uhr mittags
      sendTo('influxdb.0', 'storeState', {
          id: ziel,
          state: {ts: zeit, val: wert, ack: false, from: ziel}
      }, result => console.log('added'));
      

      Siehe GitHub!

      Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

      C 1 Reply Last reply
      0
      • L legro

        @cainam

        Ich verschaffe mir die Kontrolle über das Schreiben der Werte in InfluxDB, indem ich die Daten selbst in die Datenbank schreibe. Auf diese Weise kann ich sie nicht nur vorab prüfen und korrigieren, darüber hinaus kann ich auch noch den Namen des Datenfeldes, Zeitpunkt, .. usw. angeben.

        6ebb6024-8dae-412e-b745-ff7300cf01eb-image.png

        Die Javascript-Funktion dataInfluxDB lautet in diesem Beispiel ..

        zeit=zeit-12*3600*1000 // Vortag 12:00 Uhr mittags
        sendTo('influxdb.0', 'storeState', {
            id: ziel,
            state: {ts: zeit, val: wert, ack: false, from: ziel}
        }, result => console.log('added'));
        

        Siehe GitHub!

        C Offline
        C Offline
        cainam
        wrote on last edited by cainam
        #3

        @legro
        Finde ich sehr interessanter Ansatz, nur habe ich schon so viele Aufzeichnungen, wäre ein riesen aufwand das alles neu zu machen und ich möchte va. auch keine Lücken haben...

        Wie ist die Zeile 1 zu interpretieren, wenn ich da zB alle 1min eine aufzeichnung will, was gebe ich da ein?
        Und wo weis er welche Datenbank und welcher Meassurement (=Ziel?)

        L 1 Reply Last reply
        0
        • C cainam

          Hallo zusammen

          Ich zeichne diverse Temperaturwerte über iobroker auf influxdb auf. Die Werte kommen von Aquara sensoren. Leider hat es immer mal wieder Tage mit -100 drin. Ich kann die zwar manuel löschen, doch gibt es eine Möglichkeit, dass ich diese schon bei der aufzeichnung ausschliessen kann?

          Danke und Gruess Raphi

          Es müsste anstatt min.Differenz noch eine max.different geben:
          071ff715-9d51-4cbb-89a9-f9f5c9fd7ad8-image.png

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by paul53
          #4

          @cainam sagte: bei der aufzeichnung ausschliessen kann?

          Ein eigener Datenpunkt (Typ "number"), der anstelle des Originals die Ausreißer nicht enthält und der anstelle des Originals mit der gleichen Alias-ID "Aussentemperatur" aufgezeichnet wird.
          Simples Skript für den eigenen Datenpunkt:

          const idSrc = 'zigbee.0.xyz'; // ID anpassen!
          const idDst = '0_userdata.0.Aussen.Temperatur';
          
          on(idSrc, function(dp) {
              if(dp.state.val > -25) setState(idDst, dp.state.val, true);
          });
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          C 1 Reply Last reply
          0
          • C cainam

            Hallo zusammen

            Ich zeichne diverse Temperaturwerte über iobroker auf influxdb auf. Die Werte kommen von Aquara sensoren. Leider hat es immer mal wieder Tage mit -100 drin. Ich kann die zwar manuel löschen, doch gibt es eine Möglichkeit, dass ich diese schon bei der aufzeichnung ausschliessen kann?

            Danke und Gruess Raphi

            Es müsste anstatt min.Differenz noch eine max.different geben:
            071ff715-9d51-4cbb-89a9-f9f5c9fd7ad8-image.png

            A Offline
            A Offline
            AndyGR42
            wrote on last edited by
            #5

            @cainam

            Wenn ich das richtig sehe, geht es Dir ja darum, die Werte in der History zu normalisieren. Ich mache das generell so, dass ich mir eigene Datenpunkte für die historischen Daten anlege. Das hat den weiteren Vorteil, dass sie unabhängig von der Adapter Instanz sind. Ändere ich also mal einen Adapter bzw. die Quelle, bleibt der Datenpunkt für die historischen Daten immer gleich.

            Nun kann man bei jeder Änderung des Datenpunktes des Adapters ein Script triggern, welches den Wert auf Plausibilität prüft und dann in den eigenen Datenpunkt schreibt.

            C 1 Reply Last reply
            0
            • paul53P paul53

              @cainam sagte: bei der aufzeichnung ausschliessen kann?

              Ein eigener Datenpunkt (Typ "number"), der anstelle des Originals die Ausreißer nicht enthält und der anstelle des Originals mit der gleichen Alias-ID "Aussentemperatur" aufgezeichnet wird.
              Simples Skript für den eigenen Datenpunkt:

              const idSrc = 'zigbee.0.xyz'; // ID anpassen!
              const idDst = '0_userdata.0.Aussen.Temperatur';
              
              on(idSrc, function(dp) {
                  if(dp.state.val > -25) setState(idDst, dp.state.val, true);
              });
              
              C Offline
              C Offline
              cainam
              wrote on last edited by
              #6

              @paul53 said in Falsche werte schon bei Aufzeichnung ausschliessen:

              @cainam sagte: bei der aufzeichnung ausschliessen kann?

              Ein eigener Datenpunkt (Typ "number"), der anstelle des Originals die Ausreißer nicht enthält und der anstelle des Originals mit der gleichen Alias-ID aufgezeichnet wird.
              Simples Skript für den eigenen Datenpunkt:

              const idSrc = 'zigbee.0.xyz'; // ID anpassen!
              const idDst = '0_userdata.0.Aussen.Temperatur';
              
              on(idSrc, function(dp) {
                  if(dp.state.val > -25) setState(idDst, dp.state.val, true);
              });
              

              also das ist anstelle des skriptes von legro oder wo erfasse ich das? sorry bin anfänger mit java...

              paul53P 1 Reply Last reply
              0
              • A AndyGR42

                @cainam

                Wenn ich das richtig sehe, geht es Dir ja darum, die Werte in der History zu normalisieren. Ich mache das generell so, dass ich mir eigene Datenpunkte für die historischen Daten anlege. Das hat den weiteren Vorteil, dass sie unabhängig von der Adapter Instanz sind. Ändere ich also mal einen Adapter bzw. die Quelle, bleibt der Datenpunkt für die historischen Daten immer gleich.

                Nun kann man bei jeder Änderung des Datenpunktes des Adapters ein Script triggern, welches den Wert auf Plausibilität prüft und dann in den eigenen Datenpunkt schreibt.

                C Offline
                C Offline
                cainam
                wrote on last edited by cainam
                #7

                @andygr42
                erm... kannst du mir hier ein beispiel geben wie das aussehen würde.. also du meinst ich mach ein skript das die werte vom termometer in ein eigenen datenpunkt schreibt (unter gewissen filtern zB..)

                A 1 Reply Last reply
                0
                • C cainam

                  @andygr42
                  erm... kannst du mir hier ein beispiel geben wie das aussehen würde.. also du meinst ich mach ein skript das die werte vom termometer in ein eigenen datenpunkt schreibt (unter gewissen filtern zB..)

                  A Offline
                  A Offline
                  AndyGR42
                  wrote on last edited by
                  #8

                  @cainam Im Grunde wie das von Paul

                  1 Reply Last reply
                  0
                  • C cainam

                    @paul53 said in Falsche werte schon bei Aufzeichnung ausschliessen:

                    @cainam sagte: bei der aufzeichnung ausschliessen kann?

                    Ein eigener Datenpunkt (Typ "number"), der anstelle des Originals die Ausreißer nicht enthält und der anstelle des Originals mit der gleichen Alias-ID aufgezeichnet wird.
                    Simples Skript für den eigenen Datenpunkt:

                    const idSrc = 'zigbee.0.xyz'; // ID anpassen!
                    const idDst = '0_userdata.0.Aussen.Temperatur';
                    
                    on(idSrc, function(dp) {
                        if(dp.state.val > -25) setState(idDst, dp.state.val, true);
                    });
                    

                    also das ist anstelle des skriptes von legro oder wo erfasse ich das? sorry bin anfänger mit java...

                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by paul53
                    #9

                    @cainam sagte: anstelle des skriptes von legro oder wo erfasse ich das?

                    Ja, das ist ein Skript, das einen eigenen Datenpunkt mit den Werten beschreibt.
                    Den eigenen Datenpunkt vorher manuell im Tab "Objekte" unter "0_userdata.0" erstellen. Alternativ auch im Skript:

                    const idSrc = 'zigbee.0.xyz'; // ID anpassen!
                    const idDst = '0_userdata.0.Aussen.Temperatur';
                    
                    on(idSrc, function(dp) {
                        if(dp.state.val > -25) setState(idDst, dp.state.val, true);
                    });
                    
                    if(!existsState(idDst)) {
                        createState(idDst, 0, {
                            name: 'Außentemperatur', 
                            role: 'value.temperature',
                            unit: '°C',
                            def: 0,
                            min: -25,
                            max: 40,
                            read: true,
                            write: false
                        });
                    }
                    

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    1 Reply Last reply
                    0
                    • C cainam

                      Hallo zusammen

                      Ich zeichne diverse Temperaturwerte über iobroker auf influxdb auf. Die Werte kommen von Aquara sensoren. Leider hat es immer mal wieder Tage mit -100 drin. Ich kann die zwar manuel löschen, doch gibt es eine Möglichkeit, dass ich diese schon bei der aufzeichnung ausschliessen kann?

                      Danke und Gruess Raphi

                      Es müsste anstatt min.Differenz noch eine max.different geben:
                      071ff715-9d51-4cbb-89a9-f9f5c9fd7ad8-image.png

                      L Offline
                      L Offline
                      legro
                      wrote on last edited by legro
                      #10

                      @cainam

                      Wie ich sehe, hast du ja viele Hinweise erhalten. Noch zwei Hinweise von mir.

                      In der Tat verwende ich einen eigenen Datenpunkt in 0_userdata, in dem ich die Werte von den Sensoren/Quellen einsammle. Ändert sich der Wert in diesem Datenpunkt, überprüfe/korrigiere/verwerfe ich diesen, bevor ich ihn in die Datenbank schreibe.

                      Das von mir auf GitHub verlinkte Beispiel, das ich zur Lösung herangezogen habe, enthält einen Fehler. Dort wird fälschlicherweise versucht ein Array [..] anstelle eines Objektes {..} zu übergeben. Die Codebeispiele von @paul53 und mir sind korrekt.

                      Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

                      C 1 Reply Last reply
                      0
                      • C cainam

                        @legro
                        Finde ich sehr interessanter Ansatz, nur habe ich schon so viele Aufzeichnungen, wäre ein riesen aufwand das alles neu zu machen und ich möchte va. auch keine Lücken haben...

                        Wie ist die Zeile 1 zu interpretieren, wenn ich da zB alle 1min eine aufzeichnung will, was gebe ich da ein?
                        Und wo weis er welche Datenbank und welcher Meassurement (=Ziel?)

                        L Offline
                        L Offline
                        legro
                        wrote on last edited by legro
                        #11

                        @cainam said in Falsche werte schon bei Aufzeichnung ausschliessen:

                        Wie ist die Zeile 1 zu interpretieren, ..

                        Das Beispiel stammt aus einem CRON-Job, der um 0:00 Uhr aktiv wird und Werte des vergangenen Tages abspeichern soll. Die erste Zeile bewirkt, dass der Zeitstempel des Datensatzes auf 12:00 Uhr des vergangenen Tages gesetzt wird; ohne diese Korrektur würde das Ganze ja dem Folgetag zugewiesen.

                        Mit der Angabe in ziel gibst du das gewünschte measurement nach deinen Wünschen vor. Wenn die zugehörige Datenreihe vorhanden ist, wird der Datenpunkt angefügt, im anderen Fall wird eine neue Datenreihe erzeugt.

                        Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

                        1 Reply Last reply
                        0
                        • L legro

                          @cainam

                          Wie ich sehe, hast du ja viele Hinweise erhalten. Noch zwei Hinweise von mir.

                          In der Tat verwende ich einen eigenen Datenpunkt in 0_userdata, in dem ich die Werte von den Sensoren/Quellen einsammle. Ändert sich der Wert in diesem Datenpunkt, überprüfe/korrigiere/verwerfe ich diesen, bevor ich ihn in die Datenbank schreibe.

                          Das von mir auf GitHub verlinkte Beispiel, das ich zur Lösung herangezogen habe, enthält einen Fehler. Dort wird fälschlicherweise versucht ein Array [..] anstelle eines Objektes {..} zu übergeben. Die Codebeispiele von @paul53 und mir sind korrekt.

                          C Offline
                          C Offline
                          cainam
                          wrote on last edited by cainam
                          #12

                          @legro
                          passiert das realtime, dh sobald sich der datenwert ändert?

                          und wie kann ich das am besten kombinieren für mehrere datenpunkte?

                          so? wobei xxx... die verschiedenen werte sind?

                          const idSrc = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/
                          const idSrc = 'xxx1'
                          const idSrc = 'xxx2...'
                          
                          const idDst = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/ 
                           const idDst = 'xxx1'
                          const idDst = 'xxx2...'
                          
                          on(idSrc, function(dp) {
                              if(dp.state.val > -25) setState(idDst, dp.state.val, true);
                          });
                          
                          L C 2 Replies Last reply
                          0
                          • C cainam

                            @legro
                            passiert das realtime, dh sobald sich der datenwert ändert?

                            und wie kann ich das am besten kombinieren für mehrere datenpunkte?

                            so? wobei xxx... die verschiedenen werte sind?

                            const idSrc = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/
                            const idSrc = 'xxx1'
                            const idSrc = 'xxx2...'
                            
                            const idDst = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/ 
                             const idDst = 'xxx1'
                            const idDst = 'xxx2...'
                            
                            on(idSrc, function(dp) {
                                if(dp.state.val > -25) setState(idDst, dp.state.val, true);
                            });
                            
                            L Offline
                            L Offline
                            legro
                            wrote on last edited by
                            #13

                            @cainam said in Falsche werte schon bei Aufzeichnung ausschliessen:

                            @legro
                            passiert das realtime, dh sobald sich der datenwert ändert?

                            Wann das passiert, kannst du doch mit einem Trigger steuern; z.B.: Wenn der Wert im betreffenden Datenpunkt geändert/aktualisiert wird, löst der Trigger aus und du kannst die gewünschten Kontrollen durchführen lassen und die korrigierten Werte in die Datenbank schreiben.

                            In meinem Beispiel, aus dem ich das Ganze entnommen habe, geschieht das Ganze mittels eines CRON-Jobs.

                            Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

                            1 Reply Last reply
                            0
                            • C cainam

                              @legro
                              passiert das realtime, dh sobald sich der datenwert ändert?

                              und wie kann ich das am besten kombinieren für mehrere datenpunkte?

                              so? wobei xxx... die verschiedenen werte sind?

                              const idSrc = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/
                              const idSrc = 'xxx1'
                              const idSrc = 'xxx2...'
                              
                              const idDst = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/ 
                               const idDst = 'xxx1'
                              const idDst = 'xxx2...'
                              
                              on(idSrc, function(dp) {
                                  if(dp.state.val > -25) setState(idDst, dp.state.val, true);
                              });
                              
                              C Offline
                              C Offline
                              cainam
                              wrote on last edited by cainam
                              #14

                              @cainam said in Falsche werte schon bei Aufzeichnung ausschliessen:

                              if(dp.state.val > -25) setS

                              und müsste das nicht < -25 sein ? Also alle werte die weniger sind als -25....?

                              ich könnte ja einfach beim originalobjekt ein "min": -25, und ein "max": 50, machen!?

                              paul53P L 2 Replies Last reply
                              0
                              • C cainam

                                @cainam said in Falsche werte schon bei Aufzeichnung ausschliessen:

                                if(dp.state.val > -25) setS

                                und müsste das nicht < -25 sein ? Also alle werte die weniger sind als -25....?

                                ich könnte ja einfach beim originalobjekt ein "min": -25, und ein "max": 50, machen!?

                                paul53P Offline
                                paul53P Offline
                                paul53
                                wrote on last edited by
                                #15

                                @cainam sagte: müsste das nicht < -25 sein ?

                                Nein, denn es sollen nur Werte > -25 °C weiter gegeben werden.

                                @cainam sagte in Falsche werte schon bei Aufzeichnung ausschliessen:

                                beim originalobjekt ein "min": -25, und ein "max": 50, machen!?

                                Dann erzeugt der js-controller lediglich eine Warnung.

                                @cainam sagte in Falsche werte schon bei Aufzeichnung ausschliessen:

                                für mehrere datenpunkte?

                                const idSrc1 = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/
                                const idSrc2 = 'xxx1'
                                const idSrc3 = 'xxx2...'
                                 
                                const idDst1 = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/ 
                                const idDst2 = 'xxx1'
                                const idDst3 = 'xxx2...'
                                 
                                on(idSrc1, function(dp) {
                                    if(dp.state.val > -25) setState(idDst1, dp.state.val, true);
                                });
                                on(idSrc2, function(dp) {
                                    if(dp.state.val > -25) setState(idDst2, dp.state.val, true);
                                });
                                on(idSrc3, function(dp) {
                                    if(dp.state.val > -25) setState(idDst3, dp.state.val, true);
                                });
                                

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                C 1 Reply Last reply
                                0
                                • C cainam

                                  @cainam said in Falsche werte schon bei Aufzeichnung ausschliessen:

                                  if(dp.state.val > -25) setS

                                  und müsste das nicht < -25 sein ? Also alle werte die weniger sind als -25....?

                                  ich könnte ja einfach beim originalobjekt ein "min": -25, und ein "max": 50, machen!?

                                  L Offline
                                  L Offline
                                  legro
                                  wrote on last edited by
                                  #16

                                  @cainam

                                  Wenn du, wie du schreibst, noch in den Anfängen steckst, warum verwendest du nicht Blockly? Da kannst du dir das Ganze bequem und schnell zusammenstellen. Mein nachfolgend dargestellter Vorschlag kommt gänzlich ohne zusätzliche Datenpunkte aus.

                                  Zum Eintragen in InfluxDB kommt die auf storeState basierende JavaScript-Funktion zur Anwendung, welche den gewünschten Wert in die Datenbank schreibt. Im Trigger wird die Meldung (Datenpunkt) des Sensors bewertet und nur dann in die Datenbank geschrieben, wenn der Wert zwischen -25 und 100 liegt.

                                  ca73e3a3-791c-418f-9051-04cf4bd45aca-image.png

                                  Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

                                  C 1 Reply Last reply
                                  0
                                  • L legro

                                    @cainam

                                    Wenn du, wie du schreibst, noch in den Anfängen steckst, warum verwendest du nicht Blockly? Da kannst du dir das Ganze bequem und schnell zusammenstellen. Mein nachfolgend dargestellter Vorschlag kommt gänzlich ohne zusätzliche Datenpunkte aus.

                                    Zum Eintragen in InfluxDB kommt die auf storeState basierende JavaScript-Funktion zur Anwendung, welche den gewünschten Wert in die Datenbank schreibt. Im Trigger wird die Meldung (Datenpunkt) des Sensors bewertet und nur dann in die Datenbank geschrieben, wenn der Wert zwischen -25 und 100 liegt.

                                    ca73e3a3-791c-418f-9051-04cf4bd45aca-image.png

                                    C Offline
                                    C Offline
                                    cainam
                                    wrote on last edited by cainam
                                    #17

                                    @legro

                                    Danke tausend mal, eine Frage noch. Das JavaScript der function sieht so aus?

                                    
                                    sendTo('influxdb.0', 'storeState', {
                                        id: ziel,
                                        state: {ts: zeit, val: wert, ack: false, from: ziel}
                                    }, result => console.log('added'));
                                    
                                    
                                    L 1 Reply Last reply
                                    0
                                    • C cainam

                                      @legro

                                      Danke tausend mal, eine Frage noch. Das JavaScript der function sieht so aus?

                                      
                                      sendTo('influxdb.0', 'storeState', {
                                          id: ziel,
                                          state: {ts: zeit, val: wert, ack: false, from: ziel}
                                      }, result => console.log('added'));
                                      
                                      
                                      L Offline
                                      L Offline
                                      legro
                                      wrote on last edited by legro
                                      #18

                                      @cainam

                                      sendTo('influxdb.0', 'storeState', {
                                          id: 'mbus.0.counter.xxx',
                                          state: {ts: 1589458809352, val: 123, ack: false, from: 'system.adapter.whatever.0', ...}
                                      }, result => console.log('added'));
                                      

                                      Ausgangspunkt für meine Funktion ist die auf GitHub vorgestellte Funktion sendTo mit dem Parameter storeState, wie ich sie dir hier aus GitHub herauskopiert habe. Die falsche Klammersetzung und Adapterbezeichnung in diesem Beispiel habe ich hierbei schon korrigiert.

                                      Diese kannst du dir nach Belieben anpassen. Selbstverständlich kannst du auch meine (verkürzte) Version als Ausgangspunkt verwenden. Ob die array function in der 4.Zeile ggf. optional ist (also weggelassen werden kann), habe ich noch nicht ausprobiert.

                                      Den Parameter state in der 3.Zeile kannst du nach Belieben füllen. Das zweite Beispiel auf GitHub zeigt, dass du anstelle eines einzelnen Objektes auch ein ganzes Array [..] solcher state-Objekte übergeben kannst, die mittels eines einzigen Aufrufs als measurements in InfluxDB eingetragen werden.

                                      Viel Erfolg!

                                      Raspberry Pi 5 mit 8GB + 120GB SSD + Coordinator COD-m + ioBroker ..

                                      1 Reply Last reply
                                      0
                                      • paul53P paul53

                                        @cainam sagte: müsste das nicht < -25 sein ?

                                        Nein, denn es sollen nur Werte > -25 °C weiter gegeben werden.

                                        @cainam sagte in Falsche werte schon bei Aufzeichnung ausschliessen:

                                        beim originalobjekt ein "min": -25, und ein "max": 50, machen!?

                                        Dann erzeugt der js-controller lediglich eine Warnung.

                                        @cainam sagte in Falsche werte schon bei Aufzeichnung ausschliessen:

                                        für mehrere datenpunkte?

                                        const idSrc1 = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/
                                        const idSrc2 = 'xxx1'
                                        const idSrc3 = 'xxx2...'
                                         
                                        const idDst1 = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/ 
                                        const idDst2 = 'xxx1'
                                        const idDst3 = 'xxx2...'
                                         
                                        on(idSrc1, function(dp) {
                                            if(dp.state.val > -25) setState(idDst1, dp.state.val, true);
                                        });
                                        on(idSrc2, function(dp) {
                                            if(dp.state.val > -25) setState(idDst2, dp.state.val, true);
                                        });
                                        on(idSrc3, function(dp) {
                                            if(dp.state.val > -25) setState(idDst3, dp.state.val, true);
                                        });
                                        
                                        C Offline
                                        C Offline
                                        cainam
                                        wrote on last edited by cainam
                                        #19

                                        @paul53 said in Falsche werte schon bei Aufzeichnung ausschliessen:

                                                                                                                                                                    const idSrc1 = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/                                                                                                                                                                            const idSrc2 = 'xxx1'                                                                                                                                                                            const idSrc3 = 'xxx2...'                                                                                                                                                                                                                                                                                                                                                         const idDst1 = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/                                                                                                                                                                             const idDst2 = 'xxx1'                                                                                                                                                                            const idDst3 = 'xxx2...'                                                                                                                                                                                                                                                                                                                                                         on(idSrc1, function(dp) {                                                                                                                                                                                if(dp.state.val > -25) setState(idDst1, dp.state.val, true);                                                                                                                                                                            });                                                                                                                                                                            on(idSrc2, function(dp) {                                                                                                                                                                                if(dp.state.val > -25) setState(idDst2, dp.state.val, true);                                                                                                                                                                            });                                                                                                                                                                            on(idSrc3, function(dp) {                                                                                                                                                                                if(dp.state.val > -25) setState(idDst3, dp.state.val, true);                                                                                                                                                                            });                                            
                                        

                                        Habe nun das mal so gemacht:

                                        const idSrc1 = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/
                                        const idSrc2 = 'deconz.0.Sensors.13.temperature'/*Temperature 13 - Wohnzimmer temperature*/
                                        
                                        const idDs1t = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/ 
                                        const idDst2 = '0_userdata.0.InfluxDB_Dateninfos.Innen.Wohnzimmer'/*Wohnzimmer*/
                                        
                                        on(idSrc1, function(dp) {
                                            if(dp.state.val > -25) setState(idDst1, dp.state.val, true);
                                        });
                                        on(idSrc2, function(dp) {
                                            if(dp.state.val > -25) setState(idDst2, dp.state.val, true);
                                        });
                                        

                                        leider kommt da immer ein fehler (gehen tut es aber)

                                        Fehler: 12:20:08.518 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                        12:48:34.457 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                        13:16:59.930 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                        13:43:43.411 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                        13:43:54.197 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                        13:50:40.761 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                        13:51:31.516 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                        13:52:32.862 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                        13:54:45.267 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                        14:02:52.445 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                        14:06:25.954 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                        14:12:21.660 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                        14:19:18.080 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                        14:40:47.328 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)

                                        paul53P 1 Reply Last reply
                                        0
                                        • C cainam

                                          @paul53 said in Falsche werte schon bei Aufzeichnung ausschliessen:

                                                                                                                                                                      const idSrc1 = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/                                                                                                                                                                            const idSrc2 = 'xxx1'                                                                                                                                                                            const idSrc3 = 'xxx2...'                                                                                                                                                                                                                                                                                                                                                         const idDst1 = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/                                                                                                                                                                             const idDst2 = 'xxx1'                                                                                                                                                                            const idDst3 = 'xxx2...'                                                                                                                                                                                                                                                                                                                                                         on(idSrc1, function(dp) {                                                                                                                                                                                if(dp.state.val > -25) setState(idDst1, dp.state.val, true);                                                                                                                                                                            });                                                                                                                                                                            on(idSrc2, function(dp) {                                                                                                                                                                                if(dp.state.val > -25) setState(idDst2, dp.state.val, true);                                                                                                                                                                            });                                                                                                                                                                            on(idSrc3, function(dp) {                                                                                                                                                                                if(dp.state.val > -25) setState(idDst3, dp.state.val, true);                                                                                                                                                                            });                                            
                                          

                                          Habe nun das mal so gemacht:

                                          const idSrc1 = 'deconz.0.Sensors.10.temperature'/*Temperature 10 - Aussen temperature*/
                                          const idSrc2 = 'deconz.0.Sensors.13.temperature'/*Temperature 13 - Wohnzimmer temperature*/
                                          
                                          const idDs1t = '0_userdata.0.InfluxDB_Dateninfos.Aussen.Temperatur'/*Temperatur*/ 
                                          const idDst2 = '0_userdata.0.InfluxDB_Dateninfos.Innen.Wohnzimmer'/*Wohnzimmer*/
                                          
                                          on(idSrc1, function(dp) {
                                              if(dp.state.val > -25) setState(idDst1, dp.state.val, true);
                                          });
                                          on(idSrc2, function(dp) {
                                              if(dp.state.val > -25) setState(idDst2, dp.state.val, true);
                                          });
                                          

                                          leider kommt da immer ein fehler (gehen tut es aber)

                                          Fehler: 12:20:08.518 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                          12:48:34.457 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                          13:16:59.930 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                          13:43:43.411 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                          13:43:54.197 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                          13:50:40.761 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                          13:51:31.516 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                          13:52:32.862 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                          13:54:45.267 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                          14:02:52.445 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                          14:06:25.954 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                          14:12:21.660 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                          14:19:18.080 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)
                                          14:40:47.328 error javascript.0 (600) at Object.<anonymous> (script.js.Beispiele_und_Test.Daten_vorbereiten_influx:8:37)

                                          paul53P Offline
                                          paul53P Offline
                                          paul53
                                          wrote on last edited by paul53
                                          #20

                                          @cainam
                                          Vertipper?

                                          const idDs1t
                                          

                                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                          C 1 Reply Last reply
                                          0

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

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

                                          306

                                          Online

                                          32.8k

                                          Users

                                          82.7k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe