Firmata schaltet falschen PIN

Begonnen von wacholder, 20 Februar 2014, 21:11:05

Vorheriges Thema - Nächstes Thema

wacholder

Hallo,
ich möchte gerne mein Arduino UNO über Ethernet bedienen, komme aber nicht weiter und hoffe daher auf Hilfe.

Mein Testaufbau:
Auf meinem Breadboard habe ich zwei LED's und einen Taster:

  • Taster an PIN2
  • LED grün an PIN 6
  • LED rot an PIN 5

Die LED's möchte ich über FHEM/Firmata steuern, den Status des Tasters über FHEM/Firmata angezeigt bekommen.

So sieht meine FHEM.cfg aus:

define ard FRM 3030 global
attr ard room 9.7_Arduino

define pin2_taster FRM_IN 2
#attr pin2_taster count-mode falling
attr pin2_taster room 0.1_Draußen,9.7_Arduino
attr pin2_taster stateFormat reading


define pin5_led_rot FRM_OUT 5
#attr pin5_led_rot restoreOnReconnect on
#attr pin5_led_rot restoreOnStartup on
attr pin5_led_rot room 9.7_Arduino
attr pin5_led_rot stateFormat value

define pin6_led_gruen FRM_OUT 6
#attr pin6_led_gruen restoreOnReconnect on
#attr pin6_led_gruen restoreOnStartup on
attr pin6_led_gruen room 9.7_Arduino
attr pin6_led_gruen stateFormat value


Die LED's lassen sich nun auch über FHEM/FRM_OUT schalten , auch der Schaltzustand des Tasters wird über FHEM/FRM_IN angezeigt.

Nun zum Problem:
Schalte ich nun beide LED's ein, drücke anschließend auf den Taster und schalte danach z.B. die rote LED (PIN5) aus, so wird auch die grüne LED(PIN6) auf LOW gesetzt. FHEMseitig ist der PIN6 natürlich noch auf HIGH, dieser wurde von Hand noch nicht umgeschaltet.

Es gab auch schon andere Szenarien, bei der Arduino-Seitig der PIN einfach auf LOW gesetzt wurde. Auch mit anderen PIN's hatte ich schon gespielt, immerwieder ist dieses Schaltverhalten festgestellt worden. Mit dem o.g Testaufbau ist das Verhalten aber bei mir zu 100% reproduzierbar. Es ist auch unabhängig davon, ob die Kommunikation über USB oder Ethernet läuft.

Hat jemand eine Idee, woran das Verhalten liegen könnte? Handelt es sich ggf um ein Bug, oder habe ich einfach nur einen Gedankenfehler?!

Noch kurz ein paar weitere Informationen:
Board: Arduino Uno
Ethernet: Ethernet Shield v2.0 (DFRobot)
Firmata: Aktuell aus GIT, habe das ConfigurableFirmata verwendet.
FHEM: v5.5 aktualisiert mit fhemupdate.

Vielen Dank für Eure Anregungen !

Viele Grüße
Michael

wacholder

Nachtrag:
Habe auf dem Arduino mal das Standardfirmata gespielt, gleiches Verhalten.

Wenn ich jedoch aus der FHEM.cfg die FRM_IN Einträge auskommentiere, dann funktioniert es, wie es soll (die LED's behalten ihren Zustand).
Es scheint so, als ob es eine Wechselwirkung zwischen FRM_IN und FRM_OUT gibt.

Gruß
Michael

wacholder

Hat denn sonst keiner Probleme mit unbeabsichtigten Zustandsänderungen der Pins durch das FRM_IN / FRM_OUT Modul?

mcbain2k

Hallo,

Probleme hatte ich auch mal , ardiono 2560 da funktionierten einige Pins überhabt nicht, lag an der firmata und wurde damals behoben.

d.h. klappt mit der aktuellen version bei mir.

Mein Problem ist momentan der status nach einem neustart von fhem.
--------------------------------
IN    ist STATE auf:  reading
attr stateFormat reading

Readings
reading off
------------------------------
OUT ist STATE auf:  value
attr stateFormat value
attr restoreOnReconnect off
attr restoreOnStartup off

Readings
value off
-----------------------------

das ändert sich erst nach dem 1. schalten.

durch dieses falsche STATE wird natürlich ein notiy welches denn off erwartet erstmal nicht ausgeführt.


Wie sind deine States der INs und OUTs nach einem rereadcfg oder neustart von fhem?

Hast du Pulldownwiederstände drin?

Was sagt der Eventmonitor ?


wacholder

Hallo mcbain2k,
erstmal vielen Dank für Deine Antwort.

Zitat von: mcbain2k am 24 Februar 2014, 23:11:15
Wie sind deine States der INs und OUTs nach einem rereadcfg oder neustart von fhem?
Hmm, das gucke ich mir heute abend nochmal an, ich habe evtl. zuviel gespielt und möchte nochmal alles wieder auf Grundzustand bringen.

Zitat von: mcbain2k am 24 Februar 2014, 23:11:15
Hast du Pulldownwiederstände drin?
Am Taster habe ich einen 10k Pulldownwiderstand. Anzumerken ist, das ich diesen Aufbau eigentlich schon länger in Betrieb habe, um meine Haustürklingel steuern zu können. Da ich aber nun von FHEM infiziert wurde, möchte ich natürlich die Steuerung hierüber laufen lassen. Anzumerken ist schon, das ich Leie in der Elektronik bin, ich dieses nur als Hobby mit gefährlichen Halbwissen  :D betreibe. Aber das macht die Sache nur noch interessanter.

Zitat von: mcbain2k am 24 Februar 2014, 23:11:15
Was sagt der Eventmonitor ?

2014-02-25 10:33:09 FRM_OUT pin5_led_rot value: on
2014-02-25 10:33:10 FRM_OUT pin6_led_gruen value: on
2014-02-25 10:33:12 FRM_IN pin2_taster reading: on
2014-02-25 10:33:12 FRM_IN pin2_taster reading: off
2014-02-25 10:33:15 FRM_OUT pin6_led_gruen value: off


Nach dem ich pin6 auf off geschaltet habe, ging auch pin5 auf LOW.

Vielleicht sei noch anzumerken, das ich den UNO R2 habe, ggf. gibt es da noch Unterschiede.

Gruß
Michael

Wzut

Zitat von: wacholder am 24 Februar 2014, 18:37:59
Hat denn sonst keiner Probleme mit unbeabsichtigten Zustandsänderungen der Pins durch das FRM_IN / FRM_OUT Modul?
Doch, ich kämpfe seit drei Wochen mit einen neu in Betrieb genommen UNO + Firmata V2.05 via USB und FRM_IN
Aber der Reihe nach :
Angeschlossen sind 2 Pins mit 1-Wire  (DS1820 und DS2324emu) = ohne Problem bzw. Fehler
5 Pins als Input mit aktivierten internem PullUp , werden beschaltet mit Schalter/Relais bzw. Optokoppler Masse auf den Pin.
3 Pins ohne Fehler ( Optokoppler,Schalter, Relais ),
1 Pin ( Nr. 6) mit sporadischen on/off/on Wechsel die nicht nachvollziehbar sind ( ca 2-3 pro Tag , Optokoppler)
und ein Pin (die Nr.2 , Schalter ) mit sehr häufigen on/off/on Wechsel (mehr als 20 am Tag)  für die ich keinen Grund finde - ausser sie decken sich zeitlich mit den Fehlinmeldungen des Pin Nr. 6.


Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

wacholder

Danke Wzut für Deine Info.

Zitat von: Wzut am 25 Februar 2014, 15:55:39
3 Pins ohne Fehler ( Optokoppler,Schalter, Relais ),
Welche Pins laufen den "Problemlos"? Ich habe hier die Pins 5,6 (OUT) und Pin 2 (IN) in Betrieb. Ich würde dann meinen Taster mal auf einen "problemlosen" Pin legen und mal gucken was passiert.


Wzut

#7
Bitte sehr :
2 - Input - Sorgenkind
3 - Input - ohne Fehler
4 - Input - ohne Fehler
5 - 1-Wire
6 - Input - einige Fehler
7 - 1-Wire
9 - Input - ohne Fehler

ja tauschen würde ich auch gerne , leider habe ich aber diverse Bauteile auf einer Lochrasterplatine verlötet und die sitzt als Shield auf dem UNO.
Ich habe bisher den Fehler ausschlieslich in meiner Schaltung / Verdrahtung gesucht.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

wacholder

So, habe mal ein paar Testfälle ausprobiert:

Beschreibung der Tabelle:
Fehlerhaft: Fehler wie im ersten Posting beschrieben.
IN/OUT: Definition der Pins
P2-9: Pins.

Nach dem ich den Testfall aufgebaut hatte, wurden die LED's (OUT) auf ON gesetzt, anschließend der Taster betätigt und einer der LED's wieder auf LOW gesetzt. Ging die zweite LED auch aus, dann Fehler, ansonsten OK.


Fazit:
Ich kann kein System erkennen, es gibt aber wohl auch funktionierende Konstellation.
Weiterhin konnte ich Pin4 nicht in FHEM intialisieren, es kam folgende Fehlermeldung:
für FRM_IN:
error initializing: unsupported mode '0' for pin '4'
für FRM_OUT:
error initializing: unsupported mode '1' for pin '4'

Die Testfälle:

Testfall  P 5  P6   P2   P7   P9   P8   P3            Ergebnis         
    1     OUT  OUT  IN                                Fehlerhaft       
    2     OUT  IN   OUT                               Fehlerhaft       
    3     IN   OUT  OUT                               Fehlerhaft       
    4          OUT  OUT  IN                           Fehlerhaft       
    5     OUT  OUT       IN                           Fehlerhaft       
    6     OUT       OUT  IN                           Fehlerhaft       
    7     IN   OUT       OUT                          Fehlerhaft       
    8     IN        OUT  OUT                          Fehlerhaft       
    9     OUT  IN        OUT                          Fehlerhaft       
   10          IN   OUT  OUT                          Fehlerhaft       
   11          OUT  OUT  IN                           Fehlerhaft       
   12          OUT  OUT       IN                      OK               
   13     OUT  OUT            IN                      OK               
   14     OUT       OUT       IN                      OK               
   15     IN   OUT            OUT                     OK               
   16     IN        OUT       OUT                     nicht getestet   
   17     OUT  IN             OUT                     nicht getestet   
   18          IN   OUT       OUT                     nicht getestet   
   19               OUT  OUT  IN                      OK               
   20     OUT  OUT                 IN                 OK               
   21     OUT  OUT                      IN            Fehlerhaft       
   22     OUT                 OUT       IN            OK             


Sehr merkwürdig das ganze...