firmata/ConfigurableFirmata

Firmata USB Baud Fhem

Opened this issue · 12 comments

Hello, where do I set the baud rate in the configurable Firmata 3.2 if I want to send it to Fhem via USB?

Arduino Mega 2560

Sorry for the maybe silly question, but what is Fhem?
The communication baud rate is set in the main .ino file. The line reads something like Firmata.begin(115200). The number is the baud rate.

Fhem is a home automation system for a Raspberry or similar. https://de.m.wikipedia.org/wiki/FHEM Thanks for tip, now it works (was set to 56700 in fhem) so far except for i2c, the display shows no reaction. It works with the one old Arduino mega that was programmed with Firma Builder. It doesn't work with the Firmata V 3.2

Did you enable the i2c module?

It is possible that some changes on the host side are necessary, as there have been some changes to the i2c module. If I remember correctly, they should be backwards compatible, but obviously I couldn't test with all possible clients. Since it works with the older version, I suspect something like this.

Yes i2c is enabled in the sketch. FHEM shows that it is aviable on pin20/21.

Das deutet schon darauf hin, dass entweder eine notwendige Komponente nicht aktiv ist oder eine Protokoll-Inkompatibilität besteht. Ändere doch mal in FirmataExt.cpp die Ausgabe so ab:

Firmata.sendStringf(F("Unhandled sysex command: 0x%x (len: %d)"), (int)command, (int)argc);

Dann sehen wir besser, welches Kommando hier nicht verstanden wird.

Probiere ich die Tage mal.

Sorry, das hätte ich schreiben sollen. Ich meine die Funktion void handleSysexCallback(byte command, byte argc, byte* argv) in FirmataExt.cpp, Zeile 31.

Und ja, die Methode heist sendStringf (Im Gegensatz zu sendString erlaubt diese Funktion Argumente im printf-Stil)

Ich habe leider keine Arduinos mit Ethernet-Shield, sondern habe dann immer gleich ESP32 verwendet. Die haben Wifi schon eingebaut und kosten trotzdem deutlich weniger.

Du kannst versuchen, den in ConfigurableFirmata.ino vorhandenen WIFI-Code des ESP32 anzupassen, oder du kannst dieses ältere Beispiel ansehen, vielleicht findest du dort Hinweise darauf, wie du das Ethernet-Shield einsetzen kannst. Ich hatte das Beispiel rausgeworfen, weil ich es nicht testen kann und es wahrscheinlich so inzwischen auch nicht mehr kompiliert.