Firmata over Ethernet: Einbindung in Arduino

Begonnen von CaptBlaubaer, 27 Oktober 2013, 00:44:58

Vorheriges Thema - Nächstes Thema

sackCfix

Das Modul liegt in /FHEM, habe aber sicherheitshalber nochmal ein Update davon durchgeführt, bringt keine Änderung.
Werde FHEM nochmal auf einer neuen SD-Karte aufsetzen und schauen ob sich etwas ändert.

Andreas

sackCfix

Ok,
peinlicher Fehler, das USB-Kabel war wohl nicht das Beste, programmieren ging komischerweise, für Firmata reichte dann aber die Spannung nicht mehr.

Jetzt habe ich aber ebenfalls ein Problem mit dem RAM, nur mit DigitalI/O und FirmataExt funktioniert es, nehme ich noch 1Wire dazu passt der Versionstring im log nicht mehr, für 1Wire war das Board aber eigentlich gedacht. UDP ist bereits deaktiviert, gibt es noch etwas was man rauswerfen könnte?

Ansonsten muss ich mir doch einen größeren Arduino oder den W5100 kaufen.

Andreas

ntruchsess

was hast Du denn für einen Nano? Die Nano-clones gibt es sowohl mit ATmega168p und ATmega328p. Auf letzteren solle Digital+Analog+FirmataExt+OneWire+UIPEthernet eigentlich draufpassen, auf den 168p-basierten natürlich nicht.
while (!asleep()) {sheep++};

sackCfix

Hallo,

ist ein Nano mit 328P, bin inzwischen aber schon weiter. Die 1.5.5 IDE zeigt ja schön den RAM-Verbrauch an, habe nun 189 Bytes frei nachdem ich in der uipethernet-conf.h folgendes eingetragen habe:
#define UIP_CONF_UDP             0
#define UIP_CONF_BROADCAST       0
#define UIP_CONF_UDP_CONNS       0
#define UIP_UDP_NUMPACKETS       0

damit taucht er in FHEM auf, Digital I/O funktioniert auch, mit nur UDP und Broadcast auf Null waren 71 Bytes frei und der RAM wurde überschrieben.

Allerdings bekomme ich nun beim Reset des Arduino einen "unhandled sysex command" Fehler und OWX meldet "
error initializing: unsupported mode '7' for pin '8'".

Eine Idee woran das liegen könnte?

Danke,
Andreas

ntruchsess

oh, danke für den Hinweis mit dem Speicherverbrauch und UIP_CONF_UDP. Hab grade einen Fix in Master und Arduino_1.5.5-Branch committed, der dafür sorgt, dass UIP_CONF_UDP reicht um den Ram-verbrauch für UDP mit abzustellen. (Du musst jetzt nicht zwingend updaten, der Fix ist gleichwertig dazu die Werte für UDP_CONNS und UDP_NUMPACKETS auf 0 zu setzen).

Mode 7 steht für OneWire. Hast Du die vieleicht in der ConfigurableFirmata mit auskommentiert?

Du kannst den Ram-bedarf noch verringern, wenn Du in der uipethernet-conf.h die UIP_CONF_MAX_CONNECTIONS verringerst. Firmata macht ja grundsätzlich nur eine einzelne Verbindung zum FHEM auf da sollte im Prinzip der Wert 1 reichen. Mit UIP_SOCKET_NUMPACKETS kann man im Prinzip auch spielen. Welcher Wert hier minimal nötig ist, hängt aber stark davon ab, wie sich die Gegenstelle verhält, das müsste man ausprobieren.

Gruß,

Norbert
while (!asleep()) {sheep++};

sackCfix

Super,
jetzt läuft´s. OneWire war nicht auskommentiert, aber der RAM war wohl immer noch zu klein. Habe jetzt noch die NUMPACKETS auf 3 und MAX_CONNECTIONS auf 2 gesetzt, damit sind 660 Bytes frei und alles tut wie es soll.

Da jetzt alles läuft werd ich wohl ne Platine entwerfen die Nano und ENC aufnimmt und passende Klemmen für OneWire sowie I/Os und evtl. PWR-Supply bereitstellt.
Besteht an sowas denn Interesse? Hatte auch schon überlegt eine mit Mega328 und ENC komplett selbst zu designen, ist preislich aber nicht wirklich interessant.

Andreas

ntruchsess

Zitat von: sackCfix am 02 Februar 2014, 13:52:32Da jetzt alles läuft werd ich wohl ne Platine entwerfen die Nano und ENC aufnimmt und passende Klemmen für OneWire sowie I/Os und evtl. PWR-Supply bereitstellt.
Das fände ich cool. Willst Du den ENC plus Beschaltung und Netzwerkinterface direkt auf der Platine unterbringen?
while (!asleep()) {sheep++};

sackCfix

Hmm,
werde wohl eher auf die fertigen Module zurückgreifen, bei Bestellung in China kostete das letzte mal eines 2€, da lohnt sich selbermachen nicht.
Was für Anschlüsse sollte man denn vorsehen, OneWire über Klemmen, ADC und Digital I/O auch? Oder gleich Relais/MosFETS?

Muss wohl mal n bisschen überlegen.

Andreas

sackCfix

So,

habe mal eine Platine entworfen, warte noch auf die Bauteile, dann werde ich sie vorstellen.

Wollte den Arduino jetzt mal im Dauerbetrieb testen, allerdings friert er nach ein paar Stunden ein, erst ein Reset der Versorgungsspannung startet ihn wieder.
Bei jedem neuen anmelden an FHEM zeigt er außerdem ein "unhandled sysex command", könnte dass damit zusammenhängen und auf einen vollaufenden Speicher hindeuten?
Die IDE zeigt mir beim kompilieren 660 Bytes frei an, hat den schon jemand ähnliche Erfahrungen mit NANO+ENC gemacht oder verwenden alle andere Boards?

Achja, auch FHEM scheint mit Firmata ein Problem zu haben und hängt sich auf, habe testweise schon die OWX_async(normal, refactoring und nothread) ausprobiert, scheint keinen Unterschied zu machen.

Andreas

det.

ja, sorry, aus genannten Gründen füllt das Zeug bei mir eine Zigarrenkiste und hängt nicht mehr am Server. Das tut mir Leid für Norberts großartige Arbeit und hilft Dir auch nicht wirklich weiter, aber zaghafte Versuche in den vergangenen 2 Woche führten bei mir zu genau den Ergebnissen wie bei Dir - Resultat - ab in die Kiste. Meine Zeit ist allerdings auch sehr knapp und weggeworfen sind die Sachen ja damit nicht.
LG
det.

ntruchsess

#55
Zitat von: sackCfix am 09 Februar 2014, 15:22:18
Wollte den Arduino jetzt mal im Dauerbetrieb testen, allerdings friert er nach ein paar Stunden ein, erst ein Reset der Versorgungsspannung startet ihn wieder.
kannst du mal mit der UIPEthernet-Version 1.03 testen? https://github.com/ntruchsess/arduino_uip/releases/tag/UIPEthernet_v1.03

Nach der Version habe ich am Memory-handling größer was umgebaut (benutzt kein dynamisch allociertes Ram mehr), was eigentlich die Stabilität verbessern sollte. Ich würde gerne ausschließen, dass mit dem Umbau die Stabilität schlechter geworden ist.

Gruß,

Norbert
while (!asleep()) {sheep++};

strauch

Also bei mir funktioniert es "Problemlos" einzig mein FHEM zickt herum, ich muss ihn neustarten, dann muss ich auch 1x den Arduino abziehen und neustarten, sonst kontaktiert der mein FHEM nicht mehr. Ich weiß das ich mit der Version 1.52 Probleme hatte überhaupt zu kompilieren. Ich meine ich hab aktuell die Version 1.05
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

sackCfix

Ok,

habe jetzt mal Version 1.03 genommen, mal schauen ob es damit besser läuft.

@strauch: Welche Hardware verwendest du denn, ebenfalls Nano+ENC?

Andreas

Achim

Hallo,

ich bin auch gerade dabei, mit der Lösung Firmata, Nano und ENC mein FHEM zu erweitern. "Kurzzeitig" funktioniert die Anbindung. Längere Tests habe ich noch nicht gemacht. Ich bin gerade am Zusammenlöten der Ein/Ausgangsschaltungen.

Welche Firmata Module habt ihr in den Sketch kompiliert? Ich habe das Release
ZitatUIPEthernet_v1.52 - Arduino 1.5.5 and DUE Support
verwendet. Im Sketch ist 1-Wire und Analog/Digital In/Out. Vielleicht sind die Abstürze auch nur bedingt durch die Zusammenstellung verschiedener Firmatamodule.

Ich komme auf nur etwas knapp über 300 Byte freien Speicher

Viele Grüße
Achim


1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

ntruchsess

#59
Ich hab grade einen Bug im UIPEthernet gefunden und behoben, der dazu geführt hat, dass die UIPEthernet-Versionen neuer als 1.03 sich beim reconnecten aufhängen konnten. Die Empfehlung für Version 1.03 ist damit wohl obsolet.
Ist im aktuellen master und Arduino_1.5.5 branch enthalten. Neues Release kommt auch bald, muss noch ein Issue im UDP finden (sollte für Firmata nicht von Belang sein).

- Norbert
while (!asleep()) {sheep++};