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
Hallo,
gibt es hierzu neue Erkenntnisse?
Gruß Florian
Hi,
da wäre vielleicht ein list der beteiligten Devices hilfreich.
Gruß,
Thorsten
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
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!
Hi,
könntest Du mal ein list der beteiligten Devices liefern?
Gruß,
Thorsten
Moin!
Kannst du mir bitte kurz auf die Sprünge helfen?
Gruß Florian!
Mal "list FIRMATA" und "list pin7" eingeben und das, was da raus kommt, hier in code-Tags posten.
Gruß,
Thorsten
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!
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
}
}
Gesehen habe ich das auch aber trotzdem geht es bei mir erst wenn ich
pinMode(i, OUTPUT);
darunter schreibe.
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
Ich habe für mein Problem ein neues Thema im Bereich "Sonstige Systeme" aufgemacht.
https://forum.fhem.de/index.php/topic,71007.0.html
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