Was sind die gängigen oder üblichen APIs (oder Bibliotheken) in C oder C ++ für das IoT im Sinne einer Dokumentation, einer Reihe von Programmierschnittstellen? (Wie z. B. POSIX für Betriebssysteme, Qt für GUI usw.).
Diese kurze Seite motiviert meine Frage (ich bin daran interessiert, statische Quellcode-Analysetools für IoT zu entwickeln). Ich suche nicht nur nach rechtlichen Standards, sondern auch nach häufig verwendeten APIs oder Bibliotheken in C oder C ++ mit vorhandenen Header- Dateien für sie in verschiedenen industriellen Bereichen. Ich interessiere mich nicht für Web-APIs (Konventionen, die einige HTTP-Anforderungen definieren) oder nur für Netzwerkprotokolle, ohne dass eine API oder Bibliothek diese implementiert.
(Ich bin also nicht daran interessiert, selbst IoT-Anwendungen zu entwickeln, aber ich möchte Software-Engineering-Tools entwickeln, die den Quellcode bearbeiten und analysieren, um Entwicklern von IoT-Software zu helfen.)
Ich könnte mich sogar für branchenspezifische IoT-APIs oder -Bibliotheken interessieren, z. B. für Gesundheitswesen, Logistik, Transport, intelligente Netze, intelligente Gebäude usw.; solange es sich um eine C- oder C ++ - API oder -Bibliothek handelt.
Ich bin in einer Forschungsgruppe, die an der Analyse statischer Quellcodes arbeitet, und wir möchten Tools entwickeln, die C- oder C ++ - Quellcode analysieren, um dem IoT-Softwareentwickler zu helfen.
Ich muss jedoch einen Weg finden, um finanziert zu werden, bevor ich daran arbeite.
Wir empfehlen, ein spezielles Tool (vorzugsweise Open Source über den vorhandenen Technologien) für Entwickler und Ingenieure zu entwickeln, das Quellcode (in C, C ++ und Ada, falls erforderlich ...) für IoT-Plattformen schreibt. Dieses Tool wird in das gezielte Software Development Kit integriert. Dieses Tool kann IoT-Softwareentwicklern helfen, indem es die Gültigkeit des Quellcodes anhand von Codierungsregeln, Invarianten und bewährten Methoden für diese Software-Frameworks analysiert und überprüft. Das Hauptziel besteht darin, die Softwarequalität zu verbessern und die Markteinführungszeit zu verkürzen. Falls relevant, kann das Tool bestimmte Quellcode-Optimierungen durchführen, um die Softwareleistung zu verbessern und / oder die Codegröße zu verringern.
NB. Diese IoT Eclipse- Webseite listet mehrere Standards auf. Ich interessiere mich für APIs und Bibliotheken, die sie implementieren (und jeden anderen de facto domänenspezifischen IoT-Standard), wenn sich die Entwicklung von Quellcode-Analysatoren für sie lohnt.
quelle
Antworten:
Basile, ich denke, dass uns hier eine feine Unterscheidung fehlt.
Wenn Sie von einem Posix-ähnlichen Standard für IoT sprechen, sprechen Sie meiner Meinung nach von Bibliotheken, die ein Protokoll umschließen.
Als einer, der seit ( Husten- ) Jahrzehnten beschäftigt ist, um Protokollstapel für Telefonie und Satellitenkommunikation zu implementieren, kann ich (wie Sie wahrscheinlich wissen) sagen, dass diese Protokolle notgedrungen bereits streng definiert sind. Zum Beispiel wird Zigbee von https://en.wikipedia.org/wiki/IEEE_802.15.4 geregelt
Diese Standards legen die zu übertragenden Nachrichten fest und definieren, dass Byte 0 dies bedeutet, Bytes 1 bis 4 dies usw. bedeuten, so dass Geräte unterschiedlicher Hersteller miteinander kommunizieren können (das ist jedenfalls die Theorie; ich könnte Ihnen etwas Entsetzen sagen Geschichten ;-)
Wie gesagt, für jedes Protokoll kann es eine Vielzahl von Herstellern geben. Und für jeden Hersteller kann es mehrere Softwarebibliotheken geben, was Ihr Problem ist.
Ihre Aufgabe ist zu schwierig, solange mehrere APIS verfügbar sind, die jedes Protokoll umschließen.
Leider wird es nur dann eine Posix-ähnliche API geben, wenn ein Unternehmen dominant wird. Es mag eine dünne Möglichkeit geben, wenn eine große Regierung viel Geld darauf wirft, aber ich kann das nicht sehen. Die einzige andere Chance habe ich als Linux-ähnliche Anstrengung von der Open Source Community.
Übrigens denke ich nicht, dass Sie klar genug machen, dass Sie nicht nur ein weiterer statischer Code-Analysator sind, sondern nicht für allgemeinen Code, sondern für bestimmte spezifische APIs. Sie sagen das, irgendwie, aber nicht explizit genug, IMO. Wenn Sie das genau definieren, wissen Sie, was Ihr Projekt wirklich ist. Wenn Sie es bereits wissen, scheinen Sie es nicht zu betonen (aber vielleicht lese ich nicht gut genug, zwischen zwei Besprechungen gehetzt).
Die Syntax von POSIX-APIs wird vom Compiler überwacht, ebenso wie die Syntax aller von Ihnen untersuchten APIs. Ich vermute also, dass Sie nach potenziell gefährlichem Code suchen, z. B. nach der Verwendung einheitlicher Ressourcen, nicht nach der Freigabe zugewiesener Ressourcen usw. - ist das richtig?
Es klingt jedoch nach einem großartigen Projekt, und ich habe diese Frage in der Hauptrolle gespielt.
quelle
Die Standards für verschiedene Netzwerkprotokolle sind bereits gut definiert. Es hört sich so an, als würden Sie hoffen, eine API zu finden, die Standardverhalten von IoT-Geräten implementiert. So etwas wie eine Light () - Funktion, mit der Lichter ein- und ausgeschaltet oder auf einen Bruchteil ihrer Helligkeit gedimmt werden können. DoorSensor (), der aktiviert oder deaktiviert werden kann oder sich für einen Alarm bei Ereignissen beim Öffnen oder Schließen von Türen registrieren kann; diese Art von Ding. Mir ist jedoch keine API-Bibliothek bekannt, die nicht anwendungsspezifisch ist.
Wenn jemand einen hat, finden Sie vielleicht etwas in Domoticz . Es ist ein Open Source-Controller für die Hausautomation, der in C ++ geschrieben wurde.
quelle
Als schnelle Antwort glaube ich nicht, dass es für IoT einen speziellen Bibliothekstyp gibt. Ich würde sagen, dass IoT im Grunde genommen die " neuen eingebetteten Systeme " sind. Sie haben lediglich den Namen geändert und die Verbindung zur Cloud hinzugefügt.
Als Antwort auf das, was ich für die C ++ - Programmierung verwende, lautet meine Referenzseite http://www.cplusplus.com/
Grundsätzlich benötigen Sie für IoT Kommunikationsbibliotheken , unabhängig davon, welches Protokoll Sie verwenden (USB, TCP / IP, UDP, ZigBee usw. usw.).
Wenn Sie über Kommunikation verfügen, benötigen Sie außerdem Sicherheit / Verschlüsselung .
Der Rest hängt davon ab, welchen Teil der Hardware Sie steuern oder messen. Sie benötigen die Bibliotheken (API / Firmware) für diese Hardware .
Sicherlich fehlen mir hier viele Dinge ... sehen wir uns die Antworten anderer an
quelle
Eingebettet plus sichere Kommunikation plus Bereitstellung (Geräteverwaltung) plus OTA-Updates. Dies ist ein großes Softwarepaket, das sich auch als eine neue Art von Plattform für die Entwicklung herausstellt.
Es gibt mehrere Anbieter, die Cloud-Lösungen anbieten. In der Regel verfügen sie über eigene Client-APIs und ausgewählte Endpoint-Betriebssysteme.
Soweit ich das beurteilen kann, bestimmen die verschiedenen drahtlosen Protokolle keinen bestimmten Software-Stack. Daher muss Ihre Wahl vom Gesamtbild und nicht von den Client-APIs abhängen. Ein entscheidender Faktor kann sein, ob Open Source für den Stack in Ihrer Anwendung wichtig ist.
quelle
Ich denke, Ihr Ziel ist BOOST etwas ähnlich:
Boosten Sie C ++ - Bibliotheken
Sie zielen darauf ab, "bestehende Praktiken" zu etablieren und Referenzimplementierungen bereitzustellen, damit Boost-Bibliotheken für eine eventuelle Standardisierung geeignet sind.
Vielleicht könnte Boost ein wichtiger Akteur im IoT sein: Es hat sicherlich einige große Verbesserungen an C ++ vorgenommen.
quelle
IoTivity ist die Referenzimplementierung der OCF-Spezifikation . Dokumentation und Quellcode finden Sie im GitHub-Repository .
Aus ihrer Liste der Funktionen :
Ihre Framework-APIs ermöglichen die Erkennung, Datenübertragung, Datenverwaltung (Erfassung, Speicherung und Analyse) und Geräteverwaltung (z. B. Bereitstellung, Diagnose) über verschiedene Protokolle wie Bluetooth, Wi-Fi, ZigBee und Z-Wave.
quelle