ich habe aber generell noch eine Frage zu dem script. Ich habe daraus jetzt 3 script gemacht. Da ich Kameras, Lan und Wlan einzeln angezeigt bekommen möchte. Die funktionieren auch Alle soweit
ich würde gerne daraus ein script machen. Datenpunkte werden dann auch Alle richtig angelegt. Was ich nicht hinbekommen ist die Ping Abfrage
Momentan ist da so meine Einstellungen
//Version 1.0.0 - 04.10.2024
//Ersteller Ro75.
//https://forum.iobroker.net/topic/77249/skript-ping
//Voraussetzungen (Version 1.0.0 getestet mit)
//NodeJS: 20.x
//Javascript-Adapter: 8.7.6
//Admin-Adapter: 7.0.23
//JS-Controller: 6.0.11
//https://forum.iobroker.net/topic/77249/skript-ping
//"normale" Geräte ("Computer, Router, Switch, HUB, NAS, WLAN-Steckdosen, Android-Smartphone, Android-Tablet, etc.")
//Amazon Echos, SKY-Geräte und diverse Konsolen (einfach probieren) funktionieren nicht.
const ping = require('ping'); //Im Javascript-Adapter einzutragen (Zusätzliche NPM-Module)
const sMainPathKamera = '0_userdata.0.Netzwerkgeräte-Test.Kamera.'; //zentraler Datenpunkt
const sMainPathKameras = '0_userdata.0.Netzwerkgeräte-Test.Kameras';
const sMainPathLan = '0_userdata.0.Netzwerkgeräte-Test.Lan.'; //zentraler Datenpunkt
const sMainPathLangeraete = '0_userdata.0.Netzwerkgeräte-Test.Lan-Geräte';
const sMainPathWlan = '0_userdata.0.Netzwerkgeräte-Test.Wlan.'; //zentraler Datenpunkt
const sMainPathWlangeraete = '0_userdata.0.Netzwerkgeräte-Test.Wlan-Geräte';
//Konfiguration der abzufragenden Geräte. Geräte werden duch "Doppelpunkt" (:) getrennt.
//Jedes Geräte besteht aus zwei Werten. Die Werte werden durch Komma (,) getrennt.
//Links vom Komma die Bezeichnung und rechts vom Komma die IP-Adresse
const cDevicePingKamera = 'Kamera-Garage,192.168.178.50'; //bitte anpassen
const cDevicePingLan = 'Lan-Geraete,192.168.178.60'; //bitte anpassen
const cDevicePingWlan = 'Wlan-Geraete,192.168.178.70'; //bitte anpassen
//Kamera Datenpunkte anlegen
function PingInitalisierungKamera(){
let sDevice = cDevicePingKamera.split(':');
for (let i = 0; i <= sDevice.length-1; i++) {
let device_data = sDevice[i].split(',');
createState(sMainPathKamera+device_data[0], '', {name: device_data[1],read: true, write: true});
createState(sMainPathKamera+device_data[0]+'.Ping.alive', false, {name: 'Pingstatus' ,type: 'boolean', read: true, write: true});
createState(sMainPathKamera+device_data[0]+'.Ping.time', 0, {name: 'Zeit' ,type: 'number', read: true, write: true, unit: 'ms'});
createState(sMainPathKamera+device_data[0]+'.Ping.status', '', {name: 'Status' ,type: 'string', read: true, write: true});
createState(sMainPathKameras, 0, {name: 'Onlinestatus' ,type: 'number', read: true, write: true});
}
}
//Lan Datenpunkte anlegen
function PingInitalisierungLan(){
let sDevice = cDevicePingLan.split(':');
for (let i = 0; i <= sDevice.length-1; i++) {
let device_data = sDevice[i].split(',');
createState(sMainPathLan+device_data[0], '', {name: device_data[1],read: true, write: true});
createState(sMainPathLan+device_data[0]+'.Ping.alive', false, {name: 'Pingstatus' ,type: 'boolean', read: true, write: true});
createState(sMainPathLan+device_data[0]+'.Ping.time', 0, {name: 'Zeit' ,type: 'number', read: true, write: true, unit: 'ms'});
createState(sMainPathLan+device_data[0]+'.Ping.status', '', {name: 'Status' ,type: 'string', read: true, write: true});
createState(sMainPathLangeraete, 0, {name: 'Onlinestatus' ,type: 'number', read: true, write: true});
}
}
//Wlan Datenpunkte anlegen
function PingInitalisierungWlan(){
let sDevice = cDevicePingWlan.split(':');
for (let i = 0; i <= sDevice.length-1; i++) {
let device_data = sDevice[i].split(',');
createState(sMainPathWlan +device_data[0], '', {name: device_data[1],read: true, write: true});
createState(sMainPathWlan +device_data[0]+'.Ping.alive', false, {name: 'Pingstatus' ,type: 'boolean', read: true, write: true});
createState(sMainPathWlan +device_data[0]+'.Ping.time', 0, {name: 'Zeit' ,type: 'number', read: true, write: true, unit: 'ms'});
createState(sMainPathWlan +device_data[0]+'.Ping.status', '', {name: 'Status' ,type: 'string', read: true, write: true});
createState(sMainPathWlangeraete, 0, {name: 'Onlinestatus' ,type: 'number', read: true, write: true});
}
}
//START
PingInitalisierungKamera();
async function pingHost(host,sDesc) {
try {
const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
setState(sMainPathKamera+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
setState(sMainPathKamera+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
setState(sMainPathKamera+sDesc+'.Ping.status', 'OK', true);
} catch (error) {
setState(sMainPathKamera+sDesc+'.Ping.status', 'ERROR', true);
}
}
PingInitalisierungLan();
async function pingHost(host,sDesc) {
try {
const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
setState(sMainPathLan+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
setState(sMainPathLan+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
setState(sMainPathLan+sDesc+'.Ping.status', 'OK', true);
} catch (error) {
setState(sMainPathLan+sDesc+'.Ping.status', 'ERROR', true);
}
}
PingInitalisierungWlan();
async function pingHost(host,sDesc) {
try {
const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
setState(sMainPathWlan+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
setState(sMainPathWlan+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
setState(sMainPathWlan+sDesc+'.Ping.status', 'OK', true);
} catch (error) {
setState(sMainPathWlan+sDesc+'.Ping.status', 'ERROR', true);
}
}
//Ping aller 10 Sekunden - kann angepasst werden - kleinerer Wert nicht empfohlen
//damit das Intervall (wenn zu niedrig) nicht "gesprengt" wird: Schleife sperren und am Ende wieder freigeben
let bPingSperreKamera = false;
schedule('*/20 * * * * *', async function StartPing() {
if (bPingSperreKamera == false) {
bPingSperreKamera = true;
let sDevice = cDevicePingKamera.split(':');
for (let i = 0; i <= sDevice.length-1; i++) {
await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
}
bPingSperreKamera = false;
}
});
let bPingSperreLan = false;
schedule('*/30 * * * * *', async function StartPing() {
if (bPingSperreLan == false) {
bPingSperreLan = true;
let sDevice = cDevicePingLan.split(':');
for (let i = 0; i <= sDevice.length-1; i++) {
await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
}
bPingSperreLan= false;
}
});
//Ping aller 10 Sekunden - kann angepasst werden - kleinerer Wert nicht empfohlen
//damit das Intervall (wenn zu niedrig) nicht "gesprengt" wird: Schleife sperren und am Ende wieder freigeben
let bPingSperreWlan = false;
schedule('*/40 * * * * *', async function StartPing() {
if (bPingSperreWlan == false) {
bPingSperreWlan = true;
let sDevice = cDevicePingWlan.split(':');
for (let i = 0; i <= sDevice.length-1; i++) {
await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
}
bPingSperreWlan = false;
}
});
der Part ist so nicht richtig. Da bräuchte ich Hilfe
//START
PingInitalisierungKamera();
async function pingHost(host,sDesc) {
try {
const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
setState(sMainPathKamera+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
setState(sMainPathKamera+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
setState(sMainPathKamera+sDesc+'.Ping.status', 'OK', true);
} catch (error) {
setState(sMainPathKamera+sDesc+'.Ping.status', 'ERROR', true);
}
}
PingInitalisierungLan();
async function pingHost(host,sDesc) {
try {
const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
setState(sMainPathLan+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
setState(sMainPathLan+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
setState(sMainPathLan+sDesc+'.Ping.status', 'OK', true);
} catch (error) {
setState(sMainPathLan+sDesc+'.Ping.status', 'ERROR', true);
}
}
PingInitalisierungWlan();
async function pingHost(host,sDesc) {
try {
const res = await ping.promise.probe(host, {timeout: 2, deadline: 2, packetSize: 16});
setState(sMainPathWlan+sDesc+'.Ping.alive', JSON.parse(JSON.stringify(res)).alive, true);
setState(sMainPathWlan+sDesc+'.Ping.time', parseFloat(JSON.parse(JSON.stringify(res)).time), true);
setState(sMainPathWlan+sDesc+'.Ping.status', 'OK', true);
} catch (error) {
setState(sMainPathWlan+sDesc+'.Ping.status', 'ERROR', true);
}
}
//Ping aller 10 Sekunden - kann angepasst werden - kleinerer Wert nicht empfohlen
//damit das Intervall (wenn zu niedrig) nicht "gesprengt" wird: Schleife sperren und am Ende wieder freigeben
let bPingSperreKamera = false;
schedule('*/20 * * * * *', async function StartPing() {
if (bPingSperreKamera == false) {
bPingSperreKamera = true;
let sDevice = cDevicePingKamera.split(':');
for (let i = 0; i <= sDevice.length-1; i++) {
await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
}
bPingSperreKamera = false;
}
});
let bPingSperreLan = false;
schedule('*/30 * * * * *', async function StartPing() {
if (bPingSperreLan == false) {
bPingSperreLan = true;
let sDevice = cDevicePingLan.split(':');
for (let i = 0; i <= sDevice.length-1; i++) {
await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
}
bPingSperreLan= false;
}
});
//Ping aller 10 Sekunden - kann angepasst werden - kleinerer Wert nicht empfohlen
//damit das Intervall (wenn zu niedrig) nicht "gesprengt" wird: Schleife sperren und am Ende wieder freigeben
let bPingSperreWlan = false;
schedule('*/40 * * * * *', async function StartPing() {
if (bPingSperreWlan == false) {
bPingSperreWlan = true;
let sDevice = cDevicePingWlan.split(':');
for (let i = 0; i <= sDevice.length-1; i++) {
await pingHost(sDevice[i].split(',')[1],sDevice[i].split(',')[0]);
}
bPingSperreWlan = false;
}
});
Edit: nach der ersten Pingabfrage kommt dann das
javascript.0 12:35:20.027 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.028 warn at pingHost (script.js.common.Netzwerkstatus.Test1:105:9)
javascript.0 12:35:20.028 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.029 warn at pingHost (script.js.common.Netzwerkstatus.Test1:106:9)
javascript.0 12:35:20.029 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.051 warn at pingHost (script.js.common.Netzwerkstatus.Test1:104:9)
javascript.0 12:35:20.051 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.053 warn at pingHost (script.js.common.Netzwerkstatus.Test1:105:9)
javascript.0 12:35:20.053 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.054 warn at pingHost (script.js.common.Netzwerkstatus.Test1:106:9)
javascript.0 12:35:20.054 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.077 warn at pingHost (script.js.common.Netzwerkstatus.Test1:104:9)
javascript.0 12:35:20.078 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.079 warn at pingHost (script.js.common.Netzwerkstatus.Test1:105:9)
javascript.0 12:35:20.080 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.081 warn at pingHost (script.js.common.Netzwerkstatus.Test1:106:9)
javascript.0 12:35:20.081 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.102 warn at pingHost (script.js.common.Netzwerkstatus.Test1:104:9)
javascript.0 12:35:20.103 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.104 warn at pingHost (script.js.common.Netzwerkstatus.Test1:105:9)
javascript.0 12:35:20.104 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.106 warn at pingHost (script.js.common.Netzwerkstatus.Test1:106:9)
javascript.0 12:35:20.106 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.136 warn at pingHost (script.js.common.Netzwerkstatus.Test1:104:9)
javascript.0 12:35:20.137 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.138 warn at pingHost (script.js.common.Netzwerkstatus.Test1:105:9)
javascript.0 12:35:20.138 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.139 warn at pingHost (script.js.common.Netzwerkstatus.Test1:106:9)
javascript.0 12:35:20.140 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.197 warn at pingHost (script.js.common.Netzwerkstatus.Test1:104:9)
javascript.0 12:35:20.197 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.198 warn at pingHost (script.js.common.Netzwerkstatus.Test1:105:9)
javascript.0 12:35:20.198 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)
javascript.0 12:35:20.199 warn at pingHost (script.js.common.Netzwerkstatus.Test1:106:9)
javascript.0 12:35:20.200 warn at async Object.StartPing (script.js.common.Netzwerkstatus.Test1:121:13)