EasyIoT wrote: I'm thinking to simplify things and skip /Db/[instance id]/ entirely. This will break backward compatibility, but it will significantly simplify design. MQTT topics for parameter will be just /[module id]/[parameter name] or [custom topic]. Also /Db/InstanceId topic no longer will be needed. Also /# or /[cutom topics]/# will work. Since Cloud is in beta I think it's still time to change this.
This solution I found on commercial service
www.cloudmqtt.com
.
They also enabled $SYS/# with 2 usefull options:
$SYS/broker/log/N: "1464334415: New connection from 213.87.145.139 on port 10076."
- useful for client debuging
$SYS/broker/uptime: "810942 seconds"
- useful for data timestamp
EasyIoT wrote: I'm thinking to simplify things and skip /Db/[instance id]/ entirely. This will break backward compatibility, but it will significantly simplify design. MQTT topics for parameter will be just /[module id]/[parameter name] or [custom topic]. Also /Db/InstanceId topic no longer will be needed. Also /# or /[cutom topics]/# will work. Since Cloud is in beta I think it's still time to change this.
This solution I found on commercial service
www.cloudmqtt
.com.
They also enabled $SYS/# with 2 usefull options:
$SYS/broker/log/N: "1464334415: New connection from 213.87.145.139 on port 10076."
- useful for client debuging
$SYS/broker/uptime: "810942 seconds"
- useful for data timestamp
It's interesting, but they provide only MQTT broker. Since in EasyIoT Cloud solution we provide also user WEB interface I guess it will be better to add some debug info in web interface. Also for other function not only MQTT. What do you think?
It is useful to add timestamp (first field) into data package: 812999 331 0 26 2036 12 3
I use m590 GSM module and when I place all data in 1 publish there is no failure at all compared to the separate publishing (I tested 2000 seances every 2 minutes). This is because GSM signal is changing while seance. So completing seance as soon as possible you will decrease failure probability.
I implemented all of this on EasyIoT (windows 8x64) application using C# automation scripts.
May be my experience would be useful for the Cloud design.
Zaitsev wrote: It is useful to add timestamp (first field) into data package: 812999 331 0 26 2036 12 3
I use m590 GSM module and when I place all data in 1 publish there is no failure at all compared to the separate publishing (I tested 2000 seances every 2 minutes). This is because GSM signal is changing while seance. So completing seance as soon as possible you will decrease failure probability.
I implemented all of this on EasyIoT (windows 8x64) application using C# automation scripts.
May be my experience would be useful for the Cloud design.
Sorry, I think I don't understand you. What do you mean by 812999 331 0 26 2036 12 3 data package?
812999 331 0 26 2036 12 3
First field 812999 is timestamp
331 is sequence number
and other is sensor data – 26 is temperature
12 is gsm signal
2036 is battery voltage
When I began to send all together the risk of failure became much lower
I have a "digital output" module with a parameter for which I set a custom MQTT topic as /Db/56[...]22/ESP/Motor.
Using an ESP-01 and the PubSubClient.h library or using mqtt-spy, I can subscribe to /Db/56[...]22/ESP/+ and, when I use the web interface to change the value of the module, my client gets the topic and data as expected.
But when I try to publish a message ("0" or "1") to that topic (/Db/56[...]22/ESP/Motor) using the ESP-01 or mqtt-spy as client, the client disconnects and nothing is published.
This is an issue I was not encountering earlier, when it was still possible to use /ESP/Motor as topic, without the /DB/InstanceId.