Jakie usługi IoT są dostępne do przechowywania / wysyłania / publikowania ogólnych danych w chmurze?


16

Jakie usługi IoT są dostępne do przechowywania / wysyłania / publikowania (i operacji przeciwnych) ogólnych niewielkich ilości danych w chmurze?

Szukam na przykład usługi, w której urządzenie może przechowywać wartość w chmurze. A inny podmiot (inne urządzenie, strona internetowa z kodem JS, serwer WWW, aplikacja mobilna) może pobrać tę wartość.

Może to być pewnego rodzaju komunikacja asynchroniczna, na przykład do przechowywania i wyszukiwania czegoś tak małego jak para klucz i wartość, <255 bajtów, liczba całkowita, łańcuch, co najwyżej mały obiekt JSON. Usługa może oferować interfejs API REST (więc może być dostępny w wielu różnych językach) z pewnym tokenem do uwierzytelnienia oraz kluczem i wartością do przechowywania.

Szczegółowym przykładem przypadku użycia jest:

W domu jest czujnik temperatury i chcę, aby przechowywał wartość w chmurze ( gdzieś poza domem ). W ten sposób mogłem uzyskać do niego dostęp, niezależnie od tego, czy moje połączenie domowe jest wyłączone czy nie. Co więcej, pozwoliłoby to uniknąć utrzymywania i utrzymywania serwera dedykowanego + przekazywania portów + DynamicDNS.

Do tej pory nie byłem w stanie znaleźć czegoś takiego, ale czasami znalazłem kilka przykładów tego, co mam na myśli:

Jakie są inne podobne (bezpłatne / otwarte) alternatywy?


@BenceKaulics Myślę, że zastosowanie miałyby oba przypadki użycia. Profesjonalne rozwiązanie może oznaczać większą standaryzację i niezawodność. Rozwiązanie eksperymentalne może być ciekawym projektem typu open source.
urnenfeld

Nienawidzę być zepsutym sportem, ale nie widzę tego jako żądania IoT, bardziej jak usługi sieciowe, dla których mamy inne strony. Używaj tego, co chcesz - własnej witryny, bezpłatnego hostingu, Amazon Web Services itp. Tak naprawdę nie powiedziałeś nam, co próbujesz osiągnąć. Na przykład, czy chcesz zakodować oprogramowanie serwera? Żadnych szczegółów, tylko ciepłe, niewyraźne uczucie, więc bardzo trudno będzie ci odpowiedzieć.
Mawg mówi o przywróceniu Moniki

2
@Mawg Ma tag usługi internetowej (której nie utworzyłem). Przypadek użycia koncentruje się na IoT, podobnie jak podane odniesienia. Prosi o dostępne usługi, chociaż można to osiągnąć za pomocą prostego php + db, intencją nie jest wynalezienie koła i poznanie, z jakich usług jest znana społeczność IoT. Ale daj mi znać, w której społeczności uważasz, że lepiej pasuje.
urnenfeld,

To bliskie połączenie. Przyznaję, że czasami publikuję na Stack Overflow, gdzie inna strona byłaby bardziej poprawna. ALE SO ma większą publiczność, więc mam większą szansę na odpowiedź. Inne strony zawsze nakładają się na siebie i będziemy musieli to rozpracować w miarę postępów. +1 za nie obrażanie się i teraz znasz stronę bezpieczeństwa. Pytanie * może jednak
zawierać

2
@Mawg oczywiście bez obrazy :). Naprawdę spędziłem trochę czasu zastanawiając się, gdzie umieścić pytanie ... Próbowałem wcześniej kształtować to pytanie. Zobaczmy teraz, dodałem dokładny przypadek użycia i wstępne rozwiązania.
urnenfeld

Odpowiedzi:


10

Spójrz na te usługi:

Obie usługi akceptują proste dane klucza / wartości z urządzenia. Wierzę, że oba mają biblioteki gotowe do importowania dla urządzeń Particle, odkąd o tym wspomniałeś.


7

Wielu dostawców usług w chmurze, takich jak Amazon, Microsoft, Google, IBM itp., Próbuje przyciągnąć przestrzeń IoT, zapewniając łatwiejsze sposoby wysyłania / przechowywania / analizy danych czujników do swojej chmury. Nawet oni mają pozyskać dostawców sprzętu, aby zwiększyć ich zasięg w IoT.

Nie korzystałem z żadnych usług innych niż AWS, więc mogę wyjaśnić moje doświadczenia z AWS i sposób, w jaki to zintegrowaliśmy na potrzeby produkcji.


Scenariusz:

Mamy setki czujników, z których każdy wysyła 184-428 bajtów danych co minutę do lokalnej bramy, która agreguje dane i przechowuje dane lokalnie i wysyła te same dane do chmury AWS. Posiadamy również specjalne czujniki, które przesyłają dane bezpośrednio do chmury.

Usługi w chmurze

Używamy AWS IoT , AWS S3, AWS DynamoDB, AWS Lambda, AWS API Gateway, AWS SNS, AWS Cloudwatch, AWS RedShift, aby zbudować całe rozwiązanie. Zasadniczo nie są one specyficzne dla IoT (z wyjątkiem AWS IoT), ponieważ możemy ich używać w urządzeniach mobilnych i sieci.

Gateway używa AWS IoT SDK do łączenia, uwierzytelniania i wymiany wiadomości z AWS IoT za pomocą protokołów MQTT, HTTP lub WebSockets (korzystamy z węzła JS SDK łączącego się za pośrednictwem MQTT). Jesteśmy brokerem MQTT lokalnie na bramie urządzenia i łącząc go z punktem końcowym AWS IoT stamtąd uruchamiamy natychmiastowe sprawdzenie otrzymanych danych (za pomocą silnika reguł, funkcji AWS Lambda) i przechowujemy je w archiwum DynamoDB w S3, Glacier (Przechowywanie jest zakończone bez pisania jednej linii po prostu używając wyzwalaczy AWS do przechowywania danych).


6

Jest przeznaczony wyłącznie do użytku eksperymentalnego lub testowego, ale może zmieni się w przyszłości.

Dlatego proponuję użyć MQTT , a dokładniej jego implementacji Mosquitto . Obsługują brokera testowego, z którym można połączyć klientów subskrybenta i wydawcy. ( Oto przewodnik na temat procesu instalacji w systemie Windows 7. )

Uwaga:

Możesz go używać do dowolnej aplikacji, ale nie używaj go do niczego ważnego. Należy również zbudować klienta, aby poradzić sobie z ponownym uruchomieniem brokera.

Ale w zasadzie możesz publikować dane dotyczące temperatury w tym brokerze.

Po stronie abonenta-klienta ostatnio korzystałem z tej aplikacji na Androida . Jest to bardzo prosta aplikacja, wciąż w fazie rozwoju, ale do celów testowych jest świetna. Otrzymane wiadomości są wyświetlane na pulpicie nawigacyjnym, nic szczególnego tylko same wartości.

Zacząłem używać obu z nich jako pierwszego etapu mojego procesu uczenia się MQTT i uważam, że oba są świetne dla początkujących.


1
Czy MQTT nie byłoby rozwiązaniem bardziej pasującym w kontekście sieci LAN? W przypadku problemów takich jak prywatność / bezpieczeństwo / wielu użytkowników?
urnenfeld

@urnenfeld MQTT może obsługiwać twoją stronę internetową, aplikację mobilną i wymóg „innego urządzenia”, ponieważ możesz subskrybować je wszystkie. Z pewnością chciałbyś w przyszłości wysyłać dane z innych urządzeń, a nie tylko temperaturę, więc możliwość wielu użytkowników jest dobrym IMO, nawet jeśli jest to tylko sieć dla wielu abonentów wielu wydawców. Również bezpieczeństwo i prywatność powinny zawsze stanowić problem. Jeśli chodzi o sieć LAN, być może pasuje to bardziej, ale jeśli dbasz o bezpieczeństwo, możesz udostępnić swojego brokera z dowolnego miejsca, nie będąc ekspertem w tej dziedzinie.
Bence Kaulics,

1
Eee, ten broker testowy jest brokerem testowym, więc nie powinien być używany dla działającej aplikacji. Ale pomysł jest tutaj: możesz otworzyć port brokera MQTT z zapory i połączyć się z dowolnego miejsca.
Goufalite,

Przykro mi, ale OP chce przechowywać dane, MQTT to tylko komunikator, ale możesz go użyć do wysłania danych na dedykowany serwer. Aby pobrać wartość, klient musi wysłać zapytanie do MQTT w celu pobrania wartości za pośrednictwem publikacji. MQTT jest świetny, ale serwis internetowy ma tutaj lepsze miejsce ...
Goufalite,

@Goufalite Tak, przechowywanie danych jest bardziej skomplikowane.
Bence Kaulics,

5

Są na to dwa elementy:

  1. Jak chcesz przechowywać swoje dane? Nie ma prawdziwego sposobu na stworzenie „ogólnej” usługi danych, która naprawdę spełni wszystkie potrzeby. To, co chcesz, nazywa się „bazami szeregów czasowych” , a są ich setki, ponieważ każdy szczegół przechowywania danych ma dużą skalę. (Jeśli nie jesteś na dużą skalę, po prostu przechowuj ją w dowolnej starej bazie danych, będzie działać przez chwilę).

    Baza danych za każdym razem była zapisywana, ponieważ inni nie robili dokładnie tego, co chcieli. Rozważmy na przykład, w jaki sposób Grafit przechowuje swoje dane: każda metryka (powiedzmy temperatura z jednego źródła) jest przechowywana w pliku o stałym rozmiarze. Bez względu na to, jak często wysyłasz metryki i jak długo je wysyłasz, plik ma stały rozmiar.

    Minusem jest to, że starsze dane mają niższą rozdzielczość, a po ustalonym interwale (na przykład 1 rok) dane są wyrzucane. Ale zaletą jest to, że wykres jest tak szybki jak dzień w ciągu roku, a wskaźniki z czasem nie rosną.

    W innych systemach pamięci masowej generowanie wykresu na rok może wymagać pobrania milionów punktów danych i może wymagać ogromnej ilości pamięci.

    Dużą wadą Grafitu jest to, że każda metryka tworzy nowy plik, więc jeśli masz metryki dynamiczne (powiedzmy, że chmury pojawiają się i znikają), może to nie być dobre dopasowanie.

    Porównaj to z Prometeuszem , gdzie dane są przechowywane głównie przez czas. Możesz mieć wiele dynamicznych wskaźników i jest w porządku. Ale nie próbuj przechowywać tych danych w perspektywie długoterminowej, powrót do nich i przeczytanie zajmie wieczność.

    Żaden rozmiar nie pasuje do wszystkich.

    PS Graphana to doskonały sposób na wizualizację danych. Posiada wtyczki do większości baz danych szeregów czasowych.

  2. Kto będzie przechowywać twoje dane? Istnieją tysiące z miejsc takich jak te, o których wspomniałeś. Tak łatwo jest rozłożyć DB w szeregu czasowym w chmurze, ale NAPRAWDĘ trudno jest na tym zarobić. Większość z tych firm po pewnym czasie przestanie działać lub zacznie żłobić ceny. (Nawet utrzymywanie ich cen na stałym poziomie jest wyłudzaniem cen - ponieważ koszty komputerów stale spadają.) Wiele razy okazuje się, że nie są w stanie przyciągnąć tylu nowych klientów, jak im się wydaje, więc próbują podnieść ceny (pod pozorem zmiany modelu wyceny). Okazuje się, że przechowywanie danych wszystkich kosztuje dużo pieniędzy ...

    Polecam hosting własny lub skorzystam z usług renomowanego dostawcy usług w chmurze, takiego jak AWS CloudWatch . (Drogie, jeśli masz dużo danych, ale za darmo dla danych poniżej 50!)


Chodziło o to, aby uzyskać zestaw najlepszych z tych „tysięcy miejsc”.
Zebrałem

3

uBeac to nowe bezpłatne oprogramowanie do wizualizacji, które opracowaliśmy i jest to wersja Beta. Nie jest open source, ale jest w pełni darmowy.

Możesz zdefiniować bramę, a otrzymasz unikalny identyfikator URI. Możesz ustawić identyfikator URI w swojej bramie lub urządzeniu, na które będą wysyłane dane HTTP / MQTT.

Oto niektóre z jego funkcji:

  • Zespół, budynek, definicja planu piętra
  • Wizualizacja danych w czasie rzeczywistym
  • Niestandardowy projekt deski rozdzielczej przy użyciu różnych widżetów
  • Zdefiniuj typy czujników, jednostki i prefiksy Wizualizacja mapy
  • ...

Obsługuje ogólny format danych Json oraz różne predefiniowane bramy. Jeśli nie chcesz używać wstępnie zdefiniowanych formatów ładunku, mogą one rozwinąć niestandardowe przetwarzanie ładunku.


Witaj @Amir, zauważyliśmy, że twoje odpowiedzi są do tej pory duplikatami i promują Twój produkt. Odpowiedzi na pytanie, gdzie dany produkt jest odpowiedni, są w porządku, ale koniecznie przeczytaj wytyczne dotyczące autopromocji w Centrum pomocy. Dobrym pomysłem jest również dostosowanie odpowiedzi do pytania, zamiast zamieszczania identycznego tekstu, aby upewnić się, że faktycznie odpowiadasz na pytanie, a nie tylko promować swój produkt. Dzięki.
Aurora0001

1

Dziwię się, że nikt tutaj nie wspomniał o Dweecie . To bardzo prosty, super zabawny sposób na komunikację. Na pewno powinieneś spróbować, bo hej, to nic nie kosztuje!


1
Rzeczywiście został zaproponowany, ale moderacja go usunęła. Jedną z fajnych rzeczy w tej usłudze jest to, że nie musisz się nawet rejestrować, a one pokazują pewne rysowanie twoich danych. Z drugiej strony twoje dane są dość publiczne :)
urnenfeld

0

flespi zapewnia bezpłatne i komercyjne usługi w chmurze:

Obowiązkowe wyłączenie odpowiedzialności: Pracuję dla firmy, która rozwija platformę flespi. Chociaż starałem się zachować obiektywizm, jak zawsze w Internecie, proszę dokładnie sprawdzić wszystkie informacje w tej odpowiedzi, aby wykluczyć uprzedzenia, które mogą wpłynąć na twoją decyzję.


Ponownie, zadeklaruj każde połączenie z usługą, polecając ją (np. Pracujesz dla flespi)
hardillb
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.