update thingsboard to support systemd service
5 files modified
1 files added
| | |
| | | { |
| | | if ( !(fp = fopen(fname, "a+")) ) |
| | | { |
| | | fprintf(stderr, "%s() failed: %s\n", __func__, strerror(errno)); |
| | | fprintf(stderr, "%s() %s failed: %s\n", __func__, fname, strerror(errno)); |
| | | return -2; |
| | | } |
| | | L.fp = fp; |
| | |
| | | #include "logger.h" |
| | | #include "iniparser.h" |
| | | |
| | | int mqttd_parser_conf(const char *conf_file, mqtt_ctx_t *ctx, int debug) |
| | | int parser_conf(const char *conf_file, mqtt_ctx_t *ctx, int debug) |
| | | { |
| | | dictionary *ini; |
| | | const char *str; |
| | |
| | | } mqtt_ctx_t; |
| | | |
| | | |
| | | extern int mqttd_parser_conf(const char *conf_file, mqtt_ctx_t *ctx, int debug); |
| | | extern int parser_conf(const char *conf_file, mqtt_ctx_t *ctx, int debug); |
| | | |
| | | #endif /* ----- #ifndef _CONF_H_ ----- */ |
| | | |
| | |
| | | [logger] |
| | | |
| | | # 日志记录文件 |
| | | file=/tmp/thingsboard.log |
| | | file=/var/log/thingsboard.log |
| | | |
| | | # 日志级别: 0:ERROR 1:WARN 2:INFO 3:DEBUG 4:TRACE |
| | | level=2 |
| New file |
| | |
| | | [Unit] |
| | | Description=RaspberryPi ThingsBoard Client Service |
| | | After=network.target |
| | | |
| | | [Service] |
| | | Type=simple |
| | | ExecStartPre=/bin/rm -f /tmp/.thingsboard.pid /var/log/thingsboard.log |
| | | ExecStart=/usr/bin/thingsboard -c /etc/thingsboard.conf |
| | | |
| | | Restart=always |
| | | RestartSec=2 |
| | | |
| | | [Install] |
| | | WantedBy=multi-user.target |
| | | |
| | |
| | | printf(" %s is LingYun studio MQTT daemon program running on RaspberryPi\n", progname); |
| | | |
| | | printf("\nMandatory arguments to long options are mandatory for short options too:\n"); |
| | | printf(" -b[daemon ] Running in daemon mode\n"); |
| | | printf(" -d[debug ] Running in debug mode\n"); |
| | | printf(" -c[conf ] Specify configure file\n"); |
| | | printf(" -h[help ] Display this help information\n"); |
| | |
| | | |
| | | int main (int argc, char **argv) |
| | | { |
| | | int daemon = 1; |
| | | int daemon = 0; |
| | | pthread_t tid; |
| | | mqtt_ctx_t ctx; |
| | | char *conf_file="/etc/mqttd.conf"; |
| | | char *conf_file="/etc/thingsboard.conf"; |
| | | int debug = 0; |
| | | int opt; |
| | | char *progname=NULL; |
| | | |
| | | struct option long_options[] = { |
| | | {"conf", required_argument, NULL, 'c'}, |
| | | {"daemon", no_argument, NULL, 'b'}, |
| | | {"debug", no_argument, NULL, 'd'}, |
| | | {"version", no_argument, NULL, 'v'}, |
| | | {"help", no_argument, NULL, 'h'}, |
| | |
| | | progname = (char *)basename(argv[0]); |
| | | |
| | | /* parser the command line parameters */ |
| | | while ((opt = getopt_long(argc, argv, "c:dvh", long_options, NULL)) != -1) |
| | | while ((opt = getopt_long(argc, argv, "c:bdvh", long_options, NULL)) != -1) |
| | | { |
| | | switch (opt) |
| | | { |
| | |
| | | conf_file = optarg; |
| | | break; |
| | | |
| | | case 'b': /* Set daemon running */ |
| | | daemon = 1; |
| | | break; |
| | | |
| | | case 'd': /* Set debug running */ |
| | | daemon = 0; |
| | | debug = 1; |
| | | break; |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | if( !conf_file ) |
| | | debug = 1; |
| | | |
| | | /* parser configure file */ |
| | | if( mqttd_parser_conf(conf_file, &ctx, debug)<0 ) |
| | | if( parser_conf(conf_file, &ctx, debug)<0 ) |
| | | { |
| | | fprintf(stderr, "Parser mqtted configure file failure\n"); |
| | | fprintf(stderr, "Parser thingsboard configure file failure\n"); |
| | | return -2; |
| | | } |
| | | |