Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
Repo info
  • Oct 14 18:00
    lawern commented #89
  • Oct 01 09:28
    LinuksGuru commented #98
  • Oct 01 09:28
    LinuksGuru commented #98
  • Oct 01 09:21
    LinuksGuru commented #86
  • Oct 01 08:15
    LinuksGuru opened #99
  • Sep 30 13:23
    LinuksGuru edited #98
  • Sep 30 12:19
    LinuksGuru edited #98
  • Sep 30 10:38
    LinuksGuru opened #98
  • Sep 30 10:37
    LinuksGuru commented #33
  • Jun 06 21:58
    soundanalogous commented #97
  • Jun 06 16:18
    dtex opened #97
  • May 04 05:24
    pgrawehr opened #96
  • May 04 04:56
    pgrawehr synchronize #95
  • May 03 18:26
    pgrawehr commented #95
  • Apr 19 08:57
    pgrawehr opened #95
  • Apr 19 06:15
    soundanalogous commented #94
  • Apr 19 04:41
    pgrawehr commented #94
  • Apr 18 20:13
    soundanalogous commented #94
  • Apr 18 19:07
    pgrawehr commented #94
  • Apr 18 17:25
    soundanalogous commented #94
Jeff Hoefs
I'm looking for feedback on options for assigning Device IDs in ConfigurableFirmata. We'll need a unique Device ID for each Firmata wrapper class (DHT11, NeoPixel, RFSwitch, etc). The proposal is here (and I'm open to any other ideas besides the 4 I have proposed as well): firmata/ConfigurableFirmata#16
Jeff Hoefs

tl:dr should configuration query and pin state query be limited to only HW features (PWM, Analog Input, Digital I/O, I2C, etc) and a new device query be added or should config query also handle devices?

I'm questioning the value of the configuration query for device-specific features. For example Servo is a Firmata "pin mode" and had to be historically due to the way it used the analog message to pass the value. Later OneWire, Stepper and Encoder were added as pin modes and are reported in a configuration query response. However I'm not sure if this provides any value to the Firmata client (at least not at the pin level... more on this later). Knowing the microcontroller configuration like which pins support Analog Input, Digital I/O, PWM and I2C is useful, but I'm not sure that Encoder or Stepper are. This is because the configuration query response simply indicates what each pin on the board is capable of supporting. I think we need a better way to query the capabilities of individual devices, but this should be an aspect of the device protocol rather than the configuration query. Same for the pin state query. It should probably report the state of the HW pin rather than the state of a temperature sensor attached to that pin. The protocol for a device such as a temp sensor (DHT11 for example) should provide a means to query state rather than trying to rely on a more generic pin state query.

One the other hand however I could see some value in something like the configuration query reporting devices in indicating which types of devices are supported by the current firmware. The issue here is still that configuration query is related to pins whereas knowing which devices are supported by the current firmware is not necessary related to pins (in that many devices can be attached to any digital pin for example). Maybe a new type of device query is needed that returns either the types of devices (such as TEMP) or specific devices (such as DHT11) supported by the current firmware would be useful. Such a query could also return the IDs of the type of device queried. A second query could then be issued agains the devices, returning config info about that specific device (for a Stepper for instance this could return the driver type and current step position). This is only useful if the fact that a stepper is attached is unknown. In most cases (unless a board is accessed remotely and it's configuration and state is truly unknown), users know the configuration of a board and any devices attached to it. The state of those devices may be unknown so that is important to query (especially in the case that a connection to the board was lost).

Rick Waldron

a new device query be added or should config query also handle devices?

That would be nice, as along as it’s not too costly (in process consumption and wire traffic)

I think what I’d really prefer is just a way to report what the current ConfigurableFirmata is capable of
Jeff Hoefs
@rwaldron do you want that report of current configuration including any devices before the "ready" event is fired (in firmata.js / johnny-five) or is it only important to have the board configuration (which pins are digital, analog, i2c, etc vs DHT11, neopixel, etc) before "ready"?
Rick Waldron
@soundanalogous I think it would be nice to have that information available by the time the “ready” event gets emitted.
I would be willing to pay the penalty of another “handshake” step (mostly because they are relatively cheap anyway)
David A. Mellis
Sorry if this is described somewhere, but what's the difference (from the client perspective) between Firmata and ConfigurableFirmata? Has the protocol changed for the features that were already in Firmata?
Jeff Hoefs
The protocol is the same. The parsing logic is also the same. The only difference is ConfigurableFirmata adds a separate class for each Feature. I broke it out from Firmata to make it easier to distribute. At some point I may merge it back into Firmata if this sort of architecture makes sense.
@soundanalogous I have been trying to get a working demo together for the FirmataEncoder library. I have it all installed, but I guess I am not quite sure how to make use of it through one of the javascript front ends. do you have any example code making use of this encoder library via javascript? Thank you.
Anatolii Ruchka
to solve firmata/ConfigurableFirmata#44 is remote host works? #define remote_host "SRV3" or remote_host "arduinorelay.herokuapp.com" on local computer name and website name didn't work for some reason
Hi all, I'm using J5 but think this might be something with Firmata. Here's my questeion: Every time J5 starts, it resets all my relays, turns them all off then on. Is there any way to prevent this? Can j5/firmata just leave the existing state of the relays the way they are?
hi. anyone can share example code to use software serial over 32u4
Jeff Hoefs
@shmrymbd are you looking for c/c++ sample code?
There are Firmata client implementations of the Serial feature for JavaScript and Perl. I'm not sure if it has been implemented in other languages yet. The protocol is defined here: https://github.com/firmata/protocol/blob/master/serial-1.0.md. You'd implement an interface according to that spec.
Jeff Hoefs
Also, with a 32u4 you have an available UART (Serial1) so it would be much more efficient to use the UART than software serial. Use the portID HW_SERIAL1. Here's a JavaScript example that uses HW_SERIAL1 (pins 0 and 1 on a 32u4 Arduino board such as a Leonardo): https://github.com/soundanalogous/firmata-client-examples/blob/master/firmata-js/firmata-serial/hw-gps.js.
Stefan Engstrom
I am having some fun with running configurable firmata on a wifi board (esp8266) - it works as advertised for the server variant - the board shows up on the network and takes instructions. My application would be better served by the client version - the board connects and communicates with a controller by sending messages to a pre-registered address. Does anybody have an example of how to do that (ideally in go)?
Stefan Engstrom
oops i just noticed the timestamp of the last post here :)
Tom Rowley
Can't get Pin to work in J5 using configurableFirmata.

var five = require('johnny-five');
var board = new five.Board();

board.on('ready', function() {

var ninepin = new five.Pin(9);



Doesn't set pin 9 high. Shouldn't it
Works fine is I load standardFirmata

Hi Friends,

I'm having difficulty getting ConfigurableFirmata to run on my Arduino Uno Wifi Rev2 I keep getting this error when trying to verify the sketch: "Please edit Boards.h with a hardware abstraction for this board" it can be found on line 602 of Arduino>libraries>ConfigurableFirmata>src>utility>boards.h

It seems as if the ConfigurableFirmata does not yet support this board as I can't find its definition in that header file. any help would be greatly appreciated. thank you!