before vacation
This commit is contained in:
parent
842ba81333
commit
ccd3e4ebbe
17
README.md
17
README.md
@ -14,4 +14,19 @@ need root certificates
|
||||
|
||||
openssl s_client -showcerts -connect www.bigfoot-inc.com:443
|
||||
|
||||
openssl s_client -showcerts -connect mqtt-dev-server.westus2-1.ts.eventgrid.azure.net:8883
|
||||
openssl s_client -showcerts -connect mqtt-dev-server.westus2-1.ts.eventgrid.azure.net:8883
|
||||
|
||||
to get full certificate and save it to pem file:
|
||||
openssl s_client -showcerts -connect mqtt-dev-server.westus2-1.ts.eventgrid.azure.net:8883 </dev/null 2>/dev/null|openssl x509 -outform PEM >mycertfile.pem
|
||||
|
||||
openssl s_client -showcerts -verify 5 -connect mqtt-dev-server.westus2-1.ts.eventgrid.azure.net:8883 < /dev/null
|
||||
|
||||
openssl s_client -showcerts -verify 5 -connect mqtt-dev-server.westus2-1.ts.eventgrid.azure.net:8883 < /dev/null |
|
||||
awk '/BEGIN CERTIFICATE/,/END CERTIFICATE/{ if(/BEGIN CERTIFICATE/){a++}; out="cert"a".pem"; print >out}'
|
||||
for cert in *.pem; do
|
||||
newname=$(openssl x509 -noout -subject -in $cert | sed -nE 's/.*CN ?= ?(.*)/\1/; s/[ ,.*]/_/g; s/__/_/g; s/_-_/-/; s/^_//g;p' | tr '[:upper:]' '[:lower:]').pem
|
||||
echo "${newname}"; mv "${cert}" "${newname}"
|
||||
done
|
||||
|
||||
convert crl to pem
|
||||
openssl crl -in "Microsoft Azure ECC TLS Issuing CA 08 - xsign.crt" -inform PEM -out "Microsoft Azure ECC TLS Issuing CA 08 - xsign.pem"
|
||||
|
||||
@ -42,8 +42,18 @@ void MqttService::task()
|
||||
while (!m_mqtt_client->connected())
|
||||
{
|
||||
ESP_LOGI(TAG, "connecting to mqtt broker...");
|
||||
if (m_mqtt_client->connect("Esp32 client", "client1-authn-ID", NULL))
|
||||
if (m_mqtt_client->connect("Esp32 client", "client1-authn-ID", NULL))
|
||||
{
|
||||
ESP_LOGI(TAG, "connected");
|
||||
if(m_mqtt_client->subscribe("my_topic"))
|
||||
{
|
||||
ESP_LOGI(TAG, "subscribed");
|
||||
}
|
||||
else
|
||||
{
|
||||
ESP_LOGE(TAG, "subscribe failed");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ESP_LOGE(TAG, "failed with state %d", m_mqtt_client->state());
|
||||
|
||||
@ -10,7 +10,6 @@ void createHeader(struct MESSAGE_HEADER * header)
|
||||
{
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, NULL);
|
||||
header->type = MESSAGE_TYPE_HEADER;
|
||||
header->sec = tv.tv_sec;
|
||||
header->usec = tv.tv_usec;
|
||||
header->group_id = SETTINGS.device.group_id;
|
||||
|
||||
@ -6,143 +6,89 @@
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
struct MESSAGE_HEADER // 19 bytes
|
||||
struct MESSAGE_HEADER // 18 bytes
|
||||
{
|
||||
uint8_t type;
|
||||
uint32_t sec;
|
||||
uint32_t usec;
|
||||
uint8_t mac[6];
|
||||
uint32_t group_id;
|
||||
};
|
||||
|
||||
struct MESSAGE_TYPE_VAL_REASON
|
||||
struct MESSAGE_RADAR_BLOCK // 67 bytes
|
||||
{
|
||||
uint8_t type;
|
||||
uint32_t val;
|
||||
uint8_t reason;
|
||||
};
|
||||
|
||||
struct RADAR // 49
|
||||
{
|
||||
uint8_t type;
|
||||
struct MESSAGE_HEADER header;
|
||||
uint8_t id;
|
||||
uint16_t vals[24];
|
||||
};
|
||||
|
||||
struct GAS_HEADER // 2 bytes
|
||||
{
|
||||
uint8_t type;
|
||||
uint8_t num_measurements;
|
||||
};
|
||||
|
||||
struct GAS_DATA //5 bytes
|
||||
struct GAS_DATA
|
||||
{
|
||||
uint8_t index;
|
||||
float gas_resistance;
|
||||
float resistance;
|
||||
};
|
||||
|
||||
struct OTHERS
|
||||
struct MESSAGE_SENSORS_BLOCK
|
||||
{
|
||||
struct MESSAGE_HEADER header;
|
||||
uint8_t id;
|
||||
float pressure;
|
||||
float temp;
|
||||
float temperature;
|
||||
uint16_t light;
|
||||
float humidity;
|
||||
uint8_t num_data;
|
||||
struct GAS_DATA data[0];
|
||||
};
|
||||
|
||||
struct GAS // 6 + num_gas_data * 5
|
||||
struct MESSAGE_NOTIFY_PRESSURE
|
||||
{
|
||||
struct GAS_HEADER header;
|
||||
float humidity;
|
||||
struct GAS_DATA data[0];
|
||||
struct MESSAGE_HEADER header;
|
||||
uint8_t id;
|
||||
float value;
|
||||
};
|
||||
|
||||
struct MESSAGE_NOTIFY_TEMPERATURE
|
||||
{
|
||||
struct MESSAGE_HEADER header;
|
||||
uint8_t id;
|
||||
float value;
|
||||
};
|
||||
|
||||
struct MESSAGE_NOTIFY_HUMIDITY
|
||||
{
|
||||
struct MESSAGE_HEADER header;
|
||||
uint8_t id;
|
||||
float value;
|
||||
};
|
||||
|
||||
struct MESSAGE_NOTIFY_LIGHT // 21 bytes
|
||||
{
|
||||
struct MESSAGE_HEADER header;
|
||||
uint8_t id;
|
||||
uint16_t value;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
#define HEADER_MESSAGE(name_) \
|
||||
struct MESSAGE_HEADER name_; \
|
||||
createHeader(&name_);
|
||||
#define MQTT_MESSAGE_BLOCK_RADAR(msgaddr_) \
|
||||
createHeader(&(*msgaddr_).header); \
|
||||
(msgaddr_)->id = MESSAGE_TYPE_BLOCK_RADAR;
|
||||
|
||||
#define HEADER_MESSAGE_P(addr_) \
|
||||
createHeader(addr_);
|
||||
#define MQTT_MESSAGE_BLOCK_SENSOR(msgaddr_) \
|
||||
createHeader(&(*msgaddr_).header); \
|
||||
(msgaddr_)->id = MESSAGE_TYPE_BLOCK_SENSOR;
|
||||
|
||||
#define PRESSURE_MESSAGE(name_, val_, reason_) \
|
||||
struct MESSAGE_TYPE_VAL_REASON name_; \
|
||||
name_.type = MESSAGE_TYPE_PRESSURE; \
|
||||
name_.val = val_; name_.reason = reason_;
|
||||
#define MQTT_MESSAGE_NOTIFY_LIGHT(msgaddr_) \
|
||||
createHeader(&(msgaddr_)->header); \
|
||||
(msgaddr_)->id = MESSAGE_TYPE_NOTIFY_LIGHT;
|
||||
|
||||
#define PRESSURE_MESSAGE_P(addr_, val_, reason_) \
|
||||
(addr)->type = MESSAGE_TYPE_PRESSURE; \
|
||||
(addr)->val = val_; (addr)->reason = reason_;
|
||||
|
||||
#define LIGHT_MESSAGE(name_, val_, reason_) \
|
||||
struct MESSAGE_TYPE_VAL_REASON name_; \
|
||||
name_.type = MESSAGE_TYPE_LIGHT; \
|
||||
name_.val = val_; name_.reason = reason_;
|
||||
#define MESSAGE_TYPE_NOTIFY_PRESSURE 0x01
|
||||
#define MESSAGE_TYPE_NOTIFY_TEMPERATURE 0x02
|
||||
#define MESSAGE_TYPE_NOTIFY_HUMIDITY 0x03
|
||||
#define MESSAGE_TYPE_NOTIFY_LIGHT 0x04
|
||||
|
||||
#define LIGHT_MESSAGE_P(addr_, val_, reason_) \
|
||||
(addr_)->type = MESSAGE_TYPE_LIGHT; \
|
||||
(addr_)->val = val_; (addr_)->reason = reason_;
|
||||
|
||||
#define TEMP_MESSAGE(name_, val_, reason_) \
|
||||
struct MESSAGE_TYPE_VAL_REASON name_; \
|
||||
name_.type = MESSAGE_TYPE_TEMP; \
|
||||
name_.val = val_; name_.reason = reason_;
|
||||
|
||||
#define TEMP_MESSAGE_P(addr_, val_, reason_) \
|
||||
(addr_)->type = MESSAGE_TYPE_TEMP; \
|
||||
(addr_)->val = val_; (addr_)->reason = reason_;
|
||||
|
||||
#define HUM_MESSAGE(name_, val_, reason_) \
|
||||
struct MESSAGE_TYPE_VAL_REASON name_; \
|
||||
name_.type = MESSAGE_TYPE_HUMIDITY; \
|
||||
name_.val = val_; name_.reason = reason_;
|
||||
|
||||
#define HUM_MESSAGE_P(addr_, val_, reason_) \
|
||||
(addr_)->type = MESSAGE_TYPE_HUMIDITY; \
|
||||
(addr_)->val = val_; (addr_)->reason = reason_;
|
||||
|
||||
#define GAS_IX_MESSAGE(name_, val_, reason_) \
|
||||
struct MESSAGE_TYPE_VAL_REASON name_; \
|
||||
name_.type = MESSAGE_TYPE_GAS_IX; \
|
||||
name_.val = val_; name_.reason = reason_;
|
||||
|
||||
#define GAS_IX_MESSAGE_P(addr_, val_, reason_) \
|
||||
(addr_)->type = MESSAGE_TYPE_GAS_IX; \
|
||||
(addr_)->val = val_; (addr_)->reason = reason_;
|
||||
|
||||
#define GAS_VAL_MESSAGE(name_, val_, reason_) \
|
||||
struct MESSAGE_TYPE_VAL_REASON name_; \
|
||||
name_.type = MESSAGE_TYPE_GAS_VAL; \
|
||||
name_.val = val_; name_.reason = reason_;
|
||||
|
||||
#define GAS_VAL_MESSAGE_P(addr_, val_, reason_) \
|
||||
(addr_)->type = MESSAGE_TYPE_GAS_VAL; \
|
||||
(addr_)->val = val_; (addr_)->reason = reason_;
|
||||
|
||||
#define RADAR_MESSAGE(name_) \
|
||||
struct RADAR name_; \
|
||||
name_.type = MESSAGE_TYPE_RADAR;
|
||||
|
||||
#define RADAR_MESSAGE_P(addr_) \
|
||||
(addr_)->type = MESSAGE_TYPE_RADAR;
|
||||
|
||||
#define GAS_MESSAGE(name_, num_vals_) \
|
||||
struct GAS name_; \
|
||||
name_.header.type = MESSAGE_TYPE_GAS; \
|
||||
name_.header.num_measurements = num_vals_;
|
||||
|
||||
#define GAS_MESSAGE_P(addr_, num_vals_) \
|
||||
(addr_)->header.type = MESSAGE_TYPE_GAS; \
|
||||
(addr_)->header.num_measurements = num_vals_;
|
||||
|
||||
#define MESSAGE_TYPE_HEADER 0xa5
|
||||
#define MESSAGE_TYPE_PRESSURE 0x04
|
||||
#define MESSAGE_TYPE_RADAR 0x37
|
||||
#define MESSAGE_TYPE_LIGHT 0x06
|
||||
#define MESSAGE_TYPE_TEMP 0x07
|
||||
#define MESSAGE_TYPE_HUMIDITY 0x08
|
||||
#define MESSAGE_TYPE_GAS_IX 0x09 // deprecated
|
||||
#define MESSAGE_TYPE_GAS_VAL 0x0a // deprecated
|
||||
#define MESSAGE_TYPE_GAS 0x0b
|
||||
#define MESSAGE_TYPE_SENSOR_BLOCK 0x0c
|
||||
#define MESSAGE_TYPE_BLOCK_RADAR 0x10
|
||||
#define MESSAGE_TYPE_BLOCK_SENSOR 0x11
|
||||
|
||||
void createHeader(struct MESSAGE_HEADER * header);
|
||||
|
||||
|
||||
@ -55,8 +55,6 @@ bool Bme68x::read(struct BME_DATA * data)
|
||||
{
|
||||
int ix = _min(bdata.gas_index, 9);
|
||||
|
||||
ESP_LOGW(TAG, "index: %d", ix);
|
||||
|
||||
data->measurement_bitmask |= (1 << ix);
|
||||
|
||||
if(ix == 0)
|
||||
|
||||
@ -16,7 +16,7 @@ bool Bmp280::init()
|
||||
uint8_t status = m_sensor->begin(0x76);
|
||||
m_sensor->setPresOversampling(OVERSAMPLING_X4); // Set the pressure oversampling to X4
|
||||
m_sensor->setTempOversampling(OVERSAMPLING_X1); // Set the temperature oversampling to X1
|
||||
m_sensor->setIIRFilter(IIR_FILTER_2); // Set the IIR filter to setting 4
|
||||
m_sensor->setIIRFilter(IIR_FILTER_4); // Set the IIR filter to setting 4
|
||||
m_sensor->setTimeStandby(TIME_STANDBY_62MS);
|
||||
m_sensor->startNormalConversion(); // Start BMP280 continuous conversion in NORMAL_MODE
|
||||
|
||||
@ -28,9 +28,7 @@ bool Bmp280::init()
|
||||
bool Bmp280::read(float & temp, float & pressure)
|
||||
{
|
||||
if(m_sensor->getTempPres(temp, pressure))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
@ -51,42 +51,47 @@ void SensorService::start()
|
||||
pinMode(LIGHT_SENSOR_PIN, INPUT);
|
||||
}
|
||||
|
||||
void::SensorService::processPressure(float pressure)
|
||||
{
|
||||
static float filtered = 0;
|
||||
static uint64_t previous = esp_timer_get_time();
|
||||
|
||||
if(filtered == 0 && pressure != 0)
|
||||
filtered = pressure;
|
||||
|
||||
uint64_t now = esp_timer_get_time();
|
||||
|
||||
ESP_LOGI(TAG, "delta T: %d", (uint32_t)((now-previous)/1000));
|
||||
|
||||
filtered = 0.95 * filtered + 0.05 * pressure;
|
||||
previous = now;
|
||||
ESP_LOGI(TAG, "%0.3f \t%0.3f", pressure, filtered);
|
||||
}
|
||||
|
||||
void SensorService::postBme68xData(float pressure, float temp)
|
||||
{
|
||||
struct msg
|
||||
{
|
||||
struct MESSAGE_HEADER header;
|
||||
struct OTHERS others;
|
||||
struct GAS gas;
|
||||
};
|
||||
|
||||
uint8_t msg_buffer[100];
|
||||
|
||||
struct msg *data_to_send = (struct msg *)msg_buffer;
|
||||
|
||||
HEADER_MESSAGE_P(&data_to_send->header);
|
||||
GAS_MESSAGE_P(&data_to_send->gas, 0);
|
||||
|
||||
data_to_send->others.light = m_light_value;
|
||||
data_to_send->others.pressure = pressure;
|
||||
data_to_send->others.temp = temp;
|
||||
uint8_t msg_buffer[sizeof(struct MESSAGE_SENSORS_BLOCK) + 10*sizeof(struct GAS_DATA)];
|
||||
struct MESSAGE_SENSORS_BLOCK * msg = (struct MESSAGE_SENSORS_BLOCK *)msg_buffer;
|
||||
MQTT_MESSAGE_BLOCK_SENSOR(msg);
|
||||
msg->humidity = m_bme_data.humidity;
|
||||
msg->light = m_light_value;
|
||||
msg->pressure = pressure;
|
||||
msg->temperature = temp;
|
||||
|
||||
int num_total = 0;
|
||||
|
||||
struct GAS_DATA * p = data_to_send->gas.data;
|
||||
struct GAS_DATA * p = msg->data;
|
||||
for(int n = 0; n < 10; n++)
|
||||
{
|
||||
if(m_bme_data.measurement_bitmask & (1 << n))
|
||||
{
|
||||
p[num_total].gas_resistance = m_bme_data.measurement[n].resistance;
|
||||
p[num_total].resistance = m_bme_data.measurement[n].resistance;
|
||||
p[num_total++].index = n;
|
||||
}
|
||||
}
|
||||
msg->num_data = num_total;
|
||||
|
||||
data_to_send->gas.header.num_measurements = num_total;
|
||||
data_to_send->gas.humidity = m_bme_data.humidity;
|
||||
|
||||
m_app_if.getBuffer()->putBlock((uint8_t*)&data_to_send, sizeof(*data_to_send) + num_total * sizeof(struct GAS_DATA));
|
||||
m_app_if.getBuffer()->putBlock((uint8_t*)msg, sizeof(*msg) + num_total * sizeof(struct GAS_DATA));
|
||||
|
||||
// clear the blackboard
|
||||
memset(&m_bme_data, 0, sizeof(m_bme_data));
|
||||
@ -109,22 +114,15 @@ void SensorService::processLight(int light_value)
|
||||
|
||||
if(now - last_time >= 2000000) // >= 2s
|
||||
{
|
||||
ESP_LOGI(TAG, "light: %d", min_light_val);
|
||||
if(last_light_val >= 0)
|
||||
{
|
||||
if(abs(min_light_val - last_light_val) > 4096*5/100)
|
||||
{
|
||||
ESP_LOGI(TAG, "light tripped");
|
||||
struct msg
|
||||
{
|
||||
struct MESSAGE_HEADER header;
|
||||
struct MESSAGE_TYPE_VAL_REASON light;
|
||||
};
|
||||
|
||||
struct msg m;
|
||||
HEADER_MESSAGE_P(&m.header);
|
||||
LIGHT_MESSAGE_P(&m.light, min_light_val, 1);
|
||||
m_app_if.getBuffer()->putBlock((uint8_t*)&m, sizeof(m));
|
||||
struct MESSAGE_NOTIFY_LIGHT msg;
|
||||
MQTT_MESSAGE_NOTIFY_LIGHT(&msg);
|
||||
msg.value = min_light_val;
|
||||
m_app_if.getBuffer()->putBlock((uint8_t*)&msg, sizeof(msg));
|
||||
}
|
||||
}
|
||||
last_light_val = min_light_val;
|
||||
@ -139,14 +137,14 @@ void SensorService::run_i2c_1()
|
||||
{
|
||||
while(true)
|
||||
{
|
||||
m_bmp280->read(m_bmp_data.temp, m_bmp_data.pressure);
|
||||
if(m_bmp280->read(m_bmp_data.temp, m_bmp_data.pressure))
|
||||
processPressure(m_bmp_data.pressure);
|
||||
|
||||
bool bme_cycle_finished = m_bme68x->read(&m_bme_data);
|
||||
uint16_t read_light_val = analogRead(LIGHT_SENSOR_PIN);
|
||||
|
||||
if(bme_cycle_finished)
|
||||
{
|
||||
postBme68xData(m_bmp_data.pressure, m_bmp_data.temp);
|
||||
}
|
||||
|
||||
processLight(read_light_val);
|
||||
|
||||
@ -170,25 +168,18 @@ void SensorService::run_uart()
|
||||
|
||||
if(m_ld2410->stationary_energy[0] != 0)
|
||||
{
|
||||
struct msg
|
||||
{
|
||||
struct MESSAGE_HEADER header;
|
||||
struct RADAR radar;
|
||||
};
|
||||
|
||||
struct msg m;
|
||||
HEADER_MESSAGE_P(&m.header);
|
||||
RADAR_MESSAGE_P(&m.radar);
|
||||
struct MESSAGE_RADAR_BLOCK msg;
|
||||
MQTT_MESSAGE_BLOCK_RADAR(&msg);
|
||||
|
||||
for(int n = 0; n < 24; n++)
|
||||
{
|
||||
if(n < 14)
|
||||
m.radar.vals[n] = m_ld2410->motion_energy[n] > 0xffff ? 0xffff : (uint16_t)m_ld2410->motion_energy[n];
|
||||
msg.vals[n] = m_ld2410->motion_energy[n] > 0xffff ? 0xffff : (uint16_t)m_ld2410->motion_energy[n];
|
||||
else
|
||||
m.radar.vals[n] = m_ld2410->stationary_energy[n-14] > 0xffff ? 0xffff : (uint16_t)m_ld2410->stationary_energy[n-14];
|
||||
msg.vals[n] = m_ld2410->stationary_energy[n-14] > 0xffff ? 0xffff : (uint16_t)m_ld2410->stationary_energy[n-14];
|
||||
}
|
||||
|
||||
m_app_if.getBuffer()->putBlock((uint8_t*)&m, sizeof(m));
|
||||
m_app_if.getBuffer()->putBlock((uint8_t*)&msg, sizeof(msg));
|
||||
|
||||
ESP_LOGI(TAG, "delta t: %lld", (now - last_read)/1000);
|
||||
last_read = now;
|
||||
|
||||
@ -30,7 +30,7 @@ protected:
|
||||
|
||||
void postBme68xData(float pressure, float temp);
|
||||
void processLight(int light_value);
|
||||
void processHumidity(float humidity);
|
||||
void processPressure(float pressure);
|
||||
uint16_t m_light_value = 0;
|
||||
|
||||
public:
|
||||
|
||||
15
utils/DigiCertGlobalRootG3.crt.pem
Executable file
15
utils/DigiCertGlobalRootG3.crt.pem
Executable file
@ -0,0 +1,15 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw
|
||||
CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
|
||||
ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe
|
||||
Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw
|
||||
EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x
|
||||
IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF
|
||||
K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG
|
||||
fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO
|
||||
Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd
|
||||
BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx
|
||||
AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/
|
||||
oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8
|
||||
sycX
|
||||
-----END CERTIFICATE-----
|
||||
38
utils/c1.txt
Normal file
38
utils/c1.txt
Normal file
@ -0,0 +1,38 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGZTCCBeugAwIBAgITMwAAF5dJwzxVQmn/kwAAAAAXlzAKBggqhkjOPQQDAzBd
|
||||
MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS4w
|
||||
LAYDVQQDEyVNaWNyb3NvZnQgQXp1cmUgRUNDIFRMUyBJc3N1aW5nIENBIDA4MB4X
|
||||
DTI0MDYwNjEwNDYzMloXDTI1MDYwMTEwNDYzMlowbDELMAkGA1UEBhMCVVMxCzAJ
|
||||
BgNVBAgTAldBMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg
|
||||
Q29ycG9yYXRpb24xHjAcBgNVBAMMFSouZXZlbnRncmlkLmF6dXJlLm5ldDB2MBAG
|
||||
ByqGSM49AgEGBSuBBAAiA2IABCROnPe0MEoTPo7mZV7qBXj/gNaEhuTiIfoqzkkE
|
||||
mayyKiKUh3M8kcNMFKA6Cw5FQpKcJnFgNdHhgK2an2bY16k1Rl+BGdH7cgeW4KxJ
|
||||
/8BZGCUrcF0XqVYqU1ta2tPSe6OCBFwwggRYMIIBfgYKKwYBBAHWeQIEAgSCAW4E
|
||||
ggFqAWgAdgDPEVbu1S58r/OHW9lpLpvpGnFnSrAX7KwB0lt3zsw7CAAAAY/tMX1g
|
||||
AAAEAwBHMEUCIDvK/oTF+17QrKCyrkP+aJu5OOkWwWcdvW+fo0yuDj5TAiEAhIDF
|
||||
m1B7P4TRY+80nE3klxMaDpXz13W/GFGLu3b/CC0AdwB9WR4S4XgqexxhZ3xe/fjQ
|
||||
h1wUoE6VnrkDL9kOjC55uAAAAY/tMX5iAAAEAwBIMEYCIQC4AVpEBPNMlmXA6Rgm
|
||||
jwbxZ12dY4t0y+d3zVmERPSpkQIhAL4eN6aJcxc7AbfCpRVq9MVmmaAgpcin33Ab
|
||||
Kub+uVlxAHUA4JKz/AwdyOdoNh/eYbmWTQpSeBmKctZyxLBNpW1vVAQAAAGP7TF+
|
||||
1gAABAMARjBEAiAmSpLfPIgdhcYH4KeElGfrQAp3mv2UeqXsc+g6Zrl2VgIgP9xH
|
||||
zAwKA1JmO+GQgQWacfy3opms5EvuTyUL33uw/6UwJwYJKwYBBAGCNxUKBBowGDAK
|
||||
BggrBgEFBQcDAjAKBggrBgEFBQcDATA8BgkrBgEEAYI3FQcELzAtBiUrBgEEAYI3
|
||||
FQiHvdcbgefrRoKBnS6O0AyH8NodXYKE5WmC86c+AgFkAgEmMIG0BggrBgEFBQcB
|
||||
AQSBpzCBpDBzBggrBgEFBQcwAoZnaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Br
|
||||
aW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBBenVyZSUyMEVDQyUyMFRMUyUyMElzc3Vp
|
||||
bmclMjBDQSUyMDA4JTIwLSUyMHhzaWduLmNydDAtBggrBgEFBQcwAYYhaHR0cDov
|
||||
L29uZW9jc3AubWljcm9zb2Z0LmNvbS9vY3NwMB0GA1UdDgQWBBSd0gLTJBBooJfu
|
||||
lBbYLw4ogSVu0zAOBgNVHQ8BAf8EBAMCB4AwZQYDVR0RBF4wXIIVKi5ldmVudGdy
|
||||
aWQuYXp1cmUubmV0giIqLndlc3R1czItMS50cy5ldmVudGdyaWQuYXp1cmUubmV0
|
||||
gh8qLndlc3R1czItMS5ldmVudGdyaWQuYXp1cmUubmV0MAwGA1UdEwEB/wQCMAAw
|
||||
agYDVR0fBGMwYTBfoF2gW4ZZaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9w
|
||||
cy9jcmwvTWljcm9zb2Z0JTIwQXp1cmUlMjBFQ0MlMjBUTFMlMjBJc3N1aW5nJTIw
|
||||
Q0ElMjAwOC5jcmwwZgYDVR0gBF8wXTBRBgwrBgEEAYI3TIN9AQEwQTA/BggrBgEF
|
||||
BQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9z
|
||||
aXRvcnkuaHRtMAgGBmeBDAECAjAfBgNVHSMEGDAWgBStVB0DVHHGL17WWxhYzm4k
|
||||
xdaiCjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwCgYIKoZIzj0EAwMD
|
||||
aAAwZQIxAIljbWjBlPPC1hJQEy1Pq4V5fPe+F0zNNuk6paj1ZCoqHahiBpvKpYTp
|
||||
tZlJVKZtpAIwWnTO0WileYRCYWSniZFtliF/HZvgrLoAWd+NGZzdmhjoavdVYZho
|
||||
0VvfpbsVVech
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
21
utils/c2.txt
Normal file
21
utils/c2.txt
Normal file
@ -0,0 +1,21 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDXDCCAuOgAwIBAgIQDvLl2DaBUgJV6Sxgj7wv9DAKBggqhkjOPQQDAzBhMQsw
|
||||
CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
|
||||
ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe
|
||||
Fw0yMzA2MDgwMDAwMDBaFw0yNjA4MjUyMzU5NTlaMF0xCzAJBgNVBAYTAlVTMR4w
|
||||
HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLjAsBgNVBAMTJU1pY3Jvc29m
|
||||
dCBBenVyZSBFQ0MgVExTIElzc3VpbmcgQ0EgMDgwdjAQBgcqhkjOPQIBBgUrgQQA
|
||||
IgNiAATlQzoKIJQIe8bd4sX2x9XBtFvoh5m7Neph3MYORvv/rg2Ew7Cfb00eZ+zS
|
||||
njUosyOUCspenehe0PyKtmq6pPshLu5Ww/hLEoQT3drwxZ5PaYHmGEGoy2aPBeXa
|
||||
23k5ruijggFiMIIBXjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBStVB0D
|
||||
VHHGL17WWxhYzm4kxdaiCjAfBgNVHSMEGDAWgBSz20ik+aHF2K42QcwRY2liKbxL
|
||||
xjAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
|
||||
MHYGCCsGAQUFBwEBBGowaDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNl
|
||||
cnQuY29tMEAGCCsGAQUFBzAChjRodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20v
|
||||
RGlnaUNlcnRHbG9iYWxSb290RzMuY3J0MEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6
|
||||
Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RHMy5jcmwwHQYD
|
||||
VR0gBBYwFDAIBgZngQwBAgEwCAYGZ4EMAQICMAoGCCqGSM49BAMDA2cAMGQCMD+q
|
||||
5Uq1fSGZSKRhrnWKKXlp4DvfZCEU/MF3rbdwAaXI/KVM65YRO9HvRbfDpV3x1wIw
|
||||
CHvqqpg/8YJPDn8NJIS/Rg+lYraOseXeuNYzkjeY6RLxIDB+nLVDs9QJ3/co89Cd
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
72
utils/eventgrid.azure_full.pem
Normal file
72
utils/eventgrid.azure_full.pem
Normal file
@ -0,0 +1,72 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw
|
||||
CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
|
||||
ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe
|
||||
Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw
|
||||
EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x
|
||||
IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF
|
||||
K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG
|
||||
fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO
|
||||
Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd
|
||||
BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx
|
||||
AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/
|
||||
oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8
|
||||
sycX
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGZTCCBeugAwIBAgITMwAAF5dJwzxVQmn/kwAAAAAXlzAKBggqhkjOPQQDAzBd
|
||||
MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS4w
|
||||
LAYDVQQDEyVNaWNyb3NvZnQgQXp1cmUgRUNDIFRMUyBJc3N1aW5nIENBIDA4MB4X
|
||||
DTI0MDYwNjEwNDYzMloXDTI1MDYwMTEwNDYzMlowbDELMAkGA1UEBhMCVVMxCzAJ
|
||||
BgNVBAgTAldBMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg
|
||||
Q29ycG9yYXRpb24xHjAcBgNVBAMMFSouZXZlbnRncmlkLmF6dXJlLm5ldDB2MBAG
|
||||
ByqGSM49AgEGBSuBBAAiA2IABCROnPe0MEoTPo7mZV7qBXj/gNaEhuTiIfoqzkkE
|
||||
mayyKiKUh3M8kcNMFKA6Cw5FQpKcJnFgNdHhgK2an2bY16k1Rl+BGdH7cgeW4KxJ
|
||||
/8BZGCUrcF0XqVYqU1ta2tPSe6OCBFwwggRYMIIBfgYKKwYBBAHWeQIEAgSCAW4E
|
||||
ggFqAWgAdgDPEVbu1S58r/OHW9lpLpvpGnFnSrAX7KwB0lt3zsw7CAAAAY/tMX1g
|
||||
AAAEAwBHMEUCIDvK/oTF+17QrKCyrkP+aJu5OOkWwWcdvW+fo0yuDj5TAiEAhIDF
|
||||
m1B7P4TRY+80nE3klxMaDpXz13W/GFGLu3b/CC0AdwB9WR4S4XgqexxhZ3xe/fjQ
|
||||
h1wUoE6VnrkDL9kOjC55uAAAAY/tMX5iAAAEAwBIMEYCIQC4AVpEBPNMlmXA6Rgm
|
||||
jwbxZ12dY4t0y+d3zVmERPSpkQIhAL4eN6aJcxc7AbfCpRVq9MVmmaAgpcin33Ab
|
||||
Kub+uVlxAHUA4JKz/AwdyOdoNh/eYbmWTQpSeBmKctZyxLBNpW1vVAQAAAGP7TF+
|
||||
1gAABAMARjBEAiAmSpLfPIgdhcYH4KeElGfrQAp3mv2UeqXsc+g6Zrl2VgIgP9xH
|
||||
zAwKA1JmO+GQgQWacfy3opms5EvuTyUL33uw/6UwJwYJKwYBBAGCNxUKBBowGDAK
|
||||
BggrBgEFBQcDAjAKBggrBgEFBQcDATA8BgkrBgEEAYI3FQcELzAtBiUrBgEEAYI3
|
||||
FQiHvdcbgefrRoKBnS6O0AyH8NodXYKE5WmC86c+AgFkAgEmMIG0BggrBgEFBQcB
|
||||
AQSBpzCBpDBzBggrBgEFBQcwAoZnaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Br
|
||||
aW9wcy9jZXJ0cy9NaWNyb3NvZnQlMjBBenVyZSUyMEVDQyUyMFRMUyUyMElzc3Vp
|
||||
bmclMjBDQSUyMDA4JTIwLSUyMHhzaWduLmNydDAtBggrBgEFBQcwAYYhaHR0cDov
|
||||
L29uZW9jc3AubWljcm9zb2Z0LmNvbS9vY3NwMB0GA1UdDgQWBBSd0gLTJBBooJfu
|
||||
lBbYLw4ogSVu0zAOBgNVHQ8BAf8EBAMCB4AwZQYDVR0RBF4wXIIVKi5ldmVudGdy
|
||||
aWQuYXp1cmUubmV0giIqLndlc3R1czItMS50cy5ldmVudGdyaWQuYXp1cmUubmV0
|
||||
gh8qLndlc3R1czItMS5ldmVudGdyaWQuYXp1cmUubmV0MAwGA1UdEwEB/wQCMAAw
|
||||
agYDVR0fBGMwYTBfoF2gW4ZZaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9w
|
||||
cy9jcmwvTWljcm9zb2Z0JTIwQXp1cmUlMjBFQ0MlMjBUTFMlMjBJc3N1aW5nJTIw
|
||||
Q0ElMjAwOC5jcmwwZgYDVR0gBF8wXTBRBgwrBgEEAYI3TIN9AQEwQTA/BggrBgEF
|
||||
BQcCARYzaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1JlcG9z
|
||||
aXRvcnkuaHRtMAgGBmeBDAECAjAfBgNVHSMEGDAWgBStVB0DVHHGL17WWxhYzm4k
|
||||
xdaiCjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwCgYIKoZIzj0EAwMD
|
||||
aAAwZQIxAIljbWjBlPPC1hJQEy1Pq4V5fPe+F0zNNuk6paj1ZCoqHahiBpvKpYTp
|
||||
tZlJVKZtpAIwWnTO0WileYRCYWSniZFtliF/HZvgrLoAWd+NGZzdmhjoavdVYZho
|
||||
0VvfpbsVVech
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDXDCCAuOgAwIBAgIQDvLl2DaBUgJV6Sxgj7wv9DAKBggqhkjOPQQDAzBhMQsw
|
||||
CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
|
||||
ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe
|
||||
Fw0yMzA2MDgwMDAwMDBaFw0yNjA4MjUyMzU5NTlaMF0xCzAJBgNVBAYTAlVTMR4w
|
||||
HAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xLjAsBgNVBAMTJU1pY3Jvc29m
|
||||
dCBBenVyZSBFQ0MgVExTIElzc3VpbmcgQ0EgMDgwdjAQBgcqhkjOPQIBBgUrgQQA
|
||||
IgNiAATlQzoKIJQIe8bd4sX2x9XBtFvoh5m7Neph3MYORvv/rg2Ew7Cfb00eZ+zS
|
||||
njUosyOUCspenehe0PyKtmq6pPshLu5Ww/hLEoQT3drwxZ5PaYHmGEGoy2aPBeXa
|
||||
23k5ruijggFiMIIBXjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBStVB0D
|
||||
VHHGL17WWxhYzm4kxdaiCjAfBgNVHSMEGDAWgBSz20ik+aHF2K42QcwRY2liKbxL
|
||||
xjAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
|
||||
MHYGCCsGAQUFBwEBBGowaDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNl
|
||||
cnQuY29tMEAGCCsGAQUFBzAChjRodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20v
|
||||
RGlnaUNlcnRHbG9iYWxSb290RzMuY3J0MEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6
|
||||
Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RHMy5jcmwwHQYD
|
||||
VR0gBBYwFDAIBgZngQwBAgEwCAYGZ4EMAQICMAoGCCqGSM49BAMDA2cAMGQCMD+q
|
||||
5Uq1fSGZSKRhrnWKKXlp4DvfZCEU/MF3rbdwAaXI/KVM65YRO9HvRbfDpV3x1wIw
|
||||
CHvqqpg/8YJPDn8NJIS/Rg+lYraOseXeuNYzkjeY6RLxIDB+nLVDs9QJ3/co89Cd
|
||||
-----END CERTIFICATE-----
|
||||
56
utils/mqtt.py
Executable file
56
utils/mqtt.py
Executable file
@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from paho.mqtt import client as mqtt_client
|
||||
import time
|
||||
|
||||
mqtt_broker = "mqtt-dev-server.westus2-1.ts.eventgrid.azure.net"
|
||||
mqtt_port = 8883
|
||||
mqtt_topic = "wellnuotopics/topic1"
|
||||
mqtt_client_id = "client1-authn-ID"
|
||||
|
||||
connected = False
|
||||
|
||||
def connect_mqtt(client_id):
|
||||
def on_connect(client, userdata, flags, rc):
|
||||
global connected
|
||||
if rc == 0:
|
||||
print("Connected to MQTT Broker!")
|
||||
connected = True
|
||||
else:
|
||||
print("Failed to connect, return code %d\n", rc)
|
||||
|
||||
client = mqtt_client.Client(mqtt_client.CallbackAPIVersion.VERSION1, "client_id")
|
||||
client.tls_set(
|
||||
ca_certs='eventgrid.azure_full.pem',
|
||||
certfile='../certs/client1-authn-ID.pem',
|
||||
keyfile='../certs/client1-authn-ID.key'
|
||||
)
|
||||
|
||||
client.username_pw_set(client_id, "")
|
||||
client.on_connect = on_connect
|
||||
client.connect(mqtt_broker, mqtt_port)
|
||||
return client
|
||||
|
||||
def publish(client, topic, msg):
|
||||
result = client.publish(topic, msg)
|
||||
# result: [0, 1]
|
||||
status = result[0]
|
||||
if status == 0:
|
||||
print(f"Sent `{msg}` to topic `{topic}`")
|
||||
else:
|
||||
print(f"Failed to send message to topic {topic}")
|
||||
|
||||
def main() -> None:
|
||||
client = connect_mqtt(mqtt_client_id)
|
||||
client.loop_start()
|
||||
|
||||
while(connected == False):
|
||||
time.sleep(1)
|
||||
|
||||
publish(client, "wellnuotopics/topic1", "hello")
|
||||
time.sleep(2)
|
||||
client.disconnect()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user