FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Flori am 22 Januar 2017, 16:00:51

Titel: Arduino Firmata Digitaler ausgang schalten
Beitrag von: Flori am 22 Januar 2017, 16:00:51
Hi,

versuche gerade den digitalen Pin meines Arduino mit Firmata zu schalten
config:
define initialUsbCheck notify global:INITIALIZED usb create
define FIRMATA FRM 3030 global
attr FIRMATA sampling-interval 300
define pin7 FRM_OUT 7
attr pin7 IODev FIRMATA
attr pin7 stateFormat value

in der Übersicht steht hinter Firmata connected

am Pin des Arduinos tut sich aber nichts  wen ich in FHEM schalte

im log gibt es einen Fehlermeldung :
2017.01.22 15:03:02 1: Including fhem.cfg
2017.01.22 15:03:02 3: telnetPort: port 7072 opened
2017.01.22 15:03:02 3: WEB: port 8083 opened
2017.01.22 15:03:02 3: WEBphone: port 8084 opened
2017.01.22 15:03:02 3: WEBtablet: port 8085 opened
2017.01.22 15:03:02 2: eventTypes: loaded 8 events from ./log/eventTypes.txt
2017.01.22 15:03:02 1: Including ./log/fhem.save
2017.01.22 15:03:02 3: FIRMATA: port 3030 opened
2017.01.22 15:03:02 1: usb create starting
2017.01.22 15:03:02 3: Probing CUL device /dev/ttyAMA0
2017.01.22 15:03:03 3: Probing TCM_ESP3 device /dev/ttyAMA0
2017.01.22 15:03:03 3: Probing FRM device /dev/ttyAMA0
2017.01.22 15:03:08 1: usb create end
2017.01.22 15:03:08 0: Featurelevel: 5.7
2017.01.22 15:03:08 0: Server started with 14 defined entities (fhem.pl:13142/2017-01-18 perl:5.020002 os:linux user:fhem pid:3558)
2017.01.22 15:03:11 3: querying Firmata Firmware Version
2017.01.22 15:03:11 3: Firmata Firmware Version: ConfigurableFirmata.ino V_2_09
2017.01.22 15:03:11 1: PERL WARNING: Use of uninitialized value $buf in unpack at ./FHEM/10_FRM.pm line 632.


Habe ich etwas vergessen ?
Desweiteren meine ich mich zu erinnern das mir früher die verfügbaren Pin´s des Arduinos, in den Intarnals angezeigt wurden.
Diese anzeige fehlt jetzt?

bin über jede Hilfe Dankbar
Titel: Antw:Arduino Firmata Digitaler ausgang schalten
Beitrag von: Florian E. am 22 April 2017, 13:06:38
Hallo,

gibt es hierzu neue Erkenntnisse?



Gruß Florian
Titel: Antw:Arduino Firmata Digitaler ausgang schalten
Beitrag von: Thorsten Pferdekaemper am 23 April 2017, 08:49:02
Hi,
da wäre vielleicht ein list der beteiligten Devices hilfreich.
Gruß,
   Thorsten
Titel: Antw:Arduino Firmata Digitaler ausgang schalten
Beitrag von: Wzut am 23 April 2017, 09:13:01
Zitat von: Flori am 22 Januar 2017, 16:00:51
2017.01.22 15:03:11 3: Firmata Firmware Version: ConfigurableFirmata.ino V_2_09
2017.01.22 15:03:11 1: PERL WARNING: Use of uninitialized value $buf in unpack at ./FHEM/10_FRM.pm line 632
Mit der V 2.09 hatte ich nie Erfolg, gib mal in der Forum Suche "Firmata 2.06" ein
Titel: Antw:Arduino Firmata Digitaler ausgang schalten
Beitrag von: Florian E. am 23 April 2017, 12:51:33
Moin,

ich habe mich in den vergangenen zwei Tagen auch mit dem Arduino (UNO), dem ENC28J60 und der "Configurable Firmata" beschäftig. Man könnte schon fast "rumgeschlagen" sagen.
Installiert / konfiguriert habe ich es wie im https://wiki.fhem.de/wiki/Arduino_Firmata (https://wiki.fhem.de/wiki/Arduino_Firmata) beschrieben. Und das nicht nur einmal.
Ebenso habe ich die dort verklinkte 2.06er Version von Firmata genommen.

Ich habe das Problem, dass wenn ich ein "FRM_OUT" schalte der Arduino auch tut was er soll (es liegen 4,9V am Pin an). Jedoch wenn ich den Pin wieder abschalte, messe ich etwas sehr undefiniertes. Das Multimeter läuft dann von 0,08 - 0,5V kontinuierlich durch. Sprich "High" geht, "Low" aber nicht. Deshalb möchte auch mein Relais nicht schalten.

Gestern Abend habe ich einfach mittels "Try and Error" in dem Sketch "rum programmiert". Dabei habe ich herausgefunden, dass es geht wenn ich den jeweiligen Ausgang (ich vermute mal Zusätzlich) als "Output" definiere.
Ich habe, bereits vorher, im Forum sehr viel gelesen. Irgendwie schein fast keiner Probleme mit diesen "anfänglichen und einfachen" dingen zu haben. Deshalb frage ich mich, was ich wohl essentiell falsch mache? (Oder was ich im Forum übersehen habe)

Des Weiteren habe ich mich noch mit "FRM_IN" beschäftigt und das habe ich bis jetzt noch gar nicht hinbekommen. Weder mit meinem "leicht modifiziertem" Sketch, noch mit dem originalen Beispiel.

Hat von euch jemand eine Idee, was ich falsch gemacht oder übersehen haben könnte?
Anbei ein paar Screenshots von meinem Aufbau.

Ps.: Gerne lagere ich mein Problem auch in einen neuen Thread aus, wenn es nötig ist bzw. so sein soll.

Gruß Florian!
Titel: Antw:Arduino Firmata Digitaler ausgang schalten
Beitrag von: Thorsten Pferdekaemper am 23 April 2017, 13:24:37
Hi,
könntest Du mal ein list der beteiligten Devices liefern?
Gruß,
   Thorsten
Titel: Antw:Arduino Firmata Digitaler ausgang schalten
Beitrag von: Florian E. am 23 April 2017, 13:33:52
Moin!

Kannst du mir bitte kurz auf die Sprünge helfen?


Gruß Florian!
Titel: Antw:Arduino Firmata Digitaler ausgang schalten
Beitrag von: Thorsten Pferdekaemper am 23 April 2017, 14:23:36
Mal "list FIRMATA" und "list pin7" eingeben und das, was da raus kommt, hier in code-Tags posten.
Gruß,
   Thorsten
Titel: Antw:Arduino Firmata Digitaler ausgang schalten
Beitrag von: Florian E. am 23 April 2017, 15:05:04
list FIRMATA


Save config
00_Test
10_Heizung
99_Muell
99_System
Unsorted
icoEverything Everything
Logfile
Commandref
Remote doc
Edit files
Select style
Event monitor

Internals:
   CONNECTS   18
   DEF        3030 global
   DeviceName 3030
   FD         4
   NAME       FIRMATA
   NOTIFYDEV  global
   NR         28
   NTFY_ORDER 50-FIRMATA
   PORT       3030
   STATE      Initialized
   TYPE       FRM
   firmware   ConfigurableFirmata.ino
   firmware_version V_2_06
   Socketdevice:
     BUF
     DeviceName 3030
     NAME       FIRMATA_172.20.5.109_1028
     NR         310
     PARTIAL
     PEER       172.20.5.109
     PORT       1028
     SNAME      FIRMATA
     SSL
     STATE      disconnected
     TEMPORARY  1
     TYPE       FRM
     Readings:
       2017-04-23 13:59:30   state           disconnected
Attributes:



list Firmata_OUT7 (Ausgang Pin 7):

Internals:
   DEF        7
   IODev      FIRMATA
   NAME       Firmata_OUT7
   NR         31
   PIN        7
   STATE      off
   TYPE       FRM_OUT
   Readings:
     2017-04-23 13:41:59   state           Initialized
     2017-04-23 13:41:59   value           off
Attributes:
   IODev      FIRMATA
   activeLow  yes
   stateFormat value



list FIRMATA_IN (Pin 9):

Internals:
   CFGFN
   CHANGED
   DEF        9
   IODev      FIRMATA
   NAME       Firmata_IN
   NR         170
   PIN        9
   STATE      off
   TYPE       FRM_IN
   Readings:
     2017-04-23 13:41:59   reading         off
     2017-04-23 13:41:59   state           Initialized
Attributes:
   IODev      FIRMATA
   stateFormat reading



Gruß Florian!
Titel: Antw:Arduino Firmata Digitaler ausgang schalten
Beitrag von: Wzut am 23 April 2017, 17:20:20
Zitat von: Florian E. am 23 April 2017, 12:51:33
Dabei habe ich herausgefunden, dass es geht wenn ich den jeweiligen Ausgang (ich vermute mal Zusätzlich) als "Output" definiere.
Das hat Firmata eigentlich auch schon bemerkt man beachte am Ende "Firmata.setPinMode(i, OUTPUT)"
void systemResetCallback()
{
  // initialize a defalt state

  // pins with analog capability default to analog input
  // otherwise, pins default to digital output
  for (byte i=0; i < TOTAL_PINS; i++) {
    if (IS_PIN_ANALOG(i)) {
#ifdef AnalogInputFirmata_h
      // turns off pullup, configures everything
      Firmata.setPinMode(i, ANALOG);
#endif
    } else if (IS_PIN_DIGITAL(i)) {
#ifdef DigitalOutputFirmata_h
      // sets the output to 0, configures portConfigInputs
      Firmata.setPinMode(i, OUTPUT);
#endif
    }
  }
Titel: Antw:Arduino Firmata Digitaler ausgang schalten
Beitrag von: Florian E. am 23 April 2017, 17:30:12
Gesehen habe ich das auch aber trotzdem geht es bei mir erst wenn ich

pinMode(i, OUTPUT);

darunter schreibe.
Titel: Antw:Arduino Firmata Digitaler ausgang schalten
Beitrag von: Thorsten Pferdekaemper am 23 April 2017, 19:24:50
Hi,
ich habe gerade mal im Firmata-Coding nachgesehen. Anscheinend setzt das Firmata.setPinMode nur eine interne Variable. Etwas seltsam finde ich, dass Firmata anscheinend annimmt, dass ein Arduino-Pin per Default Output sein könnte. Das ist nicht so. ...oder ich verstehe nicht, was Firmata da treibt.
Naja, ich muss auch gestehen, dass ich mich bei Firmata nicht auskenne. Vielleicht verschiebst Du das ganze doch besser in den richtigen Bereich des Forums.
Gruß,
   Thorsten
Titel: Antw:Arduino Firmata Digitaler ausgang schalten
Beitrag von: Florian E. am 23 April 2017, 19:50:22
Ich habe für mein Problem ein neues Thema im Bereich "Sonstige Systeme" aufgemacht.

https://forum.fhem.de/index.php/topic,71007.0.html
Titel: Antw:Arduino Firmata Digitaler ausgang schalten
Beitrag von: Florian E. am 04 Mai 2017, 15:39:06
Moin!

Die von mir oben beschriebenen Probleme konnte ich relativ einfach mit dem Austausch des "ENC28J60" Ethernet Adapter gegen ein W5100 Ethernet Shield beheben.
Drauf gesteckt, ConfigurableFirmata drauf und läuft. Und im Device werden nun auch die ganzen Pins angezeigt.

   analog_pins 14,15,16,17,18,19
   analog_resolutions 14:10,15:10,16:10,17:10,18:10,19:10
   firmware   ConfigurableFirmataNeuNet.ino
   firmware_version V_2_06
   input_pins 2,3,5,6,7,8,9,14,15,16,17,18,19
   output_pins 2,3,5,6,7,8,9,14,15,16,17,18,19
   pwm_pins   3,5,6,9
   pwm_resolutions 3:8,5:8,6:8,9:8