Seite 15 von 18

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 26.07.2021 19:23:51
von Johannes
Variable deklarieren oder nicht führt aber auch nicht zu einem veränderten Kontrollfluss. Es ist ohne Klammern halt so, dass die Variable in den nachfolgenden cases auch sichtbar ist, obwohl sie nicht initialisiert wurde -> Zugriff darauf ist undefined behavior. Das ist hier aber nicht der Fall.

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 26.07.2021 19:43:21
von F. Schn.
Manche Dinge will man besser nicht wissen... :angst

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 30.09.2021 23:45:30
von _TheDragonRider_
Hallo,

ich beschäftige mich gerade auch mit dem Thema Fahrpultbau und und bin gerade dabei ein MFA dafür auf den Arduino umzurüsten. Der Arduino ist ein Arduino Mega 2560 mit aufgesetztem Ethernet Shield 2 welcher direkt an den PC angeschlossen ist. Ich verwende den Code von F. Schn. auf Seite 11 und habe das Problem, dass sich der Arduino nicht Verbinden kann/möchte. Ich hab auch die Beiträge auf Seite 3 f. gelesen, wo es bei Maurice um das gleiche Problem ging, und die dort vorgeschlagenen Änderungen auch schon zum Teil ohne Erfolg versucht. Bezüglich Netzwerken hab ich keine Erfahrung weshalb ich von dem was da stand auch nicht wirklich schlauer geworden bin. Für Hilfe wäre ich dankbar.

Gruß, Paul

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 01.10.2021 00:07:05
von Formsignal
_TheDragonRider_ hat geschrieben: 30.09.2021 23:45:30 Ich verwende den Code von F. Schn. auf Seite 11 und habe das Problem, dass sich der Arduino nicht Verbinden kann/möchte.
Um ein paar Basics geprüft zu haben:
- Zusi TCP-Server gestartet?
- IP des EthernetShield in den richtigen Netzbereich gelegt?
- Lässt sich das EthernetShield vom PC aus "pingen"?

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 01.10.2021 00:35:40
von _TheDragonRider_
Der TCP Server ist gestartet. Die IP des Shields ist die des PCs um eins erhöht (analog zur Beispiel-IP im Code). Und auch der Ping ist erfolgreich.

IP-Adressen im Code:

Code: Alles auswählen

IPAddress ip(169, 254, 13, 140);                              //IP-Adresse vom Arduino Ethernet Shield
IPAddress server(169, 254, 13, 139);                          //IP-Adresse vom Zusi3-Rechner 
Beim Ausführen des ipconfig-Befehls angezeigten Verbindungen:

Code: Alles auswählen

Drahtlos-LAN-Adapter LAN-Verbindung* 1:

   Medienstatus. . . . . . . . . . . : Medium getrennt
   Verbindungsspezifisches DNS-Suffix:

Drahtlos-LAN-Adapter LAN-Verbindung* 2:

   Medienstatus. . . . . . . . . . . : Medium getrennt
   Verbindungsspezifisches DNS-Suffix:

Ethernet-Adapter Ethernet 2:

   Medienstatus. . . . . . . . . . . : Medium getrennt
   Verbindungsspezifisches DNS-Suffix:

Ethernet-Adapter Ethernet:

   Verbindungsspezifisches DNS-Suffix: fritz.box
   Verbindungslokale IPv6-Adresse  . : fe80::4ca9:f6a8:f7f8:d8b%12
   IPv4-Adresse (Auto. Konfiguration): 169.254.13.139
   Subnetzmaske  . . . . . . . . . . : 255.255.0.0
   Standardgateway . . . . . . . . . :

Drahtlos-LAN-Adapter WLAN:

   Verbindungsspezifisches DNS-Suffix: Speedport_W_921V_1_46_000
   Verbindungslokale IPv6-Adresse  . : fe80::2de7:c813:a51b:644a%10
   IPv4-Adresse  . . . . . . . . . . : 192.168.2.102
   Subnetzmaske  . . . . . . . . . . : 255.255.255.0
   Standardgateway . . . . . . . . . : 192.168.2.1

Ethernet-Adapter Bluetooth-Netzwerkverbindung:

   Medienstatus. . . . . . . . . . . : Medium getrennt
   Verbindungsspezifisches DNS-Suffix:
Und das Ergebnis des Ping-Tests:

Code: Alles auswählen

Ping wird ausgeführt für 169.254.13.139 mit 32 Bytes Daten:
Antwort von 169.254.13.139: Bytes=32 Zeit<1ms TTL=128
Antwort von 169.254.13.139: Bytes=32 Zeit<1ms TTL=128
Antwort von 169.254.13.139: Bytes=32 Zeit<1ms TTL=128
Antwort von 169.254.13.139: Bytes=32 Zeit<1ms TTL=128

Ping-Statistik für 169.254.13.139:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
    (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 01.10.2021 07:39:04
von Arne aus dem Norden
_TheDragonRider_ hat geschrieben: 30.09.2021 23:45:30 Der Arduino ist ein Arduino Mega 2560 mit aufgesetztem Ethernet Shield 2 welcher direkt an den PC angeschlossen ist. Ich verwende den Code von F. Schn. auf Seite 11 und habe das Problem, dass sich der Arduino nicht Verbinden kann/möchte.
Hi, ich hab gestern Nacht um genau die gleiche Uhrzeit vor genau dem gleichen Problem gesessen. Die Lösung war bei mir dem Netzwerk Adapter in den Windows Systemeinstellungen manuell eine eigene IP aus einem anderen Adressbereich zuzuweisen (192.168.2.2) und dem Shield im Script eine passende (192.168.2.10). Damit lief es sofort.

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 01.10.2021 07:39:39
von F. Schn.
* In der Zusi-Liste von TCP-Clients taucht der Arduino nicht auf?
* Der Arduino wurde (neu)gestartet, nachdem Zusi gestartet und der TCP-Server aktiviert ist?
* Die Windows-Firewall hat Zusi bzw. den Port 1436 für öffentliche Netze freigegeben oder ist deaktiviert?

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 01.10.2021 09:26:58
von nonesense
_TheDragonRider_ hat geschrieben: 01.10.2021 00:35:40

Code: Alles auswählen

IPAddress ip(169, 254, 13, 140);                              //IP-Adresse vom Arduino Ethernet Shield
IPAddress server(169, 254, 13, 139);                          //IP-Adresse vom Zusi3-Rechner 

Code: Alles auswählen

Ethernet-Adapter Ethernet:

   Verbindungsspezifisches DNS-Suffix: fritz.box
   Verbindungslokale IPv6-Adresse  . : fe80::4ca9:f6a8:f7f8:d8b%12
   IPv4-Adresse (Auto. Konfiguration): 169.254.13.139
   Subnetzmaske  . . . . . . . . . . : 255.255.0.0
   Standardgateway . . . . . . . . . :

Code: Alles auswählen

Ping wird ausgeführt für 169.254.13.139 mit 32 Bytes Daten:
Antwort von 169.254.13.139: Bytes=32 Zeit<1ms TTL=128
Dein PC hat die *.139 und dein Arduino die *.140.
Wenn du "ping 169.254.13.139" eingibst, pingt der PC sich selber an. Natürlich funktioniert das.
Du musst "ping 169.254.13.140" eingeben.

Gruß
Jens

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 01.10.2021 10:56:36
von didig
Moin,

so mal beim überfliegen der letzten Beiträge:

also Netzwerktechnisch gesehen finde ich es bemerkenswert, dass Deine fritz.box eine Apipa Adresse hat und nicht das standardgateway ist oder eins eingetragen ist, wahrscheinlich dass vom speedport. Also hängt die fritzbox wahrscheinlich hinter dem speedport.

Ethernet-Adapter Ethernet:

Verbindungsspezifisches DNS-Suffix: fritz.box
Verbindungslokale IPv6-Adresse . : fe80::4ca9:f6a8:f7f8:d8b%12
IPv4-Adresse (Auto. Konfiguration): 169.254.13.139
Subnetzmaske . . . . . . . . . . : 255.255.0.0
Standardgateway . . . . . . . . . :

Drahtlos-LAN-Adapter WLAN:

Verbindungsspezifisches DNS-Suffix: Speedport_W_921V_1_46_000
Verbindungslokale IPv6-Adresse . : fe80::2de7:c813:a51b:644a%10
IPv4-Adresse . . . . . . . . . . : 192.168.2.102
Subnetzmaske . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . : 192.168.2.1

169.254.13.139 mit 32 Bytes Daten:

APIPA (Automatic Private IP Adressing) ist der Mechanismus, der einem Rechner eine Adresse aus dem Bereich 169.254. x.x vergibt, wenn dieser keine IP per DHCP bekommt. ... Wenn du also irgendwo eine IP-Adresse siehst, die mit 169.254 beginnt, ist der Rechner nicht mit einem DHCP-Server verbunden. Apipas sollte man in einem Netzwerk nach Möglichkeit vermeiden.

Also benötigst Du IPs aus 192.168.2.X würde ich hier mal so locker zum besten geben. ;) hattest Du ja auch schon mal !!

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 01.10.2021 13:11:46
von _TheDragonRider_
Hallo,

danke für eure Ratschläge, aber bisher hat noch nichts das gewünschte Ergebnis gebracht. Das Pingen mit der IP 169.254.13.140 war erfolgreich. Das ändern der IPs zu den von Arne genannten brachte nichts. Zusi war bei Kaspersky tatsächlich unter eingeschränkt gelistet, aber auch das Ändern auf vertrauenswürdig änderte nichts. Auch mit deaktivierter Firewall blieb das Ergebnis das selbe: Der serielle Monitor gibt etwa eine Sekunde nach dem Text "verbinden..." "Verbindung fehlgeschlagen" aus.

Gruß, Paul

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 01.10.2021 14:43:38
von nonesense
Ist es dir möglich QDmi mit Zusi zu verbinden? Das wäre ein netter Test, ob es an der Firewall liegt.
Wenn es nicht geht, poste mal, welche IPs unten links in QDmi angezeigt werden.

...In der Hoffnung, dass du ein Androidgerät hast.

Gruß
Jens

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 01.10.2021 14:54:57
von F. Schn.
didig hat geschrieben: 01.10.2021 10:56:36 Also benötigst Du IPs aus 192.168.2.X würde ich hier mal so locker zum besten geben. ;) hattest Du ja auch schon mal !!
Selbstverständlich solltest du NICHT dem LAN und dem WLAN IPs aus dem selben Subnetz geben, wenn diese nicht über Switche miteinander verbunden sind oder du ganz genau weißt, was du tust. (Ich gehe mal davon aus, dass didig das so meint, aber das ist IMHO missverständlich)

Du hast geschrieben, dass du irgend etwas geändert hast. Kannst du noch mal die aktuellen Ausgaben von ipconfig und von die aktuellen Angaben aus dem Quellcode des Arduino zeigen?

Ich nehme mal an, du hast den PC direkt mit einem Kabel an den Arduino angeschlossen, korrekt (zumindest lese ich das so aus deinem ersten Beitrag heraus)? Oder ist dort eine fritzbox dazwischen?

ZusiDisplay als externes Programm funktioniert?

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 01.10.2021 15:41:23
von _TheDragonRider_
Sowohl QDmi als auch ZusiDisplay (als externes Programm) funktionieren ohne Probleme (ZusiDisplay nutze ich häufige bei Loks ohne Ebula)

Zum Aufbau bezüglich des Netzwerks: Internet beziehe ich drahtlos über einen Devolo-Repeater welcher mit dem im Keller befindlichen Telekom-Router (Speedport) verbunden ist. Das Motherboard des PCs ist WLAN fähig. Der Arduino ist über Kabel direkt an die RJ45 Buchse des Motherboards angeschlossen.

Änderungen hab ich wieder Rückgängig gemacht, da sie nichts gebracht haben, weshalb wieder die 169 IPs mit Endung 139 und 140 zum Einsatz kommen.

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 01.10.2021 23:08:11
von Formsignal
Dann würde ich dir empfehlen sowohl deinem Zusi-Rechner, als auch dem Arduino manuell IP-Adressen in einem anderen Subnetz zu vergeben.

In deinem WLAN-Netzwerk ist es 192.168.2.x
In deinem "Zusi-Netzwerk" über Ethernet kannst du dann beispielsweise ein Netzwerk mit 192.168.4.x aufbauen (255.255.255.0 Subnetzmaske). Dem Zusi-Rechner kannst du beispielshaft 192.168.4.10 vergeben, dem Arduino 192.168.4.11.
Dann nochmal ein Ping-Test machen (vom PC aus versuchen die 192.168.4.11 zu erreichen).

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 01.10.2021 23:31:09
von _TheDragonRider_
Hab ich versucht, jetzt wird's aber etwas weird. Ich hab hab über die Systemsteuerung dem Ethernet-Port die vorgeschlagene IP vergeben im cmd-Fenster mit ipconfig hab ich die auch angezeigt bekommen. Ebenso hab ich sie in Zusi gefunden. Als ich nun die IPs im Arduino-Code verändert habe (Server ... .10 und Shield ... .11) konnte er sich immer noch nicht verbinden. Doch als ich im Netzwerkfenster in Zusi geschaut habe, waren da nur noch die 127er IP und die vom WLAN zu finden. Beim nachschauen in cmd stellte sich heraus, das der Ethernet-Port wieder die 169er IP hatte, welche dann auch beim Neustart von Zusi wieder zu sehen war. In der Systemsteuerung ist aber immer noch die manuell eingetragene IP zu finden. Irgendwas läuft hier schief oder ich bin einfach zu blöd meinen PC zu bedienen.

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 02.10.2021 10:45:53
von didig
Moin,

also wenn ich das jetzt richtig verstanden habe handelt es sich hier um einen PC mit zwei Netzwerkkomponenten:
Drahtlos-LAN-Adapter WLAN:

Verbindungsspezifisches DNS-Suffix: Speedport_W_921V_1_46_000
Verbindungslokale IPv6-Adresse . : fe80: c813:a51b:644a%10
IPv4-Adresse . . . . . . . . . . : 192.168.2.102
Subnetzmaske . . . . . . . . . . : 255.255.255.0
Standardgateway . . . . . . . . . : 192.168.2.1
Ethernet-Adapter Ethernet:

Verbindungsspezifisches DNS-Suffix: fritz.box
Verbindungslokale IPv6-Adresse . : fe80::4ca9:f6a8:f7f8:d8b%12
IPv4-Adresse (Auto. Konfiguration): 169.254.13.139
Subnetzmaske . . . . . . . . . . : 255.255.0.0
Standardgateway . . . . . . . . . :

Hast Du schon mal versucht, dem Ethernetadapter z.B. die IP: 192.168.2.10; 255.255.255.0 Standardgateway: 192.168.2.1 manuell zu vergeben und in den Einstellungen bei IP Erweitert nachgeschaut was und ob da noch ein DHCP aktiviert eingetragen ist???

Ganz wichtig nach all diesen Neueintragungen den Rechner einmal komplett runter und wieder hochfahren und dann erst mit ipconfig /all das Ergebnis überprüfen.

Um dann via Netzwerkkarte und Drahtlos-Lan-Adapter ins Internet zu kommen, wäre dann wohl noch ein bridgeing von Nöten, sollte jetzt hier aber nicht das Problem sein.
Wichtig ist es erste einmal den Pc netzwerktechnisch ohne APIPA in den Griff zu bekommen. Die 169.254. gehört wohl Microsoft und dient als letzte Krücke um ein unsauber konfiguriertes Netzwerk zum Laufen zu bekommen.

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 02.10.2021 11:58:20
von F. Schn.
didig hat geschrieben: 02.10.2021 10:45:53Hast Du schon mal versucht, dem Ethernetadapter z.B. die IP: 192.168.2.10; 255.255.255.0 Standardgateway: 192.168.2.1 manuell zu vergeben
Damit setzt du beide Adapter ins selbe Subnetz. Das solltest du natürlich nicht machen, sofern du nicht ganz genau weißt, was du da tust.
_TheDragonRider_ hat geschrieben: 01.10.2021 23:31:09 Ich hab hab über die Systemsteuerung dem Ethernet-Port die vorgeschlagene IP vergeben
Kannst du mal ein Screenshot davon zeigen?

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 02.10.2021 12:25:23
von didig
Natürlich soll er das in das selbe Subnetz setzen. Das wäre ja ersteinmal der einfachste Fall. Ins Internet käme er damit ohne bridgin via Ethernetkarte WlanKarte eh nicht. Warum also nicht????

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 02.10.2021 13:46:16
von _TheDragonRider_
Hab den Fehler gefunden:

Der Arduino hat sich versucht mit dem PC zu verbinden, bevor überhaupt die Ethernetverbindung bestand. Das das nicht funktionieren kann ist klar. Ist mir aufgefallen in den Netzwerkadaptereinstellungen, das beim Resetten des Arduino die Verbindung für etwa 10 Sekunden unterbrochen ist. Im Code versucht er halt direkt nach dem Reset sich zu verbinden. Nach dem ich einen Delay von 20 Sekunden direkt nach void setup eingefügt hatte, konnte er sich verbinden. Hätte ich auch vorher drauf kommen können wen ich die LEDs am RJ45-Anschluss Arduino beachtet hätte. Trotzdem Danke für die versuchte Hilfe.

Re: Der Ardunio und direkte Ausgaben vom ZusiServer über TCP

Verfasst: 11.10.2022 18:13:47
von Kevin1897
Servus Zusammen,

Mit dem Arduino wäre es technisch ja bestimmt möglich, dass der Akustische Melder der PZB90 (Schnarre) via Relais Angesteuert würde (von denen hätte Ich hier 2 Stück rumliegen...).

Gibt ZUSI überhaupt solch einen Befehl "Akustisch" überhaupt raus, welcher dann per Arduino ausgeführt würde?
Wie sollte dann der Arduino Befehl Aussehen?

Habe Nämlich mal das Dicke Handbuch durchgeschaut, aber die Einzelnen Schritte sind für mich nicht nachvollziehbar...