NEWS
Script okay? Hier zur Überprüfung
-
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();
-
@sven-schumacher sagte in Script okay? Hier zur Überprüfung:
Aus Gründen mit ungültigem API-Key
hab ich dann mal gelöscht
-
@homoran der key wurde von mir schon verstümmelt, war also eh nutzlos. Aber so ist es halt 100%
-
@homoran Hab 0815 eingetragen, weil dein Edit das Syntax-Highlighting kaputt gemacht hat
-
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();
-
@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.
-
@paul53 Die Logmeldungen kamen lt. anderem Thread aber 3x pro Millisekunde.
-
@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
-
@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.
-
@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.