Beispiel #1
0
JsonNode* oCharBool(const char* key, bool b)
{
	JsonNode* oRet = json_mkobject();
	json_append_member(oRet, key, json_mkbool(b));

	return oRet;
}
Beispiel #2
0
static void createMessage(int id, int unit, double temperature, double humidity) {
	ninjablocks_weather->message = json_mkobject();
	json_append_member(ninjablocks_weather->message, "id", json_mknumber(id, 0));
	json_append_member(ninjablocks_weather->message, "unit", json_mknumber(unit, 0));
	json_append_member(ninjablocks_weather->message, "temperature", json_mknumber(temperature/100, 2));
	json_append_member(ninjablocks_weather->message, "humidity", json_mknumber(humidity, 0));
}
Beispiel #3
0
void xbmcCreateMessage(char *server, int port, char *action, char *media) {
	xbmc->message = json_mkobject();
	JsonNode *code = json_mkobject();
	json_append_member(code, "action", json_mkstring(action));
	json_append_member(code, "media", json_mkstring(media));
	json_append_member(code, "server", json_mkstring(server));
	json_append_member(code, "port", json_mknumber(port));
						
	json_append_member(xbmc->message, "message", code);
	json_append_member(xbmc->message, "origin", json_mkstring("receiver"));
	json_append_member(xbmc->message, "protocol", json_mkstring(xbmc->id));
						
	pilight.broadcast(xbmc->id, xbmc->message);
	json_delete(xbmc->message);
	xbmc->message = NULL;
}
Beispiel #4
0
JsonNode* oCharChar(const char* key, const char* val)
{
	JsonNode* oRet = json_mkobject();
	json_append_member(oRet, key, json_mkstring(val));

	return oRet;
}
static int log_failure_fmt_msg(pool *p, const unsigned char *fmt,
    const char *event_name, char **msg, size_t *msg_len, int flags) {
  int res;
  char errstr[256], *json = NULL;
  void *obj = NULL;

  obj = json_mkobject();
  res = log_failure_mkmsg(flags, p, fmt, obj, log_failure_mkjson);

  if (!json_check(obj, errstr)) {
    pr_log_debug(DEBUG3, MOD_LOG_FAILURE_VERSION
      ": JSON structural problems: %s", errstr);
    errno = EINVAL;

    json_delete(obj);
    return -1;
  }

  json = json_encode(obj);
  pr_trace_msg(trace_channel, 3, "generated JSON payload: %s", json);

  *msg_len = strlen(json);
  *msg = palloc(p, *payload_len);
  memcpy(*payload, json, *payload_len);

  /* To avoid a memory leak via malloc(3), we have to explicitly call free(3)
   * on the returned JSON string.  Which is why we duplicate it out of the
   * given memory pool, for use outside of this function.
   */
  free(json);
  json_delete(obj);

  return 0;
}
Beispiel #6
0
int config_write(int level, const char *media) {
    logprintf(LOG_STACK, "%s(...)", __FUNCTION__);

    struct JsonNode *root = json_mkobject();
    FILE *fp;

    sort_list(0);
    struct config_t *listeners = config;
    while(listeners) {
        if(listeners->sync) {
            struct JsonNode *child = listeners->sync(level, media);
            if(child != NULL) {
                json_append_member(root, listeners->name, child);
            }
        }
        listeners = listeners->next;
    }

    /* Overwrite config file with proper format */
    if(!(fp = fopen(configfile, "w+"))) {
        logprintf(LOG_ERR, "cannot write config file: %s", configfile);
        return EXIT_FAILURE;
    }
    fseek(fp, 0L, SEEK_SET);
    char *content = json_stringify(root, "\t");
    fwrite(content, sizeof(char), strlen(content), fp);
    fclose(fp);
    json_free(content);
    json_delete(root);
    return EXIT_SUCCESS;
}
Beispiel #7
0
void csv_output(JsonNode *json, output_type otype, JsonNode *fields)
{
    JsonNode *node, *inttypes;
    JsonNode *arr, *one, *j;
    short virgin = 1;

    /* Prime the inttypes object with types we consider "integer" */
    inttypes = json_mkobject();
    json_append_member(inttypes, "batt", json_mkbool(1));
    json_append_member(inttypes, "vel", json_mkbool(1));
    json_append_member(inttypes, "cog", json_mkbool(1));
    json_append_member(inttypes, "tst", json_mkbool(1));
    json_append_member(inttypes, "alt", json_mkbool(1));
    json_append_member(inttypes, "dist", json_mkbool(1));
    json_append_member(inttypes, "trip", json_mkbool(1));

    arr = json_find_member(json, "locations");
    json_foreach(one, arr) {
        /* Headings */
        if (virgin) {
            virgin = !virgin;

            if (fields) {
                json_foreach(node, fields) {
                    printf("%s%c", node->string_, (node->next) ? ',' : '\n');
                }
            } else {
                json_foreach(j, one) {
                    if (j->key)
                        printf("%s%c", j->key, (j->next) ? ',' : '\n');
                }
            }
        }
Beispiel #8
0
void append_card_to_object(JsonNode *obj, char *user, char *device)
{
	char path[BUFSIZ], path1[BUFSIZ], *cardfile = NULL;
	JsonNode *card;

	if (!user || !*user)
		return;


	snprintf(path, BUFSIZ, "%s/cards/%s/%s/%s-%s.json",
		STORAGEDIR, user, device, user, device);
	if (access(path, R_OK) == 0) {
		cardfile = path;
	} else {
		snprintf(path1, BUFSIZ, "%s/cards/%s/%s.json",
			STORAGEDIR, user, user);

		if (access(path1, R_OK) == 0) {
			cardfile = path1;
		}
	}

	card = json_mkobject();
	if (cardfile && json_copy_from_file(card, cardfile) == TRUE) {
		json_copy_to_object(obj, card, FALSE);
	}
	json_delete(card);
}
Beispiel #9
0
JsonNode* oCharDouble(const char* key, double val)
{
	JsonNode* oRet = json_mkobject();
	json_append_member(oRet, key, json_mknumber(val));

	return oRet;
}
Beispiel #10
0
static JsonNode *line_to_location(char *line)
{
	JsonNode *json, *o, *j;
	char *ghash;
	char tstamp[64], *bp;
	double lat, lon;
	long tst;

	snprintf(tstamp, 21, "%s", line);

	if ((bp = strchr(line, '{')) == NULL)
		return (NULL);

	if ((json = json_decode(bp)) == NULL) {
		return (NULL);
	}

	if ((j = json_find_member(json, "_type")) == NULL) {
		json_delete(json);
		return (NULL);
	}
	if (j->tag != JSON_STRING || strcmp(j->string_, "location") != 0) {
		json_delete(json);
		return (NULL);
	}

	o = json_mkobject();

	if (json_copy_to_object(o, json, FALSE) == FALSE) {
		json_delete(o);
		json_delete(json);
		return (NULL);
	}
	json_delete(json);	/* Done with this -- we've copied it. */

	lat = lon = 0.0;
	if ((j = json_find_member(o, "lat")) != NULL) {
		lat = j->number_;
	}
	if ((j = json_find_member(o, "lon")) != NULL) {
		lon = j->number_;
	}

	if ((ghash = geohash_encode(lat, lon, geohash_prec())) != NULL) {
		json_append_member(o, "ghash", json_mkstring(ghash));
		get_geo(o, ghash);
		free(ghash);
	}

	json_append_member(o, "isorcv", json_mkstring(tstamp));

	tst = 0L;
	if ((j = json_find_member(o, "tst")) != NULL) {
		tst = j->number_;
	}
	json_append_member(o, "isotst", json_mkstring(isotime(tst)));

	return (o);
}
Beispiel #11
0
int registry_set_string(const char *key, char *value) {
	logprintf(LOG_STACK, "%s(...)", __FUNCTION__);

	if(registry == NULL) {
		registry = json_mkobject();
	}
	return registry_set_value_recursive(registry, key, (void *)value, 0, JSON_STRING);
}
Beispiel #12
0
void relayCreateMessage(int gpio, int state) {
	relay->message = json_mkobject();
	json_append_member(relay->message, "gpio", json_mknumber(gpio));
	if(state == 1)
		json_append_member(relay->message, "state", json_mkstring("on"));
	else
		json_append_member(relay->message, "state", json_mkstring("off"));
}
Beispiel #13
0
static void arctechSwOldCreateMessage(int id, int unit, int state) {
	arctech_switch_old->message = json_mkobject();
	json_append_member(arctech_switch_old->message, "id", json_mknumber(id, 0));
	json_append_member(arctech_switch_old->message, "unit", json_mknumber(unit, 0));
	if(state == 1)
		json_append_member(arctech_switch_old->message, "state", json_mkstring("on"));
	else
		json_append_member(arctech_switch_old->message, "state", json_mkstring("off"));
}
Beispiel #14
0
void clarusSwCreateMessage(char *id, int unit, int state) {
	clarus_switch->message = json_mkobject();
	json_append_member(clarus_switch->message, "id", json_mkstring(id));
	json_append_member(clarus_switch->message, "unit", json_mknumber(unit));
	if(state == 2)
		json_append_member(clarus_switch->message, "state", json_mkstring("on"));
	else
		json_append_member(clarus_switch->message, "state", json_mkstring("off"));
}
Beispiel #15
0
void conradRSLCnCreateMessage(int id, int state) {
	conrad_rsl_contact->message = json_mkobject();
	json_append_member(conrad_rsl_contact->message, "id", json_mknumber(id));
	if(state == 1) {
		json_append_member(conrad_rsl_contact->message, "state", json_mkstring("opened"));
	} else {
		json_append_member(conrad_rsl_contact->message, "state", json_mkstring("closed"));
	}
}
Beispiel #16
0
static void parseCode(void) {
	int binary[RAW_LENGTH/2];
	int temp1 = 0, temp2 = 0, temp3 = 0;
	int humi1 = 0, humi2 = 0;
	int id = 0, battery = 0;
	int channel = 0;
	int i = 0, x = 0;
	double humi_offset = 0.0, temp_offset = 0.0;
	double temperature = 0.0, humidity = 0.0;

	for(x=1;x<tfa->rawlen-2;x+=2) {
		if(tfa->raw[x] > AVG_PULSE_LENGTH*PULSE_MULTIPLIER) {
			binary[i++] = 1;
		} else {
			binary[i++] = 0;
		}
	}

	id = binToDecRev(binary, 2, 9);
	channel = binToDecRev(binary, 12, 13) + 1;

	temp1 = binToDecRev(binary, 14, 17);
	temp2 = binToDecRev(binary, 18, 21);
	temp3 = binToDecRev(binary, 22, 25);
	                                                     /* Convert F to C */
	temperature = (int)((float)(((((temp3*256) + (temp2*16) + (temp1))*10) - 9000) - 3200) * ((float)5/(float)9));

	humi1 = binToDecRev(binary, 26, 29);
	humi2 = binToDecRev(binary, 30, 33);
	humidity = ((humi1)+(humi2*16));

	if(binToDecRev(binary, 34, 35) > 1) {
		battery = 0;
	} else {
		battery = 1;
	}

	struct settings_t *tmp = settings;
	while(tmp) {
		if(fabs(tmp->id-id) < EPSILON && fabs(tmp->channel-channel) < EPSILON) {
			humi_offset = tmp->humi;
			temp_offset = tmp->temp;
			break;
		}
		tmp = tmp->next;
	}

	temperature += temp_offset;
	humidity += humi_offset;

	tfa->message = json_mkobject();
	json_append_member(tfa->message, "id", json_mknumber(id, 0));
	json_append_member(tfa->message, "temperature", json_mknumber(temperature/100, 2));
	json_append_member(tfa->message, "humidity", json_mknumber(humidity, 2));
	json_append_member(tfa->message, "battery", json_mknumber(battery, 0));
	json_append_member(tfa->message, "channel", json_mknumber(channel, 0));
}
Beispiel #17
0
static void createMessage(int id, int unit, int state) {
	arctech_screen_old->message = json_mkobject();
	json_append_member(arctech_screen_old->message, "id", json_mknumber(id, 0));
	json_append_member(arctech_screen_old->message, "unit", json_mknumber(unit, 0));
	if(state == 1)
		json_append_member(arctech_screen_old->message, "state", json_mkstring("up"));
	else
		json_append_member(arctech_screen_old->message, "state", json_mkstring("down"));
}
Beispiel #18
0
static void x10CreateMessage(char *id, int state) {
	x10->message = json_mkobject();
	json_append_member(x10->message, "id", json_mkstring(id));
	if(state == 0) {
		json_append_member(x10->message, "state", json_mkstring("on"));
	} else {
		json_append_member(x10->message, "state", json_mkstring("off"));
	}
}
Beispiel #19
0
int registry_set_number(const char *key, double value, int decimals) {
	logprintf(LOG_STACK, "%s(...)", __FUNCTION__);

	if(registry == NULL) {
		registry = json_mkobject();
	}
	void *p = (void *)&value;
	return registry_set_value_recursive(registry, key, p, decimals, JSON_NUMBER);
}
Beispiel #20
0
static void selectremoteCreateMessage(int id, int state) {
	selectremote->message = json_mkobject();
	json_append_member(selectremote->message, "id", json_mknumber(id, 0));
	if(state == 1) {
		json_append_member(selectremote->message, "state", json_mkstring("on"));
	} else {
		json_append_member(selectremote->message, "state", json_mkstring("off"));
	}
}
Beispiel #21
0
void sartanoCreateMessage(int id, int unit, int state) {
	sartano.message = json_mkobject();
	json_append_member(sartano.message, "id", json_mknumber(id));
	json_append_member(sartano.message, "unit", json_mknumber(unit));
	if(state == 1)
		json_append_member(sartano.message, "state", json_mkstring("on"));
	else
		json_append_member(sartano.message, "state", json_mkstring("off"));
}
Beispiel #22
0
static void genScreenCreateMessage(int id, int state) {
	generic_screen->message = json_mkobject();
	json_append_member(generic_screen->message, "id", json_mknumber(id));
	if(state == 1) {
		json_append_member(generic_screen->message, "state", json_mkstring("up"));
	} else {
		json_append_member(generic_screen->message, "state", json_mkstring("down"));
	}
}
Beispiel #23
0
void genSwitchCreateMessage(int id, int state) {
	generic_switch->message = json_mkobject();
	json_append_member(generic_switch->message, "id", json_mknumber(id));
	if(state == 1) {
		json_append_member(generic_switch->message, "state", json_mkstring("on"));
	} else {
		json_append_member(generic_switch->message, "state", json_mkstring("off"));
	}
}
Beispiel #24
0
void impulsCreateMessage(int systemcode, int programcode, int state) {
	impuls->message = json_mkobject();
	json_append_member(impuls->message, "systemcode", json_mknumber(systemcode));
	json_append_member(impuls->message, "programcode", json_mknumber(programcode));
	if(state == 1) {
		json_append_member(impuls->message, "state", json_mkstring("on"));
	} else {
		json_append_member(impuls->message, "state", json_mkstring("off"));
	}
}
Beispiel #25
0
static void createMessage(int systemcode, int unitcode, int state) {
	pollin->message = json_mkobject();
	json_append_member(pollin->message, "systemcode", json_mknumber(systemcode, 0));
	json_append_member(pollin->message, "unitcode", json_mknumber(unitcode, 0));
	if(state == 0) {
		json_append_member(pollin->message, "state", json_mkstring("on"));
	} else {
		json_append_member(pollin->message, "state", json_mkstring("off"));
	}
}
Beispiel #26
0
static void rev3CreateMessage(int id, int unit, int state) {
    rev3_switch->message = json_mkobject();
    json_append_member(rev3_switch->message, "id", json_mknumber(id));
    json_append_member(rev3_switch->message, "unit", json_mknumber(unit));
    if(state == 1) {
        json_append_member(rev3_switch->message, "state", json_mkstring("on"));
    } else {
        json_append_member(rev3_switch->message, "state", json_mkstring("off"));
	}
}
Beispiel #27
0
static void elroHECreateMessage(int systemcode, int unitcode, int state) {
	elro_he->message = json_mkobject();
	json_append_member(elro_he->message, "systemcode", json_mknumber(systemcode));
	json_append_member(elro_he->message, "unitcode", json_mknumber(unitcode));
	if(state == 0) {
		json_append_member(elro_he->message, "state", json_mkstring("on"));
	} else {
		json_append_member(elro_he->message, "state", json_mkstring("off"));
	}
}
Beispiel #28
0
static void createMessage(int systemcode, int programcode, int state) {
	rsl366->message = json_mkobject();
	json_append_member(rsl366->message, "systemcode", json_mknumber(systemcode, 0));
	json_append_member(rsl366->message, "programcode", json_mknumber(programcode, 0));
	if(state == 1) {
		json_append_member(rsl366->message, "state", json_mkstring("on"));
	} else {
		json_append_member(rsl366->message, "state", json_mkstring("off"));
	}
}
Beispiel #29
0
void genWeatherCreateMessage(int id, int temperature, int humidity) {
	generic_weather->message = json_mkobject();
	json_append_member(generic_weather->message, "id", json_mknumber(id));
	if(temperature > -999) {
		json_append_member(generic_weather->message, "temperature", json_mknumber(temperature));
	}
	if(humidity > -999) {
		json_append_member(generic_weather->message, "humidity", json_mknumber(humidity));
	}
}
void arctechSwCreateMessage(int id, int unit, int state, int all) {
	arctech_switch.message = json_mkobject();
	json_append_member(arctech_switch.message, "id", json_mknumber(id));
	json_append_member(arctech_switch.message, "unit", json_mknumber(unit));
	if(all == 1)
		json_append_member(arctech_switch.message, "all", json_mknumber(all));
	if(state == 1)
		json_append_member(arctech_switch.message, "state", json_mkstring("on"));
	else
		json_append_member(arctech_switch.message, "state", json_mkstring("off"));
}