static void Main(string[] args) { // this starts MQTTnet client Task.Run(() => ManagedClientTest.RunAsync("config")); //Initialise inverter Inverter x = new Inverter(); //open serial port x.OpenPort(); //x.PollTest(); //Test data x.Poll(); //Live port while (true) { Console.ReadLine(); } }
public async Task PollTest() { while (true) { InverterData.Read.command = "QMOD"; PopulateData("(BçÉ"); InverterData.Read.command = "QPIRI"; PopulateData("(230.0 21.7 230.0 50.0 21.7 5000 5000 48.0 51.0 48.0 55.0 54.4 2 50 050 0 2 3 1 01 0 0 52.0 0 1 "); // x.PopulateData("(230.0 21.7 230.0 50.0 21.7 5000 5000 48.0 51.0 48.0 55.0 54.4 2 50 050 0 2 3 1 01 0 0 52.0 0 1?"); InverterData.Read.command = "QPIGS"; PopulateData("(244.8 50.0 229.8 49.9 0824 0824 016 355 51.70 000 035 0020 00.0 000.0 00.00 00019 00010000 00 00 00000 010<"); //x.PopulateData("(240.8 49.9 230.2 50.0 0368 0289 007 394 52.40 000 042 0038 00.7 364.3 00.00 00000 00010110 00 00 00290 010ª4"); InverterData.Read.command = "QPIWS"; PopulateData("(000000000000000000000000000000000000<?"); Task.Run(() => ManagedClientTest.RunAsync1("values")); await Task.Delay(10000); } }
public void ProcessRead() { try { byte[] data = InverterData.Read.data; StringBuilder sb = new StringBuilder(data.Length * 2); foreach (byte b in data) { sb.Append(Convert.ToString(b, 16).PadLeft(2, '0')); } string hexString = sb.ToString(); string ascii = string.Empty; for (int i = 0; i < hexString.Length; i += 2) { String hs = string.Empty; hs = hexString.Substring(i, 2); uint decval = System.Convert.ToUInt32(hs, 16); char character = System.Convert.ToChar(decval); ascii += character; } PopulateData(ascii); if (InverterData.Read.command == "QPIWS") { Task.Run(() => ManagedClientTest.RunAsync1("values")); } InverterData.Read.command = ""; InverterData.Read.data = new byte[0]; Logging.DebugWrite("Debug", "CRead - " + ascii); } catch (Exception ex) { Logging.DebugWrite("Error", ex.StackTrace); } }
public static async Task RunAsync1(string type) { try { if (managedClient.IsConnected) { await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_inverter_mode").WithPayload(InverterData.Mode)); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_ac_grid_voltage").WithPayload(InverterData.QPIGS.voltage_grid.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_ac_grid_frequency").WithPayload(InverterData.QPIGS.freq_grid.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_ac_out_voltage").WithPayload(InverterData.QPIGS.voltage_out.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_ac_out_frequency").WithPayload(InverterData.QPIGS.freq_out.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_pv_in_voltage").WithPayload(InverterData.QPIGS.pv_input_voltage.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_pv_in_current").WithPayload(InverterData.QPIGS.pv_input_current.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_pv_in_watts").WithPayload(InverterData.QPIGS.pv_input_watts.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_pv_in_watthour").WithPayload(InverterData.QPIGS.pv_input_watthour.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_scc_voltage").WithPayload(InverterData.QPIGS.scc_voltage.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_load_pct").WithPayload(InverterData.QPIGS.load_percent.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_load_watt").WithPayload(InverterData.QPIGS.load_watt.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_load_watthour").WithPayload(InverterData.QPIGS.load_watthour.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_load_va").WithPayload(InverterData.QPIGS.load_va.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_bus_voltage").WithPayload(InverterData.QPIGS.voltage_bus.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_heatsink_temperature").WithPayload(InverterData.QPIGS.temp_heatsink.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_battery_capacity").WithPayload(InverterData.QPIGS.batt_capacity.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_battery_voltage").WithPayload(InverterData.QPIGS.voltage_batt.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_battery_charge_current").WithPayload(InverterData.QPIGS.batt_charge_current.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_battery_discharge_current").WithPayload(InverterData.QPIGS.batt_discharge_current.ToString())); try { await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_load_status_on").WithPayload(InverterData.QPIGS.device_status.Substring(3, 1))); // need to fix await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_scc_charge_on").WithPayload(InverterData.QPIGS.device_status.Substring(6, 1))); // need to fix await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_ac_charge_on").WithPayload(InverterData.QPIGS.device_status.Substring(7, 1))); // need to fix } catch { await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_load_status_on").WithPayload("0")); // need to fix await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_scc_charge_on").WithPayload("0")); // need to fix await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_ac_charge_on").WithPayload("0")); // need to fix } await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_battery_recharge_voltage").WithPayload(InverterData.QPIRI.batt_recharge_voltage.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_battery_under_voltage").WithPayload(InverterData.QPIRI.batt_under_voltage.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_battery_bulk_voltage").WithPayload(InverterData.QPIRI.batt_bulk_voltage.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_battery_float_voltage").WithPayload(InverterData.QPIRI.batt_float_voltage.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_max_grid_charge_current").WithPayload(InverterData.QPIRI.max_grid_charge_current.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_max_charge_current").WithPayload(InverterData.QPIRI.max_charge_current.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_out_source_priority").WithPayload(InverterData.QPIRI.out_source_priority.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_charger_source_priority").WithPayload(InverterData.QPIRI.charger_source_priority.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_battery_redischarge_voltage").WithPayload(InverterData.QPIRI.batt_redischarge_voltage.ToString())); await managedClient.PublishAsync(builder => builder.WithTopic("homeassistant/sensor/" + Settings.MQTT.MQTTClientId + "_warnings").WithPayload("NA"));//need to fix } else { Task.Run(() => ManagedClientTest.RunAsync("config")); } } catch (Exception e) { Logging.DebugWrite("Error", e.ToString()); } }