Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie kann ich alle Mikrocontroller im Netzwerk suchen?
Lucky_001
myCSharp.de - Member



Dabei seit:
Beiträge: 15
Herkunft: Holzwickede, NRW

Themenstarter:

Wie kann ich alle Mikrocontroller im Netzwerk suchen?

beantworten | zitieren | melden

Hallo,

ich habe mehrer mikrocontroller die via DHCP in meinem Netzwerk sind. Da ich in meiner Software am PC die IP adressen nicht alle manuell eingeben möchte, möchte ich gerne in meinem PC programm nach den mikrocontrollern suchen können. Heißt also, dass ich sie über einen bestimmten port ansteuere und damit quasi abfrage ob es ein mikrocontroller ist oder nicht. Leider ist auch genau da mein Problem. Ich habe noch nicht so viel mit Ethernet gemacht und habe daher nicht wirklich einen plan wie ich das umsetzten soll.

Ich danke im vorraus für alle Antworten!

MfG
Daniel S.
private Nachricht | Beiträge des Benutzers
HansFred
myCSharp.de - Member



Dabei seit:
Beiträge: 49

beantworten | zitieren | melden

das nennt sich discovery und muss das gerät unterstützen indem es zum beispiel auf ein broadcast im netzwerk hört. fertig gibt es das nicht.
private Nachricht | Beiträge des Benutzers
trib
myCSharp.de - Member



Dabei seit:
Beiträge: 689

beantworten | zitieren | melden

Aber halbfertig gibt es das.

Per UDP-Broadcast kannst Du alle Geräte in einem Netzwerk anfragen, welche in einer IP-Range liegen und auf einen Port lauschen.
.Net-Seitig z.B. der UdpClient.

Seitens des µC (ich nehme mal an ein ESP32 oder8266) gibt es WiFiUDP.

Dann sendest Du eine Nachricht raus und Deine Mikrocontroller antworten entsprechend darauf.


Oder man schaut sich z.B. an wie die OTA Update-Libraries das machen.
Dabei meldet sich auch jeder ESP im Netzwerk bei der Arduino-IDE und sie erscheinen in der COM-Port Liste (Mit MAC-Adresse und Namen).
private Nachricht | Beiträge des Benutzers
Lucky_001
myCSharp.de - Member



Dabei seit:
Beiträge: 15
Herkunft: Holzwickede, NRW

Themenstarter:

beantworten | zitieren | melden

Ich habe mir mal das zum UdpClient durchgelesen. Nun hab ich aber noch ein paar fragen:

1. Was ist der Host? Ist das das gateway sprich der router z. b.?

2. Der port spielt doch keine Rolle, solange ich bei meinen Microcontrollern diesen port für Udp eingerichtet habe, oder?

3. Ich habe zwei UdpClients in meinem Programm, der eine zum Zuhören, der ander zum Schreiben, richtig?


Und als mikrocontroller verwende ich selbstgebaute Microcontroller der Firma wo ich arbeite. Der Prozessor ist ein ATmega328PB-AU und die Ethernet verbindung wird über einen WIZnet W5500 (wie bei dem Ethernetshield des Arduinos) realiesiert.

Bei den Microcontrollern weiß ich auch noch nicht wie ich das genau machen soll.
private Nachricht | Beiträge des Benutzers
Papst
myCSharp.de - Experte



Dabei seit:
Beiträge: 344
Herkunft: Kassel

beantworten | zitieren | melden

Wenn deine µC sich per DHCP eine IP holen... kannst du die Informationen evtl. von deinem DHCP Server auslesen?
Eine z.B. Fritzbox hat dazu eine passende API: https://avm.de/service/schnittstellen/
Gibt auch hier im Forum jemanden, der eine passende Bibliothek geschrieben hat, ob die die notwendige Heimnetzgeräte API implementiert kann ich dir aber nicht sagen.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Papst am .
private Nachricht | Beiträge des Benutzers
trib
myCSharp.de - Member



Dabei seit:
Beiträge: 689

beantworten | zitieren | melden

Zitat
1. Was ist der Host? Ist das das gateway sprich der router z. b.?
Nein, Du hast einen Sender und einen (oder mehrere) Empfänger.
Oder Master/Slave, Host/Client, wie auch immer man es nennen mag.

Sprich: Einer muss ja den Broadcast initiieren und jemand anderes diese Nachricht empfangen und beantworten.
In Deinem Fall wird die Software am PC der Host sein und die Mikrokontroller die Empfänger.
Der Router macht wie er heißt: Er routet den Weg zwischen den Geräten.
Zitat
2. Der port spielt doch keine Rolle, solange ich bei meinen Microcontrollern diesen port für Udp eingerichtet habe, oder?
Wenn Du den Port angibst, spielt er doch bereits eine Rolle!
Die Broadcast-Nachricht soll ja nicht alle Geräte im Netzwerk ansprechen, sondern nur Deine. Stell es Dir als eine Art Filter vor!
Zitat
3. Ich habe zwei UdpClients in meinem Programm, der eine zum Zuhören, der ander zum Schreiben, richtig?
Das ist etwas irreführend, da die Klasse UDPCLient heißt. Sie kann aber sowohl Sender als auch Empfänger sein.

Prinzipiell macht es das Beispiel von Microsoft ja genau so:
Nachricht an einen Port senden, optimaler weise mit einer IP ala 192.168.2.255 damit alle IP´s in der Range angesprochen werden.
Dann wartet dieser auf einen Reponse, also die Rückantwort. Diese enthält dann die IP des antwortenden Gerätes. Und was auch immer Du in die Nachricht schreibst.

Dann obliegt es Dir, nochmal eine weitere Direkt-Verbindung mit diesem einen Gerät aufzumachen oder ob Dir die Antwort schon reicht.

Du solltest dann natürlich berücksichtigen, dass Du bei mehreren Geräten im Netzwerk auch mehrere Antworten bekommen wirst.


PS: Bei den ATmega´s wird der Speicher natürlich schnell knapp.
Je nach dem was Du da überhaupt vor hast, würde ich ggf. einen anderen Weg einschlagen.
private Nachricht | Beiträge des Benutzers