Welcome to MattzoBricks › Forums › Switches › MQTT and Mosquitto Issues
- This topic has 21 replies, 4 voices, and was last updated 2 years, 3 months ago by Matthias Runte.
-
AuthorPosts
-
-
January 10, 2021 at 18:50 #1761Matthias RunteKeymaster
-
January 26, 2021 at 10:03 #2018MaxParticipant
Hallo Matthias,
mit deinen Videos auf YT hast du mich motiviert eine teilweise Digitalisierung der Legobahn von mir und meinen Kindern zu beginnen.
Angefangen habe ich mit einem SwitchController der bisher eine Weiche schalten soll.
Leider bewegt sich der Servomotor nicht. Ich habe in diesen Thread gepostet da ich aufgrund fehlender Kommunikation vermute, dass es sich um ein MQTT / Rocrail Problem handelt.
Die Ermittlung der Ursache jedoch der Reihe nach.– Rocrail und MQTT Server ist ein RPi3. Rocview läuft auf einem Windows PC.
Unter Rocrail -> Services ist der MQTT Service eingerichtet (getestet einmal mit 127.0.0.1, der IP des RPis und des Hostnames des RPis).
– Die Weiche ist in einem einfachen Gleisplan eingerichtet mit der Controller ID und der Portnummer 2.
– An dem Controller selbst ist der Servo an Port D1 angeschlossen.
Der Controller hängt an einem Netzteil für Smartphones (5V, 2.0A).Ändere ich den Status der Weiche mit einem Mausklick, bekomme ich folgende Log Meldungen:
– mosquitto_sub
Keine ausser PINGREQ und PINGRESP– mosquitto -v
Sending PINGRESP und Received PINGREQ to / from Controller.– Rocrail Server
0210126.105832.182 r9999I 768FF460 OSwitch 2150 switch [sw1] field event: state=straight(field:straight) gatevalue=1 inv=0 fieldstate=straight
20210126.105832.183 r9999I 768FF460 OSwitch 0180 CTC LED: m1=0 m2=0– In tcpdump schneide ich den Netzwerkverkehr zwischen MattzoController und RPi mit
Ich würde einen Befehl von MQTT zu Controller erwarten. Diesen sehe ich aber nicht.Wo könnte ich wohl nach dem Fehler schauen?
Vielen Dank für eure Hilfe!
Bitte bleibt an diesem großartigen Projekt dran!
Das ist eine Art Neudefinition von LegoCity Zug und ist einfach fantastisch!Grüße Max
- This reply was modified 3 years, 2 months ago by Max.
-
January 26, 2021 at 12:34 #2020MaxParticipant
Ich habe den Controller via USB am PC angebunden um via Arduino IDE Monitor die Ausgabe des Controllers zu prüfen. So wie es aussieht, empfängt der Controller die Kommandos und möchte den Servo stellen. Der Servo bewegt sich aber nicht.
Received MQTT message [rocrail/service/command]: <sw id=”sw1″ cmd=”straight” manualcmd=”true” forcecmd=”false” controlcode=”” slavecode=”” server=”infw76300B2C” iid=”” prot=”D” uidname=”” bus=”0″ addr1=”38853″ port1=”1″ gate1=”0″ param1=”58″ value1=”85″ delay=”500″ actdelay=”true” singlegate=”false” accessory=”true” porttype=”0″ decid=””/>
Parsing XML successful.
<sw> node found.
addr1: 38853
port1: 1
cmd: straight
param1: 58
value1: 85
Turning servo on port 1 to angle 58Spätestens jetzt bin ich jedoch komplett überfragt.
-
January 26, 2021 at 19:32 #2021Thorsten SchmitzParticipant
Hallo Max, Das Servothema ist leider manchmal etwas frustrierend. Von meiner Warte aus ist das Setting richtig. Haben die Servos genug Power? Rot und Schwarz müssen 5V haben. Der Gelbe(oder Weiße) muss mit Pin D0 verbunden sein. (und läuft mit 3.3 V des Controllers)
-
January 26, 2021 at 20:58 #2024MaxParticipant
Hallo Thorsten,
vielen Dank für dein Feedback!
Ich werde morgen mal mit einem Digitalmultimeter messen. Dann sollte ich mehr Infos liefern können. -
January 27, 2021 at 09:17 #2031MaxParticipant
Hallo nochmal!
Bitte entschuldigt, wenn ich es euch nicht leicht mache!
Ich habe folgendes gemessen:
An VIN und G liegen ~1.9V an. Hier ändert sich auch nichts wenn eine Weiche geschaltet wird.
An D0 liegen ~0.2V an. Hier gibt es eine kurze Schwankung (+/- 0.1V) wenn geschaltet wird. 3.3V werden jedoch nicht erreicht.
Das Verhalten kann an D1 reproduziert werden. Also wird je nach Port in Rocrail schon der korrekte DX angesteuert.
Nur nicht mit genug Spannung.
An 3V und G liegen 3.3V an.Habe ich unter Umständen ein ungeeignetes Board erwischt?
Es ist ein “NodeMCU Lolin V3 Module ESP8266 ESP-12F WIFI Wifi” von AZDelivery. -
November 18, 2021 at 09:59 #3908Max T.Participant
Hallo Max,
mir geht es leider ähnlich ich hatte zuerst riesige Probleme die Firmware auf die Controler zu bekommen (Matthias hat mir dankbarerweise mit allen notwendigen libaries ausgeholfen), beim ESP32 ist mir das auch noch nicht gelungen aber einen Mattzo Switch Controller habe ich mittlerweile bespielt bekommen, er meldet sich laut router auch im Netzwerk an…
Mosquitto 2.0.12 und Rocrail habe ich trotz aller mosquitto.conf datei-Änderungen nicht zum laufen bekommen. Ich habe jetzt mosquitto 1.6.9 installiert und Rocrail zeigt auch keine Fehler mehr.
Im Gleisplan habe ich eine Weiche angelegt und diese entsprechend den Angaben hier eingestellt:
https://mattzobricks.com/de/automation/controllers/mattzoswitchcontroller
Die MattzoID habe ich auch über Arduino ermittelt bekommen.
Die Spannung von Vin auf GND beträgt 4,4V das sollte also passen.
Die Spannung von GND auf D0 bleibt unverändert auf 0,2V egal was ich in Rocrail klicke.
Ich vermute also das das Schaltsignal gar nicht erst am Controler ankommt. Gibt es da eine Möglichkeit den Weg des Signals zu verfolgen um zu ermitteln wo es verloren geht?Besten Dank T-Max
-
November 18, 2021 at 10:50 #3909Matthias RunteKeymaster
Beobachte zunächst mal die Status-LED vom Controller. Wie man die anschließt ist in den Schaltplänen zu sehen. Diese muss ein paar mal blinken und dann ausgehen. Eine blinkende Status LED signalisiert kein Wifi bzw. keine Verbindung zum MQTT Server.
Hilfreich ist der Debug-Mode von mosquitto (mosquitto -c mosquitto-conf -v bzw. einfach mosquitto -v). Wenn dort keine Nachrichten auflaufen, wenn Du in Rocrail etwas tust, hast Du vermutlich keine Verbindung zum MQTT Server in Rocrail – entweder ein Konfigurationsproblem oder Deine Firewall macht Ärger.
Wenn auf dem MQTT etwas ankommt, würde ich als nächstes die Firmware mit Serial Debug Level “DEBUG” kompilieren, den Controller per USB am Rechner lassen und die Debug-Nachrichten an der Arduino-Konsole ansehen. Dort siehst Du, ob Kommandos von Rocrail eintreffen und wie diese verarbeitet werden.
-
November 18, 2021 at 17:51 #3910
-
-
November 18, 2021 at 19:35 #3911Max T.Participant
Also der Tipp von Matthias mit mosquitto debug-mode war glaube ich nicht schlecht, wenn ich das über cmd mache kommt das:
C:\Program Files\mosquitto>mosquitto -v
1637258846: mosquitto version 1.6.9 starting
1637258846: Using default config.
1637258846: Opening ipv6 listen socket on port 1883.
1637258846: Error: Normalerweise darf jede Socketadresse
esse oder Anschluss) nur jeweils einmal verwendet werden.Wenn ich das “Problem” google kommen viele Foreneinträge von Leuten die ihren eigenen Server programmieren, habt ihr eine Idee was da schief läuft bei meinem mosquitto.
By the Way:
Ich habe für das Mattzo-Projekt hier einen eigenen separaten Laptop in Benutzung, auf dem Rocrail mosquitto und arduino läuft; Windows7, Win-Firewall deaktiviert, kostenloses avira ohne firewall… -
November 18, 2021 at 20:49 #3912Matthias RunteKeymaster
Deinstallier mal mosquitto 2.0 wieder… 🙂
Da läuft noch etwas anderes auf dem MQTT Port, vermutlich der mosquitto 2.0 Service.
- This reply was modified 2 years, 4 months ago by Matthias Runte.
-
November 18, 2021 at 22:57 #3926Max T.Participant
Wieder genau der richtige Tipp, der mosquitto lief schon als automatisch gestarter Windows Dienst, habe den Windowsdienst gestoppt und mosquitto über mosquitto -v gestartet.
Die gute Nachricht:
Die Signale die auf dem Rocrail server laufen, werden so ähnlich auch auf dem mosquitto angezeigt, da scheint sich also etwas zu tun.
Also habt ihr völlig recht der Fehler liegt wohl eher in der Software auf dem ESP8266 oder in der Verkabelung.
Die Verkabelung habe ich mehrfach geprüft. Müsste stimmen.
Zur roten LED die ich gemäß Schaltplan angeschlossen hab: Beim Starten tut sich da aber gar nichts, ich bekomme sie aber zum blinken wenn ich zum Beispiel die gemeinsame Masseversorgung (vom Board kommend) des Servos und der LED wegnehme. Die Masse der LED wird dann offensichtlich nur noch aus der Masse des Servos versorgt, der wiederum dann eigentlich nur noch an + hängt und irgendwelche Ströme zieht. Ich hoffe das macht halbwegs Sinn was ich da schreibe.Eine Frage zu meinem nächsten Task:
“die Firmware mit Serial Debug Level “DEBUG” kompilieren”
Ich habe mit der 8266 libary 3.0.2 gearbeitet weil die 2.7.4, wie auf der homepage beschrieben, beim kompilieren immer in Fehler gelaufen ist. Als Board habe ich in ardunino “NodeMCU 1.0 (ESP-12E Module)” gewählt und alle Einstellungen so belassen.
Was muss ich jetzt tun? Bei den Board Einstellungen gibt es noch “Debug port:” der steht auch “Disabled”, muss ich den auf “Serial” stellen? Eins drunter gibt es dann noch “Debug Level:”, da gibt es eine ganze Reihe an Auswahlmöglichkeiten aber kein “DEBUG”
Brauche ich noch andere Libaries dazu? Z.b. “SerialDebug” von Joao Lopes.Ihr seht bin da gerade etwas lost, lerne hier aber jeden Tag gerade mächtig dazu, dafür und für die Hilfe schon mal danke.
-
November 19, 2021 at 15:46 #3932MaxParticipant
Generell nochmal zum Thema Software / Verkabelung:
Schau ob du den Code auf einem gleichen, nackten Board fehlerfrei compilieren kannst.
Damit solltest du Fehler in der Verkabelung nachgehen können.Debug:
Port – Serial definieren
Level – 1. generell gilt, je weniger desto einfach zu lesen 2. wenn man nicht weiß was man angeben soll / kann, mehr wählenJetzt gehts ans eingemachte. Du benötigst:
1. Debug aus Arduino IDE -> was empfängt / verarbeitet das Board
2. MQTT Log -> was empfängt / verarbeitet MQTT
3. Rocrail -> was empfängt / verarbeitet RocrailSchau mal ob hier das Log Rocrail -> MQTT -> Board soweit passt.
-
-
November 25, 2021 at 09:15 #3935Max T.Participant
Sorry hat etwas gedauert, Herbstzeit ist Erkältungszeit.
Ich habe den Controller mit Serial gedebugt.
Der Serielle Monitor loggt folgendes:MattzoController booting…
Loaded mattzoControllerId from EEPROM: 44066
Connecting as MattzoSwitchController44066 to Wifi —SSID—
fpm close 3
mode : sta(c4:5b:be:61:63:94)
add if0
.
MattzoController setup completed.
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 2
cntconnected with —SSID—, channel 11
dhcp client start…
ip:192.168.2.113,mask:255.255.255.0,gw:192.168.2.1
Wifi connected. My IP address is 192.168.2.113.
(Re)connecting to MQTT localhost…
Failed to connect to mqtt, state=-2
(Re)connecting to MQTT localhost…
Failed to connect to mqtt, state=-2
…Der Teil wiederholt sich ständig:
(Re)connecting to MQTT localhost…
Failed to connect to mqtt, state=-2Das ist schlecht vermute ich mal. Habt ihr eine Idee?
Problem mit der MattzoController_Network_Configuration.h?
Dort habe ich meine SSID sowie das WLAN Passwort eingetragen sowie:
const char* MQTT_BROKER_IP = “localhost”;
const int MQTT_BROKER_PORT = 1883;für das OTA password habe ich noch etwas eingetragen aber das spielt akutell keine Rolle vermute ich mal.
Wie gesagt der Rooter zeigt das ein geräte mehr angemeldet ist sobald der Controler Strom hat.
-
November 25, 2021 at 12:27 #3936Matthias RunteKeymaster
Das Problem ist:
const char* MQTT_BROKER_IP = “localhost”Hier musst Du die IP-Adresse eintragen, auf dem der MQTT läuft, z.B.:
const char* MQTT_BROKER_IP = “192.168.1.100”
oder wie auch immer die Adrese von Deinem Rechner lautet.
Gruß,
Mattze -
November 25, 2021 at 13:49 #3937Max T.Participant
Macht Sinn jetzt wie du das so schreibst 🙂
Männer ich bin gerade total aus dem Häuschen die Weiche schaltet, nach Monaten der erste Erfolg, es tut sich was.
Ich habe die Weiche in Rocrail jetzt so gut es ging eingestellt:
Parameter 50 und Wert 82.
Mit 82 läuft der Servo (Trixbrix für Lego Weiche) exakt an den Anschlag.
Mit 50 fährt er auf der anderen Seite allerdings nur bis 2mm vor dem Anschlag. Sobald ich einen Wert kleiner 50 eingebe fährt er nur noch ein kleines Stück von der 82er Postion weg. Das Verstehe ich nicht ganz, welche Logik steckt hinter diesen Werten?
Die Weiche schalten mit dem Wert 50 gerade so, dass heißt es dauert ca. 1-2 Sekunden bis die kleine Feder in der Weiche noch mithilft dass die Weiche gerade so überschnappt.Ansonsten bin ich jetzt erstmal happy und wage mich jetzt nochmal an den Powered up controller auf dem ESP32. Nicht ganz unwahrscheinlich, dass ich dazu bald wieder im entsprechenden Forum melden.
Danke.
-
November 25, 2021 at 15:24 #3938Matthias RunteKeymaster
In der MattzoLayoutController.ino findest Du folgenden Abschnitt:
// Default values for TrixBrix switches (in case servo angles are not transmitted)
const int SERVO_MIN_ALLOWED = 50; // minimum accepted servo angle from Rocrail. Anything below this value is treated as misconfiguration and is neglected and reset to SERVO_MIN.
const int SERVO_MIN = 75; // a good first guess for the minimum angle of TrixBrix servos is 70
const int SERVO_START = 80; // position after boot-up. For TrixBrix servos, this is more or less the middle position
const int SERVO_MAX = 85; // a good first guess for the maximum angle of TrixBrix servos is 90
const int SERVO_MAX_ALLOWED = 120; // maximum accepted servo angle from Rocrail. Anything above this value is treated as misconfiguration and is neglected and reset to SERVO_MAX.Um kleinere Werte als 50 zu erlauben, ändere bitte den Wert von SERVO_MIN_ALLOWED. Ich habe diese Parameter als Sicherheit eingeführt, damit unsere User nicht zu viele Weichenmotoren versehentlich verheizen. Gut zu wissen, dass es doch Situationen gibt, in denen kleinere Winkel als 50 notwendig sind. Ich passe den Standard-Wert für die Firmware 0.5 mal auf 45 an.
Ab Firmware 0.5 werden die Servos voraussichtlich nach ein paar Sekunden ohnehin abschalten und keine Stellkraft mehr erzeugen.
-
November 25, 2021 at 17:35 #3939Max T.Participant
45 ist perfekt. Funktioniert jetzt super. Weiche schaltet auch perfekt.
-
December 10, 2021 at 22:40 #4047Max T.Participant
@Mattze:
als Ergänzung ich hatte gerade eine Trixbrix Motor wo ich beim min. value sogar auf 35 runter musste.-
December 11, 2021 at 08:25 #4048Matthias RunteKeymaster
Danke für die Info. Schau mal, ob der Arm richtig eingebaut wurde. Ggf. den Stellhebel mal aufnehmen und um ein Ritzel verdreht wieder einsetzen.
-
-
-
-
November 25, 2021 at 19:44 #3941Matthias RunteKeymaster
Das freut mich und das Team! Viel Erfolg noch weiterhin!
-
-
AuthorPosts
- You must be logged in to reply to this topic.