Firmata schaltet manchmal fehlerhaft

Begonnen von funclass, 15 Juni 2015, 20:51:08

Vorheriges Thema - Nächstes Thema

funclass

Hab mal eine Frage an die Profis.

Ich habe seit einiger Zeit an meinem Raspi2 neben dem NanoCUL noch einen Arduino Nano mit Firmata (Standard v2.06) im Einsatz. Die ersten 8 I/Os sind als Digitalausgang definiert, an denen ein 8fach-Relaisblock dranhängt (http://www.amazon.de/dp/B00AEIDWXK). Dieser wird direkt vom Nano mit Strom versorgt, und schaltet die Relais jeweils bei LOW ein. FHEM ist aktuell und läuft seit dem Wechsel auf den Raspi2 und einer Aufräumaktion ohne Probleme (vorher gab's fast täglich Abstürze).

Nun zu meinem Problem: manchmal schaltet der Nano wahllos ein paar Relais ein. Meist passiert dies wenn ein vorher bewusst aktiviertes Relais wieder ausgeschaltet werden soll (manuell oder auch zeitgesteuert). Da die Relais meine Gartenbewässerung ansteuern, ist dieses Verhalten äußerst ärgerlich und auch problematisch. Hatte vorher mit der configurable FIRMATA das gleiche Problem und bin deshalb vor einigen Tagen auf die Standardversion umgestiegen, leider ohne Erfolg.  :(

Kennt jemand dieses Phänomen und kann mir helfen?

Rossini600

Hallo

Ich denke das die Relais zu viel Strom ziehen. Passiert das auch wenn du nur ein Relais zur gleichen Zeit angezogen hast? Das passierte bei mir auch ohne angeschlossene Verbraucher. Musst das Board selbst mit eigenen 5v versorgen.
1 Cubietruck, 3 Raspi mit HMLan / HMUSB für Homematic, Jeelink für PCA301, Cul V3 für MAX

Fritzbox 7390 für VPN, Presence und Callmonitor

AxelSchweiss

Hallo
Ich habe das Problem auch.
Gleiche Firmware aber über Ethernet.
Als "Last" hängt nur eine LED dran.
Ich vermute das die Firmware eine reset macht oder abstürzt.
Eventuell Speichermangel.
Reproduzierbar war das Verhalten bisher nicht.
Ich vermute aber das FHEM bei einem Neustart einen Reset macht.
Allerdings passiert das auch sporadisch.
Auf einem Analogport bekomme ich auch ab und zu lustige Wert .... 28000 ... Und so.

funclass

Zitat von: Rossini600 am 16 Juni 2015, 12:26:29
Hallo

Ich denke das die Relais zu viel Strom ziehen. Passiert das auch wenn du nur ein Relais zur gleichen Zeit angezogen hast? Das passierte bei mir auch ohne angeschlossene Verbraucher. Musst das Board selbst mit eigenen 5v versorgen.

Da ich nur einen Beregnungskreis auf einmal nutzen kann, ist generell immer nur ein Relais aktiviert. Da aber auch alle gleichzeitig problemlos anziehen (wenn ich das will) schließe ich "Strommangel" als Grund aus. Ein Bug in der Firmware des Nano käme schon eher in Frage. Hab auch oft versucht, durch viele Schaltbefehle das Verhalten zu reproduzieren, leider klappt das nicht wirklich. Es passiert genau dann, wenn es eine Weile sauber lief und man es am wenigsten erwartet. Sende ich dann einen Ausschaltbefehl für eines der (fälschlicherweise) angezogenen Relais schalten sich manchmal mehrere oder auch alle wieder aus. Hatte mit meinem Raspi1 auch öfter USB-Probleme (Verbindungsabbrüche und Reconnects), vielleicht wäre das ja auch ne mögliche Ursache.

funclass

Ich habe das Verbose-Attribut mal auf 5 gesetzt um vielleicht etwas über das Log herauszubekommen. Vorhin gab es dann wieder eine seltsame Schaltaktion. Vielleicht kann ja jemand mit etwas mehr Kenntnissen zum Firmata-Protokoll oder dem FRM-Modul weiterhelfen.

Da ich im Garten etwas Rasen nachgesät habe, schaltet die Beregnung aktuell alle 2 Stunden im Wechsel 2 Begegnungskreise für 6min ein (on-for-timer).
Wenn alles funktioniert  :D, sehen die Logeinträge so aus (inkl. meiner Kommentare zur ausgeführten Aktion):

(Relais 1 ein)
2015.06.17 14:00:00 5: FRM:>907801
2015.06.17 14:00:00 5: SW: 907801
(Relais 1 aus)
2015.06.17 14:06:00 5: FRM:>907c01
2015.06.17 14:06:00 5: SW: 907c01
(Relais 2 ein)
2015.06.17 16:00:00 5: FRM:>907401
2015.06.17 16:00:00 5: SW: 907401
(Relais 2 aus)
2015.06.17 16:06:00 5: FRM:>907c01
2015.06.17 16:06:00 5: SW: 907c01


Und das wurde aufgezeichnet, als beim Abschaltbefehl für das Relais 1 plötzlich alle Relais eingeschaltet wurden  :-[:

(Relais 1 ein)
2015.06.17 18:00:00 5: FRM:>907801
2015.06.17 18:00:00 5: SW: 907801
(Relais 1 aus -> mit Fehlverhalten)
2015.06.17 18:06:00 5: FRM:>907c01
2015.06.17 18:06:00 5: SW: 907c01
2015.06.17 18:06:03 5: FRM:<f90206
2015.06.17 18:06:03 5: FRM:<f079020653007400
2015.06.17 18:06:03 5: FRM:<61006e006400610072
2015.06.17 18:06:03 5: FRM:<0064004600690072
2015.06.17 18:06:03 5: FRM:<006d006100740061002e0069006e006f
2015.06.17 18:06:03 5: FRM:<00f7e03902e13401
2015.06.17 18:06:03 5: FRM:<e25e00e32100e47500e50201e63501e722
2015.06.17 18:06:03 5: FRM:<01


Wenn ich dann die Relais einzeln ansteuere, reagieren teilweise auch mehrere auf eine Aktion. Hab das ganze auch mal in folgendem Video https://www.dropbox.com/s/phhd7rllbuebir2/Firmata.mov?dl=0 festgehalten.

(Relais 6 ein -> Relais 1 bis 5 schalten aus)
2015.06.17 19:19:28 5: FRM:>907c00
2015.06.17 19:19:28 5: SW: 907c00
(Relais 6 aus)
2015.06.17 19:19:31 5: FRM:>907c01
2015.06.17 19:19:31 5: SW: 907c01
(Relais 7 aus -> Relais 7 und 8 schalten aus)
2015.06.17 19:19:35 5: FRM:>910300
2015.06.17 19:19:35 5: SW: 910300


Der Vollständigkeit halber noch der FRM-Auszug aus meiner fhem.cfg:

define FIRMATA FRM /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A50482UM-if00-port0@57600
attr FIRMATA model nano
define Relais01 FRM_OUT 2
attr Relais01 IODev FIRMATA
attr Relais01 activeLow yes
attr Relais01 stateFormat value
define Relais02 FRM_OUT 3
attr Relais02 IODev FIRMATA
attr Relais02 activeLow yes
attr Relais02 stateFormat value
define Relais03 FRM_OUT 4
attr Relais03 IODev FIRMATA
attr Relais03 activeLow yes
attr Relais03 stateFormat value
define Relais04 FRM_OUT 5
attr Relais04 IODev FIRMATA
attr Relais04 activeLow yes
attr Relais04 stateFormat value
define Relais05 FRM_OUT 6
attr Relais05 IODev FIRMATA
attr Relais05 activeLow yes
attr Relais05 stateFormat value
define Relais06 FRM_OUT 7
attr Relais06 IODev FIRMATA
attr Relais06 activeLow yes
attr Relais06 stateFormat value
define Relais07 FRM_OUT 8
attr Relais07 IODev FIRMATA
attr Relais07 activeLow yes
attr Relais07 stateFormat value
define Relais08 FRM_OUT 9
attr Relais08 IODev FIRMATA
attr Relais08 activeLow yes
attr Relais08 stateFormat value


Nun hoffe ich mal, dass jemand eine zündende Idee zur Ursache hat  :o

beste Grüße
funclass

funclass

Für alle, die evtl. auch einen Relaisblock welcher über Lowpegel angesteuert wird, über FIRMATA steuern und ähnliche Probleme haben:

Meine Vermutung ist, dass das Attribut "activeLow" im Modul FRM_OUT zu dem beschriebenen Fehlverhalten führt. Ich habe mir Inverter-ICs ULN2003 besorgt und mit diesen den Ausgangspegel des Arduinos invertiert. Nun kann ich mit einem Highpegel meine Relais einschalten und seit über 2 Tagen hatte ich keinerlei Fehlschaltungen mehr (vorher mehrmals täglich).

Auch wenn damit der Fehler im FHEM-Modul nicht behoben ist, hat sich mein konkretes Problem damit erledigt.

e_brandt

Hallo, das Thema ist zwar schon etwas älter aber ich habe das gleiche Problem. Ich benutze auch active low, das werde ich wohl mal ändern. Ich habe auch diverse 1wire ds da dran und Steuer ne Pumpe über PWM, all das geht ohne Probleme.Nur die Relais schalten manchmal nicht.