Announcement

Collapse
No announcement yet.

UltraM1G3 HSPI - Zone Audio

Collapse
This is a sticky topic.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    UltraM1G3 HSPI - Zone Audio

    I just completed adding audio equipment support to the UltraM1G3 HSPI.

    Required Equipment:
    1) Elk M1G
    2) Elk M1XEP
    3) Russound or other supported audio system (e.g. Nuvo, Proficient)

    To enable:

    From PLUG-INS > UltraM1G3 > UltraM1G3 > Options, select the number of zones you have connected to your Elk M1.
    From PLUG-INS > UltraM1G3 > UltraM1G3 > Audio Zones, select the zone you want to create devices for.

    Regards,
    Ultrajones
    Attached Files
    Last edited by Ultrajones; March 13, 2016, 06:59 PM.
    Plug-ins: UltraMon, UltraM1G, UltraCID, Ultra1Wire, UltraLog, UltraWeatherBug, UltraPioneerAVR, UltraGCIR

    #2
    Curious how the Russound support compares to the BLRussound plug-in. Does it support the MCA series also, and what about zones 7 and 8? What about multiple MCA controllers?

    Comment


      #3
      Originally posted by Automated View Post
      Curious how the Russound support compares to the BLRussound plug-in. Does it support the MCA series also, and what about zones 7 and 8? What about multiple MCA controllers?
      It should support 18 audio zones (multiple controllers) and 12 inputs. For the Russound, only the CAM & CAV series (RNET) are supported. For Proficient, the M4 & M6 (MZC series) are supported with the Proficient Control Module Interface. For Nuvo, the Grand Concerto and Essentia series are supported.

      Please Note: I am also creating a Russound plug-in. That's next ...

      Regards,
      Ultrajones
      Plug-ins: UltraMon, UltraM1G, UltraCID, Ultra1Wire, UltraLog, UltraWeatherBug, UltraPioneerAVR, UltraGCIR

      Comment


        #4
        Ah, ok, so no MCA support. I hope your dedicated plug-in will support them. The MCAC5 is even so old now that there are the newer MCA88 and MCA88x to replace it. CAV is even older.

        Comment


          #5
          Nuvo

          Can you create a novo plugin?

          Comment


            #6
            Originally posted by jasfarm View Post
            Can you create a novo plugin?
            What is a novo?
            Plug-ins: UltraMon, UltraM1G, UltraCID, Ultra1Wire, UltraLog, UltraWeatherBug, UltraPioneerAVR, UltraGCIR

            Comment


              #7
              Nuvo

              sorry nuvo grand concerto.

              Comment


                #8
                Speakercraft MZC-88...works..sort of.

                Firstly, thanks Ultra for this plugin. I have been using for a while and am gradually moving my CBus light over from xAP to the ELK using the C-Bus interface.

                Then I discovered the audio zone controls feature. Previously I had been playing around with scripts sending command to my MZC-88 via serial...long and complicated. But this plugin has made it soooo much easier.

                Speakercraft use the same hardware as Proficient. The Proficient Control Module is identical to the Speakercraft RSA. And I had a IP-RS232 interface (USR-TCP232-200) that I was able to use instead of the ELK-IP232 interface.

                So....I can see the zones as per the programming in the ELK. I can turn them on/off, select source, and use the basic controls.

                But the volume controls are a bit weird. They don't set to the volume selected in the drop down list. If I select 'Volume 50' it gets set to 16 for example. 10 = 3, 20 = 6, 30 = 9, 40 = 12, 100 = 35 and so on. So roughly a third of the dropdown volume.

                Has anyone else with a Speakercraft or Proficient system noticed this?

                Using the volume knob on the MZC-88 controller works fine with this plugin reporting back the correct volume.

                Not sure where to start debugging? This plugin? The ELK? Something with the IP-RS232 interface (which doubt seeing as everything else is working).

                Cheers, Marty.
                iCore5 Win 10 Pro x64 SSD

                HS3 Pro Edition 3.0.0.435 Windows

                BLOccupied:,Device History:,Yamaha:,UltraMon3:,mcsXap:,Restart:,UltraNetatmo3:, UltraM1G3:,Ultra1Wire3:,BLBackup:,Harmony Hub:,DoorBird:,UltraECM3:,Nanoleaf 3P:,UltraRachio3:,Z-Wave:,SDJ-Health:,BLGarbage:,Blue-Iris:,Chromecast:,Pushover 3P:,EasyTrigger:

                Comment


                  #9
                  I have been trying to debug the volume issue with the ELK M1G and a Speakercraft MZC-88 (same control protocol as Proficient).

                  The UltraM1G3 debug log has entries as follows when changing the volume via the plug in:

                  25/03/2017 12:04:46...Debug~~!~~Entered SetIOMulti Subroutine
                  25/03/2017 12:04:46...Debug~~!~~SetIOMulti set value: 54, type Values, ref:1345
                  25/03/2017 12:04:46...Debug~~!~~Entered ControlAudioZone() function.
                  25/03/2017 12:04:46...Debug~~!~~ControlAudioZone() is setting audio zone 01, command VolumeSet, source 01 to 027.
                  25/03/2017 12:04:47...Debug~~!~~Sending command: 'cd10010102700' to Elk M1, attempt # 1
                  25/03/2017 12:04:47...Debug~~!~~Entered SendToM1G() function.
                  25/03/2017 12:04:47...Debug~~!~~Sending 0Fcd10010102700A7
                  So selecting a volume of 54 actually sends a level of '027' to the amplifier.

                  But then the amplifier returns a value of 17:

                  25/03/2017 12:04:47...Debug~~!~~Waited 231 milliseconds for the command response.
                  25/03/2017 12:04:47...Debug~~!~~Entered ProcessReceived() function with a string '20CA0100101705005000500000000000C1
                  '
                  25/03/2017 12:04:47...Debug~~!~~Entered ProcessCommand() subroutine.
                  25/03/2017 12:04:47...Debug~~!~~Processing response [CA]
                  25/03/2017 12:04:47...Debug~~!~~AudioZone Power01->0
                  25/03/2017 12:04:47...Debug~~!~~Device address AudioZone Power01 was found.
                  25/03/2017 12:04:47...Debug~~!~~AudioZone Source01->1
                  25/03/2017 12:04:47...Debug~~!~~Device address AudioZone Source01 was found.
                  25/03/2017 12:04:47...Debug~~!~~AudioZone Volume01->17
                  25/03/2017 12:04:47...Debug~~!~~Device address AudioZone Volume01 was found.
                  25/03/2017 12:04:47...Debug~~!~~AudioZone Bass01->50
                  25/03/2017 12:04:47...Debug~~!~~Device address AudioZone Bass01 was found.
                  25/03/2017 12:04:47...Debug~~!~~AudioZone Treble01->50
                  25/03/2017 12:04:47...Debug~~!~~Device address AudioZone Treble01 was found.
                  25/03/2017 12:04:47...Debug~~!~~AudioZone Loudness01->0
                  25/03/2017 12:04:47...Debug~~!~~Device address AudioZone Loudness01 was found.
                  25/03/2017 12:04:47...Debug~~!~~AudioZone Balance01->50
                  25/03/2017 12:04:47...Debug~~!~~Device address AudioZone Balance01 was found.
                  25/03/2017 12:04:47...Debug~~!~~AudioZone PartyMode01->0
                  25/03/2017 12:04:47...Debug~~!~~Device address AudioZone PartyMode01 was found.
                  25/03/2017 12:04:47...Debug~~!~~AudioZone DoNotDisturb01->0
                  25/03/2017 12:04:47...Debug~~!~~Device address AudioZone DoNotDisturb01 was found.
                  So I made up a table of 'Volume Selected', 'Value Sent' by the plugin from the debug log, and finally the volume returned by the amp.

                  'Volume Selected' 'Value Sent' 'Value Returned'
                  1 0 0
                  2 1 0
                  3 2 1
                  4 2 1
                  5 2 1
                  6 3 1
                  7 4 3
                  8 4 3
                  9 4 3
                  10 5 3
                  11 6 3
                  12 6 3
                  13 6 3
                  14 7 4
                  15 8 4
                  16 8 4
                  17 8 4
                  18 9 6
                  19 10 6
                  20 10 6
                  21 10 6
                  22 11 6
                  23 12 8
                  24 12 8
                  25 12 8
                  26 13 8
                  27 14 9
                  28 14 9
                  29 14 9
                  30 15 9
                  31 16 9
                  32 16 9
                  33 16 9
                  34 17 11
                  35 18 11
                  36 18 11
                  37 18 11
                  38 19 12
                  39 20 12
                  40 20 12
                  I then used the ElkRP to set some automation rules for testing. Within the M1G the volume is sent to the amp as a percentage. So for example a rule that sends 20% returns a value of 12, as per 2nd and 3rd column in the table above.

                  So it seems the plugin is halving the value using some weird rounding rules, and then that is being sent as a percent to the amp that then returns an absolute number, which the plugin receives and uses to set the device value.

                  Not sure how to fix any of this. Help appreciated.

                  Marty
                  iCore5 Win 10 Pro x64 SSD

                  HS3 Pro Edition 3.0.0.435 Windows

                  BLOccupied:,Device History:,Yamaha:,UltraMon3:,mcsXap:,Restart:,UltraNetatmo3:, UltraM1G3:,Ultra1Wire3:,BLBackup:,Harmony Hub:,DoorBird:,UltraECM3:,Nanoleaf 3P:,UltraRachio3:,Z-Wave:,SDJ-Health:,BLGarbage:,Blue-Iris:,Chromecast:,Pushover 3P:,EasyTrigger:

                  Comment


                    #10
                    Originally posted by mminehan View Post
                    I have been trying to debug the volume issue with the ELK M1G and a Speakercraft MZC-88 (same control protocol as Proficient).

                    The UltraM1G3 debug log has entries as follows when changing the volume via the plug in:



                    So selecting a volume of 54 actually sends a level of '027' to the amplifier.

                    But then the amplifier returns a value of 17:



                    So I made up a table of 'Volume Selected', 'Value Sent' by the plugin from the debug log, and finally the volume returned by the amp.



                    I then used the ElkRP to set some automation rules for testing. Within the M1G the volume is sent to the amp as a percentage. So for example a rule that sends 20% returns a value of 12, as per 2nd and 3rd column in the table above.

                    So it seems the plugin is halving the value using some weird rounding rules, and then that is being sent as a percent to the amp that then returns an absolute number, which the plugin receives and uses to set the device value.

                    Not sure how to fix any of this. Help appreciated.

                    Marty
                    Hello Marty,

                    I believe I followed the Elk M1 API when creating the volume HomeSeer devices. For reasons unknown, I am taking the volume value (0-100) and dividing it by 2 before sending the command to the Elk M1. If I recall correctly, it was needed to address an oddness with the Russound volume control. I would like to chat with you about this. Can you send me your contact information to ultrajones@hotmail.com?

                    Edit: I found the reason why I did that. The "PRODUCT APPLICATION NOTES" M1 Audio Control Basic control of distributed audio systems using the M1 Control stated:

                    SET VOLUME TO ** Actual Volume Setting will be TWICE the programmed value in RP

                    So, I'll need to figure out if I can programmatically determine the connected audio controller or have a dropdown where you can set the option.



                    Regards,
                    Ultrajones
                    Last edited by Ultrajones; March 25, 2017, 09:46 AM.
                    Plug-ins: UltraMon, UltraM1G, UltraCID, Ultra1Wire, UltraLog, UltraWeatherBug, UltraPioneerAVR, UltraGCIR

                    Comment


                      #11
                      Sent you an email a few days ago. Let me know if there is anything I can do to help.

                      Marty
                      iCore5 Win 10 Pro x64 SSD

                      HS3 Pro Edition 3.0.0.435 Windows

                      BLOccupied:,Device History:,Yamaha:,UltraMon3:,mcsXap:,Restart:,UltraNetatmo3:, UltraM1G3:,Ultra1Wire3:,BLBackup:,Harmony Hub:,DoorBird:,UltraECM3:,Nanoleaf 3P:,UltraRachio3:,Z-Wave:,SDJ-Health:,BLGarbage:,Blue-Iris:,Chromecast:,Pushover 3P:,EasyTrigger:

                      Comment


                        #12
                        Any luck with the volume issue?
                        iCore5 Win 10 Pro x64 SSD

                        HS3 Pro Edition 3.0.0.435 Windows

                        BLOccupied:,Device History:,Yamaha:,UltraMon3:,mcsXap:,Restart:,UltraNetatmo3:, UltraM1G3:,Ultra1Wire3:,BLBackup:,Harmony Hub:,DoorBird:,UltraECM3:,Nanoleaf 3P:,UltraRachio3:,Z-Wave:,SDJ-Health:,BLGarbage:,Blue-Iris:,Chromecast:,Pushover 3P:,EasyTrigger:

                        Comment


                          #13
                          Thanks for fixing the half volume issue.

                          As per the discussion on another thread (https://forums.homeseer.com/showthread.php?t=188513) I have been in contact with ELK about the issue with send a volume level and the ELK setting a different level and replying.

                          This is the response from ELK:

                          So it seems there is some scaling going on in the ELK.

                          I am not sure how to solve this problem. It may be that this has to be done in the plugin?

                          I can produce a table of sent values v's returned values that may be useful in setting up the scaling in the plugin.

                          Thanks, Marty.
                          iCore5 Win 10 Pro x64 SSD

                          HS3 Pro Edition 3.0.0.435 Windows

                          BLOccupied:,Device History:,Yamaha:,UltraMon3:,mcsXap:,Restart:,UltraNetatmo3:, UltraM1G3:,Ultra1Wire3:,BLBackup:,Harmony Hub:,DoorBird:,UltraECM3:,Nanoleaf 3P:,UltraRachio3:,Z-Wave:,SDJ-Health:,BLGarbage:,Blue-Iris:,Chromecast:,Pushover 3P:,EasyTrigger:

                          Comment


                            #14
                            Wow, this makes my head hurt :-) I would love to have heard the logic behind why we send a volume between 0-100 and receive a response that is scaled between 0 and 80.

                            I just uploaded UltraM1G3 HSPI version 3.0.6325.37491 that should scale the results by multiplying by 1.25. Please download and confirm

                            Regards,
                            Ultrajones
                            Plug-ins: UltraMon, UltraM1G, UltraCID, Ultra1Wire, UltraLog, UltraWeatherBug, UltraPioneerAVR, UltraGCIR

                            Comment


                              #15
                              Oh oh.....there is something terribly wrong with this version. The log is full of errors:

                              Apr-27 17:31:10 1 Error System.Exception: An invalid audio source number was received. at HSPI_ULTRAM1G3.hspi_plugin.ControlAudioZone(String strZoneNum, AudioCommand AudioCommand, String strAudioSource, String strAudioValue)
                              Apr-27 17:31:10 1 Error System.Exception
                              Apr-27 17:30:58 Warning Raw data was: DAZ000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000008B
                              Apr-27 17:30:58 Warning Raw data was: DAZ000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000008B
                              Apr-27 17:30:58 Warning Invalid checksum 202 for command Z0 as data 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000
                              Apr-27 17:30:58 Warning Invalid checksum 202 for command Z0 as data 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000
                              Apr-27 17:30:56 1 Error System.FormatException: Additional non-parsable characters are at the end of the string. at System.ParseNumbers.StringToInt(String s, Int32 radix, Int32 flags, Int32* currPos) at System.Convert.ToInt32(String value, Int32 fromBase) at HSPI_ULTRAM1G3.hspi_plugin.ProcessReceived(String strDataRec)
                              Apr-27 17:30:56 1 Error System.FormatException: Additional non-parsable characters are at the end of the string. at System.ParseNumbers.StringToInt(String s, Int32 radix, Int32 flags, Int32* currPos) at System.Convert.ToInt32(String value, Int32 fromBase) at HSPI_ULTRAM1G3.hspi_plugin.ProcessReceived(String strDataRec)
                              Apr-27 17:30:56 1 Error System.FormatException
                              Apr-27 17:30:56 1 Error System.FormatException
                              Apr-27 17:30:52 Warning Raw data was: D6A000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000008B
                              Apr-27 17:30:52 Warning Raw data was: D6A000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000008B
                              Apr-27 17:30:52 Warning Invalid checksum 118 for command A0 as data 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000
                              Apr-27 17:30:52 Warning Invalid checksum 118 for command A0 as data 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000
                              Apr-27 17:30:33 Error Data that caused error in ProcessCommand() subroutine: Len=20, Cmd=CA, Data=02001053050050005000000000, Reserved=00
                              Apr-27 17:30:33 Error Data that caused error in ProcessCommand() subroutine: Len=20, Cmd=CA, Data=02001053050050005000000000, Reserved=00
                              Apr-27 17:30:33 1 Error System.FormatException: Input string was not in a correct format. at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) at System.Int32.Parse(String s) at HSPI_ULTRAM1G3.hspi_plugin.ProcessCommand(String strLen, String strCmd, String strData, String strReserved)
                              Apr-27 17:30:33 1 Error System.FormatException: Input string was not in a correct format. at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) at System.Int32.Parse(String s) at HSPI_ULTRAM1G3.hspi_plugin.ProcessCommand(String strLen, String strCmd, String strData, String strReserved)
                              And the controls are unresponsive.

                              Also......the value/status/graphic pairs are still being reset for all UltraM1G the devices.
                              iCore5 Win 10 Pro x64 SSD

                              HS3 Pro Edition 3.0.0.435 Windows

                              BLOccupied:,Device History:,Yamaha:,UltraMon3:,mcsXap:,Restart:,UltraNetatmo3:, UltraM1G3:,Ultra1Wire3:,BLBackup:,Harmony Hub:,DoorBird:,UltraECM3:,Nanoleaf 3P:,UltraRachio3:,Z-Wave:,SDJ-Health:,BLGarbage:,Blue-Iris:,Chromecast:,Pushover 3P:,EasyTrigger:

                              Comment

                              Working...
                              X