Firmata - Device toggelt zwischen Connected und Listening

Begonnen von Mazz78, 23 Mai 2020, 11:16:48

Vorheriges Thema - Nächstes Thema

Mazz78

Hallo zusammen,

kann mir jemand Tipps geben zum Thema ConfigurableFirmata ?

Was hab ich an Hardware...
- Arduino Nano 328
- Ethernet Shield ENC28J60 Clone
- Ethernet Shield WIZ5100 Mini red

- ConfigurableFirmata Sketch v2.10
- perl-firmata-0.65 (warum wird im Device als Driver Version 0.64 angezeigt ? ???)

Nach anfänglichen Schwierigkeiten hab ich nun mein Firmata Device soweit, dass es zumindest mal ab und zu connected zeigt

Hier das aktuelle Verhalten...
1. Der State toggelt alle 5 sek zwischen connected und listening
2. Die verfügbaren Pins werden nicht angezeit

3. Das angeschlossene 8-Relais-Board macht kein Mucks

Verständnisfragen:
1. Die verfügbaren Pins sollten auch alle angezeigt werden wenn sie nicht (alle) verkabelt sind, oder ?
2. Ich hab zwar den Port 3030 im Sketch konfiguriert, aber wie kann ich kontrollieren ob das überall passt ?
    bzw wo muss ich überall änderungen vornehmen ?
    Ich verwende eine FritzBox und Norton

Zuerst dachte ich dass der ENC28J60 nicht "stabil" läuft und hab mir dann den W5100 besorgt.
Aber das genennte Verhalten ist bei beiden Ethernet Shields gleich

Das ist mein erstes Projekt mit Firmata
Kann mir jemand Tipps dazu geben?

Hier der Sketch exemplarisch für den W5100

[b]
#include "ConfigurableFirmata.h"

#include <SPI.h>
#include <Ethernet.h>[/b]


#if defined ethernet_h || defined UIPETHERNET_H || defined _YUN_CLIENT_H_
#define NETWORK_FIRMATA

// STEP 2 [REQUIRED for all boards and shields]
// replace with IP of the server you want to connect to, comment out if using 'remote_host'
[b]#define remote_ip IPAddress(192, 168, 178, 35)[/b]
// OR replace with hostname of server you want to connect to, comment out if using 'remote_ip'
// #define remote_host "server.local"

// STEP 3 [REQUIRED unless using Arduino Yun]
[b]// Replace with the port that your server is listening on
#define remote_port 3030[/b]

// STEP 4 [REQUIRED unless using Arduino Yun OR if not using DHCP]
// Replace with your board or Ethernet shield's IP address
// Comment out if you want to use DHCP
[b]#define local_ip IPAddress(192, 168, 178, 66)[/b]

// STEP 5 [REQUIRED unless using Arduino Yun]
// replace with Ethernet shield mac. Must be unique for your network
[b]const byte mac[] = {0x90, 0xA2, 0xDA, 0x0D, 0x07, 0x66};[/b]
#endif

/*==============================================================================
   FIRMATA FEATURE CONFIGURATION

   Comment out the include and declaration for any features that you do not need
   below.

   WARNING: Including all of the following features (especially if also using
   Ethernet) may exceed the Flash and/or RAM of lower memory boards such as the
   Arduino Uno or Leonardo.
  ============================================================================*/

[b]#include <DigitalInputFirmata.h>
DigitalInputFirmata digitalInput;

#include <DigitalOutputFirmata.h>
DigitalOutputFirmata digitalOutput;[/b]

//#include <AnalogInputFirmata.h>
//AnalogInputFirmata analogInput;

//#include <AnalogOutputFirmata.h>
//AnalogOutputFirmata analogOutput;

//#include <Servo.h>
//#include <ServoFirmata.h>
//ServoFirmata servo;
//// ServoFirmata depends on AnalogOutputFirmata
//#if defined ServoFirmata_h && ! defined AnalogOutputFirmata_h
//#error AnalogOutputFirmata must be included to use ServoFirmata
//#endif

//#include <Wire.h>
//#include <I2CFirmata.h>
//I2CFirmata i2c;

//#include <OneWireFirmata.h>
//OneWireFirmata oneWire;

//// StepperFirmata is deprecated as of ConfigurableFirmata v2.10.0. Please update your
//// client implementation to use the new, more full featured and scalable AccelStepperFirmata.
//#include <StepperFirmata.h>
//StepperFirmata stepper;

//#include <AccelStepperFirmata.h>
//AccelStepperFirmata accelStepper;

//#include <SerialFirmata.h>
//SerialFirmata serial;

//#include <FirmataExt.h>
//FirmataExt firmataExt;

//#include <FirmataScheduler.h>
//FirmataScheduler scheduler;

// To add Encoder support you must first install the FirmataEncoder and Encoder libraries:
// https://github.com/firmata/FirmataEncoder
// https://www.pjrc.com/teensy/td_libs_Encoder.html
// #include <Encoder.h>
// #include <FirmataEncoder.h>
// FirmataEncoder encoder;

/*===================================================================================
   END FEATURE CONFIGURATION - you should not need to change anything below this line
  ==================================================================================*/
...
usw... (ab hier gekürzt)


Und hier das List


Internals:
   CONNECTS   2
   DEF        3030 global
   DRIVER_VERSION 0.64
   DeviceName 3030
   FD         4
   FUUID      5eb9aec1-f33f-10a4-1131-dd9d8d15bf630385
   NAME       FIRMATA_66
   NOTIFYDEV  global
   NR         789
   NTFY_ORDER 50-FIRMATA_66
   PORT       3030
   SETUP_STAGE 2
   SETUP_START 1590180068.33373
   SETUP_TRIES 2
   STATE      connected
   TYPE       FRM
   firmware   ConfigurableFirmata.ino
   firmware_version V_2_10
   protocol_version V_2_06
   READINGS:
     2020-05-22 22:41:05   state           connected
   SocketDevice:
     BUF       
     DeviceName 3030
     FD         25
     NAME       FIRMATA_66_192.168.178.66_49169
     NR         806
     PEER       192.168.178.66
     PORT       49169
     SNAME      FIRMATA_66
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FRM
     READINGS:
       2020-05-22 22:41:05   state           Connected
Attributes:
   sampling-interval 3000



   Internals:
   DEF        05
   FUUID      5eb9aed6-f33f-10a4-82b6-d4d7f25a4f2b6783
   IODev      FIRMATA_66
   NAME       Firmata_66_OUT
   NR         790
   STATE      defined
   TYPE       FRM_OUT
   READINGS:
     2020-05-22 22:42:13   state           defined
     2020-05-20 14:01:47   value           on
Attributes:
   IODev      FIRMATA_66
   alias      Relais_06
   stateFormat value
RaPi 4 / Buster / FHEM 6
CUL868 / JeeLink868
Banana M1 (Bananian) + ser2net + Stiebel Eltron LWZ403
FIRMATA -> Gartenbewässerung /-licht
ALEXA

Mazz78

#1
Hallo,

so...
Ich hab das Thema ConfigurableFirmata über Bord geworfen.  :-\

Mein Setup läuft jetzt. ;D

Hardware:
- Arduino Nano
-WIZ5100 Mini red
- 8-Relay-Board

Was hab ich gemacht...:
1. Im FHEM (Raspi) via WinSCP den vorhandenen Firmata Ordner durch die perl-firmata v0.65 ausgetauscht.
2. Den Sketch mit Hilfe des Firmata Builder http://firmatabuilder.com/ generiert
3. Definieren des Firmata Device lt. FHEM Wiki

Jetzt sieht das so aus wie im Screenshot und das Ralais schaltet  ;D

Was der Error "Unhandled sysex command macht weiß ich grad noch nicht, aber das Relais schaltet zumindest
RaPi 4 / Buster / FHEM 6
CUL868 / JeeLink868
Banana M1 (Bananian) + ser2net + Stiebel Eltron LWZ403
FIRMATA -> Gartenbewässerung /-licht
ALEXA

Hardy62

#2
Hallo Mazz78,
habe auch das Problem mit Firmata; bei mir hängt auch alle Nas'lang das Teil ab...

Bist Du zwtzl. schon schlauer geworden ? Auch was die Meldung "Unhandled sysex command" betrifft?
Signalduino 433, Intertechno, ISK Zähler mit SML für Verrechnungszähler, Solarmax, ConfigFirmata, ARDMega&Nanos,DS18B20,DHT22,I2C, BME280,S0 Zählimpulse(Stro,Ga,Wa),SDS011 FeinstaubS,Sonoffs,Shellys,Text2Speech,UBA Luftd,Corona-Arc-GIS,RadonEye,CO2-Mess,Ecoflow D2,PV-Überschuß m PID-Regler Heizst

rob

bzgl. sysex command finde ich diesen Post hilfreich: https://forum.fhem.de/index.php/topic,117068.msg1115007.html#msg1115007 → scheint also nicht die Ursache, sondern nur eine Randerscheinung :) Laut Sketch oben ist alles mögliche deaktiviert, ich meine da kommt das her.

Configurable Firmata habe ich in drei Varianten im Einsatz: USB, LAN und Wifi. Ihr habt beide anscheinend verschiedene Hardware (LAN vs. Wifi), was sich vielleicht nicht direkt vergleichen lässt bzgl. Fehlersuche.

Mit Testaufbau als LAN-Variante (Wiz5500) hatte ich auch dauernd reconnects. Dachte es liegt an der fliegenden Verdrahtung oder am RST-Pin für den Wiz5500. Es war der große Flatterich. Ping wollte, dann wieder nicht.
Ich habe den Beispiel-Sketch Webserver geflasht, wo alles klappte. Also lag es nicht an der Hardware. Beim Compilieren/Testing war mir aufgefallen, dass der selbe Standard-Sketch mein Wiz5500 nicht initialisieren wollte, den ich für Wifi und USB genauso schon verwendet hatte.
Dann im Sketch ein paar Serial Prints zum Testen genau da rein, wo Netzwerk-Krams passiert - es wurde nie ausgeführt, Serial Monitor leer.
Zum Schluss stellte ich fest, dass alles zw. "#if defined ... #endif" auch dann nicht ausgeführt wird, wenn es definitiv zutrifft, also wahr ist (#include <Ethernet.h>) und nahm das if-Zeug schrittweise weg (#ifdef bla bla) und setzte damit alles fix, was sich um Ethernet kümmert.

Erst damit klappte die Verbindung auf Anhieb und seit dem stabil (3/4 Jahr). Vielleicht hier auch das Problem. Warum der Standard-Sketch nicht funktionierte und die #ifdef-Anweisungen nicht greifen, habe ich nicht verstanden. Vielleicht hat ein Update was zerschossen - aber das hätte anderen auch auffallen müssen  :-\

Mit dem Wemos D1 hatte ich das Problem damals nicht. Das lief jahrelang als Garagentoraktor. NodeMCU sollte eigentl. genauso wenig zicken.

Ich kann beide Sketches zur Verfügung stellen - dann lässt sich ggf. damit testen.

VG
rob

presskopf

Ich hoffe, es ist okay, wenn ich diese Leiche fleddere.
Mein Problem ist ziehmlich genau das im erste Post beschriebene und weitere Threads mit ähnichem Thema gibts nicht.

Also ich habe ein W5500 vorliegen, genau genommen zwei, aber verschiedene - dazu später mehr.
https://www.amazon.de/gp/product/B0B1VGP2S3/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1 bzw.
https://www.aideepen.com/products/for-arduino-w5500-ethernet-network-modules-for-arduino-tcp-ip-51-stm32-spi-interface-3-3v-5v-i-o-mcu

Ich möchte ein Frimata-Interface aufsetzen mit digital Pins, ggfs. noch Onewire. Das passt noch in den Sketch für einen Arduino UNO. Viel mehr geht nicht aber mehr brauche ich nicht.

Probiert habe ich nun schon alle möglichen Libraries:
Ethernet, Ethernet2, Ethernet3, Ethernet_Generiic

Firmata wurde ordnungsgemäß aus cpan geupdated.

Das Problem ist, dass die Verbindung connected und gleich wieder zusammenbricht. Manchmal werden die verfügbaren Pins angezeigt - nur um gleich wieder zu verschwinden.
So sieht das bei verbose 5 im Firmata-Device aus:
2022.11.04 12:51:14 3: Firmata.152: querying Firmata versions
2022.11.04 12:51:14 5: Firmata.152 FRM:>f90000
2022.11.04 12:51:14 5: Firmata.152 FRM:>f079f7
2022.11.04 12:51:15 5: Firmata.152: setup stage 1
2022.11.04 12:51:15 5: Firmata.152: setup stage 1
2022.11.04 12:51:16 4: Connection accepted from Firmata.152_192.168.0.152_49309
2022.11.04 12:51:16 5: Firmata.152: FRM_DoInit
2022.11.04 12:51:16 5: Firmata.152 FRM:>ff
2022.11.04 12:51:16 5: Firmata.152: setup stage 1
2022.11.04 12:51:16 1: 3030 disconnected, waiting to reappear (Firmata.152_192.168.0.152_49309)
2022.11.04 12:51:16 5: Firmata.152: setup stage 1
2022.11.04 12:51:16 5: Firmata.152: setup stage 1
2022.11.04 12:51:16 5: Firmata.152: setup stage 1
2022.11.04 12:51:17 5: Firmata.152: setup stage 1
2022.11.04 12:51:17 5: Firmata.152: setup stage 1
2022.11.04 12:51:17 5: Firmata.152: setup stage 1
2022.11.04 12:51:17 5: Firmata.152: setup stage 1
2022.11.04 12:51:17 5: Firmata.152: setup stage 1
2022.11.04 12:51:17 5: Firmata.152: setup stage 1
2022.11.04 12:51:17 5: Firmata.152: setup stage 1
2022.11.04 12:51:17 5: Firmata.152: setup stage 1
2022.11.04 12:51:18 5: Firmata.152: setup stage 1
2022.11.04 12:51:19 5: Firmata.152: setup stage 1
2022.11.04 12:51:19 3: Firmata.152: querying Firmata versions
2022.11.04 12:51:19 5: Firmata.152 FRM:>f90000
2022.11.04 12:51:19 5: Firmata.152 FRM:>f079f7
2022.11.04 12:51:20 5: Firmata.152: setup stage 1
2022.11.04 12:51:20 5: Firmata.152: setup stage 1
2022.11.04 12:51:21 4: Connection accepted from Firmata.152_192.168.0.152_49310
2022.11.04 12:51:21 5: Firmata.152: FRM_DoInit
2022.11.04 12:51:21 5: Firmata.152 FRM:>ff
2022.11.04 12:51:21 5: Firmata.152: setup stage 1
2022.11.04 12:51:21 1: 3030 disconnected, waiting to reappear (Firmata.152_192.168.0.152_49310)
2022.11.04 12:51:21 5: Firmata.152: setup stage 1
2022.11.04 12:51:21 5: Firmata.152: setup stage 1
2022.11.04 12:51:21 5: Firmata.152: setup stage 1
2022.11.04 12:51:22 5: Firmata.152: setup stage 1
2022.11.04 12:51:22 5: Firmata.152: setup stage 1
2022.11.04 12:51:22 5: Firmata.152: setup stage 1
2022.11.04 12:51:22 5: Firmata.152: setup stage 1
2022.11.04 12:51:22 5: Firmata.152: setup stage 1


List Firmata-Device:
Internals:
   CFGFN     
   CONNECTS   295
   DEF        3030 global
   DRIVER_VERSION 0.69
   DeviceName 3030
   FD         17
   FUUID      6364f5a9-f33f-b9af-2562-338fecf2822798d4
   LAST_RECEIVED 2022-11-04 12:52:21
   NAME       Firmata.152
   NOTIFYDEV  global
   NR         557
   NTFY_ORDER 50-Firmata.152
   PORT       3030
   SETUP_STAGE 1
   SETUP_START 1667562741.83154
   SETUP_TRIES 1
   STATE      connected
   TYPE       FRM
   eventCount 597
   READINGS:
     2022-11-04 12:52:21   state           connected
   SERIAL:
   SocketDevice:
     BUF       
     DeviceName 3030
     NAME       Firmata.152_192.168.0.152_49322
     NR         881
     PARTIAL   
     PEER       192.168.0.152
     PORT       49322
     SNAME      Firmata.152
     SSL       
     STATE      disconnected
     TEMPORARY  1
     TYPE       FRM
     eventCount 1
     READINGS:
       2022-11-04 12:52:21   state           disconnected
Attributes:
   verbose    5


Angeschlossen:
10 - SCS
11 - MOSI
12 - MISO
13 - SCLK
RST - RST
Voltage 3.3 und 5 V, geht beides

Der Webserver aus den Beispielen geht, z.B. Ethernet2.h
Ping geht natürlich auch stets.

So, und das zweite Seltsame ist:
Wie oben beschrieben habe ich noch einen zweiten W5500, nämlich diesen als Arduino-UNO-Verschnitt von Keyestudio:
https://www.amazon.de/gp/product/B07DQML86K/ref=ppx_yo_dt_b_asin_title_o02_s01?ie=UTF8&psc=1
Da funktioniert alles einwandfrei.


So langsam bin ich mit meinem Latein am Ende (naja, das ist eh bescheiden).
Hat jemand noch eine Idee, was man tun könnte, um den Ethernet-Adapter mit Firmata zum Laufen zu bringen?

presskopf

Ich habe nun nochmal rumprobiert und das Ding läuft mit der normalen Ethernet.h.
Keine Ahnung, was da falsch lief. Dutzende Male geflasht - immer mit dem beschriebenen Problem.
Jetzt rennt das Ding.
Ich tät den Fehler gerne reproduzieren, um schlau draus zu werden, bin aber erst mal "fertig".  ;D :o ::)

presskopf

Muss nochmal fleddern.
Mir ist nun aufgefallen - nach Stromausfall - dass der Uno+W5500 mit Firmata nicht reconnected, wenn die Verbindung unterbrochen war. Ich muss manuell ausschalten und wieder einschalten.
Strange, mit dem alten Ethernet-Shield und dem oben beschriebenen Arduino-Verschnitt (mit W5500-onboard) klappt der Reconnect einwandfrei.

@rob wie ist das bei Deinem Setup? Kannst Du Deinen Sketch zum Vergleich zur Verfügung stellen?

VG
Matthias

Maista

Moin

Im BSB-LAN Bereich wird ein ArduinoMega (alte Version) mit LAN-Shield verwendet.
Irgendwann hat man festgestellt das auf diversen LAN-Shields falsche Abschluss-Widerstände (50 Ohm / 100 Ohm) bestückt wurden oder immer noch werden!
Eventuell hier mal in die Doku zu BSB-LAN schauen.

Gruß Gerd

PS: hatte Anfangs Firmata mit LAN am laufen. War aber nicht stabil (2015).
Mit USB seither keine Probleme (und auch seitdem nix mehr geupdated  8) )

buec65

Schon mal überlegt auf WT32-ETH01 mit ESPeasy-Mega umzusteigen? Die können sowohl LAN als auch WLAN und über Rules lassen sich Bedingung für verschiedene Abläufe erstellen.
Bei mir wird die Zirkulation darüber gesteuert und nur die Werte per ESPeasy-Bridge in fhem genutzt.