54 lines
1.5 KiB
Markdown
54 lines
1.5 KiB
Markdown
|
# ChatGPT prompt
|
||
|
|
||
|
Please write a golang program that subscribes to an mqtt topic which outputs the following payload
|
||
|
|
||
|
```json
|
||
|
{"t":"231205164749W","dt1":830959,"dt2":729319,"rt1":33727,"rt2":111841,"d":224,"r":0,"f":18,"fl":17,"g":426077,"v1":219,"v2":227,"v3":223,"c1":0,"c2":0,"c3":0,"d1":84,"d2":50,"d3":90,"r1":0,"r2":0,"r3":0}
|
||
|
```
|
||
|
|
||
|
T is the Timestamp in Timezone Europe/Amsterdam and format YYMMDDhhmmss. The letter at the end of the timestamp can be either "W" for Winter or "S" for Summer and indicates daylight savings time.
|
||
|
|
||
|
The data should be inserted into a configurable postgres database with structure
|
||
|
|
||
|
```sql
|
||
|
CREATE TABLE p1 (
|
||
|
timestamp TIMESTAMPTZ,
|
||
|
delivered_tariff1 INT,
|
||
|
delivered_tariff2 INT,
|
||
|
returned_tariff1 INT,
|
||
|
returned_tariff2 INT,
|
||
|
delivery_all INT,
|
||
|
returning_all INT,
|
||
|
failures INT,
|
||
|
long_failures INT,
|
||
|
gas INT,
|
||
|
voltage_l1 INT,
|
||
|
voltage_l2 INT,
|
||
|
voltage_l3 INT,
|
||
|
current_l1 INT,
|
||
|
current_l2 INT,
|
||
|
current_l3 INT,
|
||
|
delivery_l1 INT,
|
||
|
delivery_l2 INT,
|
||
|
delivery_l3 INT,
|
||
|
returning_l1 INT,
|
||
|
returning_l2 INT,
|
||
|
returning_l3 INT
|
||
|
);
|
||
|
CREATE EXTENSION IF NOT EXISTS timescaledb;
|
||
|
SELECT create_hypertable('p1', 'timestamp', if_not_exists => TRUE);
|
||
|
```
|
||
|
|
||
|
The connections should be configured using the following environment variables
|
||
|
|
||
|
```conf
|
||
|
MQTT_BROKER=tls://mqtt.example.com:8883
|
||
|
MQTT_TOPIC=p1/#
|
||
|
MQTT_USERNAME=your_mqtt_username
|
||
|
MQTT_PASSWORD=your_mqtt_password
|
||
|
|
||
|
PG_DB='host=localhost port=5432 user=p1 password=secret-replace dbname=p1 sslmode=disable'
|
||
|
```
|
||
|
|
||
|
The program should be usable in production and should automatically recover on database or mqtt service interruptions.
|