NEW: Direct support for ESPresence in the MQTT plugin. Simplifies using ESPresence devices with the MQTT plugin without having to do a lot of scripting. Turn it on in the Edit Interface dialog for the plugin and at least initially you should leave the Automatically Create Units for it turned on until it’s setup to your satisfaction. Full Documentation is coming but for the moment here. The ESPresence support will find all the devices that have been seen on your receivers, by devices I mean the bluetooth beacons and things like iPhones and the like, not the physical ESP32 devices running the receiver software. Each device will get a master device unit in one list in XTension. This will have the presence/absence of the device anywhere on your system. If no update has been received for it by the timeout set in the edit unit dialog then it will get turned off. While turned on the default label for the Unit will be the name of the room that the device is in. In addition to that another list of location units are created. For each device another unit is created for each room they may be in. These Units will turn on and off based on regularly walking the list of recently received messages and finding the one with the shortest distance to the receiver. I’m not 100% sure about this logic or layout or anything else yet so please let me know if this is the kind of thing you’d expect from this or not. More direct device support is coming. I’m working on Tasmota next as it also has a rather complex MQTT topic structure. NOTE if you enable the ESPresence support while the plugin is running you’ll need to disable and re-enable the plugin for that to take effect.
NEW: If there are important errors during startup a new list window will open to contain them separate from the log. This window is called the “Startup Messages” window. If you see it then there is something you might need to address. It will either contain the necessary information or suggest you look at the log for more info. This way messages on database load that might get scrolled off the top so fast you don’t see them will get noticed more easily.
NEW: Multiple Interface Collision Detection. Previously it was possible to create a situation where a unit was set to use 2 interfaces to receive, but one of them could have another unit with the same address which would keep the multiple interfaces from working properly. During startup if this is seen while loading the database an error is written to the log and a startup message is created in the above mentioned window telling you that it has happened and what the 2 units are so you can more easily figure out why messages aren’t getting routed as you expect.
NEW: MQTT Plugin now better handles server reconnects. If the server drops out due to network issues or rebooting or whatever and then recovers all your existing subscribed units will re-subscribe and continue to receive data.
NEW: MQTT Plugin now has a separate field for the outgoing topic. If updates from the Unit need to be published to a different topic than the one subscribed to for updates from the mqtt server that can now be entered there.
NEW: MQTT Plugin now lets you set the QOS and Retain values for each individual Unit in the Unit Setup Dialog.
NEW: MQTT Plugin implements a generic scripting handler just called “publish()” that lets you publish any string to any topic from anywhere. If you’re doing it from the Unit’s on or off script no other handling is needed it’s just:publish( “/my/topic”, “shower in use”) if you’re doing it from elsewhere use the tell xInterface “name of your MQTT plugin” to publish( “/my/topic”, “shower in use”)
NEW: The Video plugins now insert all the event data that you create while recording with the record from “whatever” for 30 info “name the event here!” as well as the timestamp of the frame into closed caption data. This can be displayed when streaming the snippet from the web interface or when just viewing it off the disk. It is superior to physically overlaying the text onto the actual video stream as it can be moved around by the user so that it doesn’t obscure something you want to see and it is readable and the same size no matter how small a thumbnail of the video you’re looking at.
NEW: The video plugins now provide the same event listing in the Web Interfaces that the old Video Pitcher program did. So they will show up there as well as closed captioned.
FIX: Fixed a problem with the MJPEG camera streaming plugin that would cause a slight bump in CPU usage every time the connection was lost and recovered due to it not properly closing a thread that would keep trying to work in the background even after it had been replaced.
FIX: Fixed an issue with the Amcrest
API camera plugin that would cause the plugin CPU usage to peg at 100% if the camera connection was lost.
FIX: Fixed a rare and unusual problem with syncing data between XTension and the plugins. This could have caused the loading of units from XTension to be short circuited and some updates to be lost to the plugin.
FIX: The logging of available RAM that XTension does at startup was logging it with the wrong suffix showing that you only had kb available when it was really mb or gb.
FIX: I’ve made it possible to change the type of a Unit while the interface it’s connected to is running. This is working well in my testing but it is possible that there are situations in some plugins that would not properly follow along. If you have any trouble doing this record the errors to send to me and then just disable and re-enable the interface to get everything working properly again.
CHANGE: This shouldn’t affect anything, but keep an eye out in case it does. Plugins that have scripting handlers now register them with XTension. XTension will verify that a handler you’re trying to call is available before sending the command to the plugin. If you try to call a handler that does not exist then the script will be returned an error. Previously once the command was sent to the plugin it was assumed to be handled. So if you had called piblish( “topic”, “payload”) instead of publish() it would not have been able to log an error, it would just silently fail. So watch for new script errors where this might be being caught now when it was never before.
This is probably going to be the next release unless something else exciting comes up.