Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Script okay? Hier zur Überprüfung

    NEWS

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    Script okay? Hier zur Überprüfung

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

      @ticaki

      Hier das Script. Aus Gründen mit ungültigem API-Key

      Es werden für die nächsten 24h je 16 Wetterparameter geladen. Als 384 in einigen ms. Das ergibt entsprechend Einträge im Log. Das wird nur einmal Am Tag gemacht, wenn ein neuer Durchlauf bei Kachelmann verfügbar ist.

      top sagt:

      top - 16:20:48 up 1 day, 42 min,  1 user,  load average: 0.07, 0.29, 0.25
      Tasks: 162 total,   1 running, 161 sleeping,   0 stopped,   0 zombie
      %Cpu(s):  4.8 us,  4.8 sy,  0.0 ni, 90.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
      MiB Mem :   7812.3 total,   5379.5 free,   1441.3 used,    991.5 buff/cache
      MiB Swap:    100.0 total,    100.0 free,      0.0 used.   6248.2 avail Mem
      
      schedule("* 1 * * *", function () {
          KMW_Vorhersage();
          console.log ("DONE");
      });
      
      const typeOverrides = {
          lat: 'string',
          lon: 'string',
          dateTime: 'string',
          run: 'string',
          weatherSymbol: {value: 'string'}
      };
      
      function getType(key, value) {
          let type = typeof value;
      
          // Special type handling
          let path = key.split('.');
          let currentOverrides = typeOverrides;
          for (let part of path) {
              if (currentOverrides[part]) {
                  if (typeof currentOverrides[part] === 'object') {
                      currentOverrides = currentOverrides[part];
                  } else {
                      return currentOverrides[part];
                  }
              } else {
                  break;
              }
          }
      
          return type;
      }
      
      function KMW_Vorhersage() {
          const fetch = require('node-fetch');
      
          const url = 'https://api.kachelmannwetter.com/v02/forecast/55.49413097231316/7.87122704335334/standard/1h';
          const options = {
              method: 'GET',
              headers: {
                      'Accept': 'application/json',
                      'X-API-Key': '0815',
                  },
              };
      
          fetch(url, options)
              .then(response => response.json())
              .then(data => {
                  createOrUpdateObjectTree('javascript.0.Kachelmann.Vorhersage', data);
              })
              .catch(err => console.error('Fehler:', err));
      }
      
      function createOrUpdateObjectTree(baseId, obj) {
          for (const key in obj) {
              try {
                  let value = obj[key];
                  const id = `${baseId}.${key}`;
                  const field =`${key}`;
                  log("Checking type for ID:"+ id);
                  let valueType = getType(id, value);
      //            log('Data:' + ' - ' + key + ' - ' + value +  ' - ' + id +  ' - ' + field + ' - ' + valueType);
      
      
                  if (valueType === 'object' && value !== null) {
                      createOrUpdateObjectTree(id, value);
                  } else {
                      if (key === 'lon' || key === 'lat') {
                          value = value.toString();
                      }
      
                      let typeDefinition = {name: field, type: valueType, read: true, write: false};
      //                log (typeDefinition.type)
                      // Prüfen, ob der Zustand bereits existiert
                      if (existsState(id)) {
                          // Zustand existiert bereits, aktualisieren
                          setState(id, value, true, typeDefinition);
                      } else {
                          // Zustand existiert noch nicht, erstellen
                          createState(id, value, true, typeDefinition);
                      }
                  }
              } catch (error) {
                  console.error(`Fehler Verarbeitung Key "${key}":`, error);
              }
          }
      }
      
       KMW_Vorhersage();
      
      
      Homoran paul53 2 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @Sven Schumacher last edited by

        @sven-schumacher sagte in Script okay? Hier zur Überprüfung:

        Aus Gründen mit ungültigem API-Key

        hab ich dann mal gelöscht

        Sven Schumacher 2 Replies Last reply Reply Quote 1
        • Sven Schumacher
          Sven Schumacher @Homoran last edited by

          @homoran der key wurde von mir schon verstümmelt, war also eh nutzlos. Aber so ist es halt 100% 😉

          1 Reply Last reply Reply Quote 0
          • Sven Schumacher
            Sven Schumacher @Homoran last edited by

            @homoran Hab 0815 eingetragen, weil dein Edit das Syntax-Highlighting kaputt gemacht hat

            1 Reply Last reply Reply Quote 0
            • Sven Schumacher
              Sven Schumacher last edited by

              Und hier noch das zweite Scipt zu dem Thema.
              Hier werden die aktuelle Messwerte alle 15 Minuten abgefragt.

              schedule("*/15 * * * *", function () {
                  KMW_Messwerte();
                  console.log ("DONE");
              });
              
              const typeOverrides = {
                  lat: 'string',
                  lon: 'string',
                  dateTime: 'string',
                  run: 'string',
                  weatherSymbol: {value: 'string'}
              };
              
              function getType(key, value) {
                  let type = typeof value;
              
                  // Special type handling
                  let path = key.split('.');
                  let currentOverrides = typeOverrides;
                  for (let part of path) {
                      if (currentOverrides[part]) {
                          if (typeof currentOverrides[part] === 'object') {
                              currentOverrides = currentOverrides[part];
                          } else {
                              return currentOverrides[part];
                          }
                      } else {
                          break;
                      }
                  }
              
                  return type;
              }
              
              function KMW_Messwerte() {
                  const fetch = require('node-fetch');
                  const url = 'https://api.kachelmannwetter.com/v02/current/55.49413097231316/7.87122704335334';
                  const options = {
                      method: 'GET',
                      headers: {
                          'Accept': 'application/json',
                          'X-API-Key': '0815',
                      },
                  };
              
                  fetch(url, options)
                      .then(response => response.json())
                      .then(data => {
                          createOrUpdateObjectTree('javascript.0.Kachelmann.Messwerte', data);
                      })
                      .catch(err => console.error('Fehler:', err));
              }
              
              function createOrUpdateObjectTree(baseId, obj) {
                  for (const key in obj) {
                      const value = obj[key];
                      const id = `${baseId}.${key}`;
                      const field =`${key}`;
                      let valueType = getType(id, value);
              
                      //log('Data:' + ' - ' + key + ' - ' + value +  ' - ' + id +  ' - ' + field + ' - ' + valueType);
              
                      if (valueType === 'object' && value !== null) {
                          //console.log('Descending into sub-object:', value);
                          createOrUpdateObjectTree(id, value);
                      } else {
                          //console.log('Updating or creating state...');
                          let typeDefinition = {name: field, type: valueType, read: true, write: false};
              
                          // Prüfen, ob der Zustand bereits existiert
                          if (existsState(id)) {
                              // Zustand existiert bereits, aktualisieren
                              console.log('State exists, updating...');
                              setState(id, value, true, typeDefinition);
                          } else {
                              // Zustand existiert noch nicht, erstellen
                              console.log('State does not exist, creating...');
                              createState(id, value, true, typeDefinition);
                          }
                      }
                  }
              }
              
              
              function createOrUpdateObjectTree_x(baseId, obj) {
                  for (const key in obj) {
                      const value = obj[key];
                      const id = `${baseId}.${key}`;
                      const field =`${key}`;
                      let valueType = getType(id, value);
              
                      if (valueType === 'object' && value !== null) {
                          createOrUpdateObjectTree(id, value);
                      } else {
                          let typeDefinition = {name: field, type: valueType, read: true, write: false};
              
                          // Prüfen, ob der Zustand bereits existiert
                          if (existsState(id)) {
                              // Zustand existiert bereits, aktualisieren
                              setState(id, value, true, typeDefinition);
                          } else {
                              // Zustand existiert noch nicht, erstellen
                              createState(id, value, true, typeDefinition);
                          }
                      }
                  }
              }
              
               // KMW_Messwerte();
              
              
              T 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Sven Schumacher last edited by

                @sven-schumacher sagte: Das wird nur einmal Am Tag gemacht

                Laut Zeile 1 wird es zwischen 1:00 Uhr und 1:59 Uhr jede Minute gemacht.

                Homoran 1 Reply Last reply Reply Quote 1
                • Homoran
                  Homoran Global Moderator Administrators @paul53 last edited by

                  @paul53 Die Logmeldungen kamen lt. anderem Thread aber 3x pro Millisekunde.

                  1 Reply Last reply Reply Quote 0
                  • T
                    ticaki Developer @Sven Schumacher last edited by ticaki

                    @sven-schumacher sagte in Script okay? Hier zur Überprüfung:

                    Und hier noch das zweite Scipt zu dem Thema.
                    Hier werden die aktuelle Messwerte alle 15 Minuten abgefragt.

                    schedule("*/15 * * * *", function () {
                        KMW_Messwerte();
                        console.log ("DONE");
                    });
                    
                    const typeOverrides = {
                        lat: 'string',
                        lon: 'string',
                        dateTime: 'string',
                        run: 'string',
                        weatherSymbol: {value: 'string'}
                    };
                    
                    function getType(key, value) {
                        let type = typeof value;
                    
                        // Special type handling
                        let path = key.split('.');
                        let currentOverrides = typeOverrides;
                        for (let part of path) {
                            if (currentOverrides[part]) {
                                if (typeof currentOverrides[part] === 'object') {
                                    currentOverrides = currentOverrides[part];
                                } else {
                                    return currentOverrides[part];
                                }
                            } else {
                                break;
                            }
                        }
                    
                        return type;
                    }
                    
                    function KMW_Messwerte() {
                        const fetch = require('node-fetch');
                        const url = 'https://api.kachelmannwetter.com/v02/current/55.49413097231316/7.87122704335334';
                        const options = {
                            method: 'GET',
                            headers: {
                                'Accept': 'application/json',
                                'X-API-Key': '0815',
                            },
                        };
                    
                        fetch(url, options)
                            .then(response => response.json())
                            .then(data => {
                                createOrUpdateObjectTree('javascript.0.Kachelmann.Messwerte', data);
                            })
                            .catch(err => console.error('Fehler:', err));
                    }
                    
                    function createOrUpdateObjectTree(baseId, obj) {
                        for (const key in obj) {
                            const value = obj[key];
                            const id = `${baseId}.${key}`;
                            const field =`${key}`;
                            let valueType = getType(id, value);
                    
                            //log('Data:' + ' - ' + key + ' - ' + value +  ' - ' + id +  ' - ' + field + ' - ' + valueType);
                    
                            if (valueType === 'object' && value !== null) {
                                //console.log('Descending into sub-object:', value);
                                createOrUpdateObjectTree(id, value);
                            } else {
                                //console.log('Updating or creating state...');
                                let typeDefinition = {name: field, type: valueType, read: true, write: false};
                    
                                // Prüfen, ob der Zustand bereits existiert
                                if (existsState(id)) {
                                    // Zustand existiert bereits, aktualisieren
                                    console.log('State exists, updating...');
                                    setState(id, value, true, typeDefinition);
                                } else {
                                    // Zustand existiert noch nicht, erstellen
                                    console.log('State does not exist, creating...');
                                    createState(id, value, true, typeDefinition);
                                }
                            }
                        }
                    }
                    
                    
                    function createOrUpdateObjectTree_x(baseId, obj) {
                        for (const key in obj) {
                            const value = obj[key];
                            const id = `${baseId}.${key}`;
                            const field =`${key}`;
                            let valueType = getType(id, value);
                    
                            if (valueType === 'object' && value !== null) {
                                createOrUpdateObjectTree(id, value);
                            } else {
                                let typeDefinition = {name: field, type: valueType, read: true, write: false};
                    
                                // Prüfen, ob der Zustand bereits existiert
                                if (existsState(id)) {
                                    // Zustand existiert bereits, aktualisieren
                                    setState(id, value, true, typeDefinition);
                                } else {
                                    // Zustand existiert noch nicht, erstellen
                                    createState(id, value, true, typeDefinition);
                                }
                            }
                        }
                    }
                    
                     // KMW_Messwerte();
                    
                    

                    Log meldungen dazu, damit ich net hin und her klicken muß 🙂

                    2023-11-28 22:45:01.728  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.728  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.729  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.729  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.729  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.730  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.730  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.730  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.731  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.731  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.731  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.732  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.732  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.732  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.732  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.733  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.733  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.733  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.734  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.734  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.734  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.735  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.735  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.735  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    2023-11-28 22:45:01.736  - info: javascript.0 (860) script.js.common.Kachelmann-Messwerte: State exists, updating...
                    

                    ein Fehler - weiß nicht was der Fehler für Auswirkungen hat.

                    setState(id, value, true, -typeDefinition-);
                    

                    an der stelle steht ein optionaler callback.

                    https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#setstate

                    Sven Schumacher 1 Reply Last reply Reply Quote 1
                    • Sven Schumacher
                      Sven Schumacher @ticaki last edited by

                      @ticaki was daran ist ein Fehler? Hier wir ein existierender state geupdated. Es sind halt 384 states, die auf einmal geschickt werden. Ich kann höchstens schauen, ob ich den Debuglevel runter drehen kann.

                      T 1 Reply Last reply Reply Quote 0
                      • T
                        ticaki Developer @Sven Schumacher last edited by

                        @sven-schumacher sagte in Script okay? Hier zur Überprüfung:

                        @ticaki was daran ist ein Fehler? Hier wir ein existierender state geupdated. Es sind halt 384 states, die auf einmal geschickt werden. Ich kann höchstens schauen, ob ich den Debuglevel runter drehen kann.

                        War schlecht ausgedrückt:

                        setState(id, state, ack, callback);
                        

                        Da wo in der Funktion eine Callback-Funktion übergeben werden soll, steht bei dir ein JSON.

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

                        Support us

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

                        585
                        Online

                        32.0k
                        Users

                        80.5k
                        Topics

                        1.3m
                        Posts

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