code cleaned

git-svn-id: file:///home/jan/tmp/wetterstation/trunk@201 dd492736-c11a-0410-ad51-8c26713eaf7f
This commit is contained in:
losinshi 2006-12-11 09:50:03 +00:00
parent ff877ec580
commit 4eb5123888
42 changed files with 191 additions and 191 deletions

View File

@ -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)

View File

@ -1,5 +1,5 @@
#############################################
# Beispiel-Config-File für ein Diagram-Bild #
# Beispiel-Config-File fuer ein Diagram-Bild #
#############################################
# Filename des erzeugten bildes

View File

@ -1,5 +1,5 @@
#############################################
# Beispiel-Config-File für ein Diagram-Bild #
# Beispiel-Config-File fuer ein Diagram-Bild #
#############################################
# Filename des erzeugten bildes

View File

@ -1,5 +1,5 @@
#############################################
# Beispiel-Config-File für ein Diagram-Bild #
# Beispiel-Config-File fuer ein Diagram-Bild #
#############################################
# Filename des erzeugten bildes

View File

@ -1,5 +1,5 @@
#############################################
# Beispiel-Config-File für ein Diagram-Bild #
# Beispiel-Config-File fuer ein Diagram-Bild #
#############################################
# Filename des erzeugten bildes

View File

@ -1,5 +1,5 @@
#############################################
# Beispiel-Config-File für ein Diagram-Bild #
# Beispiel-Config-File fuer ein Diagram-Bild #
#############################################
# Filename des erzeugten bildes

View File

@ -1,5 +1,5 @@
#############################################
# Beispiel-Config-File für ein Diagram-Bild #
# Beispiel-Config-File fuer ein Diagram-Bild #
#############################################
# Filename des erzeugten bildes

View File

@ -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))

View File

@ -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)

View File

@ -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);

View File

@ -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

View File

@ -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 */

View File

@ -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 */

View File

@ -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 -----------------------------------------------------------*/

View File

@ -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 */
}
}

View File

@ -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();

View File

@ -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)

View File

@ -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 */

View File

@ -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

View File

@ -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 ------------------------------------------------------ */

View File

@ -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.

View File

@ -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();

View File

@ -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 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);

View File

@ -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));
}

View File

@ -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

View File

@ -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;

View File

@ -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*/

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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(){

View File

@ -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 */

View File

@ -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){

View File

@ -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());
}

View File

@ -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 */

View File

@ -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 */

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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();