code cleaned
git-svn-id: file:///home/jan/tmp/wetterstation/trunk@201 dd492736-c11a-0410-ad51-8c26713eaf7f
This commit is contained in:
parent
ff877ec580
commit
4eb5123888
|
|
@ -32,7 +32,7 @@ $(BIN_NAME): $(OBJS)
|
|||
@ $(LD) $(DEBUG) $(NOLOG) -L$$(pg_config --libdir)/pgsql $(LD_LIBS) $(LDFLAS) $(BIN_NAME) $(OBJS)
|
||||
@ echo Binary $(BIN_NAME) ist fertig!
|
||||
|
||||
# Abhängigkeiten
|
||||
# Abhaengigkeiten
|
||||
chart.o: chart.c \
|
||||
definitions.h \
|
||||
config.h \
|
||||
|
|
@ -100,14 +100,14 @@ install:
|
|||
@ install -m444 COPYING $(DESTDIR)$(DOCDIR)
|
||||
|
||||
|
||||
# Aufräumnen (alle Object-Files löschen)
|
||||
# Aufraeumnen (alle Object-Files loeschen)
|
||||
cleanup:
|
||||
@ echo "Räume auf..."
|
||||
@ echo "Raeume auf..."
|
||||
@ echo "...entferne Object-Files:"
|
||||
@ echo " " $(OBJS)
|
||||
@ $(RM) -f $(OBJS)
|
||||
|
||||
clean: cleanup
|
||||
@ echo "...lösche binary:"
|
||||
@ echo "...loesche binary:"
|
||||
@ echo " " $(BIN_NAME)
|
||||
@ rm -f $(BIN_NAME)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#############################################
|
||||
# Beispiel-Config-File für ein Diagram-Bild #
|
||||
# Beispiel-Config-File fuer ein Diagram-Bild #
|
||||
#############################################
|
||||
|
||||
# Filename des erzeugten bildes
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#############################################
|
||||
# Beispiel-Config-File für ein Diagram-Bild #
|
||||
# Beispiel-Config-File fuer ein Diagram-Bild #
|
||||
#############################################
|
||||
|
||||
# Filename des erzeugten bildes
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#############################################
|
||||
# Beispiel-Config-File für ein Diagram-Bild #
|
||||
# Beispiel-Config-File fuer ein Diagram-Bild #
|
||||
#############################################
|
||||
|
||||
# Filename des erzeugten bildes
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#############################################
|
||||
# Beispiel-Config-File für ein Diagram-Bild #
|
||||
# Beispiel-Config-File fuer ein Diagram-Bild #
|
||||
#############################################
|
||||
|
||||
# Filename des erzeugten bildes
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#############################################
|
||||
# Beispiel-Config-File für ein Diagram-Bild #
|
||||
# Beispiel-Config-File fuer ein Diagram-Bild #
|
||||
#############################################
|
||||
|
||||
# Filename des erzeugten bildes
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#############################################
|
||||
# Beispiel-Config-File für ein Diagram-Bild #
|
||||
# Beispiel-Config-File fuer ein Diagram-Bild #
|
||||
#############################################
|
||||
|
||||
# Filename des erzeugten bildes
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ label_list_ptr get_y_label_list(int c_hight, int padding){
|
|||
}
|
||||
|
||||
/* Bugfix: manchmal wird das obeste Label nicht angezeigt,
|
||||
* daher den Zaehler um eins erhöhen und wenn dabei ueber
|
||||
* daher den Zaehler um eins erhoehen und wenn dabei ueber
|
||||
* den Bereich hinaus, dann wieder eins runter */
|
||||
num++;
|
||||
if ((temp + ((num - 1) * interval)) > (real_max - 1))
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ $(BIN_NAME): $(OBJS)
|
|||
@ $(LD) $(DEBUG) $(NOLOG) -L$$(pg_config --libdir)/pgsql -lesmtp -lssl -lpq $(LDFLAS) $(BIN_NAME) $(OBJS)
|
||||
@ echo Binary $(BIN_NAME) ist fertig!
|
||||
|
||||
# Abhängigkeiten
|
||||
# Abhaengigkeiten
|
||||
checksensor.o: checksensor.c definitions.h config.h checksensor.h mailer.h
|
||||
config.o: config.c config.h definitions.h checksensor.h mailer.h
|
||||
mailer.o: mailer.c mailer.h
|
||||
|
|
@ -55,14 +55,14 @@ install:
|
|||
@ install -m644 COPYING $(DESTDIR)$(DOCDIR)
|
||||
|
||||
|
||||
# Aufräumnen (alle Object-Files löschen)
|
||||
# Aufraeumnen (alle Object-Files loeschen)
|
||||
cleanup:
|
||||
@ echo "Räume auf..."
|
||||
@ echo "Raeume auf..."
|
||||
@ echo "...entferne Object-Files:"
|
||||
@ echo " " $(OBJS)
|
||||
@ $(RM) -f $(OBJS)
|
||||
|
||||
clean: cleanup
|
||||
@ echo "...lösche binary:"
|
||||
@ echo "...loesche binary:"
|
||||
@ echo " " $(BIN_NAME)
|
||||
@ rm -f $(BIN_NAME)
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ static PGresult *pg_check_exec(PGconn *conn, char *query){
|
|||
DEBUGOUT2("Fehler beim exec: %s\n", query);
|
||||
exit_error(ERROR_QUERY);
|
||||
} else {
|
||||
DEBUGOUT2("Query: '%s' ausgeführt\n", query);
|
||||
DEBUGOUT2("Query: '%s' ausgefuehrt\n", query);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
|
@ -152,7 +152,7 @@ static char *get_type_table_by_id(PGconn *connection, int sens_id){
|
|||
return table;
|
||||
}
|
||||
|
||||
/* Datensätze im gegebenem Interval zaehlen */
|
||||
/* Datensaetze im gegebenem Interval zaehlen */
|
||||
static int count_data_by_sensor_id(PGconn *connection, int sens_id){
|
||||
int count_field;
|
||||
char *table;
|
||||
|
|
@ -160,7 +160,7 @@ static int count_data_by_sensor_id(PGconn *connection, int sens_id){
|
|||
int count;
|
||||
PGresult *count_res;
|
||||
|
||||
DEBUGOUT2("\nPrüfe Sensor mit ID: %d ... \n",sens_id);
|
||||
DEBUGOUT2("\nPruefe Sensor mit ID: %d ... \n",sens_id);
|
||||
|
||||
table = get_type_table_by_id(connection, sens_id);
|
||||
|
||||
|
|
@ -249,7 +249,7 @@ static int check_sensors(){
|
|||
return fail_count;
|
||||
}
|
||||
|
||||
/* Callback-Funktion für das Versenden der Mail,
|
||||
/* Callback-Funktion fuer das Versenden der Mail,
|
||||
* baut die nachicht zusammen */
|
||||
static char *get_message(int line, void *arg){
|
||||
sens_info_list_ptr info = *((sens_info_list_ptr*) arg);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ sensorid_from_db yes # Sensoren aus der Datenbank holen (no wenn manuell anege
|
|||
|
||||
# Mail-Addressen
|
||||
adminaddress root@localhost # Addresse an die die Nachichten gesandt werden sollen
|
||||
#adminaddress sysop@localhost # weitere Addresse an die eine Nachicht geschickt wird (beliebig viele möglich)
|
||||
#adminaddress sysop@localhost # weitere Addresse an die eine Nachicht geschickt wird (beliebig viele moeglich)
|
||||
|
||||
# Mail-einstellungen
|
||||
mail_host localhost # Hostname des Mailservers
|
||||
|
|
|
|||
|
|
@ -55,8 +55,8 @@ typedef struct {
|
|||
int mail_port; /* Port des Mailservers */
|
||||
char mail_ssl; /* Flag ob SSL (TLS) genutzt werden soll */
|
||||
char mail_auth; /* Flag ob authentifiziert werden soll */
|
||||
char *mail_auth_user; /* User für die authentifizierung */
|
||||
char *mail_auth_pass; /* Passwort für die Authentifizierung */
|
||||
char *mail_auth_user; /* User fuer die authentifizierung */
|
||||
char *mail_auth_pass; /* Passwort fuer die Authentifizierung */
|
||||
} w_opts;
|
||||
|
||||
/* Struktur, die Infos ueber den Sensor enthaelt */
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ static int add_address(const char *, void *);
|
|||
static int read_str(const char *, void *);
|
||||
|
||||
|
||||
/* Zuordnung zwischen Schlüsselwörtern in der Config, Der Funktion, die diese auswertet
|
||||
/* Zuordnung zwischen Schluesselwoertern in der Config, Der Funktion, die diese auswertet
|
||||
* und dem eld in der Options-Struktur */
|
||||
static const struct config_keyword keywords[] = {
|
||||
/* keyword handler variable address default */
|
||||
|
|
@ -161,7 +161,7 @@ int read_config(const char *file, int reset){
|
|||
int lm = 0; /* Zeilen-Nummer */
|
||||
|
||||
|
||||
/* Optionen mit default-werten füllen */
|
||||
/* Optionen mit default-werten fuellen */
|
||||
if(reset){
|
||||
for (i = 0; keywords[i].keyword[0]; i++)
|
||||
//printf("keyword: %s \n",keywords[i].keyword);
|
||||
|
|
@ -169,9 +169,9 @@ int read_config(const char *file, int reset){
|
|||
keywords[i].handler(keywords[i].def, keywords[i].var);
|
||||
}
|
||||
|
||||
/* config-file öffnen */
|
||||
/* config-file oeffnen */
|
||||
if (!(in = fopen(file, "r"))) {
|
||||
DEBUGOUT2("Kann Config-File: %s nicht öffnen!\n", file);
|
||||
DEBUGOUT2("Kann Config-File: %s nicht oeffnen!\n", file);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -179,10 +179,10 @@ int read_config(const char *file, int reset){
|
|||
while (fgets(buffer, CONFIG_BUFFERSIZE, in)) {
|
||||
lm++;
|
||||
|
||||
/* Zeilenvorschübe gegen null-terminierungs-Zeichen ersetzen */
|
||||
/* Zeilenvorschuebe gegen null-terminierungs-Zeichen ersetzen */
|
||||
if (strchr(buffer, '\n')) *(strchr(buffer, '\n')) = '\0';
|
||||
|
||||
/* Originlzeile für eventuelle log-, bzw. debug-meldungen */
|
||||
/* Originlzeile fuer eventuelle log-, bzw. debug-meldungen */
|
||||
strcpy(orig, buffer);
|
||||
|
||||
/* Kommentazeichen gegen null-terminierungs-Zeichen ersetzen und damit alles dahinter ignorieren */
|
||||
|
|
|
|||
|
|
@ -27,15 +27,15 @@
|
|||
#define DEFAULT_PG_DATABASE "localbase" /* Postgres-Datenbank */
|
||||
#define DEFAULT_PG_TIMEOUT "20" /* Postgres-Timeout */
|
||||
#define DEFAULT_CONFIG_FILE "/etc/weatherstation/checksensor.conf" /* Standart-Configdatei */
|
||||
#define DEFAULT_CHECK_INTERVAL "24" /* Standart-Interval, indem der Sensor das letzte mal hätte senden sollen (in h) */
|
||||
#define DEFAULT_MIN_SENDINGS "24" /* Standart-Wert, wieviele Daten der Sensor in den letzten x stunden hätte senden sollen */
|
||||
#define DEFAULT_CHECK_INTERVAL "24" /* Standart-Interval, indem der Sensor das letzte mal haette senden sollen (in h) */
|
||||
#define DEFAULT_MIN_SENDINGS "24" /* Standart-Wert, wieviele Daten der Sensor in den letzten x stunden haette senden sollen */
|
||||
|
||||
|
||||
/*Alle möglichen Definitionen, die in allen code-schnipseln benötigt werden*/
|
||||
/*Alle moeglichen Definitionen, die in allen code-schnipseln benoetigt werden*/
|
||||
|
||||
/* Fehlermeldungen ------------------------------------------------------*/
|
||||
#define ERROR_MAKECONN "PgSQL-Fehler: Kann Datenbankverbindung nicht herstellen\n"
|
||||
#define ERROR_QUERY "PgSQL-Fehler: Kann query nicht sudführen \n"
|
||||
#define ERROR_QUERY "PgSQL-Fehler: Kann query nicht sudfuehren \n"
|
||||
#define ERROR_SEIINST "Signal-Fehler: Kann Signalhandler zum beenden nicht installieren\n"
|
||||
|
||||
/* Mail - Kopf -----------------------------------------------------------*/
|
||||
|
|
|
|||
|
|
@ -100,10 +100,10 @@ int mail_message(address_all_struct *addresses, char *subject, int eightbit, ma
|
|||
addresses->from->mailbox = gen_from_mailbox(); /* Dann eine Addresse nach dem schema user@host generieren */
|
||||
}
|
||||
|
||||
if((fd = tmpfile()) == NULL) /* Temporäre Datei anlegen */
|
||||
if((fd = tmpfile()) == NULL) /* Temporaere Datei anlegen */
|
||||
return MAILER_STATUS_FAILTURE_TEMPFILE_CREATE;
|
||||
|
||||
if(!build_header(addresses->from, addresses->to, addresses->cc, addresses->bcc, subject, fd)) /* Header in die Temporäre Datei schreiben */
|
||||
if(!build_header(addresses->from, addresses->to, addresses->cc, addresses->bcc, subject, fd)) /* Header in die Temporaere Datei schreiben */
|
||||
return MAILER_STATUS_FAILTURE_CREATE_HEADER;
|
||||
|
||||
i = 0;
|
||||
|
|
@ -120,7 +120,7 @@ int mail_message(address_all_struct *addresses, char *subject, int eightbit, ma
|
|||
smtp_starttls_enable(session, Starttls_ENABLED); /* SSL soll auf jeden Fall benutzt werden */
|
||||
break;
|
||||
case SSL_REQUIRED:
|
||||
smtp_starttls_enable(session, Starttls_REQUIRED); /* SSL soll ren benötigt benutzt werden */
|
||||
smtp_starttls_enable(session, Starttls_REQUIRED); /* SSL soll ren benoetigt benutzt werden */
|
||||
break;
|
||||
default:
|
||||
smtp_starttls_enable(session, Starttls_DISABLED); /* SSL soll nicht benutzt werden */
|
||||
|
|
@ -132,25 +132,25 @@ int mail_message(address_all_struct *addresses, char *subject, int eightbit, ma
|
|||
snprintf(hostportstr, hostportlen, "%s:%d", servopts->host, servopts->port); /* host:port zusammenbauen */
|
||||
DEBUGOUT2("SMTP: Send Mail over: \"%s\"\n",hostportstr);
|
||||
|
||||
if(!smtp_set_server(session, hostportstr)) /* Den Server fuer die Übertragung setzen */
|
||||
if(!smtp_set_server(session, hostportstr)) /* Den Server fuer die Uebertragung setzen */
|
||||
return MAILER_STATUS_FAILTURE_SETSERVER;
|
||||
|
||||
if (servopts->auth_use) { /* Wenn Authentifizierung eingeschaltet */
|
||||
if ((authctx = auth_create_context ()) == NULL) /* Authentifizierungskontext erstellen */
|
||||
return MAILER_STATUS_FAILTURE_CREATEAUTHCTX;
|
||||
auth_set_mechanism_flags (authctx, AUTH_PLUGIN_PLAIN, 0); /* Plain-Text-Plugin auswählen */
|
||||
auth_set_mechanism_flags (authctx, AUTH_PLUGIN_PLAIN, 0); /* Plain-Text-Plugin auswaehlen */
|
||||
if(servopts->auth_cb == NULL){ /* wenn keine Callback-fkt. gesetzt */
|
||||
auth_set_interact_cb (authctx, default_auth_cb, servopts); /* dann die standart-fkt nehmen */
|
||||
} else { /* sonst */
|
||||
auth_set_interact_cb (authctx, servopts->auth_cb, servopts); /* die gegebene verwenden */
|
||||
}
|
||||
if (!smtp_auth_set_context (session, authctx)) /* Kontext der session übergeben */
|
||||
if (!smtp_auth_set_context (session, authctx)) /* Kontext der session uebergeben */
|
||||
return MAILER_STATUS_FAILTURE_SETAUTHCTX;
|
||||
}
|
||||
|
||||
smtp_set_eventcb(session, event_cb, servopts); /* Callbackfunktion angeben, welche die Events der Verbindung (falsches Zertifikat, ..) hanhelt */
|
||||
|
||||
if((message = smtp_add_message(session)) == NULL) /* Eine Nachicht zur Session hinzufügen */
|
||||
if((message = smtp_add_message(session)) == NULL) /* Eine Nachicht zur Session hinzufuegen */
|
||||
return MAILER_STATUS_FAILTURE_ADDMESSAGE;
|
||||
|
||||
if(! smtp_set_reverse_path(message,addresses->from->mailbox)) /* Absenderaddresse setzen */
|
||||
|
|
@ -162,7 +162,7 @@ int mail_message(address_all_struct *addresses, char *subject, int eightbit, ma
|
|||
if(!smtp_set_messagecb(message, read_mail_tmp_file, fd)) /* Callback - Funktion zum lesen der temp. Datei */
|
||||
return MAILER_STATUS_FAILTURE_SETMESSAGECB;
|
||||
|
||||
if(!(add_recipients(message, addresses->to) && add_recipients(message, addresses->cc) && add_recipients(message, addresses->bcc) ) ) /* Empfänger setzen */
|
||||
if(!(add_recipients(message, addresses->to) && add_recipients(message, addresses->cc) && add_recipients(message, addresses->bcc) ) ) /* Empfaenger setzen */
|
||||
return MAILER_STATUS_FAILTURE_ADDRECIPIENTS;
|
||||
|
||||
if(!smtp_start_session(session)) /* Session Starten (Mail versenden) */
|
||||
|
|
@ -175,7 +175,7 @@ int mail_message(address_all_struct *addresses, char *subject, int eightbit, ma
|
|||
return MAILER_STATUS_FAILTURE_SENDING;
|
||||
}
|
||||
|
||||
/* aufräumen */
|
||||
/* aufraeumen */
|
||||
if(fd != NULL)
|
||||
fclose(fd);
|
||||
if(hostportstr != NULL)
|
||||
|
|
@ -197,18 +197,18 @@ int mail_message(address_all_struct *addresses, char *subject, int eightbit, ma
|
|||
* subject ist der Betreff der Mail
|
||||
* fd ist der Zeiger auf die temp. Datei */
|
||||
static int build_header(address_struct * from, address_struct *to, address_struct *cc, address_struct *bcc, char *subject, FILE *fd){
|
||||
char *buf; /* Puffer für die Zeilen */
|
||||
char *buf; /* Puffer fuer die Zeilen */
|
||||
if(from == NULL || to == NULL || fd == NULL){ /* wenn absender, Empfaenger oder Dateizeiger NULL */
|
||||
return 0; /* Dann abbrechen */
|
||||
}
|
||||
buf = malloc(sizeof(char)*BUFFSIZE); /* Speicher für Puffer holen */
|
||||
buf = malloc(sizeof(char)*BUFFSIZE); /* Speicher fuer Puffer holen */
|
||||
|
||||
fprintf(fd, "From: <%s>\r\n", from->mailbox); /* Absender setzen */
|
||||
fputs(gen_address_line(buf, TO_LINE, to), fd); /* To setzen */
|
||||
fputs(gen_address_line(buf, CC_LINE, cc), fd); /* Cc setzen */
|
||||
fputs(gen_address_line(buf, BCC_LINE, bcc), fd); /* Bcc setzen */
|
||||
fprintf(fd, "Subject: %s\r\n", subject); /* Betreff setzen */
|
||||
fputs("Reply-To:\r\n\r\n", fd); /* Reply-To + Leerzeile anhängen */
|
||||
fputs("Reply-To:\r\n\r\n", fd); /* Reply-To + Leerzeile anhaengen */
|
||||
|
||||
free(buf); /* Puffer freigeben */
|
||||
|
||||
|
|
@ -241,7 +241,7 @@ static char * gen_from_mailbox(){
|
|||
* line_type ist eine der Konstanten TO_LINE, CC_LINE oder BCC_LINE
|
||||
* address sind die Addressen fuer die Zeile */
|
||||
static char * gen_address_line(char *buf, const char *line_type, address_struct *address){
|
||||
address_struct *addr = address; /* Temporärer Zeiger */
|
||||
address_struct *addr = address; /* Temporaerer Zeiger */
|
||||
int i = 0 ; /* zum unterscheiden, ob die erste Addresse oder nicht */
|
||||
|
||||
strcpy(buf, line_type); /* Das Keyword ('To: ', 'Cc: ', ...) an den Zeilenanfang setzen */
|
||||
|
|
@ -254,12 +254,12 @@ static char * gen_address_line(char *buf, const char *line_type, address_struct
|
|||
strcat(buf, ">"); /* '>' dahintersetzen */
|
||||
i++;
|
||||
}
|
||||
strcat(buf, "\r\n"); /* Wagenrücklauf + Zeilenvorschub anhängen */
|
||||
strcat(buf, "\r\n"); /* Wagenruecklauf + Zeilenvorschub anhaengen */
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
||||
/* Mail aus temporärer Datei lesen (Callbackfkt.)
|
||||
/* Mail aus temporaerer Datei lesen (Callbackfkt.)
|
||||
* buf ist ein Zeiger auf einen Zeichenpuffer
|
||||
* len ist NULL (dann rewind des Files) oder nicht NULL (dann Daten lesen)
|
||||
* arg ist der Zeiger auf die temp. Datei */
|
||||
|
|
@ -280,8 +280,8 @@ static const char *read_mail_tmp_file (void **buf, int *len, void *arg){
|
|||
char *p = strchr (*buf, '\0'); /* Das Terminierungszeichen suchen */
|
||||
|
||||
if (p[-1] == '\n' && p[-2] != '\r') { /* Wenn kein Wagenruecklauf */
|
||||
strcpy (p - 1, "\r\n"); /* dann einen ergänzen */
|
||||
p++; /* und den String ein Zeichen länger machen */
|
||||
strcpy (p - 1, "\r\n"); /* dann einen ergaenzen */
|
||||
p++; /* und den String ein Zeichen laenger machen */
|
||||
}
|
||||
octets = p - (char *) *buf; /* Gelesene Zeichen berechnen */
|
||||
}
|
||||
|
|
@ -291,14 +291,14 @@ static const char *read_mail_tmp_file (void **buf, int *len, void *arg){
|
|||
}
|
||||
|
||||
|
||||
/* Empfaenger zu einer Mail hinzufügen
|
||||
/* Empfaenger zu einer Mail hinzufuegen
|
||||
* message ist die SMTP - Message
|
||||
* address ist die Liste mit den Empfaengeraddressen */
|
||||
static int add_recipients(smtp_message_t message, address_struct *address){
|
||||
address_struct *adr = address; /* Temp. Zeiger auf die Addressen */
|
||||
for(; adr; adr = adr->next){ /* Addressen durchgehen */
|
||||
if(adr->mailbox){ /* Wenn eine gueltige gefunden */
|
||||
if(!smtp_add_recipient(message, adr->mailbox)) /* Dann hinzufügen */
|
||||
if(!smtp_add_recipient(message, adr->mailbox)) /* Dann hinzufuegen */
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -307,9 +307,9 @@ static int add_recipients(smtp_message_t message, address_struct *address){
|
|||
|
||||
|
||||
/* Event-Callback-Funktion.
|
||||
* Die wird von der Libsmtp aufgerufen wenn während der Session irgend etwas
|
||||
* (unabhöngig ob gut oder nicht gut) passiert.
|
||||
* dadurch hat man die Möglichkeit auf solche Ereignisse zu reagieren */
|
||||
* Die wird von der Libsmtp aufgerufen wenn waehrend der Session irgend etwas
|
||||
* (unabhoengig ob gut oder nicht gut) passiert.
|
||||
* dadurch hat man die Moeglichkeit auf solche Ereignisse zu reagieren */
|
||||
static void event_cb (smtp_session_t session, int event_no, void *arg,...){
|
||||
va_list alist; /* Argumentliste */
|
||||
int *ok; /* Rueckgabewert an die lib */
|
||||
|
|
@ -338,7 +338,7 @@ static void event_cb (smtp_session_t session, int event_no, void *arg,...){
|
|||
break;
|
||||
}
|
||||
case SMTP_EV_INVALID_PEER_CERTIFICATE: { /* Ungueltiges Server-Zertifikat */
|
||||
long vfy_result; /* prüfungs-resultat */
|
||||
long vfy_result; /* pruefungs-resultat */
|
||||
vfy_result = va_arg(alist, long);
|
||||
ok = va_arg(alist, int*);
|
||||
DEBUGOUT3("SMTP: Invalid peer certificate! verify-Result: %d continue: %d\n", vfy_result, servopt->ssl_ctx_peer_invalid);
|
||||
|
|
@ -391,10 +391,10 @@ static int default_auth_cb (auth_client_request_t request, char **result, int fi
|
|||
|
||||
for (i = 0; i < fields; i++) { /* Felder durchlaufen */
|
||||
if (request[i].flags & AUTH_USER) { /* Wenn username erfragt wird */
|
||||
result[i] = ((server_vars *)arg)->auth_user; /* dann den übergeben */
|
||||
result[i] = ((server_vars *)arg)->auth_user; /* dann den uebergeben */
|
||||
}
|
||||
else if (request[i].flags & AUTH_PASS) { /* wenn nach Passwort gefragt wird */
|
||||
result[i] = ((server_vars *)arg)->auth_pass; /* dann das übergeben */
|
||||
result[i] = ((server_vars *)arg)->auth_pass; /* dann das uebergeben */
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
/* SSL-Benutzung */
|
||||
#define SSL_ENABLED 0 /* auf jeden Fall eingschaltet */
|
||||
#define SSL_DISABLED 1 /* Ausgeschaltet */
|
||||
#define SSL_REQUIRED 2 /* Wenn benötigt */
|
||||
#define SSL_REQUIRED 2 /* Wenn benoetigt */
|
||||
|
||||
/* Zertifikat akzeptieren */
|
||||
#define SSL_ACCEPT 1 /* Ja */
|
||||
|
|
@ -53,10 +53,10 @@
|
|||
#define MAILER_STATUS_FAILTURE_SETSERVER 4 /* Server kann nicht gesetzt werden */
|
||||
#define MAILER_STATUS_FAILTURE_CREATEAUTHCTX 5 /* Authentifizierungskontext kann nicht angelegt werden */
|
||||
#define MAILER_STATUS_FAILTURE_SETAUTHCTX 6 /* Authentifizierungskontext kann nicht gesetzt werden */
|
||||
#define MAILER_STATUS_FAILTURE_ADDMESSAGE 7 /* Message kann nicht hinzugefügt werden */
|
||||
#define MAILER_STATUS_FAILTURE_ADDMESSAGE 7 /* Message kann nicht hinzugefuegt werden */
|
||||
#define MAILER_STATUS_FAILTURE_SETREVPATH 8 /* Serveraddresse kann nicht gesetzt werden */
|
||||
#define MAILER_STATUS_FAILTURE_SETMESSAGECB 9 /* Message-Callback-fkt kann nicht gesetzt werden */
|
||||
#define MAILER_STATUS_FAILTURE_ADDRECIPIENTS 10 /* Empfaenger kkoennen nicht hinzugefügt werden */
|
||||
#define MAILER_STATUS_FAILTURE_ADDRECIPIENTS 10 /* Empfaenger kkoennen nicht hinzugefuegt werden */
|
||||
#define MAILER_STATUS_FAILTURE_STARTSESSION 11 /* Session kann nicht gestartet werden */
|
||||
#define MAILER_STATUS_FAILTURE_SENDING 12 /* Fehler beim senden */
|
||||
#define MAILER_STATUS_FAILTURE_CREATE_HEADER 13 /* Header kann nicht gebaut werden */
|
||||
|
|
@ -67,22 +67,22 @@
|
|||
* das 2. Argument ist das Argument, welches der mail_message-fkt. uebergeben wurde */
|
||||
typedef char *(*mail_linereader_cb)(int line, void *arg);
|
||||
|
||||
/* Datenstruktur für die Addressliste */
|
||||
/* Datenstruktur fuer die Addressliste */
|
||||
typedef struct address_t {
|
||||
char *mailbox; /* mail-Addresse */
|
||||
struct address_t *next; /* Zeiger auf das nächste Element */
|
||||
struct address_t *next; /* Zeiger auf das naechste Element */
|
||||
} address_struct;
|
||||
|
||||
/* Zusammenfassung jeglicher Addressen */
|
||||
typedef struct address_all_t {
|
||||
address_struct *from; /* Absender */
|
||||
address_struct *to; /* Empfänger */
|
||||
address_struct *to; /* Empfaenger */
|
||||
address_struct *cc; /* cc */
|
||||
address_struct *bcc; /* bcc */
|
||||
} address_all_struct;
|
||||
|
||||
|
||||
/* Datenstruktur für die Server-Optionen */
|
||||
/* Datenstruktur fuer die Server-Optionen */
|
||||
typedef struct server_vars_t {
|
||||
char *host; /* host */
|
||||
int port; /* port */
|
||||
|
|
@ -103,13 +103,13 @@ typedef struct server_vars_t {
|
|||
* 2. Argument: Betreff der Nachicht
|
||||
* 3. Argument: eightbit-flag setzen oder nicht
|
||||
* 4. Argument: Callback-Fkt. zum lesen einer Zeile
|
||||
* 5. Argument: Argument für die Callback-Fkt.
|
||||
* 5. Argument: Argument fuer die Callback-Fkt.
|
||||
* 6. Argument: Server-Einstellungen
|
||||
* gibt einen Statusnummer zurueck */
|
||||
int mail_message(address_all_struct *, char *, int, mail_linereader_cb, void *, server_vars *);
|
||||
|
||||
|
||||
/* Gibt ein grundgerüst mit default-servereinstellungen
|
||||
/* Gibt ein grundgeruest mit default-servereinstellungen
|
||||
* zurueck, damit man nicht immer alles selbst angeben muss */
|
||||
server_vars *get_default_servopts();
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ $(BIN_NAME): $(OBJS)
|
|||
@ $(LD) $(DEBUG) $(NOLOG) -L$$(pg_config --libdir)/pgsql -lpq $(LDFLAS) $(BIN_NAME) $(OBJS)
|
||||
@ echo Binary $(BIN_NAME) ist fertig!
|
||||
|
||||
# Abhängigkeiten
|
||||
# Abhaengigkeiten
|
||||
main.o: main.c main.h definitions.h config.h input.h
|
||||
config.o: config.c config.h definitions.h
|
||||
input.o: input.c input.h main.h config.h definitions.h process.h
|
||||
|
|
@ -62,14 +62,14 @@ install:
|
|||
@ install -m644 COPYING $(DESTDIR)$(DOCDIR)
|
||||
|
||||
|
||||
# Aufräumnen (alle Object-Files löschen)
|
||||
# Aufraeumnen (alle Object-Files loeschen)
|
||||
cleanup:
|
||||
@ echo "Räume auf..."
|
||||
@ echo "Raeume auf..."
|
||||
@ echo "...entferne Object-Files:"
|
||||
@ echo " " $(OBJS)
|
||||
@ $(RM) -f $(OBJS)
|
||||
|
||||
clean: cleanup
|
||||
@ echo "...lösche binary:"
|
||||
@ echo "...loesche binary:"
|
||||
@ echo " " $(BIN_NAME)
|
||||
@ rm -f $(BIN_NAME)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
config.c -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
|
|
@ -42,7 +42,7 @@ static read_verbose_flag(const char *, void *);
|
|||
static int flag_handler(int *, int , const char *);
|
||||
|
||||
|
||||
/* Zuordnung zwischen Schlüsselwörtern in der Config, Der Funktion, die diese auswertet
|
||||
/* Zuordnung zwischen Schluesselwoertern in der Config, Der Funktion, die diese auswertet
|
||||
* und dem eld in der Options-Struktur */
|
||||
static const struct config_keyword keywords[] = {
|
||||
/* keyword handler variable address default */
|
||||
|
|
@ -119,22 +119,22 @@ int read_config(const char *file, int reset){
|
|||
int lm = 0; /* Zeilen-Nummer */
|
||||
|
||||
|
||||
/* Optionen mit default-werten füllen */
|
||||
/* Optionen mit default-werten fuellen */
|
||||
if(reset){
|
||||
for (i = 0; keywords[i].keyword[0]; i++)
|
||||
if (keywords[i].def[0])
|
||||
keywords[i].handler(keywords[i].def, keywords[i].var);
|
||||
}
|
||||
|
||||
/* config-file öffnen */
|
||||
/* config-file oeffnen */
|
||||
if (!(in = fopen(file, "r"))) {
|
||||
#ifndef NO_LOGING
|
||||
if(get_flag(LOG_ERROR_FLAG)){
|
||||
sprintf(get_error_buffer(), "Kann Config-File: %s nicht öffnen!",file);
|
||||
sprintf(get_error_buffer(), "Kann Config-File: %s nicht oeffnen!",file);
|
||||
log_error(get_error_buffer());
|
||||
}
|
||||
#endif
|
||||
DEBUGOUT2("Kann Config-File: %s nicht öffnen!\n", file);
|
||||
DEBUGOUT2("Kann Config-File: %s nicht oeffnen!\n", file);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -142,10 +142,10 @@ int read_config(const char *file, int reset){
|
|||
while (fgets(buffer, CONFIG_BUFFERSIZE, in)) {
|
||||
lm++;
|
||||
|
||||
/* Zeilenvorschübe gegen null-terminierungs-Zeichen ersetzen */
|
||||
/* Zeilenvorschuebe gegen null-terminierungs-Zeichen ersetzen */
|
||||
if (strchr(buffer, '\n')) *(strchr(buffer, '\n')) = '\0';
|
||||
|
||||
/* Originlzeile für eventuelle log-, bzw. debug-meldungen */
|
||||
/* Originlzeile fuer eventuelle log-, bzw. debug-meldungen */
|
||||
strcpy(orig, buffer);
|
||||
|
||||
/* Kommentazeichen gegen null-terminierungs-Zeichen ersetzen und damit alles dahinter ignorieren */
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
config.h -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
definitions.h -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
|
||||
|
||||
|
||||
/*Alle möglichen Definitionen, die in allen code-schnipseln benötigt werden*/
|
||||
/*Alle moeglichen Definitionen, die in allen code-schnipseln benoetigt werden*/
|
||||
|
||||
/* Sensor definitionen ------------------------------------------------- */
|
||||
#define FERNB 0x07 /* Funkfernbedienung */
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
#define ERROR_TIMEOUT "sensor-rs232interface: keine Daten - timeout-Fehler\n"
|
||||
#define ERROR_POLLING "sensor-rs232interface: keine Daten - polling-Fehler\n"
|
||||
#define ERROR_READ "sensor-rs232interface: Fehler beim Lesen\n"
|
||||
#define ERROR_LOGFILE "Log-Error: Kann Logfile nicht öffnen\n"
|
||||
#define ERROR_LOGFILE "Log-Error: Kann Logfile nicht oeffnen\n"
|
||||
#define ERROR_FORK "Fork-Fehler: Kann den Prozess nicht in den Hintergrund schieben\n"
|
||||
#define ERROR_SEIINST "Signal-Fehler: Kann Signalhandler zum beenden nicht installieren\n"
|
||||
|
||||
|
|
@ -70,12 +70,12 @@
|
|||
#endif
|
||||
|
||||
|
||||
/* Puffergrößen -------------------------------------------------------- */
|
||||
#define LOG_BUFFERSIZE 100 /* Größe für den Log-Puffer in process.c */
|
||||
#define ERR_BUFFERSIZE 512 /* Größe für den error-Puffer in main.c */
|
||||
#define INPUT_BUFFERSIZE 8 /* Größe für den Input-Puffer in input.c */
|
||||
#define CONFIG_BUFFERSIZE 512 /* Größe des Puffers zum Config-einlesen */
|
||||
#define QUERY_BUFFERSIZE 512 /* Größe des Zeichenpuffers für SQL-Anfragen */
|
||||
/* Puffergroeßen -------------------------------------------------------- */
|
||||
#define LOG_BUFFERSIZE 100 /* Groeße fuer den Log-Puffer in process.c */
|
||||
#define ERR_BUFFERSIZE 512 /* Groeße fuer den error-Puffer in main.c */
|
||||
#define INPUT_BUFFERSIZE 8 /* Groeße fuer den Input-Puffer in input.c */
|
||||
#define CONFIG_BUFFERSIZE 512 /* Groeße des Puffers zum Config-einlesen */
|
||||
#define QUERY_BUFFERSIZE 512 /* Groeße des Zeichenpuffers fuer SQL-Anfragen */
|
||||
|
||||
|
||||
/* Timeout-Zeiten ------------------------------------------------------ */
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
input.c -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
|
|
@ -59,7 +59,7 @@ static int set_port()
|
|||
if ((fd = open(global_opts.device,O_RDONLY | O_NONBLOCK | O_NOCTTY | O_NDELAY)) < 0)
|
||||
exit_error(ERROR_OPEN);
|
||||
|
||||
/* Erstmal alles zurücksetzen*/
|
||||
/* Erstmal alles zuruecksetzen*/
|
||||
cfmakeraw(&options);
|
||||
/* Uebertragungsgeschwindigkeit 19200 Baud */
|
||||
cfsetispeed(&options, B19200);
|
||||
|
|
@ -74,7 +74,7 @@ static int set_port()
|
|||
/* Local-Flags brauchmer auch keine*/
|
||||
options.c_lflag = 0;
|
||||
|
||||
/* Zeug für die Flusskontrolle */
|
||||
/* Zeug fuer die Flusskontrolle */
|
||||
//options.c_cc[VMIN] = 1;
|
||||
//options.c_cc[VTIME] = 5;
|
||||
|
||||
|
|
@ -94,13 +94,13 @@ static int set_port()
|
|||
int read_port(){
|
||||
fd = set_port();
|
||||
int len=0; /* Anzahl gelesener Daten */
|
||||
int i, readlen =1; /* Laufvariable, Lesezähler */
|
||||
int i, readlen =1; /* Laufvariable, Lesezaehler */
|
||||
u_char buffer[INPUT_BUFFERSIZE], *temp = NULL; /* Lesepuffer, Temp-Zeiger */
|
||||
struct pollfd pfd = {fd, POLLIN, (short)NULL}; /* polling-Optionen */
|
||||
|
||||
temp = buffer; /* Temporärer Zeiger bekommt die Anfangsaddresse vom Puffer */
|
||||
temp = buffer; /* Temporaerer Zeiger bekommt die Anfangsaddresse vom Puffer */
|
||||
|
||||
add_clean(clean_port, &fd); /* Callbackfunktion zum Aufräumen registrieren */
|
||||
add_clean(clean_port, &fd); /* Callbackfunktion zum Aufraeumen registrieren */
|
||||
|
||||
|
||||
DEBUGOUT1("\nWarte auf Daten\n\n");
|
||||
|
|
@ -108,10 +108,10 @@ int read_port(){
|
|||
do {
|
||||
if((len = poll(&pfd, 1, INPUT_TIMEOUT)) > 0){ /* warten auf Eingabepuffer */
|
||||
len = read(fd, temp, 1); /* Zeichenweise lesen */
|
||||
if(readlen == 1){ /* Solange noch nix verwertbares gelesen wurde auf das Startbyte prüfen */
|
||||
if(readlen == 1){ /* Solange noch nix verwertbares gelesen wurde auf das Startbyte pruefen */
|
||||
if(*temp == STX){
|
||||
temp++; /* Wenn startbyte gefunden Zeiger auf das 2. Puffer-Element setzen */
|
||||
readlen++; /* Und Lese-Zähler erhöhen */
|
||||
readlen++; /* Und Lese-Zaehler erhoehen */
|
||||
}
|
||||
} else { /* Wenn schon was relevantes gelesen wurde */
|
||||
if(readlen == 8 && *temp == ETX){ /* Wenn schon 8 Byte gelesen wurden und das letzte Byte das Stoppbyte ist */
|
||||
|
|
@ -120,19 +120,19 @@ int read_port(){
|
|||
DEBUGOUT2("%x ",buffer[i]);
|
||||
DEBUGOUT1("\n");
|
||||
|
||||
check_data(readlen,buffer); /* Daten nochmals Prüfen und verarbeiten */
|
||||
check_data(readlen,buffer); /* Daten nochmals Pruefen und verarbeiten */
|
||||
|
||||
DEBUGOUT1("------------------------------------------\n");
|
||||
|
||||
readlen = 1; /* Lesezähler zurücksetzen */
|
||||
readlen = 1; /* Lesezaehler zuruecksetzen */
|
||||
temp = buffer; /* Temp.-Zeiger wieder auf Pufferanfang setzen */
|
||||
} else { /* Wenn schon was relevantes da war, aber noch keine 8 byte incl. Stoppbyte */
|
||||
if(*temp == ETX || readlen >= 8){ /* Wenn das aktuelle byte das Stoppbyte oder das 8. Byte, dann sind die daten nicht ok */
|
||||
readlen = 1; /* Lesezähler zurücksetzen */
|
||||
readlen = 1; /* Lesezaehler zuruecksetzen */
|
||||
temp = buffer; /* Temp-Zeiger auf Pufferanfang */
|
||||
} else { /* Sonst */
|
||||
readlen++; /* Lesezähler erhöhen */
|
||||
temp++; /* Temp.-Zeiger auf das nächste element setzen */
|
||||
readlen++; /* Lesezaehler erhoehen */
|
||||
temp++; /* Temp.-Zeiger auf das naechste element setzen */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -145,12 +145,12 @@ int read_port(){
|
|||
return 1;
|
||||
}
|
||||
|
||||
/* Überprüfung, ob die Struktur der Daten stimmt
|
||||
/* Ueberpruefung, ob die Struktur der Daten stimmt
|
||||
* es sollten 8 Byte ankommen:
|
||||
* <STX><Typ><W1><W2><W3><W4><W5><EXT>
|
||||
* wobei <STX> = 02h
|
||||
* und <EXT> = 03h
|
||||
* Bei <Typ>,<W1>...<W7> ist bit 7 (MSB) immer gesetzt, gehört also nicht zu den Daten!
|
||||
* Bei <Typ>,<W1>...<W7> ist bit 7 (MSB) immer gesetzt, gehoert also nicht zu den Daten!
|
||||
* Im <Typ>-Byte sind die unteren 4 bit die Addresse und die oberen 3 (weil 7. ist ja nicht benutzt)
|
||||
* der Typ des Sensors.
|
||||
* Die Typenzuordnung steht in der definitions.h.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
input.h -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
|
|
@ -26,5 +26,5 @@
|
|||
|
||||
/* Funktionen */
|
||||
|
||||
/* Schnittstelle öffnen + lesen */
|
||||
/* Schnittstelle oeffnen + lesen */
|
||||
int read_port();
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
main.h -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
|
|
@ -41,8 +41,8 @@ typedef struct {
|
|||
#endif
|
||||
} w_opts;
|
||||
|
||||
/* Aufräumfunktionen */
|
||||
/* TODO: sollen Funktionen werden, mit denen die eintelnen Teile funktionen registrieren können, die aufräiumen
|
||||
/* Aufraeumfunktionen */
|
||||
/* TODO: sollen Funktionen werden, mit denen die eintelnen Teile funktionen registrieren koennen, die aufraeiumen
|
||||
* (Verbindung schließen, file schließen, ...) */
|
||||
typedef struct clean_struct *clean_struct_ptr;
|
||||
typedef struct clean_struct {
|
||||
|
|
@ -59,7 +59,7 @@ typedef struct clean_struct {
|
|||
void exit_error(char*);
|
||||
|
||||
/* Ein Flag bekommen
|
||||
* Argument: Maske für das Flag, siehe definitions.h */
|
||||
* Argument: Maske fuer das Flag, siehe definitions.h */
|
||||
int get_flag(int);
|
||||
|
||||
#ifndef NO_LOGING
|
||||
|
|
@ -72,18 +72,18 @@ void log_error(char *);
|
|||
* 2. Argument: Log-Message */
|
||||
void log_data(time_t, char *);
|
||||
|
||||
/* Gibt _EINEN_ Puffer für das Zusammensetzen
|
||||
* der Fehler-Zeichenketten zurück.
|
||||
/* Gibt _EINEN_ Puffer fuer das Zusammensetzen
|
||||
* der Fehler-Zeichenketten zurueck.
|
||||
* Es sollte wirklich bei jedem Aufruf der selbe
|
||||
* Puffer sein */
|
||||
char *get_error_buffer();
|
||||
#endif
|
||||
|
||||
/* Ein neues Clean-Element anfügen. Ein Clean-Element ist eine Datenstruktur, die
|
||||
/* Ein neues Clean-Element anfuegen. Ein Clean-Element ist eine Datenstruktur, die
|
||||
* einen Pointer auf eine Funktion vom Typ
|
||||
* void func(void *data),
|
||||
* einen Zeiger auf beliebige Daten und einen Zeiger auf das nächste Element hält.
|
||||
* Die Funktionen werden beim regulären beenden des Programmes aufgerufen um zum bsp.
|
||||
* einen Zeiger auf beliebige Daten und einen Zeiger auf das naechste Element haelt.
|
||||
* Die Funktionen werden beim regulaeren beenden des Programmes aufgerufen um zum bsp.
|
||||
* datenbankverbindungen zu schließen, etc. */
|
||||
void add_clean(void (*func)(void *data), void *data);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
process.c -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
|
|
@ -54,7 +54,7 @@ static void check_log_buffer();
|
|||
static char* prepend_type_address(u_char, u_char);
|
||||
|
||||
/* globale Variablen */
|
||||
char *log_buffer = NULL; /* Puffer für die Log-Ausgabe */
|
||||
char *log_buffer = NULL; /* Puffer fuer die Log-Ausgabe */
|
||||
int last_rain_count = -1; /* Letzter gemessener Wasserstand */
|
||||
|
||||
|
||||
|
|
@ -101,7 +101,7 @@ void process_data(time_t timestamp, u_char *buffer){
|
|||
|
||||
/* Wertkonvertierungen --------------------------------------------------- */
|
||||
|
||||
/* Wertkonvertierungen für den 'einfachen' Außensensor */
|
||||
/* Wertkonvertierungen fuer den 'einfachen' Außensensor */
|
||||
static auss1_data process_auss1(time_t timestamp, u_char address, u_char *buffer){
|
||||
auss1_data data; /* Datenstruktur */
|
||||
|
||||
|
|
@ -123,7 +123,7 @@ static auss1_data process_auss1(time_t timestamp, u_char address, u_char *buffer
|
|||
return data;
|
||||
}
|
||||
|
||||
/* Wertkonvertierungen für den 'besseren' Außensensor */
|
||||
/* Wertkonvertierungen fuer den 'besseren' Außensensor */
|
||||
static auss2_data process_auss2(time_t timestamp, u_char address, u_char *buffer){
|
||||
auss2_data data; /* Datenstruktur */
|
||||
|
||||
|
|
@ -146,32 +146,32 @@ static auss2_data process_auss2(time_t timestamp, u_char address, u_char *buffer
|
|||
return data;
|
||||
}
|
||||
|
||||
/* Wertkonvertierungen für den Regensensor (ein Zählschritt = 370ml/m^2)*/
|
||||
/* Wertkonvertierungen fuer den Regensensor (ein Zaehlschritt = 370ml/m^2)*/
|
||||
static regen_data process_regen(time_t timestamp, u_char address, u_char *buffer){
|
||||
regen_data data; /* Datenstruktur */
|
||||
int new_rain_count = 0; /* Neuer Zählerstand */
|
||||
int now_rain_count = 0; /* Delta-Zählerstand */
|
||||
int new_rain_count = 0; /* Neuer Zaehlerstand */
|
||||
int now_rain_count = 0; /* Delta-Zaehlerstand */
|
||||
|
||||
data.timestamp = timestamp; /* Zeitstempel */
|
||||
data.address = address; /* Addresse */
|
||||
new_rain_count = ((buffer[2] & 0x1F) << 7) | remove_msb(buffer[3]); /* Niederschlagszähler */
|
||||
new_rain_count = ((buffer[2] & 0x1F) << 7) | remove_msb(buffer[3]); /* Niederschlagszaehler */
|
||||
|
||||
if(last_rain_count == -1) /* Nach Programmstart Zähler initialisieren */
|
||||
if(last_rain_count == -1) /* Nach Programmstart Zaehler initialisieren */
|
||||
last_rain_count = new_rain_count;
|
||||
|
||||
now_rain_count = new_rain_count - last_rain_count; /* neuen Niederschlag berechnen */
|
||||
|
||||
if(now_rain_count < 0){ /* Wenn Integerüberlauf im Sensor */
|
||||
now_rain_count = (0x3FFF - last_rain_count) + new_rain_count; /* Dann letzten gemessenen Wert vom Max-Integer-Wert abziehen und neuen Zählwert dazurechnen */
|
||||
DEBUGOUT1("Integer-Überlauf\n");
|
||||
if(now_rain_count < 0){ /* Wenn Integerueberlauf im Sensor */
|
||||
now_rain_count = (0x3FFF - last_rain_count) + new_rain_count; /* Dann letzten gemessenen Wert vom Max-Integer-Wert abziehen und neuen Zaehlwert dazurechnen */
|
||||
DEBUGOUT1("Integer-Ueberlauf\n");
|
||||
}
|
||||
|
||||
data.counter = (now_rain_count * 370); /* Ein Zählschritt entspricht 370ml/m^2, also änderung mit 370 multiplizieren und zuweisen */
|
||||
data.counter = (now_rain_count * 370); /* Ein Zaehlschritt entspricht 370ml/m^2, also aenderung mit 370 multiplizieren und zuweisen */
|
||||
|
||||
last_rain_count = new_rain_count; /* Zähler neu setzen */
|
||||
last_rain_count = new_rain_count; /* Zaehler neu setzen */
|
||||
|
||||
DEBUGOUT2("Regensensor an Addresse %i\n", address);
|
||||
DEBUGOUT3("Zähler: %d Differenz: %d\n", new_rain_count,now_rain_count);
|
||||
DEBUGOUT3("Zaehler: %d Differenz: %d\n", new_rain_count,now_rain_count);
|
||||
DEBUGOUT2("Niederschlag: %dml/m^2\n", data.counter);
|
||||
|
||||
#ifndef NO_LOGING
|
||||
|
|
@ -185,7 +185,7 @@ static regen_data process_regen(time_t timestamp, u_char address, u_char *buffer
|
|||
return data;
|
||||
}
|
||||
|
||||
/* Wertkonvertierungen für den Windsensor */
|
||||
/* Wertkonvertierungen fuer den Windsensor */
|
||||
static winds_data process_winds(time_t timestamp, u_char address, u_char *buffer){
|
||||
winds_data data; /* Datenstruktur */
|
||||
|
||||
|
|
@ -209,7 +209,7 @@ static winds_data process_winds(time_t timestamp, u_char address, u_char *buffer
|
|||
return data;
|
||||
}
|
||||
|
||||
/* Wertkonvertierungen für den Innensensor */
|
||||
/* Wertkonvertierungen fuer den Innensensor */
|
||||
static innen_data process_innen(time_t timestamp, u_char address, u_char *buffer){
|
||||
innen_data data; /* Datenstruktur */
|
||||
|
||||
|
|
@ -233,7 +233,7 @@ static innen_data process_innen(time_t timestamp, u_char address, u_char *buffer
|
|||
return data;
|
||||
}
|
||||
|
||||
/* Wertkonvertierungen für den Helligkeitssensor */
|
||||
/* Wertkonvertierungen fuer den Helligkeitssensor */
|
||||
static helli_data process_helli(time_t timestamp, u_char address, u_char *buffer){
|
||||
helli_data data; /* Datenstruktur */
|
||||
|
||||
|
|
@ -257,7 +257,7 @@ static helli_data process_helli(time_t timestamp, u_char address, u_char *buffer
|
|||
return data;
|
||||
}
|
||||
|
||||
/* Wertkonvertierungen für das Pyranometer */
|
||||
/* Wertkonvertierungen fuer das Pyranometer */
|
||||
static pyano_data process_pyano(time_t timestamp, u_char address, u_char *buffer){
|
||||
pyano_data data; /* Datenstruktur */
|
||||
|
||||
|
|
@ -284,7 +284,7 @@ static pyano_data process_pyano(time_t timestamp, u_char address, u_char *buffer
|
|||
|
||||
/* Verschiedenes ----------------------------------------------------------*/
|
||||
|
||||
/* einen vorzeichenbehafteten 14-Bit Binärwert in einen Int umwandeln*/
|
||||
/* einen vorzeichenbehafteten 14-Bit Binaerwert in einen Int umwandeln*/
|
||||
static int convert_signed_int(u_char hi_byte, u_char lo_byte){
|
||||
int val = 0;
|
||||
val = convert_unsigned_int(hi_byte,lo_byte);
|
||||
|
|
@ -294,7 +294,7 @@ static int convert_signed_int(u_char hi_byte, u_char lo_byte){
|
|||
return val;
|
||||
}
|
||||
|
||||
/* einen 14-Bit Binärwert in einen Int umwandeln*/
|
||||
/* einen 14-Bit Binaerwert in einen Int umwandeln*/
|
||||
static unsigned int convert_unsigned_int(u_char hi_byte, u_char lo_byte){
|
||||
return (remove_msb(hi_byte) << 7) | remove_msb(lo_byte);
|
||||
}
|
||||
|
|
@ -332,7 +332,7 @@ int check_msb_set(u_char byte){
|
|||
|
||||
#ifndef NO_LOGING
|
||||
|
||||
/* Prüfen ob Puffer für Logausgaben angelegt und renn nicht, dann anlegen */
|
||||
/* Pruefen ob Puffer fuer Logausgaben angelegt und renn nicht, dann anlegen */
|
||||
static void check_log_buffer(){
|
||||
if (log_buffer == NULL){
|
||||
log_buffer = malloc(sizeof(char)*LOG_BUFFERSIZE);
|
||||
|
|
@ -340,7 +340,7 @@ static void check_log_buffer(){
|
|||
}
|
||||
|
||||
/* In der Log-Zeile die Addresse und den Typ des Sensors davorbauen
|
||||
* gibt die Addresse zurück, an der die Werte weitergeschrieben werden können */
|
||||
* gibt die Addresse zurueck, an der die Werte weitergeschrieben werden koennen */
|
||||
static char* prepend_type_address(u_char type, u_char address){
|
||||
return (log_buffer + sprintf(log_buffer, "Sens: %i:%i - ", type, address));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
process.h -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
write.c -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
*
|
||||
* Sollte irgend jemand das Programm weiter verwenden,
|
||||
* jedoch die Daten anders oder woandershin wegschreiben
|
||||
* wollen, so müssen nur diese Funktionen neu implementiert
|
||||
* wollen, so muessen nur diese Funktionen neu implementiert
|
||||
* werden.
|
||||
*/
|
||||
|
||||
|
|
@ -111,7 +111,7 @@ static void check_create_query_buffer(){
|
|||
}
|
||||
|
||||
/* Guckt ob Verbindung da und versucht aufzubauen.
|
||||
* gibt 1 zurück, wenn erfolgreich, sonst 0 */
|
||||
* gibt 1 zurueck, wenn erfolgreich, sonst 0 */
|
||||
static int pg_connect(){
|
||||
if(PQstatus(connection) != CONNECTION_OK){
|
||||
if (connection == NULL){
|
||||
|
|
@ -120,7 +120,7 @@ static int pg_connect(){
|
|||
snprintf(conn_string, 512, "host=%s dbname=%s user=%s password=%s connect_timeout=%s", global_opts.pg_host, global_opts.pg_database, global_opts.pg_user, global_opts.pg_pass, global_opts.pg_timeout);
|
||||
}
|
||||
connection = PQconnectdb(conn_string); /* Connection aufbauen */
|
||||
add_clean(clean_write, connection); /* Callbackfunktion zum Aufräumen registrieren */
|
||||
add_clean(clean_write, connection); /* Callbackfunktion zum Aufraeumen registrieren */
|
||||
} else {
|
||||
PQreset(connection); /* Connecion resetten */
|
||||
}
|
||||
|
|
@ -149,13 +149,13 @@ static void pg_insert(char *query){
|
|||
log_error(get_error_buffer());
|
||||
#endif
|
||||
} else {
|
||||
DEBUGOUT2("Query: '%s' ausgeführt\n", query);
|
||||
DEBUGOUT2("Query: '%s' ausgefuehrt\n", query);
|
||||
}
|
||||
PQclear(res);
|
||||
}
|
||||
}
|
||||
|
||||
/* Callbackfunktion zum Aufräume.
|
||||
/* Callbackfunktion zum Aufraeume.
|
||||
* Schliesst die Verbindung zur Datenbank */
|
||||
static void clean_write(void *data){
|
||||
PGconn *conn = data;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
|
||||
weatherdeamon -- Weather Data Capture Program for the
|
||||
'ELV-PC-Wettersensor-Empfänger'
|
||||
'ELV-PC-Wettersensor-Empfaenger'
|
||||
write.h -- Part of the weatherdeamon
|
||||
|
||||
Copyright (C) 2006 Jan Losinski
|
||||
|
|
@ -25,16 +25,16 @@
|
|||
|
||||
#include <time.h>
|
||||
|
||||
/* Datenstrukturen für die einzelnen Sensoren ------------------------------- */
|
||||
/* Datenstrukturen fuer die einzelnen Sensoren ------------------------------- */
|
||||
|
||||
/* Datenstruktur für den 'einfachen' Außensensor */
|
||||
/* Datenstruktur fuer den 'einfachen' Außensensor */
|
||||
typedef struct {
|
||||
time_t timestamp; /*Zeitstempel*/
|
||||
unsigned char address; /*Addresse*/
|
||||
int temp; /*Temparatur*/
|
||||
} auss1_data ;
|
||||
|
||||
/* Datenstruktur für den 'besseren' Außensensor */
|
||||
/* Datenstruktur fuer den 'besseren' Außensensor */
|
||||
typedef struct {
|
||||
time_t timestamp; /*Zeitstempel*/
|
||||
unsigned char address; /*Addresse*/
|
||||
|
|
@ -42,14 +42,14 @@ typedef struct {
|
|||
unsigned int hum; /*Luftfeuchte*/
|
||||
} auss2_data;
|
||||
|
||||
/* Datenstruktur für den Regensensor */
|
||||
/* Datenstruktur fuer den Regensensor */
|
||||
typedef struct {
|
||||
time_t timestamp; /*Zeitstempel*/
|
||||
unsigned char address; /*Addresse*/
|
||||
unsigned int counter; /*Zählerstand*/
|
||||
unsigned int counter; /*Zaehlerstand*/
|
||||
} regen_data;
|
||||
|
||||
/* Datenstruktur für den Windsensor */
|
||||
/* Datenstruktur fuer den Windsensor */
|
||||
typedef struct {
|
||||
time_t timestamp; /*Zeitstempel*/
|
||||
unsigned char address; /*Addresse*/
|
||||
|
|
@ -58,7 +58,7 @@ typedef struct {
|
|||
unsigned int richt; /*Windrichtung*/
|
||||
} winds_data;
|
||||
|
||||
/* Datenstruktur für den Innensensor */
|
||||
/* Datenstruktur fuer den Innensensor */
|
||||
typedef struct {
|
||||
time_t timestamp; /*Zeitstempel*/
|
||||
unsigned char address; /*Addresse*/
|
||||
|
|
@ -67,7 +67,7 @@ typedef struct {
|
|||
unsigned int press; /*Luftdruck*/
|
||||
} innen_data;
|
||||
|
||||
/* Datenstruktur für den Helligkeitssensor */
|
||||
/* Datenstruktur fuer den Helligkeitssensor */
|
||||
typedef struct {
|
||||
time_t timestamp; /*Zeitstempel*/
|
||||
unsigned char address; /*Addresse*/
|
||||
|
|
@ -76,7 +76,7 @@ typedef struct {
|
|||
unsigned int abslum; /*Absolute Helligkeit*/
|
||||
} helli_data;
|
||||
|
||||
/* Datenstruktur für das Pyranometer */
|
||||
/* Datenstruktur fuer das Pyranometer */
|
||||
typedef struct {
|
||||
time_t timestamp; /*Zeitstempel*/
|
||||
unsigned char address; /*Addresse*/
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ fi
|
|||
if [ -e /etc/weatherstation/frontend.conf ]; then
|
||||
LINKNAME="/usr/share/weatherstation-frontend/$(grep default_chart_dir /etc/weatherstation/frontend.conf | cut -f 2 -d "'" | cut -f 2 -d '"')"
|
||||
if [ -e $LINKNAME ]; then
|
||||
echo -n "Lösche Bilderlink ... "
|
||||
echo -n "Loesche Bilderlink ... "
|
||||
/bin/rm -f $LINKNAME
|
||||
echo "done"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ IMGDIR=$(grep dflt_image_location /etc/weatherstation/chart.conf | cut -f2)
|
|||
FILES=$(ls -Al $IMGDIR | wc -l)
|
||||
|
||||
if [ $FILES -gt 1 ]; then
|
||||
echo -n "lösche $[$FILES - 1] generierte Bilder ... "
|
||||
echo -n "loesche $[$FILES - 1] generierte Bilder ... "
|
||||
/bin/rm -f $IMGDIR/*
|
||||
echo "done"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
if [ -e /etc/weatherstation/chart.conf ]; then
|
||||
LINKNAME="/usr/share/weatherstation-frontend/$(grep default_chart_dir /etc/weatherstation/frontend.conf | cut -f 2 -d "'" | cut -f 2 -d '"')"
|
||||
if [ -e $LINKNAME ]; then
|
||||
echo -n "Lösche Bilderlink ... "
|
||||
echo -n "Loesche Bilderlink ... "
|
||||
/bin/rm -f $LINKNAME
|
||||
echo "done"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ if(file_exists("/etc/weatherstation/frontend.conf")){
|
|||
|
||||
|
||||
|
||||
/* Config-Klasse, Bitte nicht ändern! */
|
||||
/* Config-Klasse, Bitte nicht aendern! */
|
||||
class Config{
|
||||
|
||||
function getPgConnString(){
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
include_once($path."php_inc/config.inc.php");
|
||||
|
||||
/* Connection-Klasse..ist für die Datenbankverbindung zuständig */
|
||||
/* Connection-Klasse..ist fuer die Datenbankverbindung zustaendig */
|
||||
class Connection{
|
||||
|
||||
var $conn = NULL; /* Verbindung */
|
||||
|
|
|
|||
|
|
@ -93,13 +93,13 @@ class Module{
|
|||
return $this->windInstance;
|
||||
}
|
||||
|
||||
/* Callback-Funktion, wird ausgeführt wenn {content:fill:xyz} gefunden wird */
|
||||
/* Callback-Funktion, wird ausgefuehrt wenn {content:fill:xyz} gefunden wird */
|
||||
function fill($contentId){
|
||||
$content_split = explode("_", $contentId); /* Modultyp bekommen */
|
||||
$callObject = & call_user_method("_get_".$content_split[0], $this); /* Instanz der zum Modul gehörenden Klasse */
|
||||
$callObject = & call_user_method("_get_".$content_split[0], $this); /* Instanz der zum Modul gehoerenden Klasse */
|
||||
$funcName = "get".substr($contentId, strlen($content_split[0]), strlen($contentId)-strlen($content_split[0])); /* Namen der In der Instanz aufzurufenden Methode zusammenbauen */
|
||||
|
||||
return $callObject->$funcName($content_split[1]); /* Methode ausführen (Wert holen) und zurückgeben */
|
||||
return $callObject->$funcName($content_split[1]); /* Methode ausfuehren (Wert holen) und zurueckgeben */
|
||||
}
|
||||
|
||||
function addChartLink($chartName){
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ class ModuleSet{
|
|||
return $path."content/module_sets/set_".$setName.".html";
|
||||
}
|
||||
|
||||
/* Parser Instanzieren (wenn noch nicht ist) und zurückgeben */
|
||||
/* Parser Instanzieren (wenn noch nicht ist) und zurueckgeben */
|
||||
function &_getParserInstance(){
|
||||
if($this->parserInstance==NULL)
|
||||
$this->parserInstance = new Parser();
|
||||
|
|
@ -57,13 +57,13 @@ class ModuleSet{
|
|||
return $this->connInstance;
|
||||
}
|
||||
|
||||
/* Ein Modul hinzufügen */
|
||||
/* Ein Modul hinzufuegen */
|
||||
function addModule($modName){
|
||||
$params = explode("_",$modName); /* Modulname und Sensorid trennen */
|
||||
new Module($params[0], $params[1], $this->_getParserInstance(), $this->_getConnInstance());
|
||||
}
|
||||
|
||||
/* Ein Report hinzufügen */
|
||||
/* Ein Report hinzufuegen */
|
||||
function addReport($rptName){
|
||||
new Report($rptName, $this->_getParserInstance(), $this->_getConnInstance());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,8 +67,8 @@ class Hum{
|
|||
function _fetchAverage($sensId, $table, &$connection){
|
||||
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
|
||||
$i = 1; /* Laufvariable */
|
||||
while($avData['count']<5){ /* Schleife prüft, in welchem Interval 5 Werte zusammenkommen */
|
||||
$i++; /* Laufvariable erhöhen */
|
||||
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
|
||||
$i++; /* Laufvariable erhoehen */
|
||||
$avData = $this->_getAverage($sensId, $table, &$connection, ($i*20)." minutes"); /* Holt Werte mit gegebenem Interval */
|
||||
}
|
||||
|
||||
|
|
@ -82,7 +82,7 @@ class Hum{
|
|||
$shortAvData = $this->_getAverage($sensId, $table, &$connection, "15 minutes"); /* Durchschnitt der letzten 15 minuten */
|
||||
$longAvData = $this->_getAverage($sensId, $table, &$connection, "120 minutes"); /* Durchschnitt der letzten 120 Minuten */
|
||||
if($shortAvData['count'] < 1 || $longAvData['count'] < 2){ /* Wenn in den letzten 5 minuten kein Wert kam oder in den letzten 120 min weniger als 3 Werte kamen */
|
||||
$this->changing = "Berechnung momentan nicht möglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
||||
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
||||
return; /* und aus der Funktion huepfen */
|
||||
}
|
||||
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
|
||||
|
|
|
|||
|
|
@ -66,8 +66,8 @@ class Press{
|
|||
function _fetchAverage($sensId, $table, &$connection){
|
||||
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
|
||||
$i = 1; /* Laufvariable */
|
||||
while($avData['count']<5){ /* Schleife prüft, in welchem Interval 5 Werte zusammenkommen */
|
||||
$i++; /* Laufvariable erhöhen */
|
||||
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
|
||||
$i++; /* Laufvariable erhoehen */
|
||||
$avData = $this->_getAverage($sensId, $table, &$connection, ($i*20)." minutes"); /* Holt Werte mit gegebenem Interval */
|
||||
}
|
||||
|
||||
|
|
@ -81,7 +81,7 @@ class Press{
|
|||
$shortAvData = $this->_getAverage($sensId, $table, &$connection, "15 minutes"); /* Durchschnitt der letzten 15 minuten */
|
||||
$longAvData = $this->_getAverage($sensId, $table, &$connection, "120 minutes"); /* Durchschnitt der letzten 120 Minuten */
|
||||
if($shortAvData['count'] < 1 || $longAvData['count'] < 2){ /* Wenn in den letzten 5 minuten kein Wert kam oder in den letzten 120 min weniger als 3 Werte kamen */
|
||||
$this->changing = "Berechnung momentan nicht möglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
||||
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
||||
return; /* und aus der Funktion huepfen */
|
||||
}
|
||||
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
include_once($path."php_inc/connection.inc.php");
|
||||
|
||||
/* Rain-Klasse für das Rain-Modul */
|
||||
/* Rain-Klasse fuer das Rain-Modul */
|
||||
class Rain{
|
||||
|
||||
var $nowHour; /* Regen in der momentanen Stunde */
|
||||
|
|
@ -22,7 +22,7 @@ class Rain{
|
|||
var $maxMonthData; /* Monat mit dem meistem Regen */
|
||||
var $maxYearData; /* Jahr mit dem meistem Regen */
|
||||
|
||||
/* Konstruktor, Holt die Werte aus der Datenbank und füllt die Variablen damit */
|
||||
/* Konstruktor, Holt die Werte aus der Datenbank und fuellt die Variablen damit */
|
||||
function Rain($sensId, & $connection){
|
||||
|
||||
/* Tabelle des Sensors bestimmen */
|
||||
|
|
@ -56,7 +56,7 @@ class Rain{
|
|||
}
|
||||
|
||||
|
||||
/* --- Funktionen, die die Werte für die Ausgabe zurückgeben --- */
|
||||
/* --- Funktionen, die die Werte fuer die Ausgabe zurueckgeben --- */
|
||||
function get_now_hour(){
|
||||
return round($this->nowHour * 0.001,3);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
include_once($path."php_inc/connection.inc.php");
|
||||
|
||||
|
||||
/* Klasse, Die Daten üben die Einzelnen Sensoren bereitstellt */
|
||||
/* Klasse, Die Daten ueben die Einzelnen Sensoren bereitstellt */
|
||||
class Sensor{
|
||||
|
||||
var $id; /* Die ID des Sensors */
|
||||
|
|
@ -24,7 +24,7 @@ class Sensor{
|
|||
$this->_fetchSensorData($sensId, &$connection);
|
||||
}
|
||||
|
||||
/* Holt die Daten über den Sensor aus der Datenbank */
|
||||
/* Holt die Daten ueber den Sensor aus der Datenbank */
|
||||
function _fetchSensorData($sensId, &$connection){
|
||||
$query = "SELECT * FROM sensoren WHERE id=".$sensId;
|
||||
$data = $connection->fetchQueryResultLine($query);
|
||||
|
|
@ -36,7 +36,7 @@ class Sensor{
|
|||
$this->address = $data['addresse'];
|
||||
}
|
||||
|
||||
/* --- Funktionen, die die Einzelnen Eigenschaften des Sensors zurückgeben --- */
|
||||
/* --- Funktionen, die die Einzelnen Eigenschaften des Sensors zurueckgeben --- */
|
||||
function get_id(){
|
||||
return $this->id;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,8 +66,8 @@ class Temp{
|
|||
function _fetchAverage($sensId, $table, &$connection){
|
||||
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
|
||||
$i = 1; /* Laufvariable */
|
||||
while($avData['count']<5){ /* Schleife prüft, in welchem Interval 5 Werte zusammenkommen */
|
||||
$i++; /* Laufvariable erhöhen */
|
||||
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
|
||||
$i++; /* Laufvariable erhoehen */
|
||||
$avData = $this->_getAverage($sensId, $table, &$connection, ($i*20)." minutes"); /* Holt Werte mit gegebenem Interval */
|
||||
}
|
||||
|
||||
|
|
@ -81,7 +81,7 @@ class Temp{
|
|||
$shortAvData = $this->_getAverage($sensId, $table, &$connection, "15 minutes"); /* Durchschnitt der letzten 15 minuten */
|
||||
$longAvData = $this->_getAverage($sensId, $table, &$connection, "120 minutes"); /* Durchschnitt der letzten 120 Minuten */
|
||||
if($shortAvData['count'] < 1 || $longAvData['count'] < 2){ /* Wenn in den letzten 5 minuten kein Wert kam oder in den letzten 120 min weniger als 3 Werte kamen */
|
||||
$this->changing = "Berechnung momentan nicht möglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
||||
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
||||
return; /* und aus der Funktion huepfen */
|
||||
}
|
||||
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
|
||||
|
|
|
|||
|
|
@ -139,8 +139,8 @@ class Wind{
|
|||
function _fetchAverage($sensId, $table, &$connection){
|
||||
$avData = array('average'=>0, 'count'=>0); /* Array initialisieren */
|
||||
$i = 1; /* Laufvariable */
|
||||
while($avData['count']<5){ /* Schleife prüft, in welchem Interval 5 Werte zusammenkommen */
|
||||
$i++; /* Laufvariable erhöhen */
|
||||
while($avData['count']<5){ /* Schleife prueft, in welchem Interval 5 Werte zusammenkommen */
|
||||
$i++; /* Laufvariable erhoehen */
|
||||
$avData = $this->_getAverage($sensId, $table, &$connection, ($i*20)." minutes"); /* Holt Werte mit gegebenem Interval */
|
||||
}
|
||||
|
||||
|
|
@ -154,7 +154,7 @@ class Wind{
|
|||
$shortAvData = $this->_getAverage($sensId, $table, &$connection, "15 minutes"); /* Durchschnitt der letzten 15 minuten */
|
||||
$longAvData = $this->_getAverage($sensId, $table, &$connection, "120 minutes"); /* Durchschnitt der letzten 120 Minuten */
|
||||
if($shortAvData['count'] < 1 || $longAvData['count'] < 2){ /* Wenn in den letzten 5 minuten kein Wert kam oder in den letzten 120 min weniger als 3 Werte kamen */
|
||||
$this->changing = "Berechnung momentan nicht möglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
||||
$this->changing = "Berechnung momentan nicht moeglich"; /* Dann ausgeben, dass momentan nichts berechnet werden kann */
|
||||
return; /* und aus der Funktion huepfen */
|
||||
}
|
||||
$changing = $shortAvData['average'] - $longAvData['average']; /* Aenderung berechnen */
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ class Parser{
|
|||
return $this->contentArray;
|
||||
}
|
||||
|
||||
/* Fügt Inhalt in das Inhalts-Array ein */
|
||||
/* Fuegt Inhalt in das Inhalts-Array ein */
|
||||
function appendContent($newContent){
|
||||
if(is_array($newContent)){
|
||||
for($i = 0; $i < count($newContent); $i++){
|
||||
|
|
@ -63,7 +63,7 @@ class Parser{
|
|||
}
|
||||
|
||||
|
||||
/* Sucht innerhalb eines Template-Files nach dem richtigem Template-stück
|
||||
/* Sucht innerhalb eines Template-Files nach dem richtigem Template-stueck
|
||||
* und pappt es in ein neues Array */
|
||||
function _fetchFilePart($fileArray, $filePart){
|
||||
$inPart = false; /* Flag ob innerhalb des gesuchten Templates Initialisieren */
|
||||
|
|
@ -74,7 +74,7 @@ class Parser{
|
|||
$inPart = false; /* ...wenn gefunden Flag wieder False setzen */
|
||||
break; /* ...und Schleife abbrechen */
|
||||
} else {
|
||||
array_push($newArray, $fileArray[$i]); /* An sonsten Zeile zum neuem Array hinzufügen */
|
||||
array_push($newArray, $fileArray[$i]); /* An sonsten Zeile zum neuem Array hinzufuegen */
|
||||
}
|
||||
} else { /* Wenn nich im gesuchtem Template */
|
||||
if(preg_match("/\{content:part:".$filePart."\}/i", $fileArray[$i])){ /* Nach dem Anfang des Templates suchen */
|
||||
|
|
|
|||
|
|
@ -88,21 +88,21 @@ class Report{
|
|||
|
||||
}
|
||||
|
||||
/* Ein Modul hinzufügen */
|
||||
/* Ein Modul hinzufuegen */
|
||||
function addModule($modName){
|
||||
new Module($this->rptArray[9], $this->rptArray[2], $this->_getParserInstance(), $this->_getConnInstance());
|
||||
}
|
||||
|
||||
/* Callback-Funktion, wird ausgeführt wenn {content:fill:xyz} gefunden wird */
|
||||
/* Callback-Funktion, wird ausgefuehrt wenn {content:fill:xyz} gefunden wird */
|
||||
function fill($contentId){
|
||||
$content_split = explode("_", $contentId); /* Modultyp bekommen */
|
||||
$callObject = & call_user_method("_get_".$content_split[0], $this); /* Instanz der zum Modul gehörenden Klasse */
|
||||
$callObject = & call_user_method("_get_".$content_split[0], $this); /* Instanz der zum Modul gehoerenden Klasse */
|
||||
$funcName = "get".substr($contentId, strlen($content_split[0]), strlen($contentId)-strlen($content_split[0])); /* Namen der In der Instanz aufzurufenden Methode zusammenbauen */
|
||||
|
||||
return $callObject->$funcName($content_split[1]); /* Methode ausführen (Wert holen) und zurückgeben */
|
||||
return $callObject->$funcName($content_split[1]); /* Methode ausfuehren (Wert holen) und zurueckgeben */
|
||||
}
|
||||
|
||||
/* Parser Instanzieren (wenn noch nicht ist) und zurückgeben */
|
||||
/* Parser Instanzieren (wenn noch nicht ist) und zurueckgeben */
|
||||
function &_getParserInstance(){
|
||||
if($this->parserInstance==NULL)
|
||||
$this->parserInstance = new Parser();
|
||||
|
|
|
|||
Loading…
Reference in New Issue