using System.Globalization; using System.Text.Json; using MoniteurBaie.DataModels; using StackExchange.Redis; CultureInfo.CurrentCulture = CultureInfo.InvariantCulture; CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; using var redis = ConnectionMultiplexer.Connect("mercedes.hbsha.re:6379", opts => { opts.ClientName = "Testation"; }); var packetChannel = redis.GetSubscriber().Subscribe("batCtrlPackets"); packetChannel.OnMessage(OnPacketMessage); using var cancel = new AutoResetEvent(false); void ctrlC(object? sender, ConsoleCancelEventArgs e) { e.Cancel = true; Console.CancelKeyPress -= ctrlC; cancel.Set(); } Console.CancelKeyPress += ctrlC; cancel.WaitOne(); static void OnPacketMessage(ChannelMessage channelMessage) { BatteryControllerPacket? batCtrlPacket; try { batCtrlPacket = JsonSerializer.Deserialize(channelMessage.Message.ToString(), BatteryControllerPacketContext.Default.BatteryControllerPacket); } catch (Exception ex) { Console.WriteLine("Invalid packet."); Console.WriteLine(ex); return; } if (batCtrlPacket is null) { Console.WriteLine("Null packet."); return; } SerialDataPacket packet; try { packet = PacketParser.ParseSerialDataPacket(batCtrlPacket.SerialData); } catch (Exception ex) { Console.WriteLine("Invalid data packet."); Console.WriteLine(ex); throw; } if (packet.Temp_alim < 0 || packet.Temp_bat < 0 || packet.Temp_cha < 0) { Console.WriteLine($"[{batCtrlPacket.Timestamp:yyyy/MM/dd HH:mm:ss}] {batCtrlPacket.SerialData}"); } }