thingsboard / thingsboard/thingsboard-python-client-sdk
Telemetry upload bug if telemetry list is not ordered by timestamp or if elements of list have different number of key/value pairs
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 130
- Fork
- 86
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
I'm using tb-mqtt-client version 1.10.10
I have a use-case where I'm uploading a list of telemetry readings. Depending on the order of the list, sometimes not all telemetry is being uploaded and sometimes the timestamp with which it is being uploaded is incorrect...
I first though that the list needed to be sorted by the timestamp attribute but then I had cases where even if it was sorted by timestamp it would work fine. It seems to be a combination of the list not being sorted with each element of the list not having the same number of key/value pairs.
I can't figure out or understand this behavior so any help would be appreciated.
This is the code snippet I'm using for testing this problem:
from tb_device_mqtt import TBPublishInfo
from tb_gateway_mqtt import TBGatewayMqttClient
telemetry =[...]
client = TBGatewayMqttClient("my.url.com", port=1883, username="token")
client.connect()
result = client.gw_send_telemetry('test device', telemetry)
success = result.get() == TBPublishInfo.TB_ERR_SUCCESS
client.disconnect()
print(success)
Following are some examples of the problem where the only thing I'm changing is the order of the telemetry list:
Example 1 - works fine
telemetry =[
{
'ts': 1736330010000,
'values': {
'test_1': 1,
'test_1_1': 1,
}
},
{
'ts': 1736330030000,
'values': {
'test_3': 3,
'test_3_1': 3,
}
},
{
'ts': 1736330020000,
'values': {
'test_2': 2,
'test_2_1': 2
}
},
]
Example 2 - does not upload test_2 and test_2_1 telemetry
telemetry =[
{
'ts': 1736330010000,
'values': {
'test_1': 1,
'test_1_1': 1
}
},
{
'ts': 1736330020000,
'values': {
'test_2': 2,
'test_2_1': 2
}
},
{
'ts': 1736330030000,
'values': {
'test_3': 3
}
},
]
Example 3 - test_1 and test_1_1 are being uploaded with the wrong timestamp. They are being uploaded with the same timestamp as test_3
telemetry =[
{
'ts': 1736330010000,
'values': {
'test_1': 1,
'test_1_1': 1,
}
},
{
'ts': 1736330030000,
'values': {
'test_3': 3,
}
},
{
'ts': 1736330020000,
'values': {
'test_2': 2,
'test_2_1': 2
}
},
]
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo i tre esempi di telemetria tramite TBGatewayMqttClient.gw_send_telemetry e confronta i risultati caricati. Segui il percorso di caricamento della telemetria per identificare in che modo l’ordine delle liste e le diverse lunghezze dei valori influiscono sui timestamp e sulle voci; il lavoro è completato quando ogni valore viene caricato con il relativo timestamp indipendentemente dall’ordine o dalla forma dell’input.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- api
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 35/100