Thingshield replacement for arduino over zigbee now available for hubitat

Woop woop! 15 bucks shipping now. I will order some to play around with. Cheers!

Actually $35 :grin: when I bought mine. Was curious and found the old email from 2015:

1 Like

Wow, has it really been that long? :wink: I think I bought my ThingShields back in 2014.


All,

BTW - I have an upgraded driver for @haas's thingshield replacement board that I would appreciate having someone else take for a test drive before I release it to the wild. My version creates 4 child switch devices, 2 child contact sensor devices, and 4 child temperature sensor devices (since child voltage devices do not yet exist.) I am utilizing Hubitat's built-in 'Generic Component ...' drivers for the child devices, as this greatly simplifies code installation and maintenance (i.e. you only need the parent driver!) If anyone is interested in helping with the testing, private message me.

Dan

1 Like

Yeah scary. Got into HA in summer of 2014 with purchase of ST. I bought my first ThingShield in May 2015.

I just want to say this is very exciting and thanks to the OP for creating this. I just picked one up myself. I made a garage door controller out of the original ThingShield which has served me wonderfully for the past 4 years. Looking forward to the many new opportunities this will bring!

2 Likes

For anyone who wants to give my 'HaasTI Zigbee Parent' driver a try, here is my first ALPHA release.

This driver is for the board by itself. I did implement a custom command called 'sendCommand(String)' which allows you to send whatever string you'd like (up to 14 characters, I believe) if you want to mess around using the UART. It currently does not handle any responses that an attached microcontroller might reply with over the UART/Serial connection.

I have exposed most, if not all of the configuration parameters as user preferences. I also added linear conversions for each of the analog inputs to make those a little more 'engineering unit' friendly. The analog inputs all end up in Child Temperature devices for now, since there is no 'Generic Component Voltage Measurement' driver in Hubitat, yet. The 4 digital outputs are exposed as 4 Child Switch devices. The two digital inputs are exposed as a pair of child Contact Sensor devices, as well as by outputting Button Pushed events for Button 1 and Button 2.

Please provide feedback on your results and enjoy!

2 Likes

Couple of quick questions.

1 set up a rule to send text to the Haas Shield and I get an error in the log.


also in the device page in Hubitat there is no way to edit the text string it always passes arduino1

2 when I'm in the Arduino IDE serial monitor and type in on1.
it looks like its being passed to the shield as
o
n
1
.
and all the DO turn on.

3 Dan did you pull your driver? Links no longer work.

I love this shield the ideas are endless.

Thanks!

I think these are mostly driver questions for Dan. (Though I'll try to help once I get a chance if need be.)
For the serial monitor, the line returns are always a weird issue across different platforms. I think there's maybe a way to change them in the arduino ide or serial monitor. It's just the way the text is displayed (echoed) in the monitor. It still works fine, as you see.

Not sure what happened to the link. I have edited my post above, and the new link seems to work for me. Give it another try, please.

Dan's driver is more complete and superior to my original, which was just meant to show basic functionality. His has the sendcommand command that lets you send a string of your choice (up to 14 bytes).

Thanks Dan and Andy!
Working great. This is going to be so much fun to play with.

One of my projects is going to be a Mona Lisa based UPS for my hub.
Adafruit 500mA Powerboost with a 1400mAh LIPO.
The Mona Lisa can tell the hub when it loses power and then shut down when the battery is low.

2 Likes

At some point, I will work on a new HubDuino Parent Driver for the HaasTI/MonaLisa. I just haven't found the time to sit down and work on that yet. I believe I have the essential building blocks, just need to put them altogether.

@haas - What is your official name for this board/shield? I just want to make sure I use the correct wording in any drivers/documentation that I create.

1 Like

I guess it's the MonaLisa board (one word, for better googlibility).

1 Like

Having fun!
MonaLisa board is working great. Can send a string from the device page to the board and see it with the Arduino.

Figured out how to send a string from the Arduino to the board (needs to have a "." at the end of the string). I can also see the string in the Hub's logs.

Questions
How do I write text/string to the MonaLisa from the rule machine?
How do I read the test/string in the rule machine?

Dan
I see this commented the following out of your driver
//def gettext(){ // read some attribute string from the device
// if (txtEnable) log.info "gettext"
// //zigbee.readAttribute(0x000, 0x0006) // gets the last thing the device tried to send to us
// zigbee.readAttribute(0x000, 0x0010) // gets the last command the device heard us send
//}
Will it work if I remove the comments?

Thanks all for your help

If you're using my driver, you can easily just call a custom command ('sendCommand') from within Rule Machine and pass in the string you want to send (just remember to keep the length to no more that 14-16 characters (I am not sure the exact max length.)

Currently, there is no simple way using my driver to get data back from the Arduino/MonaLisa into RuleMachine. I trimmed out a lot of @haas' custom attributes and commands to make the MonaLisa more standards compliant with Hubitat's Capabilities. My personal end-goal is to allow MonaLisa to be used with HubDuino.

What are you exactly trying to do with Rule Machine and MonaLisa? If you describe your use-case, I am sure we can help with some simple tweaks to expose the data to Rule Machine as standard Hubitat Capabilities or custom attributes.

Dan - thanks for your help.

Took a few tries because rule machine and I don't get along at all.
So I had to select a switch to send a text string to? Go figure.....................
Including a screen shot for the next guy.

What I am trying to do?

Indoor Air Quality Device.
I have a SCD30 CO2, Temp, Humidity sensor that used the I2C bus.
Its connected to an Arduino that has a MonaLisa shield on it.
I would like to send strings to the hub like CO200657 (657PPM CO2), H374 (37.4% RH), etc.
The RM would then parse the info and set variables that could be displayed on a dashboard or acted on by RM.

If that doesn't work i could have the Arduino feed the data as voltages to the MonaLisa. I think I'd loose a lot of resolution that way.

Once I get this first device working I could see a lot of custom or off the wall devices I could create.

Sounds great. Please post it publicly as an example for others once you get it working! The arduino sketch plus hubitat code/steps.

Typically, one would select the "Actuator" capability within the RM Custom Action settings. This usually returns devices that can be commanded to do something. I made sure to include the "Actuator" capability in my driver.

I would recommend you simply extend my Parent Driver to 'Parse()' the strings from the Arduino that you send. Then, create child device(s) (as necessary) and update their attributes. This way RM and Dashboards will see these devices the same way any other device is seen in the system.

Thanks Dan!

Added a Temp 6 child device and can send a string 6_0032 from the Arduino and see 32 degrees on a dashboard tile!

It took me a while to realize that the MonaLisa sends a package to the Hub and then the Hub passes it to the driver to do all the work updating the children back in the Hub.

Not the architecture I expected from my PLC days.

Next up is to start a new topic to find out what types of child devices there are.
Can't find any documentation and the list over at:
https://docs.hubitat.com/index.php?title=Driver_Capability_List
Doesn't seem up to date.

Has anybody ever thought of making a Zigbee-LAN bridge with something like this?

I'm setting up some home automation at our family holiday home, which has a couple of areas that are probably going to be a bit too far for Zigbee to reach. I already have LAN cables between each location, so I was thinking about using the LAN as a way to extend the Zigbee reach, with the use of some kind of bridge. Could this be done with a Monalisa board connected to something like a LAN-connected Arduino and some custom code?

My fallback would be to just install additional Hubitat hubs, but the idea of a little Zigbee bridge sounded cool to me :grin: