Newer
Older
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.MqttTopic;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.util.ArrayList;
//private JSONObject jsonObject;
//private final static String DATABASE_PATH = "./Luci.json";
private static ArrayList<String> topicsSub;
private String clientId = Long.toString(new Date().getTime()) + "-luci"; // unique client id
private String mqttDomain;
private String mqttSubdomain;
private static String mqttTree;
private final static String FILE_CONF = CONF_FOLDER + "conf.json";// "./CONF/conf.json";
// private final static String FILE_ZONA =
// CONF_FOLDER+"zona.json";//"./CONF/zona.json"
final static String FILE_ZONA = "../CONF/zona.json";// "./CONF/zona.json"
JSONObject config = new JSONObject(Helper.leggiFile(FILE_CONF));// dove mi salvo le strutture dal file? cioè
// leggo e poi?
brokerUrl = config.getString("protocol") + "://" + config.getString("broker") + ":" + config.getInt("port");
mqttDomain = config.getString("mqttDomain");
mqttSubdomain = config.getString("mqttSubdomain");
makeMqttTree();
topicsSub.add("to/all"); // mandare la mia descrizione json
topicsSub.add(getMqttTree("rpc/", "luci")); // mandare lo stato attuale
// inutile aggiungere i topic, perche subbo gia' tutto gpio/#
config = new JSONObject(Helper.leggiFile(FILE_ZONA));
topicsSub.add(getMqttTree("from/", "gpio/#"));
topicsSub.add(getMqttTree("to/", "luci/#"));// {"evento":0,"nome":nome_scenario} per attivare/disattivare uno
topicsSub.add(getMqttTree("from/", "arduino/AN0")); // scenario; risposta su from/tree/scenari/attiva con
// {"nome":nome_scenario}
// topicsSub.add(getMqttTree("to/","luci/salva"));//per rinominare lo scenario
// piu recente
this.mqttClient = new MqttClient(brokerUrl, clientId, new MemoryPersistence());
public static String getMqttTree(String prefix, String suffix) {
return (prefix.endsWith("/") ? prefix : prefix + "/") + mqttTree
+ (suffix.startsWith("/") ? suffix.substring(1) : suffix);
public static void main(String args[]) throws JSONException, IOException, MqttException {
private static void startSystemo() throws JSONException, IOException, MqttException {
JSONObject config = new JSONObject(Helper.leggiFile(FILE_ZONA));
System.out.println(config);
String sensM = config.getString("sensM");
int index = 0;
while (config.has("lamp" + index)) {
System.out.println(index + "\n");
JSONObject k = config.getJSONObject("lamp" + index);
System.out.println(k);
String a = k.getString("output");
String b = k.getString("input");
boolean c = k.getBoolean("stato");
String d = k.getString("nome");
Luce luce = new Luce(a, b, c, d);
luciList.add(luce);
System.out.println(config.get("lamp" + index));
index++;
Luci luci = new Luci();
Esecutore esec = Esecutore.istanziatore(luci);
luci.startClient(esec, sensM);
public void sendMqttMessage(String topic, String msg) throws MqttException {
final MqttTopic msgTopic = mqttClient.getTopic(topic);
msgTopic.publish(new MqttMessage(msg.getBytes()));
public void startClient(Esecutore esec, String sensM) throws MqttException {
MqttConnectOptions options = new MqttConnectOptions();
options.setUserName("gruppo2");
options.setPassword("funziona".toCharArray());
options.setCleanSession(false);
mqttClient.setCallback(new Subscriber(this, esec, sensM));
mqttClient.connect(options);