void ICACHE_FLASH_ATTR publishAlarm(uint8 alarm, int info) { static uint8 last_alarm = 0xff; static int last_info = -1; if (alarm == last_alarm && info == last_info) return; // Ignore repeated identical alarms last_alarm = alarm; last_info = info; char *topic = (char*) os_malloc(50); char *data = (char*) os_malloc(100); if (topic == NULL || data == NULL) { ERRORP("malloc err %s/%s\n", topic, data); startFlash(-1, 50, 50); // fast return; } os_sprintf(topic, (const char*) "/Raw/%s/alarm", sysCfg.device_id); os_sprintf(data, (const char*) "{ \"alarm\":%d, \"info\":%d}", alarm, info); if (mqttIsConnected()) { if (!MQTT_Publish(mqttClient, topic, data, os_strlen(data), 0, 0)) printMQTTstate(); TESTP("********"); } else { TESTP("--------"); } TESTP("%s=>%s\n", topic, data); startFlash(-1, 200, 200); checkMinHeap(); os_free(topic); os_free(data); }
void ICACHE_FLASH_ATTR publishAllTemperatures(void) { struct Temperature *t; int idx; if (mqttIsConnected()) { char *topic = (char*) os_malloc(100), *data = (char*) os_malloc(100); if (topic == NULL || data == NULL) { ERRORP("malloc err %s/%s\n", topic, data); startFlash(-1, 50, 50); // fast return; } for (idx = 0; idx < MAX_TEMPERATURE_SENSOR; idx++) { if (getUnmappedTemperature(idx, &t)) { os_sprintf(topic, (const char*) "/Raw/%s/%s/info", sysCfg.device_id, t->address); os_sprintf(data, (const char*) "{ \"Type\":\"Temp\", \"Value\":\"%c%d.%02d\"}", t->sign, t->val, t->fract); if (!MQTT_Publish(mqttClient, topic, data, os_strlen(data), 0, 0)) printMQTTstate(); INFOP("%s=>%s\n", topic, data); } } checkMinHeap(); os_free(topic); os_free(data); } }
void ICACHE_FLASH_ATTR publishMapping(void) { if (mqttIsConnected()) { char *topic = (char *) os_zalloc(50); char *data = (char *) os_zalloc(500); int idx; if (topic == NULL || data == NULL) { ERRORP("malloc err %s/%s\n", topic, data); startFlash(-1, 50, 50); // fast return; } os_sprintf(topic, "/Raw/%10s/mapping", sysCfg.device_id); os_sprintf(data, "["); for (idx=0; idx<MAP_TEMP_SIZE; idx++) { if (idx != 0) os_sprintf(data + os_strlen(data), ", "); os_sprintf(data + os_strlen(data), "{\"map\":%d,\"name\":\"%s\", \"sensorID\": \"%s\"}", sysCfg.mapping[idx], sysCfg.mappingName[idx], unmappedSensorID(idx)); } os_sprintf(data + os_strlen(data), "]"); if (!MQTT_Publish(mqttClient, topic, data, os_strlen(data), 0, true)) printMQTTstate(); INFOP("%s=>%s\n", topic, data); checkMinHeap(); os_free(topic); os_free(data); } }
bool ICACHE_FLASH_ATTR checkSmartConfig(enum SmartConfigAction action) { static doingSmartConfig = false; switch (action) { case SC_CHECK: break; case SC_HAS_STOPPED: os_printf("Finished smartConfig\n"); stopFlash(); doingSmartConfig = false; MQTT_Connect(&mqttClient); break; case SC_TOGGLE: if (doingSmartConfig) { os_printf("Stop smartConfig\n"); stopFlash(); smartconfig_stop(); doingSmartConfig = false; wifi_station_disconnect(); wifi_station_connect(); } else { os_printf("Start smartConfig\n"); MQTT_Disconnect(&mqttClient); mqttConnected = false; startFlash(100, true); doingSmartConfig = true; smartconfig_start(smartConfig_done, true); } break; } return doingSmartConfig; }
static bool ICACHE_FLASH_ATTR checkAlloc(void *topic, void *data) { if (topic == NULL || data == NULL) { ERRORP("malloc err %s/%s\n", topic, data); startFlash(-1, 50, 50); // fast if (topic) os_free(topic); return false; } return true; }
void InputEdit::keyPressEvent(QKeyEvent *e) { int key = e->key(); bool control = (e->modifiers() & Qt::ControlModifier) != 0; if (control && (key == Qt::Key_D || key == Qt::Key_C || key == Qt::Key_Z)) { startFlash(); emit sendEOF(); } else { QLineEdit::keyPressEvent(e); } }
void FlashFirmwareDialog::on_burnButton_clicked() { g.flashDir(QFileInfo(fwName).dir().absolutePath()); g.profile[g.id()].fwName(fwName); g.checkHardwareCompatibility(ui->checkHardwareCompatibility->isChecked()); g.backupOnFlash(ui->backupEEprom->isChecked()); qDebug() << "FlashFirmwareDialog: flashing" << fwName; if (imageSource != FIRMWARE) { // load the splash image const QPixmap * pixmap = ui->splash->pixmap(); QImage image; if (pixmap) { image = pixmap->toImage().scaled(ui->splash->width(), ui->splash->height()); } if (image.isNull()) { QMessageBox::critical(this, tr("Warning"), tr("Splash image not found")); return; } // write the customized firmware QString tempFile; if (getFileType(fwName) == FILE_TYPE_HEX) tempFile = generateProcessUniqueTempFileName("flash.hex"); else tempFile = generateProcessUniqueTempFileName("flash.bin"); qDebug() << "FlashFirmwareDialog: patching" << fwName << "with custom splash screen and saving to" << tempFile; FirmwareInterface firmware(fwName); firmware.setSplash(image); if (firmware.save(tempFile) <= 0) { QMessageBox::critical(this, tr("Warning"), tr("Cannot save customized firmware")); return; } startFlash(tempFile); } else { startFlash(fwName); } }
bool ICACHE_FLASH_ATTR toggleHttpSetupMode(void) { httpSetupMode = !httpSetupMode; if (httpSetupMode) { os_timer_disarm(&setup_timer); os_timer_setfn(&setup_timer, (os_timer_func_t *) setupCb, (void *) 0); os_timer_arm(&setup_timer, 10 * 60 * 1000, false); // Allow 10 minutes startFlash(-1, 500, 500); } else { os_timer_disarm(&setup_timer); stopFlash(); } return httpSetupMode; }
void ICACHE_FLASH_ATTR publishDeviceInfo(char *version, char *mode, uint8 wifiChannel, uint16 wifiConnectTime, char *bestSSID, uint16 vcc) { if (mqttIsConnected()) { char *topic = (char *) os_zalloc(50); char *data = (char *) os_zalloc(500); int idx; struct ip_info ipConfig; if (topic == NULL || data == NULL) { ERRORP("malloc err %s/%s\n", topic, data); startFlash(-1, 50, 50); // fast return; } wifi_get_ip_info(STATION_IF, &ipConfig); os_sprintf(topic, "/Raw/%10s/info", sysCfg.device_id); os_sprintf(data, "{\"Name\":\"%s\", \"Location\":\"%s\", \"Version\":\"%s(%s)\", " "\"Updates\":%d, \"Inputs\":%d, \"Outputs\":%d, " "\"RSSI\":%d, \"Channel\": %d, \"ConnectTime\": %d, \"Vcc\": %d, ", sysCfg.deviceName, sysCfg.deviceLocation, version, mode, sysCfg.updates, #ifdef INPUTS sysCfg.inputs, #else 0, #endif #ifdef OUTPUTS sysCfg.outputs, #else 0, #endif wifi_station_get_rssi(), wifiChannel, wifiConnectTime, vcc); os_sprintf(data + os_strlen(data), "\"IPaddress\":\"%d.%d.%d.%d\"", IP2STR(&ipConfig.ip.addr)); os_sprintf(data + os_strlen(data), ", \"AP\":\"%s\"", bestSSID); os_sprintf(data + os_strlen(data), ", \"Settings\":["); for (idx = 0; idx < SETTINGS_SIZE; idx++) { if (idx != 0) os_sprintf(data + os_strlen(data), ", "); os_sprintf(data + os_strlen(data), "%d", sysCfg.settings[idx]); } os_sprintf(data + os_strlen(data), "]}"); if (!MQTT_Publish(mqttClient, topic, data, os_strlen(data), 0, true)) printMQTTstate(); INFOP("%s=>%s\n", topic, data); checkMinHeap(); os_free(topic); os_free(data); } }
void ICACHE_FLASH_ATTR publishInput(uint8 idx, uint8 val) { if (mqttIsConnected()) { char *topic = (char*) os_malloc(50), *data = (char*) os_malloc(100); if (topic == NULL || data == NULL) { ERRORP("malloc err %s/%s\n", topic, data); startFlash(-1, 50, 50); // fast return; } os_sprintf(topic, (const char*) "/Raw/%s/%d/info", sysCfg.device_id, idx + INPUT_SENSOR_ID_START); os_sprintf(data, (const char*) "{\"Name\":\"IP%d\", \"Type\":\"Input\", \"Value\":\"%d\"}", idx, val); INFOP("%s-->%s", topic, data); if (!MQTT_Publish(mqttClient, topic, data, os_strlen(data), 0, 0)) printMQTTstate(); checkMinHeap(); os_free(topic); os_free(data); } }
void ICACHE_FLASH_ATTR publishDeviceReset(char *version, int lastAction) { if (mqttIsConnected()) { char *topic = (char *) os_zalloc(50); char *data = (char *) os_zalloc(200); int idx; if (topic == NULL || data == NULL) { ERRORP("malloc err %s/%s\n", topic, data); startFlash(-1, 50, 50); // fast return; } os_sprintf(topic, "/Raw/%10s/reset", sysCfg.device_id); os_sprintf(data, "{\"Name\":\"%s\", \"Location\":\"%s\", \"Version\":\"%s\", \"Reason\":%d, \"LastAction\":%d}", sysCfg.deviceName, sysCfg.deviceLocation, version, system_get_rst_info()->reason, lastAction); if (!MQTT_Publish(mqttClient, topic, data, os_strlen(data), 0, false)) printMQTTstate(); INFOP("%s=>%s\n", topic, data); checkMinHeap(); os_free(topic); os_free(data); } }
static void ICACHE_FLASH_ATTR printMQTTstate(void) { ERRORP("State: MQTT-%d, TCP-%d\n", mqttClient->mqtt_state, mqttClient->connState); startFlash(-1, 1000, 1000); }