Broken code or working as intended...
I get this warning in my logs :
> sys:12019-07-16 06:45:01.203 pm warnReceived data from 192.168.1.36, no matching device found for 192.168.1.36, C0A80124:C676, 00226C88AEF6 or C0A80124.
sys:12019-07-16 06:45:01.176 pm warnReceived data from 192.168.1.36, no matching device found for 192.168.1.36, C0A80124:C675, 00226C88AEF6 or C0A80124.
sys:12019-07-16 06:45:00.713 pm warnReceived data from 192.168.1.22, no matching device found for 192.168.1.22, C0A80116:CA38, 00226C88C78A or C0A80116.
sys:12019-07-16 06:45:00.651 pm warnReceived data from 192.168.1.22, no matching device found for 192.168.1.22, C0A80116:CA37, 00226C88C78A or C0A80116.
The addresses stated line up with the Eufy speakers I use.
The warning is generated by the hub so I'm not sure there's even anything to be done. If anyone has any thoughts they will be appreciated.
You would think that was it, I guess I should have pointed out that they have not. At least as far as my router is concerned. As soon as I set these up I reserved the address in my router.
The address matches in the device page too.
Yup, definitely the port causing the issue. Since it shows two ports per IP in the log I tried deleting the port information from the dni. The devices worked but the warnings became errors. So then I tried changing the dni to one of the address + ports from the log. Now I get two different port/warnings.
These error have to do with the implementation of some DLNA Media Players....
What is happening is the the App discovers a player, and adds a device for it, using IP:PORT as the DeviceNetworkId...
When the HE receive data from a DLNA player, it tries to match it with the correct device... by matching the DeviceNetworkId against:
the IP:PORT of the device that sent the data
the MAC address of the device that sent the data
the IP address of the device that sent the data
If none of these three match a the DeviceNetworkId of an installed device, then the error is thrown...
The problem is... Many DLNA devices do NOT send data from the same port that is reported in the SSDP discovery response... So the device driver sends commands to IpAdress:49152, but the response data comes back from IpAddress:56789... and is dropped by the system...
(I have seen this behavior with an LG WebOS TV and a Jam Audio WiFi speaker)
So... I have been experimenting.... I modified the connect App and driver so that it uses the MAC address as the DeviceNetworkId... And the driver now receives all data sent from the player...
I'm still fighting with an issue that the parse routines do not parse the data from the LG TV properly... But that is a separate issue...
Ok... I have the driver and app to a point that they no longer throw errors and seem to work well...
The files are available here: OLD VERSION REMOVED see THIS post.
When you initially upload the files to your HE, any existing DLNA devices you have will probably freak out and generate errors... this should be considered normal... You should then run the Mediarenderer (Connect) appand rediscover your devices. This will (should) regenerate your devices with their new DeviceNetworkID. If you have issues, you should delete the App (which will also delete the child devices) and add it again.
Major changes:
DLNA Device MAC address used as DeviceNetworkId (eliminates the sys:1 no matching device error
Captures and processes all data sent to HE by the DLNA device
Adds functions and adjustments to emulate/fix functions used in the original ST code that is not present in the HE
Fixes track data processing so that track data is available as events
Be aware that not all exposed functions/commands work with all DLNA devices...
IE: The "speak"/"playText" functions do not work (using the build in TTS engine) with an LG WebOS TV, but does work with a Jam Audio Rythm speaker. The correct commands are sent, but no speech is emited by the device. (This is due to the mp3 format produced by the built-in TTS engine being rejected by the WebOS TV)
If you find anything that is not right, let me know and i'll try to get it working.
I just update mine to your version @cybrmage but getting the below error now any idea?
2019-10-11 18:44:00.120 errorjava.lang.NullPointerException: Cannot invoke method getAt() on null object on line 1015
well i did have working! after the the above post but noticed i wasn't getting voice on jam symphony now. checked logs getting below error.
2019-10-23 15:48:00.351 errorgroovy.lang.MissingMethodException: No signature of method: static java.lang.Math.round() is applicable for argument types: (com.hubitat.hub.domain.State) values: [com.hubitat.hub.domain.State(2019-10-20 11:53:00.461, null, level, null, 50, NUMBER)] Possible solutions: round(float), round(double), find(), rint(double), find(groovy.lang.Closure), random() on line 563 (playTextAndRestore)
The problem is the way that the volume is being set. I can see a problem in line 563 of the driver. Try replacing lines 562-564 with these lines and see if it works instead: