NEWS
PING Adapter Fragen….
-
Liebe Leute,
zwei Fragen zum Ping Adapter:
1. wird bei dem noch weiter entwickelt? Hätte einen Wunsch: das wie beim CuxD Ping das Intervall zwischen erreichbar und nicht erreichbar ein anderes einstellbar ist…
2. wenn eher nein, kann man dann von diesem Adapter "gefahrlos" die Performance betreffend auch 6 Instanzen installieren? Dann würde ich das in einem Script mit aktivieren/deaktivieren der einzelnen Instanzen selbst steuern...
Im Prinzip würden dann eh immer nur drei aktiv sein, je eine pro Telefon und jeweils die Instanz mit dem passenden Intervall...
Grüße
Tom
-
Ich habe vier Instanzen aktiv, mit unterschiedlichen Zeiten (1x 10 Sekunden, 3x 60 Sekunden) und geschätzten 50-60 IP-Adressen.
Je Instanz werden 35 bis 40 MB Ram benötigt.
Ich habe keinerlei Performanceprobleme, wobei die HW Basis recht großzügig ist.
-
Hallo,
ich habe auch eine Frage zum Ping-Adapter:
Ich nutze einen XEOMA Server um die Bilder meiner IP-Kameras zu verwalten. Der Server fällt manchmal aus (CPU last zu hoch). Ich habe ein Skript, mit dem ich aus VIS den Server stoppen und neu starten kann. Genau das möchte ich automatisieren. Ich dachte an den PING Adapter. Er sollte den Server überwachen. Der Server läuft auf Port 10081 und ist für den Browser erreichbar. Für den Ping Adapter aber nicht. Was ist das Problem? Kann der Adapter keine Ports erkennen?
Der Screenshot erklärt es vielleicht besser.
Gruß
Pix
-
Ich habe vier Instanzen aktiv, mit unterschiedlichen Zeiten (1x 10 Sekunden, 3x 60 Sekunden) und geschätzten 50-60 IP-Adressen.
Je Instanz werden 35 bis 40 MB Ram benötigt.
Ich habe keinerlei Performanceprobleme, wobei die HW Basis recht großzügig ist. `
danke für die Info, dann kann ich das auch auf ioBroker implementieren - ist einfach auf ioBroker alles viel flexibler möglich als auf der CCU…..die tut bei mir bald nur mehr funken und sonst nix gg
Danke
Tom
-
@pix:Ich nutze einen XEOMA Server um die Bilder meiner IP-Kameras zu verwalten. Der Server fällt manchmal aus (CPU last zu hoch). Ich habe ein Skript, mit dem ich aus VIS den Server stoppen und neu starten kann. Genau das möchte ich automatisieren. Ich dachte an den PING Adapter. Er sollte den Server überwachen. Der Server läuft auf Port 10081 und ist für den Browser erreichbar. Für den Ping Adapter aber nicht. Was ist das Problem? Kann der Adapter keine Ports erkennen? `
Kannst Du denn den Server so anpingen?
Ping läuft über ICMP. Ich würde die Webseite mit request abfragen.
HIer überwache ich zB. die Webseite von CUxD.
Ob die Seite erreichbar ist oder nicht, wird in den Datenpunkt Status_http_bool geschrieben.
! ````
! // Skriptname und Instanz nicht ändern!
// javascript.1.scriptEnabled.Daten.Read_CUxD
//
// scriptEnabled wird von anderen Skripten verwendet:
// script.js.Steuerung.Reaktion_auf_Ping
! request = require('request');
! var ccuIp ="172.16.130.199";
var timeout = 3000;
! var pfad = "Systeminfos.CCU" + "."; // Pfad Systeminfos zur CCU
var pfad2 = "Systeminfos.CUxD" + "."; // Pfad Systeminfos zu CUxD
var cronStr = "*/10 * * * ";
! var idCcuUptime = pfad + 'uptime';
var idCcuVersion = pfad + 'Version';
! var idCcuLa01 = pfad + 'Load_Average.load_average_01_min';
var idCcuLa05 = pfad + 'Load_Average.load_average_05_min';
var idCcuLa15 = pfad + 'Load_Average.load_average_15_min';
! var idCpuLoad = pfad + '10s_CPU_Load';
! var idCuxdUptime = pfad2 + 'uptime';
var idCuxdVersion = pfad2 + 'Version';
var idCuxdStatus = pfad2 + 'Status_http';
var idCuxdStatusBool= pfad2 + 'Status_http_bool';
var idCuxdError = pfad2 + 'http_error';
! createState(idCcuUptime, 0, {
name: 'CCU Uptime',
desc: 'CCU Uptime',
type: 'number',
unit: 'Tag(e)',
role: 'value'
});
! createState(idCcuVersion, "", {
name: 'CCU SW Version',
desc: 'CCU SW Version',
type: 'string',
unit: '',
role: 'value'
});
! createState(idCuxdUptime, 0, {
name: 'CUxD Uptime',
desc: 'CUxD Uptime',
type: 'number',
unit: 'Tag(e)',
role: 'value'
});
! createState(idCuxdVersion, "", {
name: 'CUxD SW Version',
desc: 'CUxD SW Version',
type: 'string',
unit: '',
role: 'value'
});
! createState(idCuxdStatus, 0, {
name: 'Status Webseite CUxD',
desc: 'Status Webseite CUxD',
type: 'number',
unit: '',
role: 'value'
});
! createState(idCuxdStatusBool, false, {
name: 'Status Webseite CUxD bool',
desc: 'Status Webseite CUxD bool',
type: 'boolean',
unit: '',
role: 'value'
});
! createState(idCuxdError, "", {
name: 'letzte Meldung Webseite CUxD',
desc: 'letzte Meldung Webseite CUxD',
type: 'string',
unit: '',
role: 'value'
});
! createState(idCcuLa01, 0, {
name: 'mittlere Systemauslastung in der letzten Minute',
desc: 'mittlere Systemauslastung in der letzten Minute',
type: 'number',
unit: '',
role: 'value'
});
! createState(idCcuLa05, 0, {
name: 'mittlere Systemauslastung in der letzten 5 Minuten',
desc: 'mittlere Systemauslastung in der letzten 5 Minuten',
type: 'number',
unit: '',
role: 'value'
});
! createState(idCcuLa15, 0, {
name: 'mittlere Systemauslastung in der letzten 15 Minuten',
desc: 'mittlere Systemauslastung in der letzten 15 Minuten',
type: 'number',
unit: '',
role: 'value'
});
! createState(idCpuLoad, 0, {
name: '10 Sekunden CPU Load',
desc: '10 Sekunden CPU Load',
type: 'number',
unit: '%',
role: 'value'
});
! var options = {
url: url= "http://" + ccuIp + "/addons/cuxd/index.ccc?m=15",
timeout: timeout,
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'
}
};
! function readCUxD(url) {
try {
request(options, function (error, response, body) {
if (!error && ('' + response.statusCode).match(/^2\d\d$/)) { // kein Fehler (2xx), Inhalt in body
//log(response.statusCode);
var cuxdUptimeStr = body.match(/CUxD-Uptime(.+)/i);
var ccuUptimeStr = body.match(/CCU-Uptime(.+)/i);
var speicher = body.match(/Speicher:(.+)/i);
var filesystem = body.match(/Filesystem: / (.+)/i);
var filesystemSD = body.match(/Filesystem: /media/sd(.+)/i);
var loadAverage = body.match(/load-average: (.)+/i);
var cpuLoad = loadAverage;
! var cuxdVersion = cuxdUptimeStr.toString().match(/((\d+.){1,2}\d+)/i);
var cuxdUptime = cuxdUptimeStr.toString().replace(/ Tag.+/i,"");
cuxdUptime = parseInt(cuxdUptime.replace(/(.?)): /,""));var ccuVersion = ccuUptimeStr.toString().match(/((\d+\.){1,2}\d+)/i); var ccuUptime = ccuUptimeStr.toString().replace(/ Tag.+/i,""); ccuUptime = parseInt(ccuUptime.replace(/(.*?)\): /,""));
! loadAverage = loadAverage.toString().replace(/load-average: /, "");
loadAverage = loadAverage.match(/.{14}/);
loadAverage = loadAverage.toString().replace(/,/g,".");
loadAverage = loadAverage.split(" ");
! cpuLoad = cpuLoad.toString().replace(/.+cpu-load: /, "");
cpuLoad = cpuLoad.toString().replace("%", "");! //log("-------------------------------------");
//log(cuxdUptimeStr);
//log(ccuUptimeStr);
//log(speicher);
log("Filesystem: "+filesystem);
log("FilesystemSD: "+filesystemSD);
//log("CUxD Version : "+ cuxdVersion[0]);
//log("CUxD Uptime: " + cuxdUptime + " Tag(e)");
//log("ccu Version : "+ ccuVersion[0]);
//log("ccu Uptime: " + ccuUptime + " Tag(e)");
//log(body);
! setState(idCcuLa01 ,parseFloat(loadAverage[0]));
setState(idCcuLa05 ,parseFloat(loadAverage[1]));
setState(idCcuLa15 ,parseFloat(loadAverage[2]));
! setState(idCpuLoad ,parseFloat(cpuLoad));
!
setState(idCuxdStatus ,response.statusCode);
setState(idCuxdStatusBool ,true);
! setState(idCuxdError ,"OK (" + response.statusCode+")");
! setState(idCcuUptime ,ccuUptime);
setState(idCcuVersion ,ccuVersion[0]);
! setState(idCuxdUptime ,cuxdUptime);
setState(idCuxdVersion ,cuxdVersion[0]);} else { // Fehler bei der Abfrage der CUxD Webseite //log("StatusCode="+response.statusCode); log("ERROR CODE: " + error.code + " ################"); // EHOSTUNREACH, ETIMEDOUT if (!error) { setState(idCuxdStatus ,response.statusCode); } else { setState(idCuxdStatus ,-1); } setState(idCuxdStatusBool ,false); setState(idCuxdError ,formatDate(new Date(), "YYYY-MM-DD,hh:mm " + error));
! // Uptime negieren, wenn Webseite nicht erreichbar
if (getState(idCuxdUptime).val > 0) setState(idCuxdUptime,getState(idCuxdUptime).val * -1);
if (getState(idCcuUptime).val > 0) setState(idCcuUptime,getState(idCcuUptime).val * -1);
log(error,'error');setTimeout(function(l) { // bei Fehler jede Minute abfragen readCUxD(url); },60000); } }); } catch (error) { log('Fehler (try) leseWebseite: ' + error, 'error'); }
}
! // regelmässige Wiederholungen
// -----------------------------------------------------------------------------
schedule(cronStr, function () {
readCUxD(url);
});
! // main
// -----------------------------------------------------------------------------
function main() {
readCUxD(url);
}
! // Start Skript:
// -----------------------------------------------------------------------------
setTimeout(main, 500);
! ```` -
Hallo,
ich bin eigentlich erst auf PING gekommen, da request() nicht (mehr) funktionierte.
var request = require('request'); function checkActive () { request("http://192.168.178.38:10080", function (error, response, body) { if (error) { setState(idAktiv, false); log('XEOMA inaktiv', 'debug'); } else { setState(idAktiv, true); log('XEOMA aktiv', 'debug'); loadXeoma(); } }); } ````Mit diesem Code werden nicht mal Logs geschrieben. Würde gern wieder auf PING-Adapter verzichten. Und ein großes Lob und vielen Dank für das Systeminfo Skript! Ist ja super, da hat man ja alle Infos zusammen. Mach doch schnell einen Adapter CCU_CuXD_Info draus! User gibt nur noch IP ein und ab geht's. Viele Grüße, Pix
-
@pix:…das Systeminfo Skript! `
Vielleicht kannst Du die beiden dazugehörigen Skripte noch gebrauchen:
1. Abfrage im Internet der aktuell verfügbaren CCU2 Firmware:
! ````
request = require('request');
! var url ="http://update.homematic.com/firmware/download?cmd=js_check_version&version=12345&product=HM-CCU2&serial=12345";
var timeout = 3000;
! var pfad = "Systeminfos.CCU" + "."; // Pfad Systeminfos zur CCU
var cronStr = "*/45 * * * *";
! var idActVersion = pfad + 'Version_aktuell';
! createState(idActVersion, "", {
name: 'CCU SW Version aktuell verfügbar',
desc: 'CCU SW Version aktuell verfügbar',
type: 'string',
unit: '',
role: 'value'
});
! var options = {
url: url= url,
timeout: timeout,
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'
}
};
! function readWeb(url) {
try {
request(options, function (error, response, body) {
if (!error && ('' + response.statusCode).match(/^2\d\d$/)) { // kein Fehler (2xx), Inhalt in body
log(response.statusCode);var actVersion = body.match(/\d+.\d+.\d+/); //log(body); //log(actVersion);
! if (actVersion !== null) setState(idActVersion ,actVersion.toString());
!
} else { // Fehler bei der Abfrage der CUxD Webseite
//log("StatusCode="+response.statusCode);
log("ERROR CODE: " + error.code + " ################");
// EHOSTUNREACH, ETIMEDOUT
if (!error) {
log("response.statusCode: " + response.statusCode);
} else {
//
}
log(error,'error');setState(idActVersion,"Fehler"); /* setTimeout(function(l) { // bei Fehler jede Stunde abfragen readWeb(url); },3600000); */ } }); } catch (error) { log('Fehler (try) leseWebseite: ' + error, 'error'); }
}
! // regelmässige Wiederholungen
// -----------------------------------------------------------------------------
schedule(cronStr, function () {
readWeb(url);
});
! // main
// -----------------------------------------------------------------------------
function main() {
readWeb(url);
}
! // Start Skript:
// -----------------------------------------------------------------------------
setTimeout(main, 500);
! ````2. Vergleich, ob es eine neuere Version im Internet als auf der CCU2 gibt:
!
var pfad = "Systeminfos.CCU" + "."; // Pfad Systeminfos zur CCU ! var idFWnow = "javascript.1.Systeminfos.CCU.Version"/*CCU SW Version*/; var idFWact = "javascript.1.Systeminfos.CCU.Version_aktuell"/*CCU SW Version aktuell verfügbar*/; ! var idFWneu = pfad + 'neue_FW_verfügbar'; ! createState(idFWneu, false, { name: 'neue CCU2 Firmware verfügbar', desc: 'neue CCU2 Firmware verfügbar', type: 'boolean', unit: '', role: 'value' }); ! // bestehende Firmware hat sich geändert on({id:idFWnow,change:'ne'}, function (obj) { vergleichFW(); }); ! // verfügbare Firmware hat sich geändert on({id:idFWact,change:'ne'}, function (obj) { vergleichFW(); }); ! function vergleichFW() { var fwAct = getState(idFWact).val; var fwNow = getState(idFWnow).val; if (fwAct != fwNow) { setState(idFWneu,true); // neue Firmware verfügbar log("CCU2: FW ist: " + fwNow + ", neue Firmware verfügbar: " + fwAct); } else { setState(idFWneu,false); // keine neue Firmware verfügbar log("CCU2: FW ist aktuell ("+ fwNow+")"); } } ! // main // ----------------------------------------------------------------------------- function main() { vergleichFW(); } ! // Start Skript: // ----------------------------------------------------------------------------- setTimeout(main, 500); !
Ich lasse mir dann neuere Versionen per Telegram, VIS und Sonos ausgeben.
-
Danke, zur Zeit noch nicht. Habe noch die CCU1
Wenn ich mich doch traue, mal alle angelernten Geräte umzuziehen und eine CCU2 zu kaufen, dann komme ich drauf zurück.
Gruß
Pix
-
Auch ich habe eine Frage zum Ping-Adapter. Seit dem letzten Update auf 1.1.1 verliert der Adapter die Zuordnung der Räume.
Konfiguration
Fritzbox 192.168.2.1 Arbeitszimmer
Sonne 192.168.2.10 Arbeitszimmer
Galaxy 192.168.2.11 Kinderzimmer
Blueray 192.168.2.110 Wohnzimmer
Raspi3 192.168.2.115 Arbeitszimmer
Rasp-ccu 192.168.2.25 Arbeitszimmer
AmazonFire 192.168.2.35 Schlafzimmer
Raspberrypi 192.168.2.40 Arbeitszimmer
Qnap 192.168.2.50 Arbeitszimmer
Saturn 192.168.2.55 Arbeitszimmer
Alienware 192.168.2.70 Wohnzimmer
surface 192.168.2.75 Kinderzimmer
Technisat 192.168.2.85 Wohnzimmer
Nuc 192.168.2.95 Arbeitszimmer
WZAmazonFire 192.168.2.120 Wohnzimmer
Nach einiger Zeit verschwinden die Raumzuordnungen in der Objektsicht und auch in den Aufzählungen der Räume.
Nach dem Update habe ich die Daten noch einmal neu angelegt, aber sie verschwinden unvorhersehbar.
Danke für Eure Hilfe
-
Wenn ich den PING Adapter installiere kommt danach bei mir eine Seite index.html Fehlt. Was ist da los? Andere Adadpter gehen und wurden genauso installiert.