Yamaha AV Receiver Plugin
Moderator: leecollings
-
- Posts: 14
- Joined: Monday 06 February 2017 15:57
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Yamaha AV Receiver Plugin
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
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 (181.09 KiB) Viewed 12095 times
- 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
@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:
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:
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)- 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?
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.a built-in connection timeout event would be very nice
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.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.
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 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)
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
-
- Posts: 32
- Joined: Thursday 19 January 2017 23:46
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Contact:
Re: Yamaha AV Receiver Plugin
thanks !!!
will try asap
will try asap
-
- Posts: 14
- Joined: Monday 06 February 2017 15:57
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Yamaha AV Receiver Plugin
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
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
-
- Posts: 14
- Joined: Monday 06 February 2017 15:57
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Yamaha AV Receiver Plugin
I pushed an update for the script, seems to be running stable (18 hours uptime without crashing domoticz
- thomas
- thomas
-
- Posts: 12
- Joined: Tuesday 05 January 2016 14:51
- Target OS: Raspberry Pi / ODroid
- Domoticz version: V2.4967
- Contact:
Re: Yamaha AV Receiver Plugin
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 !!
Keep up the good work !!
-
- Posts: 14
- Joined: Monday 06 February 2017 15:57
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Yamaha AV Receiver Plugin
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
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
-
- Posts: 12
- Joined: Tuesday 05 January 2016 14:51
- Target OS: Raspberry Pi / ODroid
- Domoticz version: V2.4967
- Contact:
Re: Yamaha AV Receiver Plugin
Thanks gonna try it asap.
-
- Posts: 16
- Joined: Tuesday 12 April 2016 17:16
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Yamaha AV Receiver Plugin
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
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
-
- Posts: 16
- Joined: Tuesday 12 April 2016 17:16
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Yamaha AV Receiver Plugin
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.
Full Code for Scenes\Zone2
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))
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')
-
- Posts: 14
- Joined: Monday 06 February 2017 15:57
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Yamaha AV Receiver Plugin
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
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
-
- Posts: 7
- Joined: Wednesday 19 April 2017 10:57
- Target OS: -
- Domoticz version:
- Contact:
Re: Yamaha AV Receiver Plugin
using it but the Yamaha (v675) does not react ...
-
- 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
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?
-
- 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
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
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
- 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
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 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
-
- Posts: 14
- Joined: Monday 06 February 2017 15:57
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Yamaha AV Receiver Plugin
Hey,
I /think/ I have fixed the plugin; find the new version on github!
- thomas
I /think/ I have fixed the plugin; find the new version on github!
- thomas
-
- Posts: 14
- Joined: Monday 06 February 2017 15:57
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Yamaha AV Receiver Plugin
hm, the 675 should support the YNCA protocol (see i. e. https://github.com/graememorgan/yamaha).using it but the Yamaha (v675) does not react ...
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?
-
- Posts: 14
- Joined: Friday 24 February 2017 20:43
- Target OS: Raspberry Pi / ODroid
- Domoticz version:
- Contact:
Re: Yamaha AV Receiver Plugin
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
Put plugin.py in the plugins/Yamaha folder
Restarted. Selected, however when I press add. nothing hapens....
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.
Restarted. Selected, however when I press add. nothing hapens....
-
- Posts: 14
- Joined: Tuesday 23 May 2017 21:18
- Target OS: Raspberry Pi / ODroid
- Domoticz version: Beta
- Contact:
Re: Yamaha AV Receiver Plugin
I have the same issue on my Yamaha RX V675, did you find a fix for it?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
-
- Posts: 12
- Joined: Wednesday 12 July 2017 23:11
- Target OS: Linux
- Domoticz version: 4.9700
- Contact:
Re: Yamaha AV Receiver Plugin
Thanks for this plugin. It is working great for me and my RX-A870.
Who is online
Users browsing this forum: No registered users and 1 guest