User Tools

Site Tools


current:beta

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
current:beta [2023/01/24 18:45] – 9.5.1 beta 7 James Sentmancurrent:beta [2023/07/01 14:26] – 9.5.3 beta 4 James Sentman
Line 1: Line 1:
-=====Beta Versions=====+=====Beta Version (9.5.3 b4)=====
  
-XTension version 9.5.beta 7 is available:+The currently available beta version of XTension is 9.5.beta 4 (build 1082) released on 7/1/2023
  
-[[https://MacHomeAutomation.com/files/xtension/xtension_9_5_1b7.dmg]] 
  
-=====Beta 7 Changelog:==== 
-  * NEW: The Video Encoder plugin will now run an Interface Script handler when a new encoding is complete. Open the Edit Interface dialog for the plugin and click to edit the Interface Script. Use the “Insert” toolbar item to add a default handler to demonstrate how it works. The handler is called “newFileAvailable” and it will pass you 2 parameters, the name of the video stream the recording came from and the full path to the new file. like: on newFileAvailable( streamName, filePath) 
-  * NEW: If you’re using the “live recording” option for a stream then the recordings are never passed off to the batch encoder process but handled inside the video stream itself. In this case the same event in the previous item will be called in the video stream script. It is otherwise identical to the above. 
-  * FIX: Units added to the list of shared items to the Home Kit are no longer in danger of getting an invalid Accessory ID.  
-  * If you have Units that do not reload properly with this build as they were too broken before use the new trouble shooting functions now included in the Troubleshooting section of the [[supported_hardware:homekit|Home Kit Documentation]]. 
  
-=====Beta 6 Changelog:===== +[[https://machomeautomation.com/files/xtension/xtension_9_5_3b4.dmg|Download Xtension 9.5.3 beta 4]]
-  * 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 systemIf 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 handledSo if you had called piblish( “topic”, “payload”) instead of publish() it would not have been able to log an error, it would just silently failSo 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.+Keep in mind this is a beta build and may contain bugs or annoyances and not all expected features or changes may yet be implemented. No database changes are made so if you to have to revert to the last release version simply replace the application with the previous version and all will be well.
  
-=====Beta 4 Changelog:===== 
-Change log: 
-  * NEW MQTT Client plugin. No wiki documentation yet. Read the information on the unit pages carefully. Select how you’re going to get the data out of the topic there are currently 3 types of parsing to get it out. There will be more for more complicated devices. Then enter the MQTT Topic into that field and if the Unit is 2 way select the way you’re going to send data back to the server. There are currently many choices but none that will yet easily handle XML or JSON values or more complex structures that would require scripted parsing and scripted re-creation of such a structure. If you have examples of such things please send me the topic data from them and as much other info as you can put together so I can make sure that the release version of the plugin can handle it. To see all the topics as published turn debug mode on for the plugin instance. Note that there is no attempt to automatically create Units for an MQTT server. That would result in a LOT of Units. Create only the Units you need with the specific topic paths that you wish. Use a problem like MQTT explorer to find what they are on your server. Also note that this is NOT a broker. This is a client and can connect to a broker elsewhere or running on the same machine. I recommend the Mosquitto server at the moment since that is what I have been testing against. 
-  * FIX data logged from a Unit using the contextual menu item of log debug data will now have the Unit set so that you can filter for that and see it in the log. Makes it easier to gather debugging information for me. 
-  * Fixed an error in the error logging in one place in the basic plugin includes. This could have caused a confusing error and would have stopped the logging of the actual error and information that I would need to fix that. This was initially plaguing folks with the Barix plugin as it was trying to convert older Units. I have found an interface on my system that also generates this error so I will be able to fix it now, but if we were working on this please send me the new error message to help me get this squashed and properly working 
  
-=====Beta 1 Changelog:=====+**Changes in Beta 4:** 
 + 
 +  * **Hubitat Plugin:** 
 +    * More updates and changes to the new handling of “string” data types. If there is a number at the beginning of the string then that will be parsed and sent to XTension as the new value of the Unit. The Unit Description is no longer set to the raw string value. A new Unit Property called “Raw Value” is now set to the full value of the string and programmatically you can do with that what you wish. If there is no numerical value or if the raw value is more complex then the value of the Unit will be set to 0 and the default label for the Unit will be set to the Raw Value. No default label is set if a number is found at the beginning of the string so that your own formatting and suffix options in XTension will be used instead. You can still do whatever you wish with the Raw Value property, but the values are just too non-standard to do much more with them directly in XTension without custom scripting to handle values that really just should have been a number and a suffix... 
 +  * **Amcrest Camera API:** 
 +    * Fixed an issue that caused some cameras not to work with the event system. If you find that any cameras still do not send you events but also dont log any other communication or connection errors please let me know we can gather some more info. 
 +    * Added a check to the enableEvents() command so that it will not try to enable events that the plugin does not recognize as valid. This keeps you from either getting nothing, or getting an error message each time the unknown events is sent. If there are events that I am not handling that you know about and would like to get please let me know we can gather more info about them and set them up. 
 +  * **Last Activity:** A change to the Last Activity date handling. Previously if a Unit had never had any activity after being created it would show a last activity date of the time the program was last started. This caused confusion in list windows when sorted by date and is something I’ve been meaning to deal with forever. Now if a Unit has no last activity date it will display as “Never” in the list window, but be sorted as if the date had a total seconds property of 0. In other interfaces or via the scripting commands it will return a date with the earliest date/time that the normal unix date can hold so something like 1/7/1903 or whatever that is. So it will sort properly and no longer be confusing.  
 +  * **Home Kit:** 
 +    * Updated the Home Kit libraries some but not all the way to current. They have made some significant changes in the most recent builds that break it completely for us in the short term though I”ll keep working on that. This is unlikely to either cause or cure any problems people may be having with it as the only changes were to the handling of Thermostats. Home Kit now always sets the Mode of the HVAAC to Auto. This is not due to anything that I can do anything about easily and is a decision that Apple has made. I may be able to override some of this handling to not accept those changes from the thermostat but only send them from XTension or something like that if it is a problem. 
 +  * **Beta Fix:** Cleaned up some potential error logging in the sharing setup dialog. This was introduced in one of the earlier betas and might have caused problems setting up new unit sharing to the shared database system or the Home Kit plugin. 
 + 
 + 
 +**Changelog betas 1 through 3:** 
 + 
 +  * **Hue Plugin:** 
 +    * Hue Plugin: Fixed an issue where it could send continual updates for a sensor value even if the value had not changed. 
 +    * Hue Plugin: Fixed an issue where the temperature format was not saved, sticking all readings in F. 
 +  * **Video System:** 
 +    * Video Encoder Plugin: Added a checkbox so you can suppress logging of video encoding times if you wish. 
 +    * Video: Removed error logging for stalled streams as this would fill the log if the camera was offline for any length of time. To log this information please implement the stalled script handler in the Interface Script and write to the log whatever information is helpful. 
 +  * **Sysinfo Plugin:** 
 +    * System Info Plugin: no longer claims in it’s startup log message to be the Disk Space plugin. 
 +    * Fixed an incorrect default link to the boot volume so that this will work without having to edit it each time. 
 +  * **Internal Python:** 
 +    * Python: A symlink to the built in python3 version is now added to /usr/local/bin/pythonxt so if you wish to use the built in version for your own script you can just execute it via that command. 
 +    * Python: XTension changes many environment variables in order to use it’s internal version of python. If you are running a system version of python in your own script from a shell in XTension this may cause errors or make it unable to find installed modules. You can now use a scripting command “revertENV()” in your script before invoking your shell script to reset the environment to the system default just before launching it which will solve most, but probably not all of these issues. Note that you should do this immediately before starting any shell script as XTension will change it again as needed when launching plugins.  
 +  * **Web Remote:** 
 +    * Web Remote: New documentation of the hashing of web remote links to immediately go to a specific page or view. This can be useful if you are saving specific links as iOS shortcuts, or creating a Kiosk type application. This is not a new feature, but was never properly documented. [[webremote:kioskview|Kiosk View and Hash Linking Info]] 
 +    * Web Remote: Added several new scripting commands to control sessions in the web remote. This lets you programmatically change the view on a specific device to say, a video page or a View in response to motion or other event. Additionally you can script a popup alert or timed message in any color to display on all active sessions or only on specific ones. [[webremote:scripting|Scripting Web Remote]] 
 +    * Web Remote: Added support for a resource folder that will be served as regular files through the web remote built in web server. This way if custom controls or other features you are adding need to load a specific image or other support file they can do so if you put it in the resources directory inside your XTension Database. [[webremote:resourceserver|Resource Server]] 
 +    * Note that these changes have not been rolled into the mobile web remote plugin, only the desktop version. 
 +  * **Plugin API:** 
 +    * A new key for the info.json file that will allow a plugin to receive any scripting command the user issues. This simplifies some kinds of plugin tasks at the expense that users script will not know if the command succeeded or not, all commands will just be sent and forgot. This does not affect regular using the app, only plugin developers. 
 +    * Added the capability for plugins to display information in new text windows and to append to or change the display of one without opening a new window each time. This mostly affects plugin developers but I used it in the new and changed show info commands in the Amcrest API plugin above. 
 +    * All plugins now log their version number in the startup message from the information stored in their info.json file. This will keep them from always being wrong as I forget to update it in 2 places instead of just 1. 
 +  * **Hubitat Plugin:** 
 +    * Hubitat: Added entries to the “insert” toolbar menu for the central scene Held, and Released events to make it easier to script these without having to visit the wiki to look up the specifics. 
 +    * Hubitat: Added support for Energy and Usage units. If a device reports these values a Unit will be created for them. 
 +    * Hubitat: Added support for values that come in as “STRING” rather than numerical or enumerated. This is a bit of a hack as it’s impossible to know what format these things will seem to be. First the value is scanned to see if there is a number in the first part of the string. If there is then the Unit will be dimmable and the value will be placed in the value of the Unit. for example: “3.2 Hours” would create a dimmable unit and set the value to 3.2. The Default Label and the description for the unit will be set to the string as it is sent. So even though the Unit value is 3.2, the display of the value in any XTension interfaces would be “3.2 Hours” If there is no number at the beginning of the string then the UNit will not be dimmable and it will just have it’s default label and description set to the text. You can capture the set description event in the unit’s on script to get the text and parse manually if you need to. 
 +    * Hubitat: Some devices from the Hubitat will now have more descriptive, or less long winded names when created by default. This will mostly effect the Thermostat units but some others can be made better with this too. This does not affect Units already created, and you can always manually edit the unit’s name once it’s created to be whatever you like in either case. 
 +    * Hubitat: The list of supported commands for each Unit is now saved to a [[dictionary:unitinformation:getunitproperty|Unit Property]] so  you can see all the commands the device supports directly. You may still have to discover what parameters are required, if any, but this will make it easier to do things to the Units via the [[https://www.machomeautomation.com/doku.php/supported_hardware/hubitat#sending_device_specific_commandsm|sendDeviceCommand()]] 
 +    * Hubitat: Push messages from the Hubitat that are sent when a software update is started, or when the device is about to reboot to install a software update will now just log that information rather than generate an “unknown push message” error in the log. 
 +  * **Amcrest Camera API:** All the additions mentioned below have been added to the [[video:api:amcrest_hd|Amcrest Camera API Documentation]] 
 +    * Amcrest Camera API: Added support for specific Units to link to Object Detection if your camera supports it. You can now create a Unit to get an ON when a human is detected, or when a vehical is detected and so forth. 
 +    * Amcrest API New Status and Display commands: 
 +      * setFontScale(0.1..2.0) control the size of the text displayed over the image. 
 +      * setChannelTitleVisible( true|false) 
 +      * setChannelTitleLocation( 34, 12) 
 +      * setChannelTitleColor( R, G, B, A) 
 +      * setChannelTitleBackColor( R, G, B, A) 
 +      * setUserDisplayVisible( index, true|false) 
 +      * setUserDisplayText( index, “the info to display”) 
 +      * setUserDisplayLocation( index, xloc, yloc) 
 +      * setUserDisplayColor( R, G, B, A) 
 +      * setUserDisplayBackColor( R, G, B, A) 
 +      * setLogoVisible( true|false) hide or show the Amcrest logo image overlay 
 +      * setLogoLocation( xLoc, yLoc) 
 +      * setLogoFilename( “osd.bmp”) your camera must support allowing you to change this or it will do nothing. 
 +      * setTimeDisplayVisible( true|false) 
 +      * setTimeDisplayLocation( xLoc, yLoc) 
 +      * setTimeDisplayColor( R, G, B, A) 
 +      * setTimeDisplayBackColor( R, G, B, A) 
 +      * setTimeDisplayFormat( “yyyy-M-dd hh:mm:ss t”) see the wiki link above for a table of valid format string entities. 
 +      * note that there is a limit to the number of overlays the camera can “blend” into the encoding video. Check the capabilities below to find out what the limit is for your camera. They may all be different. My doorbell cam can only do 2 at once. 
 +    * changed the logEvents() command to be showEvents() and it now shows the info in a window rather than just writing it to the log. 
 +    * changed logMotionRegions() showMotionRegions() which also shows the list in a separate window rather than just writing it to the log. 
 +    * showCapabilities() opens a window with most, but not all, of the capabilities of the camera listed. There are still some more to add 
 +    * There are a LOT of other things I can add to this plugin that could be controlled.  If you know of something else you’d like to be able to tweak in the cameras programmatically please let me know. 
 +  * **Scripting Dictionary:** 
 +    * NEW: the [[dictionary:unitinformation:enumeratedvalue|Enumerated Value]] verb now accepts an optional parameter “for” and will return the correct enumeration for the value that you pass or an error if the enumeration is out of range. This is especially useful in the ON script of a unit as you can now check the enumeration for the future value to see what it is going to be when the script is done running. The direct parameter of unit name is now also made optional and if you dont specify it then it will use the value for thisUnit making it easier to script these in a units on or off script. For example: **write log enumerated value for (future value)** would write the enumerated value for the new value being passed to the On script. 
 +    * NEW: The [[dictionary:unitinformation:changefuturevalue|change future value]] verb now also accepts enumerations just like the regular set value verbs so you can issue a change future value to “high” instead of just knowing what the numerical value is. 
 +  * **Xtension UI:** 
 +    * NewEach unit will get a new Unit Property called Created with the date the unit was created. You can add this to any List view by control clicking in the headers and selecting create custom column. Then you can sort lists by the date the Unit was created and not just the last activity date. For new Units this is set as they are created and then never changed. For existing Units the date is taken from the creation date of their folder within the database. This seems to work pretty well for most units most of the time, but there may be a date in the past where you restored a database or otherwise performed an action on it that would have reset those dates. This is still the best I can do but keep in mind that older Units may not show the date they were actually created, but the last time you zipped and moved the database or something like that.
  
-Changes in the previous beta. 
  
-  * NEW Plugin for No Hassle AV 4x4 HDMI switchers. [[supported_hardware:nohassle4|Documentation is here.]] This supports (or tries to) 4 different 4x4 size devices. 
-  * NEW Plugin for No Hassle AV 8x8 HDMI switchers. [[supported_hardware:nohassle8|Documentation is here.]] This supports (or tries to) 3 different 8x8 size devices. 
-  * FIX: Fixed a problem loading Unit Icon files that were not JPEGs. PNG’s and GIF’s load normally again. This was broken recently when I switched to a faster jpeg parsing library. 
-  * FIX: more bugs in the Phillips Hue plugin that would have caused an error, and then an error in the error handling when it tried to log the wrong data. 
-  * Database Format Change: For more than 5 years I’ve been keeping 2 copies of the Unit Properties data to make it easier should anyone have to revert to an earlier version after using the newer version. This build stops doing that and removes the old file potentially making the database quite a bit smaller and therefore faster to load and easier to manage. At this point if you need to revert to a version more than 5 years old you’ll have to use the backup file that is zipped up when each new version is loaded. Or just be OK with losing the Unit Properties from your database. 
-  * Enumerated Values for Units are now individually trimmed of leading or trailing spaces. So if you enter the values like “slow, medium, fast” the system will know you didn’t actually mean those spaces to be part of the enumerated values. 
-  * If a plugin has an empty description the name in the popup will no longer show an empty set of parenthesis after the name. 
current/beta.txt · Last modified: 2024/02/05 17:51 by James Sentman