Merging Jeppe branch into master

This commit is contained in:
Jeas0001 2025-03-24 13:10:07 +01:00
commit 1f5515ac88
7 changed files with 74 additions and 7 deletions

View File

@ -23,7 +23,6 @@
</PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.6" />
<PackageReference Include="MQTTnet" Version="5.0.1.1416" />
<PackageReference Include="MQTTnet.Extensions.TopicTemplate" Version="5.0.1.1416" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
</ItemGroup>

View File

@ -28,21 +28,21 @@ namespace Api.Controllers
return await _deviceLogic.GetDevices(userId);
}
[Authorize]
//[Authorize]
[HttpPost("adddevice/{userId}")]
public async Task<IActionResult> AddDevice([FromBody] Device device, int userId)
{
return await _deviceLogic.AddDevice(device, userId);
}
[Authorize]
//[Authorize]
[HttpGet("logs/{deviceId}")]
public async Task<IActionResult> GetLogs(int deviceId)
{
return await _deviceLogic.GetLogs(deviceId);
}
[Authorize]
//[Authorize]
[HttpPut("Edit/{deviceId}")]
public async Task<IActionResult> EditDevice([FromBody] Device device, int deviceId)
{

View File

@ -33,14 +33,14 @@ namespace Api.Controllers
return await _userLogic.RegisterUser(user);
}
[Authorize]
//[Authorize]
[HttpPut("Edit/{userId}")]
public async Task<IActionResult> EditUser([FromBody] User user, int userId)
{
return await _userLogic.EditProfile(user, userId);
}
[Authorize]
//[Authorize]
[HttpDelete("Delete/{userId}")]
public async Task<IActionResult> DeleteUser(int userId)
{

View File

@ -153,6 +153,10 @@ namespace Api.DBAccess
return await _context.Devices.FirstOrDefaultAsync(d => d.Id == deviceId);
}
public Device ReadDevice(string refenreId)
{
return _context.Devices.FirstOrDefault(d => d.ReferenceId == refenreId);
}
public async Task<IActionResult> UpdateDevice(Device device, int deviceId)
{
@ -186,6 +190,18 @@ namespace Api.DBAccess
return logs;
}
public async void CreateLog(TemperatureLogs temperatureLogs, string referenceId)
{
var device = await _context.Devices.Include(d => d.Logs).FirstOrDefaultAsync(d => d.ReferenceId == referenceId);
if (device == null) { return; }
if (device.Logs == null) { device.Logs = new List<TemperatureLogs>(); }
device.Logs.Add(temperatureLogs);
await _context.SaveChangesAsync();
}
public async Task<bool> Test()
{
return _context.Database.CanConnect();

View File

@ -1,7 +1,9 @@
using Api.DBAccess;
using Api.Models;
using MQTTnet;
using MQTTnet.Extensions.TopicTemplate;
using System.Text;
using System.Text.Json;
namespace Api.MQTTReciever
@ -10,9 +12,11 @@ namespace Api.MQTTReciever
{
IMqttClient mqttClient;
private readonly IConfiguration _configuration;
private readonly DbAccess _dbAccess;
public MQTTReciever(IConfiguration configuration)
public MQTTReciever(IConfiguration configuration, DbAccess dbAccess)
{
_dbAccess = dbAccess;
_configuration = configuration;
}
@ -36,6 +40,28 @@ namespace Api.MQTTReciever
{
Console.WriteLine("Received application message.");
string sensorData = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
var mqttMessageReceive = JsonSerializer.Deserialize<MQTTMessageReceive>(sensorData);
if (mqttMessageReceive == null || mqttMessageReceive.temperature == 0 || mqttMessageReceive.device_id == null || mqttMessageReceive.timestamp == null)
{
return Task.CompletedTask;
}
TemperatureLogs newLog = new TemperatureLogs();
string refernceId = mqttMessageReceive.device_id;
var device = _dbAccess.ReadDevice(refernceId);
if (device == null) { return Task.CompletedTask; }
newLog.Temperature = mqttMessageReceive.temperature;
newLog.Date = DateTimeOffset.FromUnixTimeSeconds(mqttMessageReceive.timestamp).DateTime;
newLog.TempHigh = device.TempHigh;
newLog.TempLow = device.TempLow;
_dbAccess.CreateLog(newLog, refernceId);
return Task.CompletedTask;
};

View File

@ -0,0 +1,11 @@
namespace Api.Models
{
public class MQTTMessageReceive
{
public double temperature { get; set; }
public string device_id { get; set; }
public int timestamp { get; set; }
}
}

View File

@ -1,4 +1,5 @@
using Api;
using Api.DBAccess;
using Api.MQTTReciever;
using Microsoft.AspNetCore;
using Microsoft.EntityFrameworkCore;
@ -15,6 +16,20 @@ class Program
mqtt.Handle_Received_Application_Message();
RunMigrations(app);
Task.Run(() =>
{
using (var scope = app.Services.CreateScope())
{
var services = scope.ServiceProvider;
var configuration = services.GetRequiredService<IConfiguration>();
var dbAccess = services.GetRequiredService<DbAccess>();
MQTTReciever mqtt = new MQTTReciever(configuration, dbAccess);
mqtt.Handle_Received_Application_Message().Wait();
}
});
app.Run();
}