As you can see, it's POE powered/connected ESP32 based board with a bunch of sensors attached (PIR, temperature, humidity, illuminance). Plan is to ceiling mount a collection of them around the place.
To get data out, the plan is to issue HTTP requests directly to the Hubitat hub to update temperature, etc attributes and trigger the motion command. I'm stuck on the best way to achieve this: I've tinkered with creating a custom device via the Drivers Code tab:
You might find my HubDuino project interesting. It handles all of the heavy lifting to establish local, two-way communications for devices exactly like yours!
I did a little research regarding your Wesp32 board... Since I assume you’re planning on using the POE port for both power and LAN connectivity, I wanted to point out that HubDuino currently does not support LAN connectivity on an ESP32. It currently only supports WiFi connectivity on an ESP32.
It would most likely be possible to add support for the Wesp32’s POE port to HubDuino if that it desirable. If this is something you think you could handle on your own, I can provide you with some assistance and guidance. Usually I can add support for new boards relatively quickly, when I have a sample available for testing. However, the Wesp32 looks to be a niche product. Let me know how you’d like proceed.
Ah bugger. Logically thinking, I believe I need to answer the question of "Can I (trivially) update attribute values on the Hubitat via HTTP?" before I can determine whether it's worth sinking the effort into full-blown Wesp32 Hubduino support.
You would have to define through the driver what to do with the information that is passed up to Hubitat. For example, if you call up to the device with the command "active" from the motion sensor capability, your driver would have to define how to handle that command. And that would be sending the hub event of active for the motion attribute. But even if you are only going to use the maker API, you would need to write a custom driver for the device that would define each of the commands you plan to send to hubitat with any data. That is a lot if you're not familiar with coding in Groovy.
If you go the hubduino route, the drivers are all done for you. The only thing you would have to work on is the Arduino coding.
Adding support in HubDuino should be fairly simple and straightforward. It only requires the addition of two files that abstract the actual network communications. If you look in my ST_Anything GitHub repository, you'll find an Arduino\Libraries folder. Within that folder, you will see a groups of folders names "SmartThings..." Each of these implements a specific network communications method. I would recommend you start with the SmartThingsEthernetW5100.h and .cpp as a starting point.
Hope this helps, if you decide to pursue the HubDuino option. I can take a stab at this once I have some free time, but you would have to perform all of the testing. In order for you to gain some familiarity with HubDuino, I would recommend you try using a standard NodeMCU ESP8266 or NodeMCU ESP32 board which are already supported in HubDuino. This would allow you to know what to expect during the testing.
yes, I do have the same question those days. I have a JSON file on my web server, and I would like to use this to update attribute values (custom driver) on the HE Hub, so the change will be showing on the dashboard ... Ideally, if maker API could support LOCAL HTTP POST then will be much more simple. Just a thought...
When event triggered, my web server will get info through a HTTP Post. Then I would like to update the attributes real time. I don't like using pull to query as I don't know when things happened.
That's the only way that I think could use Maker API now. When event triggered, I will run a URL using Maker API send the command (e.g. PullData), then my custom driver could update the attributes. The only concern is how I can pass the data from Python to Groovy, a JSON file saved on the disk?
I am talking about location data such as Latitude, Longitude, Geofence, place, and etc.
You can pass information to Hubitat via the maker API. It is NOT just commands. For example, you can pass dimmer levels. That is done passing passing the second value. See the example link in the Maker API documentation.
You would pass the data you want to send in the secondary value section of the URL. So, in the case of Lat and Long (although i have no idea why you'd want to send that, you could do one call to send the Lat and one call to send the long. Or, your driver could parse them out when sent together. For example, you could separate the Lat from the Long by a carrot (^).