Yamaha AV Receiver Plugin

Python and python framework

Moderator: leecollings

thomasvillagers
Posts: 14
Joined: Monday 06 February 2017 15:57
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Yamaha AV Receiver Plugin

Post by thomasvillagers »

Hi,

I wrote a python plugin for Yamaha AV receivers, you can find it on github:

https://github.com/thomas-villagers/domoticz-yamaha

This is very similar in structure to the Denon Plugin in the examples folder, but much simpler though.

I think the plugin system is really nice and useful, but - I know it's still beta - there are some difficulties:

- debugging python plugins is somewhat tedious; after code changes, the plugin has to be deactivated/activated in the hardware pane from the web interface. Or is there a faster way to do that?
- a built-in connection timeout event would be very nice
- it's easy to crash domoticz completely (seg fault) simply by deactivating the plugin; at least that's what's happening with my plugin in case a connection is established. I don't know why this happens, it is probably my fault, but I can't see what's wrong with it.
- the Debian browser iceweasel doesn't render the parameters defined in a plugin's xml definition; see attached screenshot (Sonos Plugin, the Address, Port and Debug fields are missing)

And ah, yes: what's the state of the remote control button in the Media Player switch ?
It works with the native Kodi plugin, but not with the python plugin system - clicking the remote control button has no effect.

Thank you!

thomas
Attachments
hardware.png
hardware.png (181.09 KiB) Viewed 12094 times
User avatar
Dnpwwo
Posts: 819
Joined: Sunday 23 March 2014 9:00
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Location: Melbourne, Australia
Contact:

Re: Yamaha AV Receiver Plugin

Post by Dnpwwo »

@thomasvillagers,

I had a look at the code and it looks really good, I can't see anything that should cause any issues.

My I only feedback is that I have tried to stay away from updating Domoticz devices in onCommand and try to do it in onMessage whereever possible. This is because in onCommand you are requesting the external device to do something but onMessage tells you what it actually did. In some of your code you seem to do it in both places.

I see you used a polling array (which I only thought of recently and think is a great idea) to help keep things in sync which works well for me.

To answer your questions:
- debugging python plugins is somewhat tedious; after code changes, the plugin has to be deactivated/activated in the hardware pane from the web interface. Or is there a faster way to do that?
You can select the hardware in the table and hit 'Update' once (unless you have changed the XML that describes the user interface, then you must restart Domoticz)
a built-in connection timeout event would be very nice
I'm happy to add functions if they are useful. I would have thought you could do a timeout already though. The plugin knows when it connects and when messages arrive and are called on the heartneat regularly so you can track total conection and inactivity pretty easily and force a disconnect if required.
it's easy to crash domoticz completely (seg fault) simply by deactivating the plugin; at least that's what's happening with my plugin in case a connection is established. I don't know why this happens, it is probably my fault, but I can't see what's wrong with it.
There is an issue sometimes when deactivitating plugins, not your fault (its mine I guess :( ). This is occasional on my Windows machine and Ubuntu VM but seems much worse on my Raspberry Pi. I have found a few issues and resolved them but there is at least one more, it happens during the release of the Python interpreter when ALL allocated memory is being freed. If Python isn't 100% happy it will abort. Good news is that running plugins seem very stable on all platforms. In the short term I would recommend doing Python dev on a Windows PC while I try and find it.
the Debian browser iceweasel doesn't render the parameters defined in a plugin's xml definition; see attached screenshot (Sonos Plugin, the Address, Port and Debug fields are missing)
Surprised about IceWeasel having issues because I tested Chrone, IE but did most development on FireFox. Can you bring up the debugger window and see if there are any javascript errors?
The reasonable man adapts himself to the world; the unreasonable one persists to adapt the world to himself. Therefore all progress depends on the unreasonable man. George Bernard Shaw
zaraki673
Posts: 32
Joined: Thursday 19 January 2017 23:46
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Contact:

Re: Yamaha AV Receiver Plugin

Post by zaraki673 »

thanks !!!

will try asap :D
thomasvillagers
Posts: 14
Joined: Monday 06 February 2017 15:57
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Yamaha AV Receiver Plugin

Post by thomasvillagers »

Hi Dnpwwo,

thanks for your reply and clarifying a few things.
I'll move the device updates to onMessage as soon as I can find some time.
And I just checked, the issue with iceweasel seems to be fixed now, great! :-)


- thomas
thomasvillagers
Posts: 14
Joined: Monday 06 February 2017 15:57
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Yamaha AV Receiver Plugin

Post by thomasvillagers »

I pushed an update for the script, seems to be running stable (18 hours uptime without crashing domoticz :-)

- thomas
spyseiko
Posts: 12
Joined: Tuesday 05 January 2016 14:51
Target OS: Raspberry Pi / ODroid
Domoticz version: V2.4967
Contact:

Re: Yamaha AV Receiver Plugin

Post by spyseiko »

Would like to know if there is manual how to get this to work with domoticz, maybe a good idea if domoticz wiki can publish it too.

Keep up the good work !!
thomasvillagers
Posts: 14
Joined: Monday 06 February 2017 15:57
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Yamaha AV Receiver Plugin

Post by thomasvillagers »

Hey,

the principal steps for using python plugins are discussed in the thread about tester22's awesome Sonos plugin, see
http://www.domoticz.com/forum/viewtopic ... 43#p114944

In a nutshell:
- you need the beta version of domoticz; November's stable version does not have the plugin system yet.
Open Setup > Settings and choose the release channel "Beta".

- you need the python library "libpython3.X", at least version 3.4. With raspberry/linux, that's just an "apt-get install libpython3.4". For "Windows", sorry I have to pass ...

- start domoticz from the command line and check if the plugin system is running (for details, again see the Sonos thread)

- now, create a folder "plugins" in your domoticz directory. The correct name is "plugins", note the "s" at the end; "plugin" will not work

- copy the plugin in a subfolder under plugins, i. e. domoticz/plugins/Sonos/plugin.py for the Sonos plugin, or domoticz/plugins/Yamaha/plugin.py for my Yamaha plugin

- restart domoticz (or reboot your raspy)

- go to the hardware pane and check if you can add a new hardware of the desired type (Sonos Players, Yamaha etc.). Fill the fields.

Good luck!

thomas
spyseiko
Posts: 12
Joined: Tuesday 05 January 2016 14:51
Target OS: Raspberry Pi / ODroid
Domoticz version: V2.4967
Contact:

Re: Yamaha AV Receiver Plugin

Post by spyseiko »

Thanks gonna try it asap.
jimtrout87
Posts: 16
Joined: Tuesday 12 April 2016 17:16
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Yamaha AV Receiver Plugin

Post by jimtrout87 »

I have just tried this and its working well ish and a seems to be a perfect link to set up scenes. I do have one question Any idea how i specify a Audio Source on the selector switch and not just HDMI or Scenes may be better as they are customized on the amp. Adding more selectors goes HDMI5 then does nothing

I have also noticed a issue, Domoticz seems to be polling something that sets the amp as On even when its off. When i use the domoticz switch to turn it off, if may stay for a minute or so and then its back to On but the amp is still off. Domoticz doesn't respond from the off command either, from remote or if im controlling web based. However It will turn it off if i use domoticz switch but still shows as on a few mins later as mentioned above. On works ok.

Thanks, i wonder if the plugin is amp dependent. Mine is a RX-v679
jimtrout87
Posts: 16
Joined: Tuesday 12 April 2016 17:16
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Yamaha AV Receiver Plugin

Post by jimtrout87 »

Ok so i tried this myself and managed to get the scenes working if anyone is interested. Modified the above and now works with Scene 1 to 4 and then other. Other is if the source is anything thats not on the scene. I noticed the orignal code took the last letter and converted to integer so hdm1 for example would return 1 and choose the first selector button. This didnt play nice with Audio1 and Hdmi1 and also caused crashes when using souces which were words only "Tuner", "Spotify" etc.. I have also implemented Zone2 control and have power showing correctly using the @Main:PWR command.

One thing to note i had to manually set the inputs i use for scenes. So you may want to do that. My Scenes are Hdmi1, Hdmi2, Audio 1, Tuner.

Change this part to match your scene input, you will also have to do similar for Zone2, although note Zone2 cannot use Scenes so this is done by input and this also needs some slight config. If you get stuck where to look i can help.

Code: Select all

elif (arrData[0] == "@MAIN:INP"): 
            s = arrData[1]
            if (s == "HDMI1"):
                UpdateDevice(3,2,str(10))
            elif (s == "HDMI2"):
                UpdateDevice(3,2,str(20))
            elif (s == "AUDIO1"):
                UpdateDevice(3,2,str(30))
            elif (s == "TUNER"):
                UpdateDevice(3,2,str(40))
            else: 
                UpdateDevice(3,2,str(50))
Full Code for Scenes\Zone2

Code: Select all

# Basic Python Plugin 
#
# Author: thomas-villagers
#
"""
<plugin key="YamahaPlug" name="Yamaha AV Receiver" author="thomasvillagers" version="1.0.0" wikilink="http://www.domoticz.com/wiki/plugins/plugin.html" externallink="https://yamaha.com/products/audio_visual/av_receivers_amps/">
    <params>
     <param field="Address" label="IP Address" width="200px" required="true" default="127.0.0.1"/>
     <param field="Port" label="Port" width="50px" required="true" default="50000"/>
     <param field="Mode6" label="Debug" width="75px">
       <options>
          <option label="True" value="Debug"/>
          <option label="False" value="Normal"  default="true" />
       </options>
     </param>
    </params>
</plugin>
"""
import Domoticz
import base64

class BasePlugin:
    enabled = False
    isConnected = True
    outstandingPings = 0
    nextConnect = 0
    commandArray = ["@MAIN:VOL=?", "@MAIN:INP=?", "@MAIN:MUTE=?", "@MAIN:SOUNDPRG=?", "@MAIN:SCENE=?", "@MAIN:PWR=?","@ZONE2:VOL=?", "@ZONE2:INP=?", "@MAIN:ZONE2=?", "@ZONE2:SOUNDPRG=?", "@ZONE2:SCENE=?", "@ZONE2:PWR=?"]
    commandIndex = 0 

    def __init__(self):
        #self.var = 123
        return

    def onStart(self):
        if Parameters["Mode6"] == "Debug":
           Domoticz.Debugging(1)
        Domoticz.Debug("onStart called")
        if (len(Devices) == 0):
            Domoticz.Device(Name="Status",  Unit=1, Type=17,  Switchtype=17).Create()          
            Domoticz.Device(Name="Volume",  Unit=2, Type=244, Subtype=73, Switchtype=7,  Image=8).Create()
            LevelActions= "LevelActions:"+stringToBase64("|||||")+";"
            LevelNames= "LevelNames:"+stringToBase64("Off|Scene1|Scene2|Scene3|Scene4|Other")+";"
            Other= "LevelOffHidden:ZmFsc2U=;SelectorStyle:MA==" # true is "dHJ1ZQ==", 1 is "MQ=="
            Options=LevelActions+LevelNames+Other
            Domoticz.Device(Name="Source", Unit=3, TypeName="Selector Switch", Options=Options).Create()
            Domoticz.Device(Name="Zone 2 Status",  Unit=4, Type=17,  Switchtype=17).Create()          
            Domoticz.Device(Name="Zone 2 Volume",  Unit=5, Type=244, Subtype=73, Switchtype=7,  Image=8).Create()
            LevelActions= "LevelActions:"+stringToBase64("|||")+";"
            LevelNames= "LevelNames:"+stringToBase64("Off|Main Sync|Input1|Other")+";"
            Other= "LevelOffHidden:ZmFsc2U=;SelectorStyle:MA==" # true is "dHJ1ZQ==", 1 is "MQ=="
            Options=LevelActions+LevelNames+Other
            Domoticz.Device(Name="Zone 2 Source", Unit=6, TypeName="Selector Switch", Options=Options).Create()
        
        Domoticz.Transport("TCP/IP", Parameters["Address"], Parameters["Port"])
        Domoticz.Protocol("Line")
        Domoticz.Connect()
        Domoticz.Heartbeat(20)

    def onStop(self):
        Domoticz.Log("onStop called")

    def onConnect(self, Status, Description):
        Domoticz.Debug("onConnect called. Status: " + str(Status))
        if (Status == 0): 
          self.isConnected = True
#         UpdateDevice(1,1,"")
          self.onHeartbeat()
        else: 
          self.isConnected = False

    def onMessage(self, Data, Status, Extra):
        Domoticz.Debug("onMessage called")
        self.outstandingPings = self.outstandingPings - 1
        strData = Data.decode("utf-8", "ignore")
        arrData = strData.split('=')
        for x in arrData:
            Domoticz.Debug(x)
        if (arrData[0] == "@MAIN:VOL"):
            vol = float(arrData[1])
            sliderValue = int(vol*5/4 + 100)
            if (Devices[1].sValue == "On"):
                UpdateDevice(2,2,str(sliderValue)) 
#                UpdateDevice(2, Devices[2].nValue, str(sliderValue))        
        elif (arrData[0] == "@MAIN:INP"): 
            s = arrData[1]
            if (Devices[1].sValue == "On"):
                if (s == "HDMI1"):
                    UpdateDevice(3,2,str(10))
                elif (s == "HDMI2"):
                    UpdateDevice(3,2,str(20))
                elif (s == "AUDIO1"):
                    UpdateDevice(3,2,str(30))
                elif (s == "TUNER"):
                    UpdateDevice(3,2,str(40))
                else: 
                    UpdateDevice(3,2,str(50))
        elif (arrData[0] == "@MAIN:PWR"):
            p = arrData[1]
            Domoticz.Log(p)
            if (p == "On"):
                UpdateDevice(1,1,"On")            
            elif (p == "Standby"):
                UpdateDevice(1,0,"Standby")
                UpdateDevice(2,0,Devices[2].sValue)
                UpdateDevice(3,0,Devices[3].sValue)
        elif (arrData[0] == "@ZONE2:VOL"):
            vol = float(arrData[1])
            sliderValue = int(vol*5/4 + 100)
            if (Devices[4].sValue == "On"):
                UpdateDevice(5,2,str(sliderValue)) 
#                UpdateDevice(5, Devices[2].nValue, str(sliderValue))       
        elif (arrData[0] == "@ZONE2:INP"): 
            s = arrData[1]
            if (Devices[4].sValue == "On"):
                if (s == "Main Zone Sync"):
                    UpdateDevice(6,2,str(10))
                elif (s == "AUDIO1"):
                    UpdateDevice(6,2,str(20))
                else: 
                    UpdateDevice(6,2,str(30))
        elif (arrData[0] == "@ZONE2:PWR"):
            p = arrData[1]
            Domoticz.Log(p)
            if (p == "On"):
                UpdateDevice(4,1,"On")                
            elif (p == "Standby"):
                UpdateDevice(4,0,"Standby")
                UpdateDevice(5,0,Devices[5].sValue)
                UpdateDevice(6,0,Devices[6].sValue)

				

    def onCommand(self, Unit, Command, Level, Hue):
        Domoticz.Debug("onCommand called for Unit " + str(Unit) + ": Parameter '" + str(Command) + "', Level: " + str(Level))
        if (self.isConnected == False):
            Domoticz.Connect()
            return
        if (Unit == 1):
            if (Command == "Off"):
                UpdateDevice(1,0,Devices[1].sValue) # TODO remove
                Domoticz.Send("@MAIN:PWR=Standby\r\n")
            elif (Command == "On"): 
                Domoticz.Send("@MAIN:PWR=On\r\n")
        elif (Unit == 2): 
            if (Command == "Set Level"): 
                volume = int(Level)*4/5 - 80
                volumeToSend = round(2*volume)/2
                Domoticz.Send("@MAIN:VOL="+str(volumeToSend)+"\r\n")
        elif (Unit == 3): 
            input = str(int(int(Level)/10))
            Domoticz.Send("@MAIN:SCENE=Scene " + input + "\r\n")
        elif (Unit == 4):
            if (Command == "Off"):
                UpdateDevice(4,0,Devices[1].sValue) # TODO remove
                Domoticz.Send("@ZONE2:PWR=Standby\r\n")
            elif (Command == "On"): 
                Domoticz.Send("@ZONE2:PWR=On\r\n")
        elif (Unit == 5): 
            if (Command == "Set Level"): 
                volume = int(Level)*4/5 - 80
                volumeToSend = round(2*volume)/2
                Domoticz.Send("@ZONE2:VOL="+str(volumeToSend)+"\r\n")
        elif (Unit == 6): 
            input = str(int(int(Level)/10))
            if (input == "1"):
                Domoticz.Send("@ZONE2:INP=Main Zone Sync" + "\r\n")
            elif (input == "2"):
                Domoticz.Send("@ZONE2:INP=AUDIO1" + "\r\n")

    def onNotification(self, Data):
        Domoticz.Debug("onNotification: " + str(Data))

    def onDisconnect(self):
        Domoticz.Debug("onDisconnect called")
        self.isConnected = False 
#        UpdateDevice(1,0,"")
#        UpdateDevice(2,0,Devices[2].sValue)
#        UpdateDevice(3,0,Devices[3].sValue)

    def onHeartbeat(self):
        Domoticz.Debug("onHeartbeat called. Connected: " + str(self.isConnected))
        if (self.isConnected == True):
            if (self.outstandingPings > 6):
                Domoticz.Debug("Missed more than 6 pings - disconnect")
                Domoticz.Disconnect()
                self.nextConnect = 0
            else:   
                Domoticz.Send(self.commandArray[self.commandIndex] + "\r\n")
                self.commandIndex = (self.commandIndex + 1 ) % len(self.commandArray)
                self.outstandingPings = self.outstandingPings + 1
        else: 
            self.outstandingPings = 0
            self.nextConnect = self.nextConnect - 1
            if (self.nextConnect <= 0):
                self.nextConnect = 3
                Domoticz.Connect()

global _plugin
_plugin = BasePlugin()

def onStart():
    global _plugin
    _plugin.onStart()

def onStop():
    global _plugin
    _plugin.onStop()

def onConnect(Status, Description):
    global _plugin
    _plugin.onConnect(Status, Description)

def onMessage(Data, Status, Extra):
    global _plugin
    _plugin.onMessage(Data, Status, Extra)

def onCommand(Unit, Command, Level, Hue):
    global _plugin
    _plugin.onCommand(Unit, Command, Level, Hue)

def onNotification(Data):
    global _plugin
    _plugin.onNotification(Data)

def onDisconnect():
    global _plugin
    _plugin.onDisconnect()

def onHeartbeat():
    global _plugin
    _plugin.onHeartbeat()

def UpdateDevice(Unit, nValue, sValue):
    # Make sure that the Domoticz device still exists (they can be deleted) before updating it 
    if (Unit in Devices):
        if (Devices[Unit].nValue != nValue) or (Devices[Unit].sValue != sValue):
            Devices[Unit].Update(nValue, str(sValue))
            Domoticz.Log("Update "+str(nValue)+":'"+str(sValue)+"' ("+Devices[Unit].Name+")")
    return

    # Generic helper functions
def DumpConfigToLog():
    for x in Parameters:
        if Parameters[x] != "":
            Domoticz.Debug( "'" + x + "':'" + str(Parameters[x]) + "'")
    Domoticz.Debug("Device count: " + str(len(Devices)))
    for x in Devices:
        Domoticz.Debug("Device:           " + str(x) + " - " + str(Devices[x]))
        Domoticz.Debug("Device ID:       '" + str(Devices[x].ID) + "'")
        Domoticz.Debug("Device Name:     '" + Devices[x].Name + "'")
        Domoticz.Debug("Device nValue:    " + str(Devices[x].nValue))
        Domoticz.Debug("Device sValue:   '" + Devices[x].sValue + "'")
        Domoticz.Debug("Device LastLevel: " + str(Devices[x].LastLevel))
    return

def stringToBase64(s):
    return base64.b64encode(s.encode('utf-8')).decode("utf-8")

def base64ToString(b):
    return base64.b64decode(b).decode('utf-8')
thomasvillagers
Posts: 14
Joined: Monday 06 February 2017 15:57
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Yamaha AV Receiver Plugin

Post by thomasvillagers »

Hi jimtrout87,

happy to hear that you find the script useful.

I don't use the other inputs (Audio etc.), so yes, you'll have to modify the script to your needs. But this is easily done, as you've figured out already... :-)

- thomas
claudioita
Posts: 7
Joined: Wednesday 19 April 2017 10:57
Target OS: -
Domoticz version:
Contact:

Re: Yamaha AV Receiver Plugin

Post by claudioita »

using it but the Yamaha (v675) does not react ...
assenzuid
Posts: 135
Joined: Friday 13 November 2015 9:11
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Location: The Netherlands, Emmen Area
Contact:

Re: Yamaha AV Receiver Plugin

Post by assenzuid »

I have successfully implemented this great script and the scene's are working, but is it possible to also swicht between the other inputs/ sources?
assenzuid
Posts: 135
Joined: Friday 13 November 2015 9:11
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Location: The Netherlands, Emmen Area
Contact:

Re: Yamaha AV Receiver Plugin

Post by assenzuid »

After Domoticz Beta 3.7686 my log is filled with

017-06-07 16:03:20.429 Error: (Yamaha RX-A1010) 'onStart' failed 'AttributeError':''module' object has no attribute 'Transport''.
2017-06-07 16:03:20.429 Error: (Yamaha RX-A1010) ----> Line 203 in /home/pi/domoticz/plugins/Yamaha/plugin.py, function onStart
2017-06-07 16:03:20.429 Error: (Yamaha RX-A1010) ----> Line 54 in /home/pi/domoticz/plugins/Yamaha/plugin.py, function onStart

2017-06-07 16:06:37.587 Error: (Yamaha RX-A1010) ----> Line 231 in /home/pi/domoticz/plugins/Yamaha/plugin.py, function onHeartbeat
2017-06-07 16:06:37.587 Error: (Yamaha RX-A1010) ----> Line 185 in /home/pi/domoticz/plugins/Yamaha/plugin.py, function onHeartbeat
2017-06-07 16:06:47.556 Error: (Yamaha RX-A1010) 'onHeartbeat' failed 'AttributeError':''module' object has no attribute 'Disconnect''.
2017-06-07 16:06:47.556 Error: (Yamaha RX-A1010) ----> Line 231 in /home/pi/domoticz/plugins/Yamaha/plugin.py, function onHeartbeat
2017-06-07 16:06:47.556 Error: (Yamaha RX-A1010) ----> Line 185 in /home/pi/domoticz/plugins/Yamaha/plugin.py, function onHeartbeat
User avatar
Dnpwwo
Posts: 819
Joined: Sunday 23 March 2014 9:00
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Location: Melbourne, Australia
Contact:

Re: Yamaha AV Receiver Plugin

Post by Dnpwwo »

Have a look at http://www.domoticz.com/forum/viewtopic ... 65&t=17554, there was a recent change that will require mods to some scripts.

The Yamaha script is one of those
The reasonable man adapts himself to the world; the unreasonable one persists to adapt the world to himself. Therefore all progress depends on the unreasonable man. George Bernard Shaw
thomasvillagers
Posts: 14
Joined: Monday 06 February 2017 15:57
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Yamaha AV Receiver Plugin

Post by thomasvillagers »

Hey,

I /think/ I have fixed the plugin; find the new version on github!

- thomas
thomasvillagers
Posts: 14
Joined: Monday 06 February 2017 15:57
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Yamaha AV Receiver Plugin

Post by thomasvillagers »

using it but the Yamaha (v675) does not react ...
hm, the 675 should support the YNCA protocol (see i. e. https://github.com/graememorgan/yamaha).

you might try this script or https://github.com/thomas-villagers/avsend from the command line; if they work, the plugin should work as well ... check for error messages, maybe another program is blocking YNCA on your receiver?
Damnet
Posts: 14
Joined: Friday 24 February 2017 20:43
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

Re: Yamaha AV Receiver Plugin

Post by Damnet »

Hi Thomas,

Really nice to be able to integrate my Yamaha into Domoticz, Im running on a raspberry pi 3

I have updated Domoticz to Version: 3.7722
Build Hash: dce48ed
Compile Date: 2017-06-12 15:49:30

Phyton is up to date

Code: Select all

~ $ sudo apt-get install libpython3.4
Reading package lists... Done
Building dependency tree
Reading state information... Done
libpython3.4 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 10 not upgraded.
Put plugin.py in the plugins/Yamaha folder
Restarted. Selected, however when I press add. nothing hapens....
Fleshi
Posts: 14
Joined: Tuesday 23 May 2017 21:18
Target OS: Raspberry Pi / ODroid
Domoticz version: Beta
Contact:

Re: Yamaha AV Receiver Plugin

Post by Fleshi »

jimtrout87 wrote:
I have also noticed a issue, Domoticz seems to be polling something that sets the amp as On even when its off. When i use the domoticz switch to turn it off, if may stay for a minute or so and then its back to On but the amp is still off. Domoticz doesn't respond from the off command either, from remote or if im controlling web based. However It will turn it off if i use domoticz switch but still shows as on a few mins later as mentioned above. On works ok.

Thanks, i wonder if the plugin is amp dependent. Mine is a RX-v679
I have the same issue on my Yamaha RX V675, did you find a fix for it?
mooninite
Posts: 12
Joined: Wednesday 12 July 2017 23:11
Target OS: Linux
Domoticz version: 4.9700
Contact:

Re: Yamaha AV Receiver Plugin

Post by mooninite »

Thanks for this plugin. It is working great for me and my RX-A870.
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest