充电机遥测数据上报

master
smartwyy 6 months ago
parent 16a5a7a84d
commit b87337b8d9

@ -89,6 +89,19 @@ public class RedisHelper : IDisposable
return db.StringGet(key);
}
/// <summary>
/// 先进先出队列
/// </summary>
/// <param name="topic"></param>
/// <param name="value"></param>
/// <returns></returns>
public void PublishAsync(string topic, string value)
{
ISubscriber sub = GetConnect().GetSubscriber();
sub.PublishAsync(topic, value);
}
/// <summary>
/// 获取Redis中的值异步版本
/// </summary>
@ -107,7 +120,7 @@ public class RedisHelper : IDisposable
/// <param name="value">值</param>
/// <param name="expiry">值</param>
/// <returns>操作是否成功</returns>
public bool SetKeyValueStr(string key, string value, TimeSpan? expiry = default(TimeSpan?))
public bool SetKeyValueStr(string key, string value, TimeSpan? expiry = default(TimeSpan?))
{
var db = GetConnect().GetDatabase(_defaultDB);
return db.StringSet(key, value, expiry);
@ -124,6 +137,7 @@ public class RedisHelper : IDisposable
var db = GetConnect().GetDatabase(_defaultDB);
return await db.StringSetAsync(key, value);
}
public bool Remove(string key)
{
var db = GetConnect().GetDatabase(_defaultDB);

@ -1,14 +1,10 @@
using DotNetty.Transport.Channels;
using HybirdFrameworkCore.Autofac.Attribute;
using HybirdFrameworkCore.Redis;
using log4net;
using Newtonsoft.Json;
using Service.Charger.Client;
using Service.Charger.Common;
using Service.Charger.Msg.Charger.Req;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Service.Charger.Handler
{
@ -21,13 +17,17 @@ namespace Service.Charger.Handler
public class UploadTelemetryDataHandler : SimpleChannelInboundHandler<UploadTelemetryData>, IBaseHandler
{
private static readonly ILog Log = LogManager.GetLogger(typeof(UploadTelemetryDataHandler));
public RedisHelper RedisHelper { get; set; }
protected override void ChannelRead0(IChannelHandlerContext ctx, UploadTelemetryData msg)
{
if (ClientMgr.TryGetClient(ctx.Channel, out var sn, out var client))
{
//存储日志
msg.ChargerNo = sn;
Log.Info($"receive {msg} from {sn}");
RedisHelper.PublishAsync("UploadTelemetryData", JsonConvert.SerializeObject(msg));
client.UploadTelemetryData = msg;
//充电机实时充电功率
client.RealTimeChargePower = msg.HighVoltageAcquisitionCurrent * msg.HighVoltageAcquisitionVoltage;

@ -193,6 +193,11 @@ namespace Service.Charger.Msg.Charger.Req
/// </summary>
[Property(392 + 8, 32, PropertyReadConstant.Bit, 0.01, 2)]
public float ACMeterCurrentBatteryValue { get; set; }
/// <summary>
/// 设备编号
/// </summary>
public string ChargerNo { get; set; }
}
}

@ -1,8 +1,11 @@
using System.Text;
using Autofac;
using HybirdFrameworkCore.Autofac;
using HybirdFrameworkCore.Redis;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Service.Charger.Client;
using Service.Charger.Msg.Charger.Req;
using Service.System;
namespace WebStarter.Controllers.Test;
@ -31,12 +34,9 @@ public class WeatherForecastController : ControllerBase
{
_logger.LogInformation("this is a hello world");
RedisHelper redisHelper = AppInfo.Container.Resolve<RedisHelper>();
redisHelper.PublishAsync("UploadTelemetryData", JsonConvert.SerializeObject(new UploadTelemetryData()));
ChargerClient client = AppInfo.Container.Resolve<ChargerClient>();
client.InitBootstrap("127.0.0.1", 9998);
client.BaseConnect();
client.SessionAttr("1", "3");
client.Channel.WriteAndFlushAsync(Encoding.ASCII.GetBytes("ddddddddddd"));
_logger.LogInformation("this is two hello world");
return Enumerable.Range(1, 5).Select(index => new WeatherForecast

Loading…
Cancel
Save