调整时间通知为每秒

新增wifi设备连入退出判断
为下发开门指令做准备
This commit is contained in:
2021-12-16 23:25:05 +08:00
parent d35431a35d
commit 7b1050b4e3
15 changed files with 265 additions and 17 deletions

View File

@@ -127,7 +127,7 @@ public class Bangumi extends Model {
public void onTime(String time) {
super.onTime(time);
switch (time) {
case "08:00", "20:00" -> QQBotManager.getInstance().sendMessage(QQBotManager.defGroup,BangumiTools.reportToDayBangumi());
case "08:00:00", "20:00:00" -> QQBotManager.getInstance().sendMessage(QQBotManager.defGroup,BangumiTools.reportToDayBangumi());
}
}
}

View File

@@ -39,6 +39,8 @@ public abstract class Model implements ModelInterface {
public static final String TSDM_PAY = "!tsdm";
public static final String TSDM_SIGN = "!tsdm签到";
public static final String BAIDU_DOWN = "!bd";
public static final String ROUTER_ADD="!添加设备";
public static final String ROUTER_DEL="!删除设备";
}

View File

@@ -26,7 +26,7 @@ public class BaiHeHui extends Model {
@Override
public void onTime(String time) {
super.onTime(time);
if ("08:10".equals(time)) {
if ("08:10:00".equals(time)) {
Log.i("开始百合会签到");
try {
sign();

View File

@@ -40,7 +40,7 @@ public class Tsdm extends Model {
@Override
public void onTime(String time) {
super.onTime(time);
if ("08:00".equals(time)) {
if ("08:00:00".equals(time)) {
Log.i("开始天使动漫签到");
try {
tsdmSign();

View File

@@ -0,0 +1,106 @@
package com.yutou.qqbot.models.XiaoMi;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yutou.qqbot.QQBotManager;
import com.yutou.qqbot.models.Model;
import com.yutou.qqbot.utlis.HttpTools;
import com.yutou.qqbot.utlis.RedisTools;
import com.yutou.qqbot.utlis.XiaoMiRouter;
import net.mamoe.mirai.event.events.MessageEvent;
import java.util.HashSet;
import java.util.Set;
public class MiRouter extends Model {
public static String redis_key = "MiRouterDevices";
@Override
public boolean isUserPublic() {
return false;
}
@Override
public String[] getUsePowers() {
return new String[]{
QQFromCommands.ROUTER_ADD,
QQFromCommands.ROUTER_DEL
};
}
@Override
public void onMessage(Long qq, MessageEvent event, boolean isGroup) {
super.onMessage(qq, event, isGroup);
if(msg.equals(QQFromCommands.ROUTER_ADD)){
String url="http://192.168.31.88:8002/router/device/add.do?qq="+qq;
QQBotManager.getInstance().sendMessage(qq,"点击该链接完成设备添加:\n"+url);
}else if(msg.equals(QQFromCommands.ROUTER_DEL)){
String url="http://192.168.31.88:8002/router/device/del.do?qq="+qq;
QQBotManager.getInstance().sendMessage(qq,"点击该删除设备:\n"+url);
}
}
@Override
public void onTime(String time) {
super.onTime(time);
String url = XiaoMiRouter.getDeviceListUrl();
JSONObject json = JSONObject.parseObject(HttpTools.get(url));
if (json.getInteger("code") == 0) {
String _tmp = RedisTools.get(redis_key);
if (_tmp == null) {
return;
}
JSONArray devices = JSONArray.parseArray(_tmp);
JSONArray devs = (JSONArray) devices.clone();
JSONArray array = json.getJSONArray("list");
Set<String> links = new HashSet<>();
for (Object o : array) {
JSONObject item = (JSONObject) o;
for (Object device : devices) {
JSONObject _device = (JSONObject) device;
devs.remove(_device);
if (_device.getString("mac").equals(item.getString("mac")) && !_device.getBoolean("online")) {
StringBuilder builder = new StringBuilder();
builder.append(item.getString("oname"));
builder.append(" 欢迎回家!").append("\n");
builder.append("点击该链接开门:").append("\n");
QQBotManager.getInstance().sendMessage(_device.getLong("qq"), builder.toString());
_device.put("online", true);
_device.put("name", item.getString("oname"));
}
if (_device.getString("mac").equals(item.getString("mac")) && _device.getBoolean("online")) {
links.add(_device.getString("mac"));
_device.put("linkTime", Long.parseLong(item.getJSONObject("statistics").getString("online")));
}
devs.add(_device);
}
}
devices = (JSONArray) devs.clone();
for (Object device : devices) {
JSONObject item = (JSONObject) device;
if (!links.contains(item.getString("mac"))&&item.getLong("linkTime")!=0) {
devs.remove(device);
String builder = "你的设备:" +
item.getString("name") +
"已下线" + "\n" +
"在线时长:" + getOnLineTime(item.getString("linkTime")) + "\n";
QQBotManager.getInstance().sendMessage(item.getLong("qq"), builder);
item.put("online", false);
item.put("linkTime",0);
devs.add(item);
}
}
RedisTools.set(redis_key, devs.toJSONString());
}
}
private String getOnLineTime(String online) {
long time = Long.parseLong(online);
long day = time / 24 / 60 / 60;
long h = time / 60 / 60 % 24;
long m = time / 60 % 60;
long s = time % 60;
return String.format("%02d天%02d时%02d分%02d秒", day, h, m, s);
}
}

View File

@@ -222,7 +222,7 @@ public class QQSetu extends Model {
@Override
public void onTime(String time) {
super.onTime(time);
if("23:59".equals(time)){
if("23:59:00".equals(time)){
printTodaySetu();
}
}