public boolean sendMessageToHardware(short cmd, int msgId, String body) { return sendMessageToHardware(hardwareChannels, cmd, msgId, body); }
public boolean sendMessageToHardware(int activeDashId, short cmd, int msgId, String body, int deviceId) { return hardwareChannels.size() == 0 || sendMessageToHardware(filter(body.length(), activeDashId, deviceId), cmd, msgId, body); }
public boolean sendMessageToHardware(int activeDashId, short cmd, int msgId, String body, int... deviceIds) { return hardwareChannels.size() == 0 || sendMessageToHardware(filter(body.length(), activeDashId, deviceIds), cmd, msgId, body); }
@Override public void channelInactive(ChannelHandlerContext ctx) { var state = getAppState(ctx.channel()); if (state != null) { var session = sessionDao.get(state.userKey); if (session != null) { log.trace("Application channel disconnect. {}", ctx.channel()); for (var dashBoard : state.user.profile.dashBoards) { if (dashBoard.isAppConnectedOn && dashBoard.isActive) { log.trace("{}-{}. Sending App Disconnected event to hardware.", state.user.email, state.user.appName); session.sendMessageToHardware(dashBoard.id, Command.BLYNK_INTERNAL, 7777, "adis"); } } } } }
private void triggerTimer(SessionDao sessionDao, UserKey userKey, String value, int dashId, int[] deviceIds) { Session session = sessionDao.get(userKey); if (session != null) { if (!session.sendMessageToHardware(dashId, HARDWARE, TIMER_MSG_ID, value, deviceIds)) { actuallySendTimers++; } for (int deviceId : deviceIds) { session.sendToApps(HARDWARE, TIMER_MSG_ID, dashId, deviceId, value); } } }
private void execute(Session session, Profile profile, DashBoard dash, int deviceId, SetPinAction action, long now) { String body = action.makeHardwareBody(); session.sendMessageToHardware(dash.id, HARDWARE, 888, body, deviceId); session.sendToApps(HARDWARE, 888, dash.id, deviceId, body); profile.update(dash, deviceId, action.dataStream.pin, action.dataStream.pinType, action.value, now); }
private void completeLogin(Channel channel, Session session, User user, int msgId, Version version) { if (allowStoreIp) { user.lastLoggedIP = IPUtils.getIp(channel.remoteAddress()); } user.lastLoggedAt = System.currentTimeMillis(); session.addAppChannel(channel); channel.writeAndFlush(ok(msgId), channel.voidPromise()); for (DashBoard dashBoard : user.profile.dashBoards) { if (dashBoard.isAppConnectedOn && dashBoard.isActive) { log.trace("{}-{}. Sending App Connected event to hardware for project {}.", user.email, user.appName, dashBoard.id); session.sendMessageToHardware(dashBoard.id, BLYNK_INTERNAL, 7777, "acon"); } } if (version.isOutdated()) { channel.writeAndFlush( makeASCIIStringMessage(OUTDATED_APP_NOTIFICATION, msgId, "Your app is outdated. Please update to the latest app version. " + "Ignoring this notice may affect your projects."), channel.voidPromise()); } log.info("{} {}-app ({}) joined.", user.email, user.appName, version); }
@Override public Response onCompleted(Response response) { if (isValidResponseCode(response.getStatusCode())) { webHook.failureCounter = 0; if (response.hasResponseBody()) { //todo could be optimized with response.getResponseBodyAsByteBuffer() String body = DataStream.makeHardwareBody(webHook.pinType, webHook.pin, response.getResponseBody(CharsetUtil.UTF_8)); log.trace("Sending webhook to hardware. {}", body); session.sendMessageToHardware(dashId, Command.HARDWARE, 888, body, deviceId); } } else { webHook.failureCounter++; log.debug("Error sending webhook for {}. Code {}.", email, response.getStatusCode()); if (log.isDebugEnabled()) { log.debug("Reason {}", response.getResponseBody()); } } return null; }
private Response singleDeviceOTA(ChannelHandlerContext ctx, String token, String pathToFirmware) { TokenValue tokenValue = tokenManager.getTokenValueByToken(token); if (tokenValue == null) { log.debug("Requested token {} not found.", token); return badRequest("Invalid token."); } User user = tokenValue.user; int dashId = tokenValue.dash.id; int deviceId = tokenValue.device.id; Session session = sessionDao.get(new UserKey(user)); if (session == null) { log.debug("No session for user {}.", user.email); return badRequest("Device wasn't connected yet."); } String body = OTAInfo.makeHardwareBody(otaManager.serverHostUrl, pathToFirmware); if (session.sendMessageToHardware(dashId, BLYNK_INTERNAL, 7777, body, deviceId)) { log.debug("No device in session."); return badRequest("No device in session."); } User initiator = ctx.channel().attr(AuthHeadersBaseHttpHandler.USER).get(); if (initiator != null) { tokenValue.device.updateOTAInfo(initiator.email); } return ok(pathToFirmware); }
if (session.sendMessageToHardware(dashId, HARDWARE, PIN_MODE_MSG_ID, pmBody, device.id)) { log.debug("No device in session."); if (ctx.channel().isWritable() && !dash.isNotificationsOff) {
if (session.sendMessageToHardware(dashId, HARDWARE, message.id, split[1], deviceIds) && !dash.isNotificationsOff) { log.debug("No device in session.");
if (session.sendMessageToHardware(dashId, HARDWARE, message.id, split[1], deviceIds) && !dash.isNotificationsOff) { log.debug("No device in session.");
session.sendMessageToHardware(dashId, HARDWARE, 111, body, deviceId);
return ok(); session.sendMessageToHardware(dashId, HARDWARE, 111, body, deviceId);
@GET @Path("/start") @Metric(HTTP_STOP_OTA) public Response startOTA(@QueryParam("fileName") String filename, @QueryParam("token") String token) { TokenValue tokenValue = tokenManager.getTokenValueByToken(token); if (tokenValue == null) { log.debug("Requested token {} not found.", token); return badRequest("Invalid token."); } User user = tokenValue.user; if (user == null) { return badRequest("Invalid auth credentials."); } Session session = sessionDao.get(new UserKey(user)); if (session == null) { log.debug("No session for user {}.", user.email); return badRequest("Device wasn't connected yet."); } String otaFile = OTA_DIR + (filename == null ? "firmware_ota.bin" : filename); String body = OTAInfo.makeHardwareBody(otaManager.serverHostUrl, otaFile); if (session.sendMessageToHardware(BLYNK_INTERNAL, 7777, body)) { log.debug("No device in session."); return badRequest("No device in session."); } tokenValue.device.updateOTAInfo(user.email); return ok(); }