Habe den standard Code vom Wiki in Verwendung.
Kontrolliere es und gebe dir eine Rückmeldung.
Danke.
char* p,*pS; char* cStatus; char* cBattdate; char* cModel; char szBuffer[1500]; int nLen; int bOnline = 0; double dCharge,dLoad,dLinev,dTimeleft,dBattv,dTonbatt,dCu monbatt; //printf("Starting USV APC BackUPS 1500 watch"); while(TRUE) { STREAM* stream = stream_create("/dev/tcp/192.168.1.81/3551",0,0); if (stream != NULL) { szBuffer[0] = 0; szBuffer[1] = 6; stream_write(stream,szBuffer,2); stream_flush(stream); stream_write(stream,"status",6); stream_flush(stream); nLen = stream_read(stream,szBuffer,2,1000); nLen = stream_read(stream,szBuffer,sizeof(szBuffer) - 1,1000); stream_close(stream); szBuffer[nLen] = 0; szBuffer[nLen + 1] = 0; //printf("APC BufferLen=%d",nLen); pS = szBuffer; while(*pS) { //MODEL : UPS model derived from UPS information p = strstr(pS,"MODEL :"); if (p != NULL) { cModel = strstrskip(p,"MODEL : "); //printf("APC Model=%s",cModel); setoutputtext(0,cModel); } //STATUS : UPS status (online, charging, on battery etc) p = strstr(pS,"STATUS :"); if (p != NULL) { cStatus = strstrskip(p,"STATUS : "); //printf("APC Status=%s",cStatus); setoutputtext(1,cStatus); p = strstr(pS,"ONLINE"); if (p != NULL) setoutput(0,0); else setoutput(0,1); } //LINEV : Current input line voltage p = strstr(pS,"LINEV :"); if (p != NULL) { dLinev = batof(p + 11); setoutput(1,dLinev); //printf("APC Linev=%f",dLinev); } //LOADPCT : Percentage of UPS load capacity used as estimated by UPS p = strstr(pS,"LOADPCT :"); if (p != NULL) { dLoad = batof(p + 11); setoutput(2,dLoad); //printf("APC Load=%f",dLoad); } //BCHARGE : Current battery capacity charge percentage p = strstr(pS,"BCHARGE :"); if (p != NULL) { dCharge = batof(p + 11); setoutput(3,dCharge); //printf("APC Bcharge=%f",dCharge); } //TIMELEFT: Remaining runtime left on battery as estimated by the UPS p = strstr(pS,"TIMELEFT :"); if (p != NULL) { dTimeleft = batof(p + 11); setoutput(4,dTimeleft); //printf("APC Timeleft=%f",dTimeleft); } //BATTV : Current battery voltage p = strstr(pS,"BATTV :"); if (p != NULL) { dBattv = batof(p + 11); setoutput(5,dBattv); //printf("APC Battv=%f",dBattv); } //TONBATT :Seconds currently on battery p = strstr(pS,"TONBATT :"); if (p != NULL) { dTonbatt = batof(p + 11); setoutput(6,dTonbatt); //printf("APC Tonbatt=%f",dTonbatt); } //CUMONBATT : Cumulative seconds on battery since apcupsd startup p = strstr(pS,"CUMONBATT:"); if (p != NULL) { dCumonbatt = batof(p + 11); setoutput(7,dCumonbatt); //printf("APC Cumonbatt=%f",dCumonbatt); } //BATTDATE: Date battery last replaced (if set) p = strstr(pS,"BATTDATE :"); if (p != NULL) { cBattdate = strstrskip(p,"BATTDATE : "); //printf("APC Battdate=%s",cBattdate); setoutputtext(2,cBattdate); } pS += (strlen(pS) + 1); } } else //printf("APC no connection"); sleeps(10); // wait 10 seconds }
Wir verarbeiten personenbezogene Daten über Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen, Werbung zu personalisieren und Websiteaktivitäten zu analysieren. Wir können bestimmte Informationen über unsere Nutzer mit unseren Werbe- und Analysepartnern teilen. Weitere Einzelheiten finden Sie in unserer Datenschutzrichtlinie.
Wenn Sie unten auf "Einverstanden" klicken, stimmen Sie unserer Datenschutzrichtlinie und unseren Datenverarbeitungs- und Cookie-Praktiken wie dort beschrieben zu. Sie erkennen außerdem an, dass dieses Forum möglicherweise außerhalb Ihres Landes gehostet wird und Sie der Erhebung, Speicherung und Verarbeitung Ihrer Daten in dem Land, in dem dieses Forum gehostet wird, zustimmen.
Kommentar