Firmata Ethernet keine digitalen und analogen Inputs

Begonnen von Thomas Stark, 01 Januar 2017, 14:20:28

Vorheriges Thema - Nächstes Thema

Thomas Stark

Hallo zusammen,

bin am verzweifeln.
Outputs lassen sich problemlos steuern. Nur Inputs analog und digital übermitteln keine aktuellen Stati.
Im Anhang die Arduino Sketche.
Hier ein Auszug aus dem LOG
2017.01.01 13:40:35 3: FIRMATA: port 3030 opened
2017.01.01 13:40:36 1: HMLAN_Parse: hmusb new condition ok
2017.01.01 13:46:26 4: Connection accepted from FIRMATA_192.168.30.55_1025
2017.01.01 13:46:26 5: FRM:>ff
2017.01.01 13:46:26 5: FRM:<f9
2017.01.01 13:46:26 5: FRM:<0205f07902054600680065006d005f0043006c00690065006e0074005f00720065007300650074005f006100750074006f002e0069006e
2017.01.01 13:46:26 5: FRM:<006f00f7
2017.01.01 13:46:26 3: Firmata Firmware Version: Fhem_Client_reset_auto.ino V_2_05
2017.01.01 13:46:26 5: FRM:>f069f7
2017.01.01 13:46:26 5: FRM:>f06bf7
2017.01.01 13:46:26 5: FRM:<f06a7f7f7f7f7f7f7f
2017.01.01 13:46:26 5: FRM:<7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f00010203040506
2017.01.01 13:46:26 5: FRM:<0708090a0b0c0d0e0ff7f06c7f7f000101010308040e070108157f000101010308040e070108157f7f000101010308040e070108157f
2017.01.01 13:46:26 5: FRM:<000101010308040e070108157f000101010308040e070108157f000101010308040e070108157f000101010308040e070108157f00010101030804
2017.01.01 13:46:26 5: FRM:<0e070108157f000101010308040e070108157f000101010308040e070108157f000101010308040e070108157f00010101040e070108157f00
2017.01.01 13:46:26 5: FRM:<010101040e070108157f00010101040e070108157f00010101040e070108157f00010101040e070108157f00010101040e070108157f000101
2017.01.01 13:46:26 5: FRM:<01040e0601070108157f00010101040e0601070108157f00010101040e070108157f00010101040e070108157f00010101040e070108157f00
2017.01.01 13:46:26 5: FRM:<010101040e070108157f00010101040e070108157f00010101040e070108157f00010101040e070108157f00010101040e070108157f000101
2017.01.01 13:46:26 5: FRM:<01040e070108157f00010101040e070108157f00010101040e070108157f00010101040e070108157f00010101040e070108157f0001010104
2017.01.01 13:46:26 5: FRM:<0e070108157f00010101040e070108157f00010101040e070108157f00010101040e070108157f00010101040e070108157f00010101040e07
2017.01.01 13:46:26 5: FRM:<0108157f00010101040e070108157f00010101040e070108157f00010101040e070108157f000101010308040e070108157f00010101030804
2017.01.01 13:46:26 5: FRM:<0e070108157f000101010308040e070108157f00010101040e070108157f00010101040e070108157f00010101040e070108157f7f7f7f7f0001
2017.01.01 13:46:26 5: FRM:<0101020a070108157f00010101020a070108157f00010101020a070108157f00010101020a070108157f00010101020a070108157f00010101
2017.01.01 13:46:26 5: FRM:<020a070108157f00010101020a070108157f00010101020a070108157f00010101020a070108157f00010101020a070108157f00010101020a
2017.01.01 13:46:26 5: FRM:<070108157f00010101020a070108157f00010101020a070108157f00010101020a070108157f00010101020a070108157f00010101020a0701
2017.01.01 13:46:26 5: FRM:<08157ff7
2017.01.01 13:46:26 5: FRM:>f07a6807f7
2017.01.01 13:46:26 5: FRM:>f40f01
2017.01.01 13:46:26 5: FRM:>f41001
2017.01.01 13:46:26 5: FRM:>f41601
2017.01.01 13:46:26 5: FRM:>f41701
2017.01.01 13:46:26 5: FRM:>f43602
2017.01.01 13:46:26 5: FRM:>f601
2017.01.01 13:46:26 5: FRM:>f601
2017.01.01 13:46:27 5: FRM:>f41b00
2017.01.01 13:46:27 5: FRM:>d301
2017.01.01 13:46:27 5: FRM:>d301
2017.01.01 13:46:27 5: FRM:>f43702
2017.01.01 13:46:27 5: FRM:>f701
2017.01.01 13:46:27 5: FRM:>f701
2017.01.01 13:46:27 5: FRM:>f44002
2017.01.01 13:46:27 5: FRM:>c001
2017.01.01 13:46:27 5: FRM:>c001
2017.01.01 13:46:27 5: FRM:>f44102
2017.01.01 13:46:27 5: FRM:>c101
2017.01.01 13:46:27 5: FRM:>c101
2017.01.01 13:46:27 5: FRM:>f44202
2017.01.01 13:46:27 5: FRM:>c201
2017.01.01 13:46:27 5: FRM:>c201
2017.01.01 13:46:27 5: FRM:>f44302
2017.01.01 13:46:27 5: FRM:>c301
2017.01.01 13:46:27 5: FRM:>c301
2017.01.01 13:46:27 5: FRM:>f44402
2017.01.01 13:46:27 5: FRM:>c401
2017.01.01 13:46:27 5: FRM:>c401
2017.01.01 13:46:27 5: FRM:>f44502
2017.01.01 13:46:27 5: FRM:>c501
2017.01.01 13:46:27 5: FRM:>c501
2017.01.01 13:46:27 5: FRM:>f43802
2017.01.01 13:46:27 5: FRM:>f801
2017.01.01 13:46:27 5: FRM:>f801
2017.01.01 13:46:27 5: FRM:>f43902
2017.01.01 13:46:27 5: FRM:>f901
2017.01.01 13:46:27 5: FRM:>f901
2017.01.01 13:46:27 5: FRM:>f43a02
2017.01.01 13:46:27 5: FRM:>fa01
2017.01.01 13:46:27 5: FRM:>fa01
2017.01.01 13:46:27 5: FRM:>f43b02
2017.01.01 13:46:27 5: FRM:>fb01
2017.01.01 13:46:27 5: FRM:>fb01
2017.01.01 13:46:27 5: FRM:>f43c02
2017.01.01 13:46:27 5: FRM:>fc01
2017.01.01 13:46:27 5: FRM:>fc01
2017.01.01 13:46:27 5: FRM:>f43d02
2017.01.01 13:46:27 5: FRM:>fd01
2017.01.01 13:46:27 5: FRM:>fd01
2017.01.01 13:46:27 5: FRM:>f43e02
2017.01.01 13:46:27 5: FRM:>fe01
2017.01.01 13:46:27 5: FRM:>fe01
2017.01.01 13:46:27 5: FRM:>f43f02
2017.01.01 13:46:27 5: FRM:>ff01
2017.01.01 13:46:27 5: FRM:>ff01
2017.01.01 13:46:27 5: FRM:>f40d01
2017.01.01 13:46:27 5: FRM:>f40e01
2017.01.01 13:46:27 5: FRM:>f40701
2017.01.01 13:46:27 5: FRM:>f40801
2017.01.01 13:46:27 5: FRM:>f41101
2017.01.01 13:46:27 5: FRM:>f41201
2017.01.01 13:46:27 5: FRM:>f40a01
2017.01.01 13:46:27 5: FRM:>f41a01
2017.01.01 13:46:27 5: FRM:>f40b01
2017.01.01 13:46:27 5: FRM:>f40c01
2017.01.01 13:46:28 5: FRM:>f40501
2017.01.01 13:46:28 5: FRM:>f40601
2017.01.01 13:46:28 5: FRM:>f40201
2017.01.01 13:46:28 5: FRM:>f40301
2017.01.01 13:46:28 5: FRM:>f41901
2017.01.01 13:46:28 5: FRM:>f41801
2017.01.01 13:46:28 5: FRM:<f90205f90205

fhem.cfg

...

define FIRMATA FRM 3030 global
attr FIRMATA room Technik
attr FIRMATA sampling-interval 1000
attr FIRMATA verbose 5


#Eingaenge

define Eingang_27 FRM_IN 27
attr Eingang_27 IODev FIRMATA
attr Eingang_27 group Eingaenge
attr Eingang_27 room Technik
attr Eingang_27 stateFormat reading

#Ausgänge
define WZ_EG_O_Rolloterasse_hoch FRM_OUT 2
attr WZ_EG_O_Rolloterasse_hoch IODev FIRMATA
attr WZ_EG_O_Rolloterasse_hoch devStateIcon off:shutter_closed on:shutter_open
attr WZ_EG_O_Rolloterasse_hoch group Rolladensteuerungterasse
attr WZ_EG_O_Rolloterasse_hoch icon fts_shutter_up
attr WZ_EG_O_Rolloterasse_hoch restoreOnReconnect off
attr WZ_EG_O_Rolloterasse_hoch restoreOnStartup off
attr WZ_EG_O_Rolloterasse_hoch room Wohnzimmer
attr WZ_EG_O_Rolloterasse_hoch stateFormat value

define Firmata_ANALOG_A1 FRM_AD 55
attr Firmata_ANALOG_A1 IODev FIRMATA
attr Firmata_ANALOG_A1 event-min-interval 5
attr Firmata_ANALOG_A1 event-on-change-reading reading:2
attr Firmata_ANALOG_A1 group Messwerte
attr Firmata_ANALOG_A1 room Technik
attr Firmata_ANALOG_A1 stateFormat reading

kann mir jemand helfen?

Danke Thomas

Thomas Stark

Hallo zusammen,
ich habe es gefunden.
:)
In der Standardfirmata werden anscheinend nur 15 ports für den Report behandelt.
Hierfür gibt es eine Funktion checkDigitalInputs.
Ich habe sie wie hier beschrieben angepasst.
Und siehe da jetzt funktioniert auch mein Port27 als Eingang und die anlogen Ports 54-69 funzen auch bei meinem Arduino Mega

Ich hänge meine geänderte Datei mit an.
Noch ein Tip zum Entstören der digitalen und analogen Eingänge.
https://www.lxrobotics.com/eingangs-und-filterschaltungen-fuer-analog-digital-wandler-adcs
und
http://www.elektronik-kompendium.de/public/schaerer/pullr.htm



void checkDigitalInputs(void)
{
  /* Using non-looping code allows constants to be given to readPort().
   * The compiler will apply substantial optimizations if the inputs
   * to readPort() are compile-time constants. */
  if (TOTAL_PORTS > 0 && reportPINs[0]) outputPort(0, readPort(0, portConfigInputs[0]), false);
  if (TOTAL_PORTS > 1 && reportPINs[1]) outputPort(1, readPort(1, portConfigInputs[1]), false);
  if (TOTAL_PORTS > 2 && reportPINs[2]) outputPort(2, readPort(2, portConfigInputs[2]), false);
  if (TOTAL_PORTS > 3 && reportPINs[3]) outputPort(3, readPort(3, portConfigInputs[3]), false);
  if (TOTAL_PORTS > 4 && reportPINs[4]) outputPort(4, readPort(4, portConfigInputs[4]), false);
  if (TOTAL_PORTS > 5 && reportPINs[5]) outputPort(5, readPort(5, portConfigInputs[5]), false);
  if (TOTAL_PORTS > 6 && reportPINs[6]) outputPort(6, readPort(6, portConfigInputs[6]), false);
  if (TOTAL_PORTS > 7 && reportPINs[7]) outputPort(7, readPort(7, portConfigInputs[7]), false);
  if (TOTAL_PORTS > 8 && reportPINs[8]) outputPort(8, readPort(8, portConfigInputs[8]), false);
  if (TOTAL_PORTS > 9 && reportPINs[9]) outputPort(9, readPort(9, portConfigInputs[9]), false);
  if (TOTAL_PORTS > 10 && reportPINs[10]) outputPort(10, readPort(10, portConfigInputs[10]), false);
  if (TOTAL_PORTS > 11 && reportPINs[11]) outputPort(11, readPort(11, portConfigInputs[11]), false);
  if (TOTAL_PORTS > 12 && reportPINs[12]) outputPort(12, readPort(12, portConfigInputs[12]), false);
  if (TOTAL_PORTS > 13 && reportPINs[13]) outputPort(13, readPort(13, portConfigInputs[13]), false);
  if (TOTAL_PORTS > 14 && reportPINs[14]) outputPort(14, readPort(14, portConfigInputs[14]), false);
  if (TOTAL_PORTS > 15 && reportPINs[15]) outputPort(15, readPort(15, portConfigInputs[15]), false);
  if (TOTAL_PORTS > 16 && reportPINs[16]) outputPort(16, readPort(16, portConfigInputs[16]), false);
  if (TOTAL_PORTS > 17 && reportPINs[17]) outputPort(17, readPort(17, portConfigInputs[17]), false);
  if (TOTAL_PORTS > 18 && reportPINs[18]) outputPort(18, readPort(18, portConfigInputs[18]), false);
  if (TOTAL_PORTS > 19 && reportPINs[19]) outputPort(19, readPort(19, portConfigInputs[19]), false);
  if (TOTAL_PORTS > 20 && reportPINs[20]) outputPort(20, readPort(20, portConfigInputs[20]), false);
  if (TOTAL_PORTS > 21 && reportPINs[21]) outputPort(21, readPort(21, portConfigInputs[21]), false);
  if (TOTAL_PORTS > 22 && reportPINs[22]) outputPort(22, readPort(22, portConfigInputs[22]), false);
  if (TOTAL_PORTS > 23 && reportPINs[23]) outputPort(23, readPort(23, portConfigInputs[23]), false);
  if (TOTAL_PORTS > 24 && reportPINs[24]) outputPort(24, readPort(24, portConfigInputs[24]), false);
  if (TOTAL_PORTS > 25 && reportPINs[25]) outputPort(25, readPort(25, portConfigInputs[25]), false);
  if (TOTAL_PORTS > 26 && reportPINs[26]) outputPort(26, readPort(26, portConfigInputs[26]), false);
  if (TOTAL_PORTS > 27 && reportPINs[27]) outputPort(27, readPort(27, portConfigInputs[27]), false);
  if (TOTAL_PORTS > 28 && reportPINs[28]) outputPort(28, readPort(28, portConfigInputs[28]), false);
  if (TOTAL_PORTS > 29 && reportPINs[29]) outputPort(29, readPort(29, portConfigInputs[29]), false);
  if (TOTAL_PORTS > 30 && reportPINs[30]) outputPort(30, readPort(30, portConfigInputs[30]), false);
  if (TOTAL_PORTS > 31 && reportPINs[31]) outputPort(31, readPort(31, portConfigInputs[31]), false);
  if (TOTAL_PORTS > 32 && reportPINs[32]) outputPort(32, readPort(32, portConfigInputs[32]), false);
  if (TOTAL_PORTS > 28 && reportPINs[28]) outputPort(28, readPort(28, portConfigInputs[28]), false);
  if (TOTAL_PORTS > 34 && reportPINs[34]) outputPort(34, readPort(34, portConfigInputs[34]), false);
  if (TOTAL_PORTS > 35 && reportPINs[35]) outputPort(35, readPort(35, portConfigInputs[35]), false);
  if (TOTAL_PORTS > 36 && reportPINs[36]) outputPort(36, readPort(36, portConfigInputs[36]), false);
  if (TOTAL_PORTS > 37 && reportPINs[37]) outputPort(37, readPort(37, portConfigInputs[37]), false);
  if (TOTAL_PORTS > 38 && reportPINs[38]) outputPort(38, readPort(38, portConfigInputs[38]), false);
  if (TOTAL_PORTS > 39 && reportPINs[39]) outputPort(39, readPort(39, portConfigInputs[39]), false);
  if (TOTAL_PORTS > 40 && reportPINs[40]) outputPort(40, readPort(40, portConfigInputs[40]), false);
  if (TOTAL_PORTS > 41 && reportPINs[41]) outputPort(41, readPort(41, portConfigInputs[41]), false);
  if (TOTAL_PORTS > 42 && reportPINs[42]) outputPort(42, readPort(42, portConfigInputs[42]), false);
  if (TOTAL_PORTS > 43 && reportPINs[43]) outputPort(43, readPort(43, portConfigInputs[43]), false);
  if (TOTAL_PORTS > 44 && reportPINs[44]) outputPort(44, readPort(44, portConfigInputs[44]), false);
  if (TOTAL_PORTS > 45 && reportPINs[45]) outputPort(45, readPort(45, portConfigInputs[45]), false);
  if (TOTAL_PORTS > 46 && reportPINs[46]) outputPort(46, readPort(46, portConfigInputs[46]), false);
  if (TOTAL_PORTS > 47 && reportPINs[47]) outputPort(47, readPort(47, portConfigInputs[47]), false);
  if (TOTAL_PORTS > 48 && reportPINs[48]) outputPort(48, readPort(48, portConfigInputs[48]), false);
  if (TOTAL_PORTS > 49 && reportPINs[49]) outputPort(49, readPort(49, portConfigInputs[49]), false);
  if (TOTAL_PORTS > 50 && reportPINs[50]) outputPort(50, readPort(50, portConfigInputs[50]), false);
  if (TOTAL_PORTS > 51 && reportPINs[51]) outputPort(51, readPort(51, portConfigInputs[51]), false);
  if (TOTAL_PORTS > 52 && reportPINs[52]) outputPort(52, readPort(52, portConfigInputs[52]), false);
  if (TOTAL_PORTS > 53 && reportPINs[53]) outputPort(53, readPort(53, portConfigInputs[53]), false);
  if (TOTAL_PORTS > 54 && reportPINs[54]) outputPort(54, readPort(54, portConfigInputs[54]), false);
  if (TOTAL_PORTS > 55 && reportPINs[55]) outputPort(55, readPort(55, portConfigInputs[55]), false);
  if (TOTAL_PORTS > 56 && reportPINs[56]) outputPort(56, readPort(56, portConfigInputs[56]), false);
  if (TOTAL_PORTS > 57 && reportPINs[57]) outputPort(57, readPort(57, portConfigInputs[57]), false);
  if (TOTAL_PORTS > 58 && reportPINs[58]) outputPort(58, readPort(58, portConfigInputs[58]), false);
  if (TOTAL_PORTS > 59 && reportPINs[59]) outputPort(59, readPort(59, portConfigInputs[59]), false);
  if (TOTAL_PORTS > 60 && reportPINs[60]) outputPort(60, readPort(60, portConfigInputs[60]), false);
  if (TOTAL_PORTS > 61 && reportPINs[61]) outputPort(61, readPort(61, portConfigInputs[61]), false);
  if (TOTAL_PORTS > 62 && reportPINs[62]) outputPort(62, readPort(62, portConfigInputs[62]), false);
  if (TOTAL_PORTS > 63 && reportPINs[63]) outputPort(63, readPort(63, portConfigInputs[63]), false);
  if (TOTAL_PORTS > 64 && reportPINs[64]) outputPort(64, readPort(64, portConfigInputs[64]), false);
  if (TOTAL_PORTS > 65 && reportPINs[65]) outputPort(65, readPort(65, portConfigInputs[65]), false);
  if (TOTAL_PORTS > 66 && reportPINs[66]) outputPort(66, readPort(66, portConfigInputs[66]), false);
  if (TOTAL_PORTS > 67 && reportPINs[67]) outputPort(67, readPort(67, portConfigInputs[67]), false);
  if (TOTAL_PORTS > 68 && reportPINs[68]) outputPort(68, readPort(68, portConfigInputs[68]), false);
  if (TOTAL_PORTS > 69 && reportPINs[69]) outputPort(69, readPort(69, portConfigInputs[69]), false);
}