String WIFI::get(Topic &topic) { if (topic.itemIs(3, "macAddress")) { return macAddress(); } else if (topic.itemIs(3, "scanResult")){ return scanResult(); } else { return TOPIC_NO; } }
String WIFI::set(Topic &topic) { if (topic.itemIs(3, "scan")) { return scanWifi(); } else { return TOPIC_NO; } }
String customDevice::set(Topic &topic) { /* ~/set └─device (level 2) └─deviceCFG (level 3) └─index (level 4) individual setting └─value (level 4) individual setting └─scanBus (level 4) scan 1W-Bus for new devices */ logging.debug("device set topic " + topic.topic_asString() + " to " + topic.arg_asString()); String ret = TOPIC_NO; if (topic.itemIs(3, "deviceCFG")) { //modify dashboard------------------- if (topic.itemIs(4, "addItem")) { modifyDashboard(); return TOPIC_OK; } } return ret; }
String customDevice::get(Topic &topic) { /* ~/get └─device (level 2) └─sensor1 (level 3) */ logging.debug("device get topic " + topic.topic_asString()); if (topic.getItemCount() != 4) // ~/get/device/sensor1 return TOPIC_NO; if (topic.itemIs(3, "sensor1")) { return String(measure()); } else { return TOPIC_NO; } }
String customDevice::set(Topic &topic) { /* ~/set └─device (level 2) └─yourItem (level 3) */ logging.debug("device set topic " + topic.topic_asString() + " to " + topic.arg_asString()); if (topic.getItemCount() != 4) // ~/set/device/yourItem return TOPIC_NO; if (topic.itemIs(3, "yourItem")) { return TOPIC_OK; } else { return TOPIC_NO; } }
String Controller::call(Topic &topic) { // MQTT state information via API-call if (topic.modifyTopic(0) == "event/mqtt/connected") { if (topic.argIs(0, "1")) { on_mqtt_connected(); } else { on_mqtt_disconnected(); } } // D("Controller: begin call"); // set if (topic.itemIs(1, "set")) { if (topic.itemIs(2, "ffs")) { return ffs.set(topic); } else if (topic.itemIs(2, "clock")) { return clock.set(topic); } else if (topic.itemIs(2, "esp")) { return espTools.set(topic); } else if (topic.itemIs(2, "wifi")) { return wifi.set(topic); } else if (topic.itemIs(2, "device")) { if (topic.itemIs(3, "fillDashboard")) { return device.fillDashboard(); } else { return device.set(topic); } } else if (topic.itemIs(2, "controller")) { if (topic.itemIs(3, "reconnectDelay")) { D("set reconnectDelay"); Di("arg=", topic.getArgAsLong(0)); reconnectDelay = topic.getArgAsLong(0); if (reconnectDelay < 1) reconnectDelay = 1; if (reconnectDelay > RECONNECT_DELAY_MAX) reconnectDelay = RECONNECT_DELAY_MAX; reconnectDelayed = 0; return TOPIC_OK; } else { return TOPIC_NO; } } else { return TOPIC_NO; } // get } else if (topic.itemIs(1, "get")) { if (topic.itemIs(2, "ffs")) { return ffs.get(topic); } else if (topic.itemIs(2, "clock")) { return clock.get(topic); } else if (topic.itemIs(2, "esp")) { return espTools.get(topic); } else if (topic.itemIs(2, "wifi")) { return wifi.get(topic); } else if (topic.itemIs(2, "device")) { if(topic.itemIs(3, "flags")) { return fwConfig(); } else if(topic.itemIs(3, "version")) { return device.getVersion(); } else if (topic.itemIs(3, "type")) { return device.getType(); } else if (topic.itemIs(3, "dashboard")) { return device.getDashboard(); } else { return device.get(topic); } } else { return TOPIC_NO; } } else { return TOPIC_NO; } // D("Controller: end call"); }