Hacker News new | past | comments | ask | show | jobs | submit login

Sure, but 40 years have passed since then and 144K peanuts for any real world application.

A quick example, you have a sensor that sends a single metric every minute. Suppose that you can pack that info (sensor id, metric type and data) in 32 bytes. You're looking at about 1.2MB/month of data (8 times your 144K), which will come to about $40/month.

Quite expensive for a single data point, but I can imagine several use cases where that cost can be easily justified.




For use cases of this product you will be packing much tighter than this.

You get terminal identification from the carrier, no need to waste precious packet space on identifiers. And it's probably also a waste to encode field names into your packet - just record fields at the same offset every time. If 16 bits of precision is enough for you (it likely is) you can squeeze 16 metrics (or 16 time series recordings of the same metric) into every packet.


Up to the minute sensor data for something so remote that it needs a satellite uplink is either going to be for something incredibly critical or totally overkill and a waste of money. With Swarm, you could be waiting up to 2 hours between passes that last anywhere between 10 and 50 minutes so it's not like you'll have your data instantly for large portions of the day.


Yes, but then IoT usually invokes a sense of (almost) real-time monitoring of things and lots of packets etc...

But I get your point, also you can always do a lot of things to save on bandwidth, like do not send info which is not interesting (i.e. no point in sending 100s of "no fire was detected" messages).

Btw, anyone here knows if there's compression schemes designed specifically for small data packets? Gzip and others would be overkill as headers vastly exceed payload size. Just using raw LZ77 may work but it's 2022 so there's probably a specific thing for that already.

Also, what about data that follows a specific format, like only integer numbers, it would be nice to have an algorithm that takes a "string" of 32-bit ints and gives you back a binary buffer with a smaller lossless representation of it.


This product is targeted at actual users of "IoT", think remote monitoring in remote locations. Not "smart microwave" style IoT.

Not sure there is any automatic solution for compression here. If you know your own use case you are in the best position to choose where to sacrifice accuracy with a lossy compression scheme. But this relies on understanding of the accuracy of the input data, possible ranges of values, importance of accuracy in different fields etc. Not sure how an automated algorithm could take these real world constraints into account.

A clever compression algo can't help you if you try compress 4 doubles, but in reality you only needed byte precision on some fixed 0-100% range.


Yeah and that's probably why IoT devs absolutely crank up the data rate and spew dozens of Bluetooth advertising packets in the air for no apparent reason, probably significantly reducing battery life that could have been 5yrs, for applications that really don't need instant response.

Something like msgpack might be able to compress ints to some degree since it can represent them as smaller data types.


Thank you for the msgpack reference.


> designed specifically for small data packets

Zstd dictionary mode? At small sizes using a dictionary is generally the way to go.


> Suppose that you can pack that info (sensor id, metric type and data) in 32 bytes

I suppose you haven't worked with such constraints before, so that's why you think this needs 32 bytes. In reality, 4 or 6 will likely do.

Send diff in metric value if applicable, use variable-length encoding to not waste bytes. Allocate bits and not whole ints to things (like metric type). ID is already part of lower level protocol - the address, so you do not need it


How do you use variable-length encoding in a limited-length package? You either allow a situation where this variable-length encoding would not fit in a package and then it's not really clear what to do. Or you just saving bytes for nothing, because you could use fixed-length encoding instead and satellite does not care whether you sent 65 or 69 bytes of data.


At work we’ve been experimenting with what amounts to a pre-calculated/pre-shared dictionary to allow for compression of small data, but just picking what data you send and it’s representation gets you very very far.

Because we need to put nearly arbritrary data into our NB-IoT UDP socket, Inmarsat or Swarm, saving bytes let’s us pack more data into a message so we can send fewer messages: saving money and increasing reliability (because if you miss a Swarm upload time you can have hours before the next one, for example, or our Simcom modem might hit a black spot and such)


I don't think the general use case is once per minute though, more like once per hour unless something goes wrong. Something like ensure pipeline pressure is still nominal for remote parts of the pipeline.


Helium charges 0.00001$ per packet (about 24 bytes) using Lora protocol.

But it's associated with crypto so people hate it.

It also undercuts everything by a factor of 100x and is ubiquitous in US and western Europe.


The reason people are skeptical about its long-term longevity is that the vast majority of the income of the project is coming from the sale of hotspots, rather than from paying customers [1]. This means pricing for users is heavily subsidized by hotspot revenues right now. Eventually, the hotspot market will be saturated and prices will have to come up to keep the project afloat; it remains to be seen how competitive the pricing will be at that point.

PS: Saying LORA is "ubiquitous" in the US oversells it quite a bit. It is quite available in cities but most rural areas are completely devoid of coverage, see [2].

[1] https://cointelegraph.com/news/critique-on-helium-s-6-5k-mon...

[2] https://scwcontent.affino.com/AcuCustom/Sitename/DAM/031/Sen...


Oh boy, where to start with all the problems in this post.

* you can buy helium hotspots for $100 now, on par with other lora gateways

* " vast majority of the income of the project" is vague and incorrect. The hotspot OEMs (of which there are 50+) receive sales revenue, not "the project".

* You're referencing a Senet chart, which is actually a roaming partner on Helium. This isn't actually a helium coverage map.

I will correct myself on the coverage, about 98% of Americans are covered, not 98% of land in America. Oops. America is a big place.


Yeah but once a minute is overkill for lots of things - remote river flood warning every 15 minutes, river water quality once an hour, temp or rain fall once and hour




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: