Forum: Mikrocontroller und Digitale Elektronik Kann <map> nicht finden - Arudino


von mimi (Gast)


Lesenswert?

Hi zusammen,

beim Komplilieren vom SocketIoClient unter Arduino kommt folgender 
Fehler
1
C:\Users\mimi\Documents\Arduino\libraries\SocketIoClient/SocketIoClient.h:5:15: fatal error: map: No such file or directory
2
3
 #include <map>


Ich habe irgendwo gelesen, dass dies eine Standard C/C++ Funktion ist 
und man nur einen Kompiler installieren muss... ich arbeite mit Windows 
10 und weiß nicht so recht was man da braucht...

=> kann mir da jemand weiterhelfen?

viele grüße
mimi

von Niklas Gürtler (Gast)


Lesenswert?

Das ist eine C++ Klasse der C++ Standard Bibliothek. Der AVR-GCC, der 
von Arduino genutzt wird, liefert die nicht mit. Die müsste man erst 
portieren (aufwendig), oder eine komplett andere Klasse benutzen. Die 
ist ohnehin nicht besonders für kleine Mikrocontroller geeignet, da sie 
eine dynamische Speicherverwaltung benötigt. Daher besser mal überlegen, 
ob das nicht ganz anders geht...

von mimi (Gast)


Lesenswert?

hm, okay

irgendwelche Vorschläge wie ich einen socket.io Client auf einem Arduino 
ans laufen bekomme?

Vielen Dank

von Michael U. (amiga)


Lesenswert?

Hallo,

in Arduino/libraries gibt es mormalerweise keine SocketIoClient.
Wenn sie selbst installiert wurde, gehört sie dort nicht hin sondern 
nach sketchbook/libraries.
In SocketIoClient.h:5:15 gibt es in den ersten 28 Zeilen nur Kommentar 
und auch sonst kein #include <map>.
#include <map> ergibt auch keinen Sinn, includiert werden normalerweise 
Headerdateien und die heißen hint .h

Was ist also das wirkliche Problem und sein Zustandekommen?

Gruß aus Berlin
Michael

: Bearbeitet durch User
von mimi (Gast)


Lesenswert?

Hallo Michael,

dann hast du eine andere SocketIoClient.h als ich...

ich habe meine über die Bordverwaltung bezogen und diese wurde genau 
hier hininstalliert und ist auch meinerseits unverändert

ich hab die Version 0.3.0 von Vincent Wyszynski

von Niklas Gürtler (Gast)


Lesenswert?

Michael U. schrieb:
> #include <map> ergibt auch keinen Sinn, includiert werden normalerweise
> Headerdateien und die heißen hint .h

Die C++ Standard Header haben kein .h . Lediglich zur Kompatibilität 
mit alten Implementationen kann man teilweise auch das .h anhängen.

von tom (Gast)


Lesenswert?

Hallo, -

Die Library findest Du in
https://github.com/timum-viw/socket.io-client

Dort findest Du auch ein Readme-File, die Dir beschreibt wie
Du das Ding benutzt (stdc++ hinzulinken).

Hast Du die Platform.txt auf Deiner Maschine angepasst (wie
in dem Readme beschrieben?)

Gruesse

Th.

von Michael U. (amiga)


Lesenswert?

Hallo,

mimi schrieb:
> dann hast du eine andere SocketIoClient.h als ich...

ok, ich war bei der falschen, vergiß meinen Post...

Inzwischen gab es ja zum Glück bessere Hinweise.

Gruß aus Berlin
Michael

von Carl D. (jcw2)


Lesenswert?

tom schrieb:
> Hallo, -
>
> Die Library findest Du in
> https://github.com/timum-viw/socket.io-client
>
> Dort findest Du auch ein Readme-File, die Dir beschreibt wie
> Du das Ding benutzt (stdc++ hinzulinken).
>
> Hast Du die Platform.txt auf Deiner Maschine angepasst (wie
> in dem Readme beschrieben?)
>
> Gruesse
>
> Th.

Diese Lib ist für ESP8266, dessen GCC-Port sicher auch stdc++ enthält.

Falls die Zielplattform tatsächlich ein (Ur-)AVR-Arduino ist, dann fehlt 
stdc++.

In der library,json steht zwar 'plattforms "*"', das würde ich aber 
nicht so ernst nehmen. <map> geht OutOfTheBox eher nur mit 32-Bit MCUs.
library.properties ist übrigens expliziter:

sentence=socket.io Client for ESP8266 and Arduino

und! nicht oder, beides muß zutreffen

von mimi (Gast)


Lesenswert?

Hi,

hm, ich bin am verzweifeln. Kann mir jemand einen Microcontroller 
empfehlen, welcher Ethernet (kabelgebunden) hat und mit nodejs (bzw. 
socket.io) arbeiten kann.

Ich habe bereits einen node.js server und darauf ist express und 
socket.io, der dienst läuft schon seit jahren und ist in diversen 
Smart-Home Projekten eingebunden...

Jetzt möchte ich das ganze mit "eigenen" Hardware-Tools erweitern. 
Allerdings weiß ich nicht so richtig wo ich ansetze... Ich habe mir 
jetzt nen Arduino mit W5500 geholt 
(https://www.ebay.de/itm/183198518482), klingt eigentlich 
vielversprechend. Leider bekomme ich es nicht hin mich zu verbinden.

PS. der Server hat eine Verschlüsselte SSL Verbindung.

freue mich über jeden Tipp

danke
mimi

von foobar (Gast)


Lesenswert?

Für TCP/IP über Ethernet sind die 8-bit-Controller nicht wirklich 
geeignet - das, was es gibt (wie z.B. dein W5500), sind Pfuschlösungen. 
Bei SSL ist dann erst recht Sense.

Ich denke, du bist mit nem Linux-Board besser bedient. Z.B. nen 
Raspberry Pi oder was von Olimex mit direkt angebundenem Ethernet, z.B. 
Lime oder RT5350F-EVB.

von Neverever (Gast)


Lesenswert?

mimi schrieb:
> Hi,
>
> hm, ich bin am verzweifeln. Kann mir jemand einen Microcontroller
> empfehlen, welcher Ethernet (kabelgebunden) hat und mit nodejs (bzw.
> socket.io) arbeiten kann.

Da gibt es doch etliche. Haufenweise STM32 (Cortex M) oder z.B. ESP32.

> Jetzt möchte ich das ganze mit "eigenen" Hardware-Tools erweitern.
> Allerdings weiß ich nicht so richtig wo ich ansetze... Ich habe mir
> jetzt nen Arduino mit W5500 geholt
> (https://www.ebay.de/itm/183198518482), klingt eigentlich
> vielversprechend. Leider bekomme ich es nicht hin mich zu verbinden.

Wenn Du den schon hast, dann solltest Du besser Deine Probleme damit 
lösen.
Hier im Forum gibt es doch genug, die damit schon gearbeitet haben.
Beschreib doch einfach, was Du bisher gemacht hast und an welcher Stelle 
es hakt. Dann wird sich die Ursache Deines Problems sicher schnell 
finden.

von Neverever (Gast)


Lesenswert?

foobar schrieb:
> Für TCP/IP über Ethernet sind die 8-bit-Controller nicht wirklich
> geeignet - das, was es gibt (wie z.B. dein W5500), sind Pfuschlösungen.
> Bei SSL ist dann erst recht Sense.

Das ist doch Bullshit.
1. ist der W5500 genau für solche kleinen Controller gemacht und
2. kann man mit dem W5500 SSL/TLS1.2 einsetzen. Gibt ja 
OpenSource-Bibliotheken dafür.

> Ich denke, du bist mit nem Linux-Board besser bedient. Z.B. nen
> Raspberry Pi oder was von Olimex mit direkt angebundenem Ethernet, z.B.
> Lime oder RT5350F-EVB.

Warum nicht gleich ein HPC-Cluster mit ein paar Millionen GPUs?

von Planlos (Gast)


Lesenswert?

mimi schrieb:

> Ich habe bereits einen node.js server und darauf ist express und
> socket.io, der dienst läuft schon seit jahren und ist in diversen
> Smart-Home Projekten eingebunden...


Mein Lösungsweg wäre:
Schreib ein zweites node.js-Programm für deinen Server. Das verbindet 
einmal per Websocket nach localhost und stellt zum zweiten ein 
µC-taugliches Protokoll zur Verfügung. Plain-Text over Plain-TCP, 
Weiterleitung an einen MQTT-Server o.Ä.

Websocket auf kleinen µCs ist nicht so einfach. Json-Payload erfordert 
viel dynamische Strukturen im RAM, entweder große pre-allozierte Buffer 
oder malloc&co.

Oder steig auf was "dickeres" um, ESP8266, ESP32. Kannst du auch in 
Arduino programmieren, also keine große Umstellung für dich wenn du die 
nicht willst.

von Egon (Gast)


Lesenswert?

mimi schrieb:
> Kann mir jemand einen Microcontroller
> empfehlen, welcher Ethernet (kabelgebunden) hat und mit nodejs (bzw.
> socket.io) arbeiten kann.

Wie wäre es mit dem ESP32? Der kann auch Ethernet (wenn man ihm einen 
PHY spendiert), und es gibt von Olimex auch fertige Boards mit ihm, dem 
PHY und einer RJ45-Buchse.

von Johannes S. (Gast)


Lesenswert?

man muss sich da wohl etwas durch die Doku/Quellen hangeln. In Socket.io 
steht das die Websockets von M. Sattler benutzt werden:
https://github.com/Links2004/arduinoWebSockets
 Darin wird darauf hingewiesen das die Version 2 wegen der fehlenden C++ 
Stdlib auf AVR nicht benutzt werden kann und man den Branch ATMega 
benutzen muss. Also zumindest die Websockets ohne socket.io könnte auf 
dem AVR+Ethernetshield laufen.
socket.io hat keinen anderen Branch, das scheint also nur für den 
ESP8266 gebaut zu sein. Aber das sagt der Titel des Repo auch schon:
'A socket.io-client implementation for ESP8266 and Arduino '

von Leonie (Gast)


Lesenswert?

Hi zusammen,

ich versuch mich mal in den Thread mit einzuschieben...

ich habe einen ESP32. Leider bekomm ich es nicht gebacken mich mit einem 
SSL socket.io Server zu verbinden.

Gibt es Bibliotheken, welche Ihr empfehlen könnt. Sind irgendwelche 
Beispiele online einsehbar?

Es geht eigentlich um einfache Steuerungsmöglichkeiten... wie bei mimi 
ist bereits ein nods.js Server vorhanden über welchen z.B. meine Heizung 
läuft... nun soll noch etwas "Elektrik" dazu kommen (also einfache 
Relaisschaltungen und Strommessungen).

Mosquitto ist für mich eine Alternative zu welcher ich "in der letzten" 
Instanz greifen würde. Ich hoffe aber die vorhandene Infrastruktur 
einbinden zu können und nicht mit "2 Servern" rumhandeln muss (nicht als 
Hardware, sondern Software)…

- Leo

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.